摘自《鸟哥的 Linux 私房菜-网络篇》

局域网络 (Local Area Network, LAN)

广域网 (Wide Area Network, WAN)

MAC (Media Access Control) 每张以太网络卡出厂时,就会赋予一个独一无二的卡号

IPv4 (Internet Protocol version 4

IPv4 记录的地址由于仅有 32(4*8) 位
IPv6 的地址可以达到 128(4*8*4) 位 (多出 2 的 96 次方倍)

DNS(Domain Name System)


2.1.4 计算机网络协议:OSI 七层协定


每一个阶层所负责的任务是什么呢?简单的说,每一层负责的任务如下:(注6, 注8, 注9)

分层

负责内容

Layer 1
物理层
Physical Layer

由于网络媒体只能传送 0 与 1 这种位串,因此物理层必须定义所使用的媒体设备之电压与讯号等, 同时还必须了解数据讯框转成位串的编码方式,最后连接实体媒体并传送/接收位串。

Layer 2
数据链结层
Data-Link Layer

这一层是比较特殊的一个阶层,因为底下是实体的定义,而上层则是软件封装的定义。因此第二层又分两个子层在进行数据的转换动作。 在偏硬件媒体部分,主要负责的是 MAC (Media Access Control) ,我们称这个数据报裹为 MAC 讯框 (frame), MAC 是网络媒体所能处理的主要数据报裹,这也是最终被物理层编码成位串的数据。MAC 必须要经由通讯协议来取得媒体的使用权, 目前最常使用的则是 IEEE 802.3 的以太网络协议。详细的 MAC 与以太网络请参考下节说明。

至于偏向软件的部分则是由逻辑链接层 (logical link control, LLC) 所控制,主要在多任务处理来自上层的封包数据 (packet) 并转成 MAC 的格式, 负责的工作包括讯息交换、流量控制、失误问题的处理等等。

Layer 3
网络层
Network Layer

这一层是我们最感兴趣的啰,因为我们提及的 IP (Internet Protocol) 就是在这一层定义的。 同时也定义出计算机之间的联机建立、终止与维持等,数据封包的传输路径选择等等,因此这个层级当中最重要的除了 IP 之外,就是封包能否到达目的地的路由 (route) 概念了!

Layer 4
传送层
Transport Layer

这一个分层定义了发送端与接收端的联机技术(如 TCP, UDP 技术), 同时包括该技术的封包格式,数据封包的传送、流程的控制、传输过程的侦测检查与复原重新传送等等, 以确保各个资料封包可以正确无误的到达目的端。

Layer 5
会谈层
Session Layer

在这个层级当中主要定义了两个地址之间的联机信道之连接与挂断,此外,亦可建立应用程序之对谈、 提供其他加强型服务如网络管理、签到签退、对谈之控制等等。如果说传送层是在判断资料封包是否可以正确的到达目标, 那么会谈层则是在确定网络服务建立联机的确认。

Layer 6
表现层
Presentation Layer

我们在应用程序上面所制作出来的数据格式不一定符合网络传输的标准编码格式的! 所以,在这个层级当中,主要的动作就是:将来自本地端应用程序的数据格式转换(或者是重新编码)成为网络的标准格式, 然后再交给底下传送层等的协议来进行处理。所以,在这个层级上面主要定义的是网络服务(或程序)之间的数据格式的转换, 包括数据的加解密也是在这个分层上面处理。

Layer 7
应用层
Application Layer

应用层本身并不属于应用程序所有,而是在定义应用程序如何进入此层的沟通接口,以将数据接收或传送给应用程序,最终展示给用户。

2.1.5 计算机网络协议:TCP/IP


2.3.2 IP 地址的组成与分级

IP 最小可以由 0.0.0.0 一直到 255.255.255.255 但在这一串数字中,其实还可以分为两个部分, 主要分为 Net_ID (网域号码)与 Host_ID (主机号码) 两部份。

IP 在同一网域的意义

那么同一个网域该怎么设定,与将 IP 设定在同一个网域之内有什么好处呢?

  • Net_ID 与 Host_ID 的限制:
    在同一个网段内,Net_ID 是不变的,而 Host_ID 则是不可重复,此外,Host_ID 在二进制的表示法当中,不可同时为 0 也不可同时为 1 ,因为全为 0 表示整个网段的地址 (Network IP),而全为 1 则表示为广播的地址 (Broadcast IP)。例如上面的例子当中,192.168.0.0 (Host_ID 全部为 0)以及 192.168.0.255 (Host_ID 全部为 1) 不可用来作为网段内主机的 IP 设定,也就是说,这个网段内可用来设定主机的 IP 是由 192.168.0.1 到 192.168.0.254;
  • 在区网内透过 IP 广播传递数据
    在同物理网段的主机如果设定相同的网域 IP 范围 (不可重复),则这些主机都可以透过 CSMA/CD 的功能直接在区网内用广播进行网络的联机,亦即可以直接网卡对网卡传递数据 (透过 MAC 讯框);
  • 设定不同区网在同物理网段的情况
    在同一个物理网段之内,如果两部主机设定成不同的 IP 网段,则由于广播地址的不同,导致无法透过广播的方式来进行联机。 此时得要透过路由器 (router) 来进行沟通才能将两个网域连结在一起。
  • 网域的大小
    当 Host_ID 所占用的位越大,亦即 Host_ID 数量越多时,表示同一个网域内可用以设定主机的 IP 数量越多。
所以说,贵单位公司内的计算机群,或者是你宿舍或家里面的所有计算机,当然都设定在同一个网域内是最方便的, 因为如此一来每一部计算机都可以直接透过 MAC 来进行数据的交流,而不必经由 Router (路由器) 来进行封包的转递呢!

IP 的分级

以二进制说明 Network 第一个数字的定义:

Class A : 0xxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx  ==> NetI_D 的开头是 0

          |--net--|---------host------------|

Class B : 10xxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx  ==> NetI_D 的开头是 10

          |------net-------|------host------|

Class C : 110xxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx  ==> NetI_D 的开头是 110

          |-----------net-----------|-host--|

Class D : 1110xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx  ==> NetI_D 的开头是 1110

Class E : 1111xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx  ==> NetI_D 的开头是 1111

 

五种分级在十进制的表示:

Class A :   0.xx.xx.xx ~ 127.xx.xx.xx

Class B : 128.xx.xx.xx ~ 191.xx.xx.xx

Class C : 192.xx.xx.xx ~ 223.xx.xx.xx

Class D : 224.xx.xx.xx ~ 239.xx.xx.xx

Class E : 240.xx.xx.xx ~ 255.xx.xx.xx

2.3.3 IP 的种类与取得方式

  • Public IP : 公共 IP ,经由 INTERNIC 所统一规划的 IP,有这种 IP 才可以连上 Internet ;
  • Private IP : 私有 IP 或保留 IP,不能直接连上 Internet 的 IP , 主要用于局域网络内的主机联机规划。

早在 IPv4 规划的时候就担心 IP 会有不足的情况,而且为了应付某些企业内部的网络设定,于是就有了私有 IP (Private IP) 的产生了。私有 IP 也分别在 A, B, C 三个 Class 当中各保留一段作为私有 IP 网段,那就是:

  • Class A:10.0.0.0    - 10.255.255.255
  • Class B:172.16.0.0  - 172.31.255.255
  • Class C:192.168.0.0 - 192.168.255.255
2.3.4 Netmask, 子网与CIDR (Classless Interdomain Routing)

我们前面谈到 IP 是有等级的,而设定在一般计算机系统上面的则是 Class A, B, C。现在我们来想一想,如果我们设定一个区网, 使用的是Class A ,那么我们很容易就会想到,哪有这么多计算机可以设定在同一个 Class A 的区段内 (256x256x256-2=16777214) ? 而且,假设真有这么多计算机好了,回想一下 CSMA/CD 吧,你的网络恐怕会一直非常停顿,因为妳得要接到一千多万台计算机对你的广播... 光是想到一千多万台的广播,你的网络还能使用吗?真没效率!

这样一来,就能够将原本的一个网域切为两个较细小的网域,方便分门别类的设计喔。

Netmask, 或称为 Subnet mask (子网掩码)

无层级 IP: CIDR(Classless Interdomain Routing)

一般来说,如果我们知道了 Network 以及 Netmask 之后,就可以定义出该网域的所有 IP 了!因为由 Netmask 就可以推算出来 Broadcast 的 IP 啊!因此,我们常常会以 Network 以及 Netmask 来表示一个网域,例如这样的写法:

Network/Netmask

192.168.0.0/255.255.255.0

192.168.0.0/24    <==因为 Net_ID 共有 24 个 bits

另外,既然 Netmask 里面的 Net_ID 都是 1 ,那么 Class C 共有 24bits 的 Net_ID ,所以啦,就有类似上面192.168.0.0/24 这样的写法啰!这就是一般网域的表示方法。

例题:

请问 192.168.10.100/25 与 192.168.10.200/25 是否在同一个网域内?

答:

如果经过计算,会发现 192.168.10.100 的 Network 为 192.168.10.0 ,但是 192.168.10.200 的 Network 却是 192.168.10.128,由于 Net_ID 不相同,所以当然不在同一个网段内!关于 Network 与 Netmask 的算法则请参考上一小节。

通讯端口口

在上图的 TCP 表头数据中,最重要的就属那 16 位的两个咚咚,亦即来源与目标的端口口。由于是 16 位,因此目标与来源端口口最大可达 65535 号 (2 的 16 次方)!那这个埠口有什么用途呢?上面稍微提到过,网络是双向的,服务器与客户端要达成联机的话, 两边应该要有一个对应的埠口来达成联机信道,好让数据可以透过这个信道来进行沟通。

那么这个埠口怎么打开呢?就是透过程序的执行!举例来说,鸟哥的网站上,必须要启动一个 WWW 服务器软件, 这个服务器软件会主动的唤起 port 80 来等待客户端的联机。你想要看我网站上的数据,就得要利用浏览器,填入网址,然后浏览器也会启动一个埠口,并将 TCP 的表头填写目标端口口为80 ,而来源端口口是你主机随机启动的一个埠口, 然后将 TCP 封包封装到 IP 后,送出到网络上。等鸟站主机接收到你这个封包后,再依据你的埠口给予回应。

这么说你或许不好理解,我们换个说法好了。假如IP 是网络世界的门牌,那么这个埠口就是那个门牌号码上建筑物的楼层! 每个建筑物都有 1~65535 层楼,你需要什么网络服务,就得要去该对应的楼层取得正确的资料。但那个楼层里面有没有人在服务你呢? 这就得要看有没有程序真的在执行啦。所以,IP 是门牌,TCP 是楼层,真正提供服务的, 是在该楼层的那个人 (程序)!

Tips:
曾经有一个朋友问过我说:『一部主机上面这么多服务,那我们跟这部主机进行联机时,该主机怎么知道我们要的数据是 WWW 还是 FTP 啊?』就是透过埠口啊!因为每种 Client 软件他们所需要的数据都不相同,例如上面提到的浏览器所需要的数据是 WWW ,所以该软件默认就会向服务器的 port 80 索求数据;而如果你是使用 filezilla 来进行与服务器的 FTP 数据索求时, filezilla 当然预设就是向服务器的 FTP 相关埠口 (预设就是 port 21) 进行连接的动作啦!所以当然就可以正确无误的取得 Client 端所需要的数据了

再举个例子来说,一部主机就好像是一间多功能银行,该银行内的每个负责不同业务的窗口就好像是通讯端口口, 而我们民众就好像是 Client 端来的封包。当你进入银行想要缴纳信用卡账单时, 一到门口服务人员就会指示你直接到该窗口去缴纳,当然,如果你是要领钱,服务人员就会请你到领钱的窗口去填写数据, 你是不会跑错的对吧! ^_^。万一跑错了怎么办?呵呵!当然该窗口就会告诉你『我不负责这个业务,你请回去!』, 呵呵!所以该次的联机就会『无法成功』咯!

特权埠口 (Privileged Ports)

你现在了解了埠口的意义后,再来想想,网络既然是双向的,一定有一个发起端。问题是,到底要联机到服务器取得啥玩意儿?也就是说,哪支程序应该在哪个端口口执行,以让大家都知道该埠口就是提供哪个服务,如此一来,才不会造成广大用户的困扰嘛! 所以啰,Internet 上面已经有很多规范好的固定 port (well-knownport), 这些 port number 通常小于 1024,且是提供给许多知名的网络服务软件用的。 在我们的 Linux 环境下,各网络服务与 port number 的对应默认给他写在 /etc/services 档案内喔!底下鸟哥列出几个常见的 port number 与网络服务的对应:

端口口

服务名称与内容

20

FTP-data,文件传输协议所使用的主动数据传输端口口

21

FTP,文件传输协议的命令通道

22

SSH,较为安全的远程联机服务器

23

Telnet,早期的远程联机服务器软件

25

SMTP,简单邮件传递协议,用在作为 mail server 的埠口

53

DNS,用在作为名称解析的领域名服务器

80

WWW,这个重要吧!就是全球信息网服务器

110

POP3,邮件收信协议,办公室用的收信软件都是透过他

443

https,有安全加密机制的WWW服务器

 

另外一点比较值得注意的是,小于 1024 以下的埠口要启动时, 启动者的身份必须要是 root 才行,所以才叫做特权埠口嘛!这个限制挺重要的,大家不要忘记了喔! 不过如果是client 端的话,由于 client 端都是主动向server 端要数据, 所以 client 端的 portnumber 就使用随机取一个大于 1024 以上且没有在用的port number。




Logo

更多推荐