文章目录
- 一、网络层
- 1、概念
- 2、网络层的两个层面
- 1)介绍
- 2)问题
- 3)解决
- 二、网际协议IP
- 1、介绍
- 2、虚拟互联网络
- 1)介绍
- 2)案例
- 3、IP地址
- 1)IP 地址及其表示方法
- 2)分类的IP地址
- 3)无分类编址CIDR
- 4)地址掩码
- 4、IP地址特点
- 5、IP地址与MAC地址
一、网络层
1、概念
在计算机网络中,网络层(Network Layer)是OSI(开放系统互连)参考模型或TCP/IP模型中的一个重要层级,负责在不同网络之间传输数据包,并确保数据包能够从发送端到接收端的正确传输。网络层通过路由选择最佳路径来实现数据包的转发和传递。
网络层的主要功能包括:
- 寻址和转发:为数据包添加目标地址,并根据目标地址选择最佳路径进行转发。
- 路由选择:根据路由算法选择最佳路径,确保数据包按照最有效的方式传输。
- 分组传输:将数据包分割成更小的数据包(分组),并在网络中传输。
- 拥塞控制:监控网络流量,避免网络拥塞,保证数据传输的顺利进行。
- 错误处理:处理数据包在传输过程中可能出现的错误,确保数据的完整性和可靠性。
常见的网络层协议包括IP(Internet Protocol)和IPv6(Internet Protocol version 6),它们定义了数据包的格式、寻址方案、路由选择算法等,是实现互联网通信的重要基础。网络层在整个网络通信过程中扮演着关键的角色,连接了不同网络,实现了全球范围内的数据传输和通信。
2、网络层的两个层面
1)介绍
不同网络中的两个主机之间的通信,要经过若干个路由器转发分组来完成,分组查找路由器中的转发表,从指明的接口转发到下一个路由器。
但转发表是怎样得出的呢?是从路由表导出的,而路由表又是由互联网中许多的路由器,按照共同选定的路由选择协议,通过许多次的相互交换路由信息而产生的。由此可见,在路由器之间传送的信息有以下两大类:
-
第一类是转发源主机和目的主机之间所传送的数据,把源主机所发送的分组,像接力赛跑那样从一个路由器转发到下一个路由器,最后把分组传送到目的主机。
-
第二类则是传送路由信息,是根据路由选择协议所使用的路由算法,彼此不断地交换路由信息分组,目的是为了在路由器中创建路由表,并由此导出为转发分组而用的转发表。这一类信息的传送是为第一类数据的传送服务的。
用下图 的方法来描述,也就是把网络层抽象地划分为数据层面(或转发层面)和控制层面。
2)问题
这两个层面的机制相差很大。
在数据层面中,每一个路由器根据本路由器生成的转发表,把收到的分组,从查找到的对应接口转发出去。为了加快转发的速率,现在的路由器通常都采用硬件进行转发,转发一个分组的时间为纳秒数量级。
但在控制层面中的情况则不同。一个路由器不可能独自创建出路由表。路由器必须和相邻的路由器经常交换路由信息,然后才能创建出本路由器的路由表。根据路由选择协议所用的路由算法计算路由要使用软件,这就慢多了,一般是秒的数量级。
不同的路由选择协议定义了不同的协同动作方式。路由器的生产厂家在制造路由器时,已经在路由器内部嵌入了路由选择的通信模块,使得路由器之间能够按照路由选择算法进行相互之间的通信。
3)解决
为解决上述问题,在网络界提出的软件定义网络 SDN(Software Defined Network)",正在对这两个层面的结构进行了重大的改变。
在网络的控制层面有一个在逻辑上集中的远程控制器(但在物理上可以由不同地点的多个服务器组成)。远程控制器掌握各主机和整个网络的状态,能够为每一个分组计算出最佳的路由,然后在每一个路由器中生成其正确的转发表。路由器的工作很单纯,即收到分组,查找转发表,转发分组。
下面将要介绍属于数据层面的协议,然后再讨论属于控制层面的各种路由选择协议。
二、网际协议IP
1、介绍
网际协议IP(Intermet Protocol)是 TCPIP 体系中两个最主要的协议之一,也是最重要的互联网标准协议之一。严格来说这里所讲的IP 其实是IP的第4个版本,记为IPv4。但在讲述协议 IP 的各种原理时,常省略 IP后面的版本号。在后面的4.5节我们再介绍较新的版本IPv6(版本1~3和版本5都未曾使用过。顺便指出,所谓的IPv9只不过是某些人故意的炒作而已,不值一提)。
与协议IP配套使用的还有三个协议:
- 地址解析协议 ARP(Address Resolution Protocol)
- 网际控制报文协议ICMP(Internet Control Message Protocol)
- 网际组管理协议IGMP(Interet Group Management Protocol)
下图画出了这三个协议和网际协议IP的关系。在这一层中,ARP画在最下面,因为IP经常要使用这个协议。ICMP和IGMP画在这一层的上部,因为它们要使用协议IP。这三个协议将在后面陆续介绍。由于网际协议IP是用来使互连起来的许多计算机网络能够进行通信的,因此TCP/IP 体系中的网络层常常被称为网际层(intermetlayer),或IP层。
2、虚拟互联网络
1)介绍
图(a)表示有许多计算机网络通过一些路由器进行互连。由于参加互连的计算机网络都使用相同的网际协议IP(Internet Protocol),因此可以把互连以后的计算机网络看成为如图 (b)所示的一个虚拟互连网络(intermet)。
所谓虚拟互连网络也就是逻辑互连网络,它的意思就是互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用协议IP就可以使这些性能各异的网络在网络层上看起来好像是一个统一的网络。
这种使用协议IP的虚拟互连网络可简称为IP网(IP 网是虚拟的。但平常不必每次都强调“虚拟”二字)。使用IP 网的好处是:当IP 网上的主机进行通信时,就好像在一个单个网络上通信一样,它们看不见互连的各网络的具体异构细节(如具体的编址方案、路由选择协议,等等)。如果在这种覆盖全球的 IP 网的上层使用 TCP协议,那么就是现在的互联网。
2)案例
下图所示的互联网中的源主机 H1, 要把一个IP数据报发送给目的主机 H2。根据第1章中讲过的分组交换的存储转发概念,主机H1先要查找自己的转发表,看目的主机H2是否就在本网络上。如是,则不需要经过任何路由器而是直接交付,任务就完成了。
如不是,则必须把 IP 数据报发送给某个路由器(图中的R1)。R1在查找了自己的转发表后,知道应当把数据报转发给R2,进行间接交付。这样一直转发下去,最后由路由器R5知道自己是和H2连接在同一个网络上,不需要再使用别的路由器转发了,于是就把数据报直接交付目的主机H2。总之,分组从源节点A发送到目的节点B,若中间必须经过一个或几个路由器(这表示A和B不在同一个网络上),则是间接交付。
但若不需要经过路由器(这表示A和B在同一个网络上),则是直接交付。
在图中画出了源主机、目的主机以及各路由器的协议栈。
我们注意到,主机的协议栈共有五层,但路由器的协议栈只有下三层。图中还画出了数据在各协议栈中流动的方向(用黑色粗线表示)。
我们还可注意到,在R4和R5之间使用了卫星链路,而R5所连接的是个无线局域网(R5和主机 H2都在同一个局域网中)。在R1到 R4之间的三个网络则可以是任意类型的网络。
总之,这里强调的是:互联网可以由多种异构网络互连组成。
在互联网的词汇中,分组在传送途中的每一次转发都称为一“跳(hop)”。也有人把 hop译为跃点。
3、IP地址
在TCPP体系中,IP地址是一个最基本的概念。一个连接在互联网上的设备,如果没有IP地址,就无法和网上的其他设备进行通信。因此应当首先学好有关IP地址的内容。
1)IP 地址及其表示方法
整个的互联网就是一个单一的、抽象的网络。IP地址就是给连接到互联网上的每一台主机(或路由器)的每一个接口,分配一个在全世界范围内是唯一的32位的标识符。 地址的结构使我们可以在互联网上很方便地进行寻址。IP地址现在由互联网名字和数字分配机构ICANN (Internet Corporation for Assigned Names and Numbers)进行分配
对主机或路由器来说,IP地址都是32位的二进制代码。为了提高可读性,我们常常把32位的IP地址中的每隔8位插入一个空格(但在机器中并没有这样的空格)。为了便于人们书写和记忆,常用其等效的十进制数字表示,并且在每段数字之间加上一个小数点。这就叫作点分十进制记法(dotted decimal notation)。下图是一个 IP 地址表示方法的例子。显然把IP地址用4段十进制数字来表示是个很好的方法
前面所讲的给每个主机(或路由器)的接口分配一个IP地址,其含义就是这个IP地址不但标志了这个主机(或路由器),而且还标志了此接口所连接的网络。因此,32位的IP地址采用两级结构,由两个字段组成。第一个字段是网络号,它标志主机(或路由器)所连接到的网络。一个网络号在整个互联网范围内必须是唯一的。第二个字段是主机号,它标志该主机(对路由器来说,就是标志该路由器)。一个主机号在所连接的网络(即前面的网络号所指明的网络)中必须是唯一的。
具体的规定是:IP地址中的前n位是主机所连接的网络号,而IP地址中后面的(32-n)位是主机号。现在的问题是,当我们看到一个IP地址时,怎样知道它的网络号的位数n是多少?
2)分类的IP地址
在互联网发展早期采用的是分类的IP地址,也就是在下图中的n是固定的几个数之一。分类的方法如图 (a)所示。分类的方法非常简单。这里A类(n=8)、B类(n=16)和C类(n=24)地址都是单播地址(一对一通信),是最常用的。D类是多播地址(一对多通信,我们将在 4.7节讨论 IP 多播),而 E类是保留地址。
32 位的IP地址空间共有 2 3 2 2^32 232(即4294967296,接近43亿)个地址。A 类地址空间共有 2 31 2^{31} 231个地址,占整个IP地址空间的 50%。B 类地址空间共有 2 30 2^{30} 230个地址,占整个IP 地址空间的 25%。整个 ℃类地址空间共有 2 29 2^{29} 229个地址,占整个IP 地址的 12.5%。D 类和 E 类地址各占整个 IP地址的 6.25%。图 4-10(b)给出了各类地址占IP 地址总数的比例。
从图(a)可以看出,如果给出一个二进制数表示的IP单播地址,那么就可以很容易知道是哪类地址,并且也能看出这个二进制数表示的网络号和主机号。
例如,给出一个IP地址 10000000 00001110 00100011 00000111。对比一下图 (a),不难看出,这是一个B类地址,前16位是网络号,后16位是主机号
A 类地址的网络号字段占1个字节,只有7位可供使用(该字段的第一位已固定为0)。但要注意,第一,网络号为全0的IP地址有特殊的用途,它表示**“本网络”;第二,网络号为 127(即 01111111)保留作为本地软件环回测试**(loopback test)本主机的进程之间的通信之用。若主机发送一个目的地址为环回地址(例如127.0.0.1)的IP 数据报,则本主机中的协议软件就处理数据报中的数据,而不会把数据报发送到任何网络。因此A类地址可指派的网络号是 126个(即
2
7
2^7
27-2)。
A类地址的主机号占3个字节。但全0和全1的主机号一般不指派。全0的主机号表示该IP地址是“本主机”所连接到的单个网络地址(例如,若主机的IP 地址为 5.6.7.8,则该主机所在的网络的网络号是5,而该网络的网络地址就是5.0.0.0)。全1表示“所有的”,因此全1的主机号字段表示该网络上的所有主机。因此每一个A类网络中的最大主机数是
2
24
2^{24}
224-2,即16777214。
B类地址的网络号字段有2个字节。因此B类地址可指派的网络数为 2 14 2^{14} 214,即16384。B类地址的每一个网络上的最大主机数是 2 16 2^{16} 216,即65534。这里需要减2是因为要扣除全 0和全1的主机号。
C类地址有3个字节的网络号字段。因此C类地址可指派的网络总数是 2 21 2^{21} 221,即2097152。每一个C类地址的最大主机数是 2 8 2^{8} 28-2,即254。
以前B类地址中的网络地址128.0.00和C类地址中的网络地址192.0.0.0都是规定不指派的。但现在这两个网络地址都已经可以指派了。
把 IP 地址划分为 A 类、B 类、C类三个类别,当初是这样考虑的:各种网络的差异很大,有的网络拥有很多主机,而有的网络上的主机则很少。把IP地址划分为 A类、B 类和C 类是为了更好地满足不同用户的需求。
在20世纪90年代,当发现IP地址在不久后将会枯竭时,一种新的无分类编址方法就问世了。这种方法虽然也无法解决IP地址枯竭的问题,但可以推迟 IP 地址用尽的日子。下一节就介绍现在已普遍采用的这种编址方法。
3)无分类编址CIDR
这种编址方法的全名是无分类域间路由选择CIDR(Classless Inter-DomainRouting,CIDR 的读音是“sider”),其要点有以下三个。
1.网络前缀
- CIDR 把网络号改称为“网络前缀”(network-prefix)(或简称为“前缀”),用来指明网络,剩下的后面部分仍然是主机号,用来指明主机。在有些文献中也把主机号字段称为后缀(suffix)。
- 下图说明了CIDR的网络前缀和主机号的位置。看起来,这和之前也没有什么不同,只是把“网络号”换成为“网络前缀”。其实不然。这里最大的区别就是网络前缀的位数n不是固定的数,而是可以在 0~32之间选取任意的值。
- CIDR 使用“斜线记法”(slash notation),或称为 CIDR 记法,即在 IP 地址后面加上斜线“/”,斜线后面是网络前缀所占的位数。例如,CIDR 表示的一个IP 地址 128.14.35.7/20,二进制IP地址的前 20位是网络前缀(相当于原来的网络号),剩下后面 12位是主机号。
- 地址块
- CIDR 把网络前缀都相同的所有连续的IP地址组成一个“CIDR地址块”。一个CIDR地址块包含的IP 地址数目,取决于网络前缀的位数。我们只要知道CIDR 地址块中的任何一个地址,就可以知道这个地址块的起始地址(即最小地址)和最大地址,以及地址块中的地址数。例如,已知IP地址 128.14.35.7/20是某 CIDR地址块中的一个地址,现在把它写成二进制表示形式,其中的前20位是网络前缀(用粗体和下划线表示出),而前缀后面的12位是主机号:
- 无分类编址 CIDR具有很多优点,但一定要记住,采用CIDR后,仅从斜线左边的IP地址已无法知道其网络地址了。在这一点上,原来的分类地址还是比较方便的。
- 使用CIDR的一个好处就是可以更加有效地分配IP地址空间,可根据客户的需要分配适当大小的 CIDR地址块。然而在使用分类地址时,向一个部门分配IP地址,就只能以/8./16或/24为单位来分配。这显然是很不灵活的。
4)地址掩码
CIDR 使用斜线记法可以让我们知道网络前缀的数值。但是计算机看不见斜线记法,而是使用二进制来进行各种计算时就必须使用32位的地址掩码能够从IP地址迅速算出网络地址。
地址掩码(常简称为掩码)由一连串1和接着的一连串0组成,而1的个数就是网络前缀的长度。地址掩码又称为子网掩码·。在 CIDR记法中,斜线后面的数字就是地址掩码中1的个数。例如,/20地址块的地址掩码是:11111111111111111111000000000000(20个连续的1和接着的 12个连续的0)。这个掩码用CIDR 记法表示就是255.255.240.0/20。
对于早期使用的分类IP地址,其地址掩码是固定的,常常不用专门指出。例如:
- A 类网络,地址掩码为 255.0.0.0或 255.0.0.0/8。
- B类网络,地址掩码为 255.255.0.0或255.255.0.0/16。
- C类网络,地址掩码为255.255.255.0或255.255.255.0/24。
把二进制的IP 地址和地址掩码进行按位 AND 运算,即可得出网络地址。下图说明了 AND运算的过程。AND运算就是逻辑乘法运算。点分十进制的I地址是128.14.35.7/20,前缀长度是 20(见图中的灰色背景)。请注意,从点分十进制的IP地址并不容易看出其网络地址。要使用二进制地址来运算。在本例中把二进制卫地址的前 20位保留不变,剩下的12位全写为0,即可得出网络地址。
一个大的CIDR地址块中往往包含很多小地址块,所以在路由器的转发表中就利用较大的一个 CIDR地址块来代替许多较小的地址块。这种方法称为路由聚合(route aggregation),它使得转发表中只用一个项目就可以表示原来传统分类地址的很多个(例如上千个)路由项目,因而大大压缩了转发表所占的空间,减少了查找转发表所需的时间。
下图表示这个ISP共拥有64个℃类网络。如果不采用CIDR技术,则在与该ISP的路由器交换路由信息的每一个路由器的转发表中,就需要有64行,每一行指出了到哪一个网络的下一跳。但采用地址聚合后,在转发表中只需要用一行来指出到 206.0.64.0/18地址块的下一跳。这个大学共有4个系。在ISP 内的路由器的转发表中,也仅需用 206.0.68.0/22这一个项目,就能把外部发送到这个大学各系的所有分组,都转发到大学的路由器。这个路由器好比是大学的收发室。凡寄给大学任何一个系的邮件,邮递员都不必送到大学的各个系而是把这些邮件集中投递到大学的收发室,然后由大学的收发室再进行下一步的分发。这样就加快了邮递员的投递工作(相当于缩短了转发表的查找时间)。
从下图的表格中可看出,网络前缀越短的地址块所包含的地址数就越多
4、IP地址特点
- 每一个IP地址都由网络前缀和主机号两部分组成。从这个意义上说,IP地址是一种分等级的地址结构。分两个等级的好处是:第一,IP地址管理机构在分配IP地址时只分配网络前缀(第一级),而剩下的主机号(第二级)则由得到该网络前缀的单位自行分配。这样就方便了 IP 地址的管理;第二,路由器根据目的主机所连接的网络前缀(即地址块)来转发分组(而不考虑目的主机号),这样就可以使转发表中的项目数大幅度减少,从而减少转发表所占的存储空间,缩短查找转发表的时间。
- 实际上IP地址是标志一台主机(或路由器)和一条链路的接口。当一台主机同时连接到两个网络上时,该主机就必须同时具有两个相应的IP地址,其网络前缀必须是不同的这种主机称为多归属主机(multihomed host)。由于一个路由器至少应当连接到两个网络,因此一个路由器至少应当有两个不同的IP地址。
- 按照互联网的观点,一个网络(或子网)是指具有相同网络前缀的主机的集合,因此,用转发器或交换机连接起来的若干个局域网仍为一个网络,因为这些局域网都具有同样的网络前缀。具有不同网络前缀的局域网必须使用路由器进行互连。
- 在IP地址中,所有分配到网络前缀的网络(不管是范围很小的局域网,还是可能覆盖很大地理范围的广域网)都是平等的。所谓平等,是指互联网同等对待每一个I地址。
下图画出了三个局域网(LAN,LAN,和 LAN;)通过三个路由器(R,R,和 R;)互连构成的一个互连网络。其中局域网LAN,是由两个网段通过以太网交换机互连的。图中的小圆圈表示需要有一个Ⅳ 地址。这是为了强调,IP地址是标志一个主机连接在网络上的接口。如果我们把某条连接线断开,那么相应的IP地址也就不存在了。
- 在同一个局域网上的主机或路由器的IP地址中的网络前缀必须是同样的,即必须具有同样的网络号。
- 图中的网络地址(用粗体字加下画线表示)里面的主机号必定是全0。例如,LAN1的网络地址 1.1.1.0/29=00000001 00000001 00000001 00000000,在二进制表示的 IP地址中,前29位有下画线的数字是网络前缀,最后3位为主机号,是全0。
- 上图中的所有设备都有自己的MAC地址(都未画出)。请注意,图中以太网交换机连线上画出的小圆圈,是主机或路由器的IP地址,并不是以太网交换机的IP地址。以太网交换机是链路层设备,只有MAC地址。
- 用以太网交换机(它只在链路层工作)连接的几个网段合起来仍然是一个局域网只使用同样的网络前缀,例如 LAN2。
- 路由器总是具有两个或两个以上的IP地址。即路由器每个接口的IP地址的网络前缀都不同。
- 当两个路由器直接相连时(例如通过一条租用线路),在连线两端的接口处,可以分配也可以不分配IP地址。如分配了IP地址,则这一段连线就构成了一种只包含一段线路的特殊“网络”(如图中的N1,N2,和 N3)。之所以叫作“网络”,是因为它有IP地址。这种网络仅需两个IP地址,因此这里就使用了/31地址块。这种地址块专门为点对点链路的两端使用,主机号(只有1位)可以是0或1但为了节省IP地址资源,对于点对点链路构成的特殊“网络”,现在也常常不分配IP 地址。通常把这样的特殊网络叫作无编号网络(unnumbered network)或匿名网络(anonymous network)
5、IP地址与MAC地址
在学习IP地址时,很重要的一点就是要弄懂主机的IP地址与MAC地址的区别。在局域网中,由于MAC地址已固化在网卡上的ROM 中,因此常常将 MAC 地址称为硬件地址或物理地址。在本书中,物理地址、硬件地址和 MAC地址常常作为同义词出现。物理地址的反义词就是虚拟地址、软件地址或逻辑地址,IP地址就属于这类地址。
下图说明了这两种地址的区别。从层次的角度看,MAC地址是数据链路层使用的地址,而 正 地址是网络层和以上各层使用的地址,是一种逻辑地址(称IP地址为逻辑地址是因为IP地址是用软件实现的)。
在发送数据时,数据从高层下到低层,然后才到通信链路上传输。使用IP地址的IP数据报一旦交给数据链路层,就被封装成MAC帧。MAC 在传送时使用的源地址和目的地址都是MAC地址,这两个MAC地址都写在 MAC 帧的首部中。
连接在通信链路上的设备(主机或路由器)在收到MAC 帧时,根据MAC 帧首部中的MAC 地址决定收下或丢弃。只有在剥去MAC 帧的首部和尾部后把MAC 层的数据上交给网络层后,网络层才能在IP数据报的首部中找到源 IP 地址和目的 IP 地址。
总之,IP地址放在IP数据报的首部,而MAC地址则放在MAC帧的首部。在网络层和网络层以上使用的是IP地址,而数据链路层及以下使用的是MAC 地址。在上图中,当IP 数据报插入到数据链路层的MAC 帧以后,整个的 IP 数据报就成为 MAC 帧的数据,因而在数据链路层看不见数据报的 IP地址
- 在IP层抽象的互联网上只能看到 IP 数据报。虽然 IP 数据报要经过路由器 R1和 R2,的两次转发,但在它的首部中的源地址和目的地址始终分别是IP1,和IP2。图中的数据报上写的“从 IP1到 IP2”就表示前者是源地址而后者是目的地址。数据报中间经过的两个路由器的IP地址并不出现在IP数据报的首部中。
- 虽然在 IP 数据报首部有源站 IP 地址,但路由器只根据目的站的 IP 地址进行转发。
- 在局域网的链路层,只能看见 MAC 帧。IP 数据报被封装在 MAC 帧中。MAC 帧在不同网络上传送时,其 MAC 帧首部中的源地址和目的地址要发生变化,如(b)所示。开始在 H1 到 R1间传送时,MAC 帧首部中写的是从 MAC 地址 MAC1发送到 MAC 地址MAC3;,路由器 R1收到此 MAC 帧后,在数据链路层,要剥去原来的 MAC 帧的首部和尾部在转发时,在数据链路层,要重新添加上 MAC 帧的首部和尾部。这时首部中的源地址和目的地址分别变成为 MAC4和 MAC5。路由器 R2收到此帧后,再次更换 MAC 帧的首部和尾部,首部中的源地址和目的地址分别变成为MAC6和MAC2。MAC的首部的这种变化,在上面的 IP层上是看不见的。
- 尽管互连在一起的网络的 MAC 地址体系各不相同,但 IP 层抽象的互联网却屏蔽了下层这些很复杂的细节。只要我们在网络层上讨论问题,就能够使用统一的、抽象的IP地址研究主机和主机或路由器之间的通信。