第4章 网络层(未完成)

1. 网络层的功能

1.1 网络层提供的两种服务

(1)虚电路服务

 虚电路服务面向连接,让网络负责可靠传输。当两台计算机进行通信时,先建立一条虚电路VC(Virtual Circuit),以预留双方通信所需的一切网络资源。然后双方就沿着已建立的虚电路发送分组。这样的分组首部无需填写完整的目的主机地址,而只需填写这条虚电路的编号,因而减少了分组的开销。这种通信方式如果再使用可靠传输的网络协议,就可使所发送的分组无差错按序到达终点,当然也不丢失、不重复。

(2)数据报服务

 数据报服务无连接,尽最大努力交付,让运输层负责可靠传输。网络在发送分组时不需要先建立连接。每一个分组独立发送,与其前后的分组无关(不进行编号)。网络层不提供服务质量的承诺,所传送的分组可能出错、丢失、重复和失序,当然也不保证分组交付的时限。由于传输网络不提供端到端的可靠传输服务,这就使网络中的路由器比较简单,且价格低廉。采用这种设计思路的好处是:网络造价大大降低,运行方式灵活,能够适应多种应用。互联网能够发展到今日的规模,充分证明了当初采用这种设计思路的正确性。

1.2 网络层的两个层面 

在路由器之间传送的信息有两大类,一类是转发源主机和目的主机之间所传送的数据,另一类是传送路由信息,因此可以把网络层抽象地划分为数据层面和控制层面。

这两个层面的机制相差很大。在数据层面中,每一个路由器根据本路由器生成的转发表,把收到的分组,从查找到的对应接口转发出去。为了加快转发的速率,现在的路由器通常都采用硬件进行转发,转发一个分组的时间为纳秒数量级。但在控制层面中,路由器必须和相邻的路由器经常交换路由信息,然后才能创建出本路由器的路由表。根据路由选择协议所用的路由算法计算路由要使用软件,一般是秒的数量级。

之所以在此介绍这两个层面的概念,是因为最近在网络界提出的软件定义网络SDN(Software Defined Network),对这两个层面的结构进行了重大的改变。

在传统的互联网中,每一个路由器中既有转发表又有路由选择软件,也就是既有数据层面也有控制层面。在SDN结构中,路由器中的路由选择软件都不存在了,通过远程控制器掌握各主机和整个网络的状态,从而为每一个分组计算出最佳的路由,为每一个路由器生成其正确的转发表。路由器的工作只有转发分组。这样,网络从分散控制又变成集中控制的了。

SDN并不适用整个互联网,而是适用一些大型的专用数据中心之间的广域网,可以提高网络运行的效率,获得更好的经济效益。

2. 网际协议IP

2.1 虚拟互连网络

多种异构网络使用相同的网际协议IP(Internet Protocol),因此可以把互连之后的计算机网络看成一个虚拟互连网络(Internet)。

2.2 IP地址

2.2.1 IP地址及其表示方法

IP地址就是给连接到互联网上的每一台主机(或路由器)的每一个接口,分配一个在全世界范围内唯一的32位标识符。

点分十进制记法(dotted decimal notation):

 32位的IP地址采用两级结构的,由两个字段组成。第一个字段是网络号,它标志主机(或2路由器)所连接到的网络。一个网络号在整个互联网范围内必须是唯一的。第二个字段是主机号,它标志该主机(或路由器)。一个主机号在所连接的网络中必须是唯一的。由此可见,一个IP地址在整个互联网范围内是唯一的。

 2.2.2 分类的IP地址

 A、B和C类是单播地址,D类是多播地址,E类是保留地址。

A类地址:

网络号为全零的地址表示本网络,网络号为127的地址保留作为本地软件(loopback test)本主机进程通信之用。因此A类地址可指派的网络号是2^7-2l个。

全0和全1的主机号一般不指派。因此A类网络中的最大主机数是2^24-2。

B类地址:

可指派的网络数为2^14。最大主机数为2^16-2。

C类地址:

可指派的网络数为2^21。最大主机数为2^8-2。

一般不指派的特殊IP地址:

2.2.3 无分类编址CIDR

 这种编址方法的全名是无分类域间路由选择CIDR(Classless Inter-Domain Routing),其要点有以下三个了。

(1)网络前缀(network-prefix)

网络前缀的位数n不是固定数,而是可以在0~32之间选取任意的值。

斜线记法(slash notation):在IP地址后面加上斜线“/”,斜线后面是网络前缀所占的位数。

(2)地址块

网络前缀都相同的所有连续IP地址组成一个CIDR地址块。

表示方法:可以用地址块中最小地址表示整个地址块,例如128.14.32.0/20;也可以用二进制代码简要表示地址块,例如10000000 00001110 0010*,星号代表主机号字段所有的0。

主机号全0和全1的地址不可分配。

CIDR地址中有三个特殊地址块:

a. 前缀n=32,没有主机号,用于主机路由。

b. 前缀n=31,地址块中有两个IP地址,主机号分别为0和1,用于点对点链路。

c. 前缀n=0,用于默认路由。

路由聚合(route aggregation):在路由器的转发表中用一个较大的地址块来替代许多较小的地址块,压缩了转发表所占的空间,减少了查找转发表所需的时间。

(3)地址掩码(address mask)

功能:使计算机能从IP地址迅速算出网络地址。

地址掩码由一连串1和接着的一连串0组成,1的个数就是网络前缀的长度。

把二进制的IP地址和地址掩码进行按位AND运算,即可得出网络地址。

2.2.4 IP地址的特点

(1)IP地址是一种分等级的地址结构。IP地址管理机构在分配IP地址时只分配网络前缀,路由器根据目的主机所连接的网络前缀(地址块)来转发分组。

(2)IP地址标志一台主机(或路由器)和一条链路的接口。若一台主机同时连接多个网络,则该主机需要配备多个IP地址,这种主机称为多归属主机(multihomed host)。路由器总是具有两个或以上的IP地址,即路由器每个接口的IP地址的网络前缀都不同。

(3)一个网络指具有相同网络前缀的主机的集合,因此,用转发器或交换机连接起来的若干个局域网仍为一个网络。

(4)两个路由器直连时,在连线两端的接口处,可以分配也可以不分配IP地址。若分配IP地址,则使用/31地址块,此地址块专门为点对点链路的两端使用。若不分配,通常把这种特殊网络叫做无编号网络(unnumbered network)或匿名网络(anonymous network)。

2.3 IP地址与MAC地址

IP地址与MAC地址的区别:

 从层次的角度看,MAC地址是数据链路层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址。

 上图通信过程中IP地址与MAC地址所使用的位置可归纳为下表:

 经过路由器的转发后,IP数据报首部中的源地址和目的地址始终分别是IP1和IP2,而MAC帧首部中的源地址和目的地址要发生变化。这就说明了在IP层上只能看到IP数据报,而在链路层只能看见MAC帧。

2.4 地址解析协议ARP(Address Resolution Protocol)

功能:根据已知IP地址找出其相应的MAC地址。

方法:

每一台主机(或路由器)都设有一个ARP高速缓存,里面存有本局域网上的各主机和路由器的IP地址到MAC地址的映射表。

设备A若在ARP cache中查找不到本局域网上某设备的MAC地址,则在本局域网上广播发送一个ARP请求分组,内容包括自己的IP地址到MAC地址的映射,以及所期望的MAC地址对应的IP地址。若某一设备B的IP地址与ARP请求分组中要查询的IP地址一致,就收下这个ARP请求分组,同时把设备A的地址映射写入自己的ARP cache中,然后向A发送ARP相应分组,内容为自己的地址映射,此时为单播。A收到B的ARP相应分组后,就在其ARP cache中写入B的地址映射。

ARP对保存在高速缓存中的每一个映射地址项目都设置生存时间,凡超过生存时间的项目就从高速缓存中删除掉。

ARP用于解决同一局域网上的设备的地址映射问题。若所要找的设备和源设备不在同一局域网上,则需要把IP数据报在本局域网内不断转发,直到转发到连接下一个局域网的路由器之后再使用ARP,第二个局域网内若仍然没有目的设备,则转发到连接第三个局域网的路由器,循环上述过程,直到找到目的设备。

IP地址的意义:

既然在网络链路上传送的帧最终是按照MAC地址找到目的主机的,那为什么我们还要使用两种地址(IP地址和MAC地址),而不直接使用MAC地址进行通信?只用一个MAC地址进行通信似乎可以免除使用ARP。

由于全世界存在着各式各样的网络,它们使用不同的MAC地址。要使这些异构网络能够互相通信就必须进行非常复杂的MAC地址转换工作。而使用IP地址进行通信,即使必须多次调用ARP来找到MAC地址,但这个过程是由计算机软件自动进行的,对用户来说是看不见的,就像连接在同一网络上那样简单方便。(与计算机的层次结构有异曲同工之妙,高级语言与虚拟机同样消除了不同硬件所造成的机器语言的异构性)。

2.5 IP数据报的格式

(1)版本:IP协议的版本,通信双方的版本需一致,IPv4的版本号为4。

(2)首部长度:单位是32位字长,因为IP首部固定部分是20字节,所以字段的大小范围是[5,15]。若IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。

(3)区分服务

(4)总长度:首部和数据之和的长度,单位为字节。

因其为16位,所以数据报最大长度为2^16-1。但数据报很少这么长,因为IP层下面的每一种数据链路层协议都规定了,当一个IP数据报封装成链路层的帧时,此数据报的总长度一定不能超过下面的数据链路层所规定的最大传送单元MTU(Maximum Transfer Unit)值。最常用的以太网规定其MTU值是1500字节,若所传送的数据报长度超过数据链路层的MTU值,就必须把过长的数据报进行分片处理。

虽然使用尽可能长的IP数据报会使传输效率得到提高,但数据报越短,路由器转发的速度就越快。为此,协议IP规定,在互联网中所有的主机和路由器必须能接受长度不超过576字节的数据报。当主机需要发送长度超过576字节的数据报时,应当先了解一下,目的主机能否接受所要发送的数据报长度。否则,就要进行分片。

在进行分片时,数据报首部中的总长度字段是指分片后的每一个分片的首部长度与该分片的数据长度的总和。

(5)标识(identification):IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报片的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。

(6)标志(flag):占3位,但目前只有两位有意义。

标志字段中的最低位记为MF(More Fragment)。MF=1表示后面还有分片,MF=0表示这已是若干数据报片中的最后一个。

标志字段中间的一位记为DF(Don't Fragment),只有当DF=0时才允许分片。

(7)片偏移:较长的分组在分片后,某片在原分组中的相对位置。片偏移以8个字节为偏移单位,其值为该片的数据部分相较于原数据报的数据字段起点的距离,再除以8。除最后一个数据报片外,其他每个分片的长度一定是8字节的整数倍。

举例:一个数据报的总长度为3820字节,其数据部分为3800字节,需要分片为长度不超过1420字节的数据报片,使用固定首部。

 原始数据报首部被复制为各数据报片的首部,但必须修改有关字段的值。

 (8)生存时间TTL(Time To Live):原先是以秒为单位的数据报的寿命,现改为跳数限制。路由器在每次转发数据报之前就把TTL减1,若TTL减小到0,就丢弃这个数据报。因为其占8位,所以数据报能经过的路由器的最大数值是255。若TTL初始值为1,则该数据报只能在本局域网中传送。

(9)协议:指出该数据报携带的数据使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个协议进行处理。

常用协议和其字段值如下:

 (10)首部检验和:只检验数据报的首部,不包括数据部分。

方法:

在发送方,先把IP数据报首部划分为16位字的序列,并把检验和字段置零。用反码算术运算把所有16位字相加后,将得到的和的反码写入检验和字段。

接收方收到数据报后,把首部的所有16位字再使用反码算术运算相加一次,将得到的和取反码。若此结果为0,说明首部未发生变化;否则即认为出错,并将此数据报丢弃。

(11)源地址:发送IP数据报的主机的IP地址。

(12)目的地址:接收IP数据报的主机的IP地址。

(13)可选字段:选项字段,用来支持排错、测量以及安全等措施,长度可变,从1字节到40字节不等,很少使用。

3. IP层转发分组的过程

3.1 基于终点的转发

分组在互联网上传送和转发是基于分组首部中的目的地址的,因此这种转发方式称为基于终点的转发。因此,分组每到达一个路由器,路由器就根据分组中的终点(目的地址)查找转发表,然后得知下一跳应当到哪一个路由器。由于互联网中的主机数目很大,路由器中的转发表并不按目的IP地址来查找下一跳路由器,而是先查找目的网络(网络前缀),在找到了目的网络之后,就把分组在这个网络上直接交付目的主机。

举例:

 源主机H1向向目的地址H2发送分组。

(1)H1把分组的目的地址和本网络N1的子网掩码进行AND运算,得出结果为128.1.2.128/26,不等于本网络N1的前缀,于是将分组发送给路由器R1。

(2)R1查找转发表,查找转发表的过程就是寻找前缀匹配的过程。把分组的目的地址和第一行的网络前缀的子网掩码进行AND运算,得出结果为128.1.2.128/26,不匹配。第二行进行同样的计算,结果匹配,在网络N2上直接交付分组。

3.2 最长前缀匹配(longest prefix match)

问题:

在查找转发表时,目的地址可能和多个前缀都匹配,例如128.1.25.0/24,128.1.26.0/24和128.1.27.0/24聚合为一个网络前缀128.1.24.0/22,目的地址128.1.24.1既和此聚合路由匹配,又和地址块128.1.24.0/24匹配,那么哪一个结果才是正确的?

 分析:

聚合路由128.1.24.0/22中不包含目的地址128.1.24.1,而地址块128.1.24.0/24包含,因此第二个匹配结果是正确的,分组应从接口1转发到公司A。

解决办法:

在采用CIDR编址时,如果一个分组在转发表中可以找到多个匹配的前缀,那么就应当选择前缀最长的一个作为匹配的前缀。网络前缀越长,其地址块就越小,因而路由就越具体。为了更加迅速地查找转发表,可将前缀降序排列。

3.3 分组转发算法

实际的转发表有时还可能增加两种特殊路由,主机路由和默认路由。

主机路由(host route),是对特定目的主机的IP地址专门指明的一个路由,格式为a.b.c.d/32,没有主机号。

默认路由(default route),不管分组的最终目的网络在哪,都由指定的路由器R来处理,格式为0.0.0.0/0,没有网络号。

综上所述,可归纳出分组转发算法如下(假定转发表将前缀按长度降序排列):

(1)从收到的分组的首部提取目的主机的IP地址D。

(2)若查找到有特定主机路由,就按照这条路由的下一跳转发分组;否则从转发表中下一行开始检查,执行(3)。

(3)把这一行的子网掩码与目的地址D按位进行AND运算。若运算结果与本行前缀匹配,则查找结束,进行直接交付或间接交付;否则,若转发表还有下一行,则对下一行进行检查,重新执行(3)。若没有下一行,执行(4)。

(4)若转发表中有一个默认路由,则按照指明的接口,把分组传送到指明的默认路由器;否则,报告转发分组出错。

3.4 使用二叉线索查找转发表

就是把转发表用二叉树存储起来方便查找。

4. 网际控制报文协议ICMP(Internet Control Message Protocol)

 虽然ICMP看起来好像是高层协议,因为ICMP报文装在IP数据报中,作为其中的数据部分,但ICMP不是高层协议,而是IP层的协议。

4.1 ICMP报文的种类

ICMP报文有两种,即ICMP差错报告报文和ICMP询问报文。

ICMP报文的前4字节是统一的格式,共有三个字段:类型、代码和检验和。接着的4字节内容与ICMP类型有关。最后面是数据字段,其长度取决于ICMP类型。

 ICMP报文的代码字段用于进一步区分某种类型中的几种不同情况。检验和字段用来检验整个ICMP报文。

所有的ICMP差错报告报文的数据字段都具有相同格式:

 提取收到的数据报的数据字段前8个字节是为了得到运输层的端口号(对于TCP和UDP)以及运输层报文的发送序号(对于TCP)。这些信息对源点通知高层协议是有用的。

常用的ICMP差错报告报文有四种:

(1)终点不可达:当路由器或主机不能交付数据报时,就向源点发送此报文。

(2)时间超过:当路由器收到生存时间为0的数据报时,除丢弃该数据报外,还要向源点发送此报文;当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送此报文。

(3)参数问题:当路由器或目的主机收到的数据报的首部中有的字段的值错误时,就丢弃该数据报,并向源点发送此报文。

(4)改变路由(redirect):路由器把此报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(更好的路由)。

在互联网中主机的数量远大于路由器的数量,出于效率的考虑,这些主机不和连接在网络上的路由器定期交换路由信息。在主机刚开始工作时,一般都在转发表中设置一个默认路由器的IP地址,一律都先把数据报传给它。若默认路由器发现主机发往某个目的地址的数据报的最佳路由应当经过网络上的另一个路由器,就用改变路由报文告诉主机。

下面是不应发送ICMP差错报告报文的几种情况:

(1)对ICMP差错报告报文,不再发送ICMP差错报告报文。

(2)对第一个分片的数据报片的所有后续数据报片,都不发送ICMP差错报告报文。

(3)对具有多播地址的数据报,都不发送ICMP差错报告报文。

(4)对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报,不发送ICMP差错报告报文。

常用的ICMP询问报文有两种:

(1)回送请求或回送回答:若主机或路由器向一个特定的目的主机发送ICMP回送请求报文,则该目的主机必须给源主机或路由器发送ICMP回送回答报文。此报文用来测试目的站是否可达以及了解其有关状态。

(2)时间戳请求或时间戳回答:在ICMP时间戳请求报文发出后,就能收到对方相应的ICMP时间戳回答报文。此报文可用于计算当前网络的往返时延。

4.2 ICMP应用举例

分组网间探测PING(Packet InterNet Groper):用来测试两台主机之间的连通性。PING使用了ICMP回送请求与回送回答报文。PING是应用层直接使用网络层ICMP的一个例子。它没有通过运输层的TCP或UDP。

分组路径跟踪,UNIX命令为traceroute,Windows命令为tracert,用来获得到达目的主机所经过的路由器的信息,使用ICMP时间超过差错报告报文和ICMP终点不可达差错报告报文来实现。

5. IPv6

解决IP地址耗尽的根本措施就是采用具有更大地址空间的新版本的IP,即IPv6。

6. 互联网的路由选择协议

从路由算法能否随网络的通信量或拓扑自适应地进行调整变化来划分,分为静态路由选择策略和动态路由选择策略两大类。静态路由选择简单,开销较小,但不能及时适应网络状态的变化,适用于简单的小网络。动态网络能较好地适应网络状态的变化,但实现起来较为复杂,开销较大,适用于较复杂的大网络。

自治系统AS(autonomous system):在单一技术管理下的许多网络、IP地址以及路由器,这些路由器使用一种自治系统内部的路由选择协议和共同的度量。每一个AS对其他AS表现出的是一个单一的和一致的路由选择策略。

从互联网层次进行划分,分为内部网关协议IGP(Interior Gateway Protocol)和外部网关协议EGP(External Gateway Protocol)。

6.1 路由信息协议RIP(Routing Information Protocol)

6.1.1 RIP的工作原理

RIP是一种分布式的基于距离向量的路由选择协议,是互联网的标准协议,其最大优点就是简单。

距离定义:从一路由器到直接连接的网络的距离定义为1。从一主机到非直接连接的网络的距离定义为所经过的路由器数加1。RIP允许一条路径最少只能包含15个网络,因此距离等于16时即相当于不可达,可见RIP只适用于小型互联网。

RIP不能在两个网络之间同时使用多条路由。RIP选择一条具有最少网络数的路由(即最短路由),哪怕还存在另一条高速(低时延)但网络数较多的网络。

三个要点:和哪些路由器交换信息?交换什么信息?在什么时候交换信息?

特点:

(1)仅和相邻路由器交换信息。

(2)路由器交换的信息是当前本路由器所知道的全部信息,即自己现在的路由表。

(3)按固定的时间间隔交换路由信息。当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息。网络中的路由器虽然也运行协议RIP,但只被动地接收路由器发来的路由信息(ICMP改变路由差错报告报文)。

(4)一般情况下,协议RIP可以收敛,并且过程也较快。收敛就是在自治系统中所有的节点都得到正确的路由选择信息的过程。

6.1.2 距离向量算法

对每一个相邻路由器发送过来的RIP报文,执行以下步骤:

(1)对地址为X的相邻路由器发来的RIP报文,先修改此报文中的所有项目:把“下一跳”字段中的地址都改为X,并把所有的“距离”字段的值加1。每一个项目都有三个关键数据,即:到目的网络Net,距离是d,下一跳路由器是X。

(2)对修改后的RIP报文中的每一个项目,进行以下步骤:

若原来的路由表中没有目的网络Net,则把该项目添加到路由表中。

否则(即在路由表中有目的网络Net,这时就再查看下一跳路由器地址)。

        若下一跳路由器地址是X,则把收到的项目替换原路由表中的项目。

        否则(即这个项目是:到目的网络Net,但下一跳路由器不是X)。

                若收到的项目中的距离d小于路由表中的距离,则进行更新。

                否则什么也不做。

(3)若3分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达的路由器,即把距离置为16。

(4)返回。

举例:

6.1.3 坏消息传播得慢

6.2 开放最短路径优先OSPF(Open Shortest Path First)

6.2.1 OSPF的基本特点

OSPF最主要的特征就是使用链路状态协议(link state protocol)。最短路径优先是因为使用了Dijkstra提出的最短路径算法SPF。

(1)使用洪泛法(flooding)向本自治系统中所有路由器发送信息。路由器通过所有输出端口向所有相邻路由器发送信息,而每一个相邻路由器又将此信息发往其所有的相邻路由器(但不再发送给刚刚发来信息的那个路由器)。这样,最终整个区域中所有的路由器都得到了这个信息的一个副本。

(2)发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。所谓链路状态就是说明本路由器与哪些路由器相邻,以及该链路的度量(metric)。OSPF将这个度量用来表示费用、距离、时延、带宽等等。这些都由网络管理人员来决定,因此较为灵活。

(3)当链路状态发生变化或每隔一段时间,路由器向所有路由器用洪泛法发送链路状态信息。

(4)由于各路由器之间频繁交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库(link-state database),这个数据库实际上就是全网的拓扑结构图,在全网范围内一致。每一个路由器使用链路状态数据库中的数据,构造出自己的路由表。OSPF的链路状态数据库能较快地进行更新,使各个路由器能及时更新其路由表,OSPF的更新过程收敛得快是其重要优点。

(5)OSPF使用层次结构的区域划分。OSPF将一个自治系统再划分为若干个更小的范围,叫做区域(area)。在上层的区域叫做主干区域(backbone area),用来连通其他在下层的区域。从其他区域来的信息都由区域边界路由器(area border router)进行概括,每个区域至少应当有一个区域边界路由器。在主干区域内的路由器叫做主干路由器(backbone router),一个主干路由器同时可以是区域边界路由器。在主干区域内还有一个路由器专门和本自治系统外的其他自治系统交换路由信息,叫做自治系统边界路由器。

划分区域的好处就是把利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个的自治系统,这就减少了整个网络上的通信量。采用层次结构是为了使每个区域能和本区域以外的区域进行通信。

(6)如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径,这叫做多路径间的负载均衡(load balancing)。

(7)所有在OSPF路由器间交换的分组都具有鉴别功能,保证了仅在可信赖的路由器之间交换链路状态信息。

(8)支持可变长度的子网划分和无分类编址CIDR。

(9)由于网络中的链路状态可能经常发送变化,因此OSPF让每个链路状态都带上一个32位的序号,序号越大状态越新。OSPF规定,链路状态序号增长的速率不得超过每5秒钟1次,这样,全部序号空间在600年内不会产生重复号。

(10)若有N个路由器连接在一个以太网上,则每个路由器要向其他N-1个路由器发送链路状态信息,因而共有N(N-1)个链路状态要在这个以太网上传送。OSPF协议对这种多点接入的局域网采用了指定的路由器(designated router)的方法,使广播的信息量大大减少。指定的路由器代表该局域网上所有的链路向连接到该网络上的各路由器发送状态信息。

6.2.2 OSPF的五种分组类型

OSPF共有以下五种分组类型;
(1)问候(hello),用来发现和维持邻站的可达性。

(2)数据库描述(database description),向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。

(3)链路状态请求(link state request),向对方请求发送某些链路状态项目的详细信息。

(4)链路状态更新(link state update),用洪泛法对全网更新链路状态。

(5)链路状态确认(link state acknowledgement),对链路更新分组的确认。

OSPF分组结构:

OSPF分组是作为IP数据报的数据部分来传送的。OSPF不用UDP而直接用IP数据报传送(协议字段值为89)。OSPF构成的数据报很短。这样可减少路由信息的通信量,还可以不必将长的数据报分片传送。分片传送的数据报只要丢失一个,就无法组装成原来的数据报,而整个数据报就必须重传。

五种分组的工作机制:

OSPF规定,每两个相邻路由器每隔10秒交换一次问候分组,这样就能知道哪些邻站是可达的。若有40秒钟没有收到某个相邻路由器发来的问候分组,则认为该相邻路由器不可达,立即修改链路状态数据库并重新计算路由表。网络中传送的绝大多数OSPF分组都是问候分组。

其他的四种分组都是用来进行链路状态数据库的同步。所谓同步就是指不同路由器的链路状态数据库的内容是一样的。两个同步的路由器叫做完全邻接的(fully adjacent)。

链路状态数据库的同步过程:

(1)建立

OSPF让每一个路由器用数据库描述分组和相邻路由器交换本数据库中已有的链路状态摘要信息。经过与相邻路由器交换数据库描述分组后,路由器就使用链路状态请求分组,向对方请求发送自己所缺少的某些链路状态项目的详细信息。经过一系列分组交换,全网同步的链路数据库就建立了。

(2)维护

在网络运行的过程中,只要一个路由器的链路状态发送变化,该路由器就要使用链路状态更新分组,用洪泛法向全网更新链路状态。 OSPF使用的是可靠的洪泛法,在收到更新分组后要发送确认。

为了确保链路状态数据库与全网的状态保持一致,OSPF还规定每隔一段时间就要刷新一次数据库中的链路状态。

  • 21
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值