5.计算机互联网:IP协议群
本文最后更新于 2024年1月27日 下午
计算机互联网:IP协议群
IP协议
IP地址及其演进过程
IP地址是整个互联网上的每一台主机/路由器的每一个结构分配了一个全世界范围内唯一的32位标识符,从而能够在互联网中寻址。IP地址由ICANN组织统一管理和分配,中国用户可以向APNIC组织有偿申请IP地址。
IP地址是一个32位的01比特序列,为了保证可读性,通常每八位转换为十进制数,并且前后两个八位字段以“.”隔开,这种方法称为点分十进制记法。例如:IP地址:11000000
10101000 11001000 00000010利用点分十进制记法写作192.168.200.2。
IP地址的格式经历了三个阶段:
- 分类的IP地址:这是最基本的编址方法。
- 划分子网:对基本编址方法的改进。 - 构成超网:无分类的编址方法。
分类的IP地址
在这一阶段,IP地址由两部分构成:网络号和主机号。网络号表示主机或者路由器端口连接到的网络,网络号在整个互联网范围内是唯一的;主机号表示该主机或者该路由器端口,在网络号对应的网络中是唯一的。
根据不同用途,将IP地址分为了5类,依据网络号中有1到4位的类别位对其类别进行识别。
其中ABC类地址用于一对一通信,称为单播地址。
A类结构中网络号有8位,其头部类别位为“0”,主机号有24位。
B类结构中网络号有16位,其头部类别位为“10”,主机号有16位。
C类结构中网络号有24位,其头部类别位为“110”,主机号有8位。
D类地址是用于一对多通信的多播地址,其头部类别位为“1110”,其后为多播地址。
E内地址的类别位为“1111”,保留为今后使用。
A类地址中,网络字段号全为0的IP地址是保留地址,意思为“本网络”;网络号为127的字段号预留作为本地软件与本主机之间的通信,称为回环通信,网络号为127的地址也称为回环地址。因此因此A类地址的可用网络数目为\(2^7-2\)。
B类地址中,128.0.0.0不指派,因此B类地址的可用网络数目为\(2^{14}-1\)。
C内地址中,192.0.0.0不指派,因此C类地址的可用网络数目为\(2^{21}-1\)。
对于每一类地址的主机号,全“1”的主机号表示该网络上的所有主机,全“0”的主机号表示该网络上的本主机。因此在每类地址的最大可用主机数目都应当减去这两个主机。
关于IP地址,需要注意的是:
-
IP地址实际上是一台主机或者路由器与一条网络链路接口的编号,当一台主机同时连接多个网络时,其应该对应数量、且不同的网络号。这样的主机称为多归属主机(multihomed
host)。
-
路由器的功能是通过多个端口连接多个网络,因此,路由器的每个端口将拥有一个网络号。也就是说,一个路由器拥有多个网络号。不过,当两个路由器直接相连时,可以为两个路由器连接的端口各自分配一个IP地址,此时两个路由器视为独立工作,也可以不分配IP地址,此时可以将两个路由器从逻辑上视为同一个路由器,这种情况下连接的网络称为无名网络。
-
同一个局域网中的路由器或者主机的IP地址相同。此处局域网的定义应当为上一讲提到过的“由一个交换机和其连接全站点/主机组成的网络”,因此,使用网桥或者交换机连接起来的多个碰撞域具有相同的网络号。由于传统的网桥或者(二层)交换机不需要和其他网络进行通信,它们一般没有IP地址。
这样分配IP地址的好处有二,其一是IP地址管理机构在分配IP地址时只需要分配网络号,主机号可以由得到网络号的组织自行分配。其二是路由器仅根据网络号转发分组,大大减少了路由器中路由表所占用的内存和查表时间。
划分子网
随着互联网中主机数量的增多,分类形式的IP地址的弊端渐渐暴露出来:IP地址的利用率非常低,每个A类地址的网络可以连接百万计的主机,但是分配到A类地址的组织往往主机数量并没有这么多,这就造成了IP地址的浪费。第二是随着网络数量的增加,每个物理网络分配一个网络号最终会导致路由表太大,导致查表时间和路由器成本增加。第三是两级的IP地址不够灵活,申请到新的IP地址之前,新增加的网络是不可能连接到互联网上工作的。
在这样的背景下,1985年起在IP地址中又增加了一个子网号字段,原来的两级地址变成由网络号、子网号和主机号组成的三级地址。
某些单位可以将物理网络划分为若干个子网,但是单位对外仍然表现为一个网络。发送到这个单位的IP数据报在被这个单位的路由器接收到后,按照子网号找到对应主机所在的子网。
但是IP地址中本来没有关于任何子网划分的信息,这一部分信息需要由另一个单独的比特串表示,称为子网掩码。简单来说,子网掩码也是一个32位的比特串,其中将网络号和子网号标记为“1”,称为1语,将主机号所在的部分标记为“0”,称为0语。路由器在接收到IP地址后,可以用子网掩码与原IP地址相与,从而得到真正的网络号。
如此,子网号的大小可以根据每个子网中主机的数量进行合理地划分,从而增加IP地址的利用率。
构成超网
划分子网虽然缓解了IP地址利用率低下的问题,然而由于IP地址的格式限制和日益增多的设备入网需求,IP地址面临着枯竭。2011年,IANA组织宣布IPv4地址已经耗尽。
此时,为了解决这个问题,互联网工程工作小组在1993年发布了一新系列的标准,其中提出了无分类域间路由选择/无类域间路由(Classless
Inter-Domain
Routing,CIDR)的方法。这种方法可以将路由集中起来,在路由表中更灵活地定义地址。CIDR不区分
A 类、B 类、C 类地址,消除了划分子网的概念,而是使用 CIDR
前缀的值指定地址中作为网络 ID
的位数。CIDR把32位的IP地址划分为前后两个部分:网络前缀和主机号,其中网络前缀用于指明网络。此外,CIDR的IP地址后还需要用斜线“/”其后跟随网络前缀所占用的位数。例如:128.14.34.7/20
对应的32位比特串:10000000 00001110 0010/0010
00000111中的前20位:10000000 00001110 0010表示网络号,后12位0010
00000111表示主机号。
CIDR最大的作用是路由聚合(route
aggregation),也称为构成超网:一组路由汇聚为一个单个的路由广播。其具体做法是从第1位比特开始进行比较,找到第一个不相同的比特数,保留前面相同位数,然后将相同比特后面的数(到末尾)填充为0。由此得到的地址为汇总后的网段的网络地址,其网络位为连续的相同的比特的位数。
例如:四个前缀长度24的IP地址:
212.56.132.0 /24 → 212.56.10000100.0 /24
212.56.133.0 /24 → 212.56.10000101.0 /24
212.56.134.0 /24 → 212.56.10000110.0 /24
212.56.135.0 /24 → 212.56.10000111.0 /24
相同的前缀有22位,保留相同位数,将相同比特后面的数(到末尾)填充为0.
所以很容易得出聚合后的地址块为:212.56.132.0/22.
路由汇聚的最终结果和最明显的好处是缩小网络上的路由表的尺寸,进一步节约IP资源。
在路由器中,应当从匹配结果中选择具有最长前缀的路由,称为最长前缀匹配。拥有越长的网络前缀,其地址块就越小,这样路由就越具体。
IP地址和MAC地址
在计算机局域网一讲中提到过,MAC地址是表示一个设备的物理连接点的地址,通常烧录在硬件设备中,无法自主更改。MAC地址在物理层和数据链路层中使用。而IP地址是一种通过软件实现的逻辑地址,当设备切换网络或者是网络状态刷新时,设备的IP地址会发生变化。IP地址在网络层及以上使用。
地址类型 | 工作层 | 物理/逻辑 | 地址发生更改的容易程度 |
---|---|---|---|
MAC地址 | 物理层和数据链路层 | 物理地址 | 难以更改 |
IP地址 | 网络层、传输层和应用层 | 逻辑地址 | 容易更改 |
IP数据报的格式
IP数据报是IP层对应的数据报部分,其由头部的控制信息和数据部分组成,如下图所示:
IPv4首部为4字节对齐,即首部长度必须是4字节的整数倍,如果首部长度不满4字节的整数倍,需要添加一些冗余比特。
IP数据报头部中需要重点关注的几个字段:
- 总长度
指整个IP数据报(首部+数据部分)的长度,单位为字节。IP数据报是可变长度数据报,因此需要一个字段表示数据报的总长度。总长度字段为16位,即理论上IP数据报的最大长度为\(2^{16}-1\)字节,但是实际上还需要考虑下层数据链路层的数据字段的最大长度,称为最大传送单元(MTU,maximum
transfer
unit),因此如果IP数据报运行在以太网上,实际上的IP数据报长度通常不超过1500字节。
IP数据报越短,路由器的转发速度越快。
- 标识(identification)
IP数据报中用于计数产生数据报个数的字段,占16位。虽然IP数据报是无连接的,不存在顺序接收的问题。但是当数据部分超出最大传送单元限制时,这个数据部分会被拆分为具有相同计数的多个数据报片,在接收处需要将计数部分相同的数据报片进行还原。
- 片偏移(offset)
IP数据报中表示某个数据报分片在分片前的整个数据部分中的相对位置,占13位。片偏移表示的是该数据报分片的起点位置。片偏移以八个字节为偏移单位,每个分片长度一定是8字节的整数倍。
生存时间(time to live, TTL)
为了防止某个数据报在整个网络中无法交付,从而一直消耗通信资源,规定该数据报在网络中的最大存活时间。最早的TTL字段以秒为单位,但是随着路由器处理数据报的时间不断缩短,如今TTL表示该数据报在网络中可以经过的最大跳数,每经过一个路由器TTL会减一。TTL字段占8位,因此一个数据报在互联网中可以经过的最大跳数为\(2^8-1=255\)。源地址和目的地址
表示源和目的地的IP地址,按照IP地址的长度各占32位。
路由器的工作
在概述部分提到,发送数据的过程中,数据从高层下到低层,层层封装。含有源IP地址和目的IP地址的IP数据报交付给数据链路层时被添加上具有源MAC地址和目的MAC地址的头部并封装为MAC帧。
路由器在收到MAC帧时,根据MAC帧首部中的硬件地址决定收下或忽略。在路由器的数据链路层,原有的MAC帧的头部和尾部被路由器丢弃,IP数据报交付给路由器的网络层。在路由器的网络层解开IP数据报头部,并查看头部的源IP地址和目的IP地址,做出路由选择,并重写IP数据报头部的部分内容(比如TTL),然后交付给路由器的数据链路层。
IP数据报回到路由器的数据链路层,数据链路层根据APR协议(一种IP地址和MAC地址的映射)查找下一个路由器或者目的主机的MAC地址,并将源MAC地址字段改写为自己的MAC地址,重新封装为新的MAC帧后发送到下一个网络中。
需要注意的是,每一个中间路由器中的路由表只包含所有可能的下一跳的路由器端口地址,以此来减少路由表的跳数。
从上述的工作模式中可以发现,路由器只根据IP地址的网络号进行路由选择,因此在整个通信的过程中,IP数据报中的源IP地址和目的IP地址是不变的。而其MAC帧中的源MAC地址和目的MAC地址会不断变化。
其次,在IP层的互联网只能看到IP数据报,网络层将下层的硬件地址体系和细节完全屏蔽,所以只要在网络层上讨论问题,就可以使用IP地址研究路由器/主机之间的通信。全世界存在着使用不同硬件地址的、各式各样的网络,在这些网络中实现物理层面的通信需要非常复杂的硬件地址转换工作。但是只在网络层面上研究,连接到互联网的主机只需要各自拥有一个唯一的IP地址就能够方便的通信,因此使用IP地址在网络层进行逻辑通信节省了不同计算机之间的硬件转换。
路由器和交换机的区别
从计算机网络的角度,路由器和交换机有如下区别:
-
第一是工作的地点不同,路由器用于不同网络之间的连接;交换机只用于局域网内部的连接。
-
第二是适用的对象不同,路由器适用于跨网络的通信;交换机只用于局域网内部的通信。
-
第三是工作的层数不同,路由器需要与广域网连接,因此其工作层数包括物理层、数据链路层和网络层;
交换机不会涉及到跨网络的通信,因此没有网络层。
-
第四是工作方式的不同,交换机接收到数据包后根据头部信息对照交换表进行转发,其过程是透明传输的;路由器在接收到数据包后数据包的MAC帧头部和尾部被重新生成,IP数据报头部的一些信息也会被改写,其过程是非透明传输的。
适用范围 | 通信场景 | 内部协议结构 | 传输特性 | 地址类型 | |
---|---|---|---|---|---|
交换机 | 局域网 | 局域网内部的通信 | 数据链路层 物理层 |
透明传输 | MAC地址 |
路由器 | 互联网 | 跨网络的通信 | 网络层 数据链路层 物理层 |
非透明传输 | MAC地址和IP地址 |
主机中的路由表
需要注意的是,主机在发送IP数据报时需要向IP数据报头部填入目的主机的IP地址。主机中也需要有路由表来指明目的主机的IP地址。在主机刚开始工作时,一般路由表中会有一个默认路由器的IP地址,不管数据报要发送到哪个目的地址,都一律将这个数据报传送到默认路由器。默认路由器在找到下一跳的最佳路由后,会通过改变路由报文(使用下文中提到的ICMP协议,一种应用于IP层的控制协议)将数据报传送给主机,使主机的路由表中的目的地址由默认路由器的地址改为下一跳的最佳路由地址。
地址解析协议/ARP协议
在适用IP协议的通信中,源主机如何知道目的IP地址所对应的具体主机的MAC地址?——IP协议中使用了地址解析协议(ARP,address resolution protocol)来表示一个网络中MAC地址和IP地址的映射关系。
从功能上看,可以认为ARP协议属于第三层网络层的协议。但是从其结构来看,ARP请求被封装在MAC帧当中,因此某些资料上也认为ARP协议属于第二层数据链路层的协议。
虽然网络层使用的是IP地址,但实际在传输数据帧时,最终还是定向到某个MAC地址绑定的主机。IP地址和MAC地址由于格式不同而不存在简单的映射关系。解决这一问题的方法是在每个主机和路由器内部都配备一个高速缓存器动态地更新IP地址和MAC地址之间的映射表。
具体而言,每一台主机/路由器都有ARP高速缓存器(ARP
cache),里面有本局域网上各主机/路由器的MAC地址以及它们对应的IP地址。当主机要向本局域网上的另一个主机发送IP数据报时,需要从该主机内部的ARP缓存器中找到目的主机IP地址对应的MAC地址,并填入MAC帧中,然后局域网把该MAC帧发往此MAC地址绑定的主机。
同交换机/网桥一样,ARP缓存器也有对地址的自我学习功能:
-
当目的主机IP地址对应的MAC地址对源主机未知时,源主机通过ARP进程向本局域网中广播一个ARP请求,其内容包括了源主机的MAC地址和IP地址,以及需要查找的MAC地址所对应的IP地址,这些信息被封装为MAC帧格式。
-
局域网中的每一个主机都会收到这个包含ARP请求的MAC帧,然后解包查看需要查找的IP地址是否为自己的IP地址:
-
如果收到ARP请求的主机的IP地址与请求查找的IP地址不同,则该主机忽略这个ARP包。
-
如果收到ARP请求的主机的IP地址与请求查找的IP地址相同,则该主机收下这个ARP请求,并且发送一个包含自己MAC地址和IP地址的ARP响应。这个响应的发送是单播。
同时,该主机也将源主机的MAC地址和IP地址写入自己的ARP缓存中,以便今后通信。
-
源主机收到ARP响应后,将响应中的MAC地址和IP地址写入自己的ARP缓存中。
如果所找的主机和源主机不在同一个局域网上,则需要路由器按照MAC帧的操作将其广播到各个网络中的路由器,由这些路由器进一步广播寻找自己连接的网络下是否存在这个主机。同样地,目的主机发送的ARP响应也需要通过路由器转发到源主机所在的网络中,其处理过程和MAC帧相同。
由于IP地址会不断变动,ARP缓存中为其中的每个项目也有生存时间(通常为10到20分钟),超出生存时间的项目会被自动删除。
需要注意的是,这个过程看似和交换机/网桥的地址学习过程相似,但是最大的不同是ARP的对MAC地址和IP地址的映射的学习是主动的,需要接收者发送一个响应,而交换机/网桥的地址学习不需要接收者响应。
网络伪装主要是根据每一层的协议伪装每一层的头部控制信息,或者篡改最上层的用户信息或者控制信息。
ARP学习过程中的最重要的是安全问题,如果有主机在接收到源主机的ARP广播后可以伪装ARP响应中的IP地址和MAC地址,那么会引起网络混乱。这是ARP病毒的工作原理。
网际控制报文协议/ICMP协议
ICMP协议是一种用于提高IP数据报交付可靠性的、位于IP层的协议。ICMP报文被封装在IP数据报的数据部分:
ICMP报文分为差错报告报文和询问报文。当IC数据报无法正确交付时,路由器或者目的主机会发送差错报文给源主机。
差错报文具体包括:
- 终点不可到达:路由器或者主机不能交付数据报。
- 超时:路由器收到TTL=0的报文。
- 参数错误:IP数据报头部的某些字段出现错误。
-
路由改变/重定向:让主机知道下次应当将数据报发送给另外的路由器。(比如之前提到的主机中的路由表改变)
ICMP的询问报文包括:
-
回送请求和回答:由主机或者路由器向某个特定主机发送询问。该主机收到询问后需要发送回答报文。这样的方式通常用于测试目的站点的可达性。
-
时间戳请求和回答:请求某台主机或者路由器回答当前的日期和时间,用于时钟同步和时间测量。
ICMP应用举例
Ping
ICMP的重要应用是使用分组网间探测(Packet InterNet
Groper,PING)测试两台主机之间的连通性。在Windows操作系统中的用户控制台应用(cmd),键入ping hostname
(hostname
为要测试的主机的域名或IP地址)回车时,主机会默认向指定的hostname
连续发送四个ICMP请求报文,目的主机回送ICMP响应报文,通过发送和接收的时间差从而可以计算两台主机之间当前的链路延迟。
举例如下:
1
2
3
4
5
6
7
8
9
10ping l61012345.top
> 正在 Ping l61012345.top [185.199.111.xxx] 具有 32 字节的数据:
> 来自 185.199.111.xxx 的回复: 字节=32 时间=37ms TTL=49
> 来自 185.199.111.xxx 的回复: 字节=32 时间=43ms TTL=49
> 来自 185.199.111.xxx 的回复: 字节=32 时间=37ms TTL=49
> 来自 185.199.111.xxx 的回复: 字节=32 时间=40ms TTL=49
> 185.199.111.xxx 的 Ping 统计信息:
> 数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
>往返行程的估计时间(以毫秒为单位):
> 最短 = 37ms,最长 = 43ms,平均 = 39ms
traceroute/tracert
另一个ICMP的重要应用是tracerout用于跟踪一个分组从源点到终点的路径,在Windows操作系统中的指令为tracert
。
其方法是利用ICMP时间超过和终点不可达两种报文对路由进行跟踪,具体而言,tracerout从源主机向目的主机发送一连串IP数据报,每一个IP数据报中封装的内容是使用了非法端口号而无法被交付的UDP数据报。当第一个数据报经过第一个路由时,由于数据报中的TTL为1,收到第一个数据报的路由器会将TTL减一并且向源点主机发送一个时间超过ICMP报文。然后,主机发送第二个TTL=2的数据报,并沿着相同的路径发送给同一个路由器。由于TTL的限制,这个数据报最终只会到达第二个路由器,第二个路由器也会向主机发送时间超过报文。
如此重复,每一次源主机发送的数据报中的TTL都比上一个数据报中的TTL多1,当数据报刚刚好到达目的主机时,目的主机解开IP数据报,但是由于其中的UDP数据报非法,目的主机会向源主机发送一个终点不可达ICMP报文。从而主机能够识别这个路由上的每一个路由器和目的主机。
互联网的路由选择协议
自治系统
互联网允许与互联网相连接的各种网络使用不同的内部架构和路由协议。定义互联网中使用同一个路由选择协议和度量的路由器集合称为一个自治系统(AS,autonomous system)或者称之为自治域。一个自治域对其他的自治域所表现出的是单一和一致的路由选择策略。
这样,互联网将路由选择协议划分为两大类:内部网关协议/IGP(interior
gateway protocol)和外部网关协议/EGP(external gateway protocol)。
内部网关协议用于一个自治系统内部的路由选择,称为域内路由选择(intradomain
routing),常见的有两种协议:RIP和OSPF协议。
外部网关协议用于用于自治系统之间的路由选择,称为域间路由选择(interdomain
routing). 常见的协议是BGP-4协议。
内部网关:RIP协议
RIP协议是一种基于Bellman-Ford路由算法的,一种基于距离向量的路由选择协议,最大优点是简单。此处的距离是指的路由中经过路由器的个数,称为跳数(hop
count)。
RIP协议的特点是:
- 每个路由器只与其相邻的路由器交换信息。
-
路由器交换的信息是本路由器当前的路由表,路由表的每行表示到自治域内某个网络的最短跳数以及对应路由所经过的下一跳路由器。
- 路由器之间周期性地交换路由信息,通常是每隔30秒交换一次路由表。
RIP协议的功能是让一个自治域中的所有路由器都定期地与其相邻地所有路由器交换路由信息,并不断更新路由表,使得每一个路由器到每一个目的网络的路由都是最短的。
RIP协议的操作
对于使用RIP协议的自治域中的某一个路由器,在其收到相邻路由器发送的RIP报文后,进行如下操作:
-
对于从相邻路由器X中收到的路由表,先将这个路由表中所有的下一跳路由器全部改为X,并且每一行的跳数加一。
对于收到并对其更改后的路由表B,本路由器会将这个路由表B与原来自己的路由表A进行对比:
-
如果原来路由表中没有某个网络N,就把这个网络添加到自己的路由表A中。
- 如果原来路由表中有网络N:
- 如果B中的下一跳路由器与原来自己路由表A中的下一跳路由器相同:
- 如果路由跳数发生了改变,则对跳数进行更新。
- 如果路由跳数与之前相同,则什么也不做。
- 如果B中的下一跳路由器与原来自己路由表A中的下一跳路由器不同:
-
如果B中的路由跳数比A中的短,则更新这个条目中对应的下一跳路由器和最短跳数。
- 如果B中的路由跳数比A中的长,则什么也不做。
-
如果3分钟过后还没有收到路由器X发来的路由表,则这个路由器相关的路由都设置为16,表示距离不可达。
协议格式
由于RIP协议通信是一种短而少量的通信,RIP协议使用用户数据报UDP协议进行传送。
缺点
RIP存在的最大问题是当网络出现故障时,需要经过比较长的时间才能将这个信息传送到所有的路由器,可以简单记为“坏消息传的慢”。
具体机制可以由下图解释:
如图:当某个路由器\(R_1\)到网络\(N_1\)的链路出现故障,路由器\(R_1\)到网络\(N_1\)的距离改为16,代表不可达。这个信息很有可能经过一段时间后发送给\(R_2\),但是在这个时间内,\(R_2\)很有可能预先向\(R_1\)发送了自己的网络信息:到网络\(N_1\)的距离为2,下一条路由器为\(R_1\),这条消息简单写为\((N_1,2,R_1)\)。
\(R_1\)收到这条信息后,误认为可以经过\(R_2\)到网络\(N_1\),于是将自己的信息修改为\((N_1,3,R_2)\),并将该信息发送给\(R_2\),\(R_2\)更新自己的路由表为:\((N_1,4,R_1)\)。如此重复,直到最小跳数变为16,\(R_1\)和\(R_2\)才能都意识到与网络\(N_1\)不可达。
这样的机制使得整个自治域中达到稳定路由的时间变长。
此外,RIP还限制了网络的规模,它能使用的最大距离被限制在15。由于交换信息是完整的路由表,因而随着网络规模的扩大,其开销也就增加。
内部网关:OSPF协议
OSPF是另一种内部网关协议,它是一种分布式基于链路状态的路由协议。
OSPF的特点是:
-
使用洪泛向本自治域中的所有路由器发送信息。每一个相邻路由器将收到的信息发往其所有的相邻路由器。
-
发送的信息是与本路由器相邻的所有路由器的链路状态。链路状态包含两个信息:
一个是相邻路由器,另一个是路由的代价,称为度量(metric)。
-
当链路状态发生变化时(比如代价的变化,或者路由离线等等),路由器才向所有路由器用洪泛发送此信息。
最终,所有的路由器都能建立一个链路状态数据库,这个数据库在全网范围内是一致的。
协议格式
OSPF协议使用IP数据报传送,且长度很短。
相比于RIP,OSPF协议还有如下特点:
- 允许对不同类型的业务计算出不同的路由。
- 可以将通信量分配给多条代价相同的路径,进行负载平衡。
- 支持子网划分和超网。
-
由于使用了洪泛方法,OSPF需要让每个链路状态都带上一个32位的序号,序号越大状态就越新。
路由协议 | 基于类型 | 路由器交换的信息 | 收敛后每个路由器内部数据差异 | 协议格式 |
---|---|---|---|---|
RIP协议 | 距离向量 | 整个路由表 | 不同的路由表 | UDP数据报 |
OSPF协议 | 链路状态 | 链路状态:包含相邻路由和代价 | 全网范围内一致的链路状态数据库 | IP数据报 |
外部网关协议:BGP*
需要使用外部网关协议的动机是:
- 互联网的规模太大,使得自治系统之间的路由选择非常困难。
- 自治系统之间的路由选择必须考虑相关策略:
由于各网络使用的度量可能不同,性能差别很大。根据最短距离寻找出来的路径可能并不合适,可能还需要考虑代价或者安全性等等问题。域间通信需要人为设置某些路由。
因此,BGP协议只能是力求寻找一条能够达到目的网络且比较好的路由,而并非寻找一条最佳路由。
网络地址转换/NAT
专用地址是一种只能用于一个机构内部通信的地址。专用网络,又被称为本地互联网,是一种使用专用地址进行通信的网络。由于当前IPv4的地址已经所剩不多,所以现在更常见的方法是对一个专用网络采用专用地址进行内部映射,而这个专用网络对外拥有至少一个有效的全球IP地址。这个IP地址和专用网络中设备的专用地址之间的映射关系由网络地址转换/NAT(Natwork
Address Translation)进行。
所有使用本地地址的主机在和外界通信时,都要在装有NAT软件的路由器上将本地地址转换为全球IP地址,然后才能和互联网连接。
需要注意的是,专用网络所拥有的一个有效的全球IP地址同一时间之内只能由专用网络中的一个设备所使用,因此当NAT路由器具有\(n\)个全球IP地址时,专用网内最多可以同时拥有\(n\)台主机接入到互联网。
对于内部设备较多的专用网,这些设备只能轮流使用这些IP地址。
当引入端口号和套接字的概念时,外部网络的网络的IP地址和端口号被映射为内部网络的IP地址和端口号,理论上如果外网IP地址的端口号足够覆盖内网所有的主机和进程数,即便是只有一个IP地址,通过不同的端口号也可以识别不同内网主机和不同内网主机的不同进程,不需要设备轮流使用IP。
IPv6数据报
IPv6仍然是无连接的传送协议。相比于IPv4,其主要区别为:
- 更大的地址空间,IPv6的地址空间从IPv4的32位拓展到了128位。
-
IPv6的数据报由两大部分组成:基本首部和有效载荷。其中基本首部的长度是固定的,其选项放在有效载荷中,称为扩展首部。而IPv4的首部长度是可变的。
-
IPv6首部为8字节对齐,即首部长度必须是8字节的整数倍;IPv4是4字节对齐。
目前,IPv4和IPv6通过双协议栈技术进行过渡。