版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
8.1互联网与TCP/IP8.2IP网络互连协议8.3IP路由选择协议8.4Internet组管理协议IGMP8.5传输控制协议习题
第8章网络互连技术8.1互联网与TCP/IP8.1.1网络互连方式为了隐藏低层网络的异构性,可以在两个层次上实现异构网络互连:一种是应用级互连,即通过应用程序实现互连;另一种是网络级互连,即通过操作系统进行互连。早期的异构网络互连是靠应用程序实现的。用协议转换的观点来说,在这种互联网中,除了应用层协议外,由于其它各层协议可能不同,因此应用程序必须了解不同网络的内部细节,并直接通过网络与应用程序通信。换句话说,应用程序是建立在物理网络上,直接对物理网络进行操作。网络互连的缺点是:
(1)在网络系统中增加新的功能或新的硬件时,必须要为网络中的每台机器编写新的应用程序(当互连网络达到一定规模时,要为所有机器编写应用程序几乎是不可能的)。
(2)每个应用程序都要处理机器与网络连接的细节,导致代码重复。
(3)由于采用点到点的存储转发通信方式,当网络中的某个中间结点的应用程序出错时,发送方和接收方既无法知道也无法控制。随着网络互连技术的发展,应用级互连技术已很少使用。网络级互连提供一种机制,实时地把用户数据分组从源端发送到目的端。在网络级互连中,用户(应用程序)直接感受到的是互联网所提供的分组交换服务,而不是网络连接。也就是说,网络级互连通过分组交换机制将底层物理网络硬件细节隐藏起来。与应用级互连相比,网络级互连必须在系统中增加某些中间层次(主要是网络层),使应用程序不直接处理物理网络连接,这样物理网络硬件特性及其变化就不会影响到应用程序,并且不同的应用程序还可以共享网络级互连所提供的分组交换服务,而不再产生重复代码。网络级互连的优点有:
(1)这种互连技术直接映射到底层网络硬件,因此十分高效。
(2)网络级互连把数据包传递功能从应用程序中分离出来,允许网络中的每台机器只需要处理与数据包传递有关的操作即可。
(3)网络级互连使得整个互连网络更加灵活。
(4)网络互连模式允许网络管理人员通过修改或增加某些网络软件就能在互联网中加入新的网络技术,而对应用程序而言并不需要做任何改变。当然,在实现互连的具体过程中,要解决许多细节问题,如:不同的寻址方案、不同的最大分组长度、不同的网络接入机制、不同的超时控制、不同的差错控制方法、不同的状态报告方法、不同的路由选择技术、不同的用户接入控制、不同的网络服务、不同的管理和控制方式等。
TCP/IP的原理和技术是解决网络级互连问题的具体办法。通过TCP/IP实现了对各种不同的物理网络的一种高度抽象,它将通信问题从网络细节中解放出来,为用户提供通用网络服务,使底层网络技术对用户或应用程序透明。8.1.2TCP/IP的分层体系结构事实上,TCP/IP的体系结构就是为通信网络的互连问题而设计的,并且已经发展成为一种事实上的标准,称之为TCP/IP参考模型。如图8-1所示,TCP/IP参考模型包括网络接口层、网络互连层、传输控制层和应用层。
1)网络接口层它是TCP/IP体系的最低层,负责接收从IP层送来的IP数据报,并将IP数据报通过底层物理网络发送出去,或者从底层物理网络上接收物理帧,抽出IP数据报,交给IP层。网络接口有两种类型。第一种是设备驱动程序,如局域网的网络接口;第二种是含自身数据链路协议的复杂子系统,如X.25中的网络接口。图8-1TCP/IP参考模型
2)网络互连层网络互连层也称IP层,它的任务是负责相邻结点之间的数据传送。其主要功能包括三个方面:
(1)处理来自传输层的数据发送请求。将数据装入IP数据报,设置报头,选择去往目的结点的路由,然后将数据报发往适当的网络接口。
(2)处理输入数据报。首先检查数据报的合法性,然后进行路由选择,假如该数据报已到达目的结点,则去掉报头,将IP报文的数据部分交给相应的传输层协议。假如该数据报尚未到达目的结点,则转发该数据报。
(3)处理ICMP报文。即处理网络的路由选择、流量控制和拥塞控制等问题。本层在功能上类似于OSI参考模型中的网络层。
3)传输控制层本层的作用与OSI参考模型中传输层的作用是一样的。即在源结点和目的结点的两个进程实体之间提供可靠的端到端的数据通信。为保证数据传输的可靠性,本层协议规定接收端必须发回确认,并且当数据有错或丢失时,发送方必须重传。传输控制层还要解决不同应用进程的标识问题,因为主机的多个进程可能同时访问互联网,为区别多个应用进程,传输层在每一个分组中增加识别信源和信宿的标记。此外,传输层的每一个分组均附带校验和,以便接收结点检查接收到分组的正确性。
TCP/IP模型提供两个传输层协议:传输控制协议TCP和用户数据报协议UDP。
TCP协议是一个可靠的面向连接的传输层协议,它将某结点的数据以字节流形式无差错地传送到互联网的任何一台机器上。发送方的TCP将用户递交的字节流划分成独立的报文进行发送,而接收方的TCP将接收的报文重新装配上交给接收用户。TCP同时处理有关流量控制的问题,以防止快速的发送方“淹没”慢速的接收方。
UDP协议是一个不可靠的、无连接的传输层协议,UDP协议将可靠性问题交给应用程序解决。UDP协议的报文传输采用请求/应答方式,一次传递往往只有一来一回两次报文交换,因此这种方式下报文传输效率很高。UDP协议应用于那些对可靠性要求不高,但对网络的延迟要求较小的场合,如话音和视频数据的传送。
4)应用层应用层是TCP/IP模型的最高层,它包括所有的高层协议,如:远程登录协议Telnet、文件传输协议FTP(FileTransferProtocol)、简单邮件传输协议SMTP(SimpleMailTransferProtocol)等。与Internet应用相关的应用层协议包括:用于将网络中的主机名映射成网络地址的域名服务DNS(DomainNameService)、用于传输新闻的网络新闻传输协议NNTP(NetworkNewsTransferProtocol)、用于从WWW上读取页面信息的超文本传输协议HTTP(HyperTextTransferProtocol)等。
TCP/IP是目前最成功、使用最多的网络互连技术和协议。虽然使用TCP/IP技术和协议的网络互连方法不是惟一的,但TCP/IP最突出。图8-2给出了TCP/IP各层使用的主要协议。图8-2TCP/IP各层使用的协议8.1.3TCP/IP参考模型的特点
TCP/IP参考模型具有以下特点:
1.两个重要边界●地址边界。它将IP逻辑地址与底层网络的硬件地址分开。●操作系统边界。它将网络应用与协议软件分开。在TCP/IP分层模型中,IP层与网络接口层之间存在一个地址上的边界,它将底层网络的物理地址与IP层的IP地址分开。IP层和其上的各层均使用IP地址。网络接口层则使用各种物理网络的物理地址(即底层网络的硬件地址)。从协议分层接口功能来说,IP地址放在IP数据报的首部,而硬件地址则放在MAC帧的首部。
TCP/IP提供在两种地址之间进行映射的功能。划分地址边界的目的也是为了屏蔽底层物理网络的地址细节,以便在互联网中使用统一的编址方案,即所谓的IP地址,它简单清晰,易于实现和理解。图8-3画出了TCP/IP两个重要边界的位置。
TCP/IP功能的不同实现方法,可能会导致协议软件在操作系统内的位置有所不同。影响操作系统边界划分的最重要因素是协议的效率问题,在操作系统内部实现的协议软件,其数据传输的效率最高。图8-3TCP/IP的两个重要边界
2.IP层的重要性
(1) IP层作为通信子网的最高层,提供无连接的数据报传输机制。
(2) IP是点到点的传输。进行通信的主机或路由器位于同一物理网络,对等实体(主机―路由器、路由器―路由器、主机―主机)之间有直接的物理连接。
(3) TCP/IP是为包容各种物理网络技术而设计的,这种包容性主要体现在IP层中。由于各种底层物理网络技术(如各种局域网和广域网)在帧格式、地址格式等方面差别很大,因此通过IP层将异构问题统一起来,屏蔽底层细节,构成一个统一的虚拟网。
IP向上层(TCP层)提供统一的IP报文,使得各种帧或报文格式的差异性对高层协议不复存在。这种统一的意义非同一般,这是它实现网络互连的目标。可以这样说,IP层是TCP/IP实现异构网互连最关键和最核心的一层。
3.TCP/IP的可靠性在TCP/IP网络中,IP采用无连接的数据报传输机制,它对数据“尽最大努力传递”,即只管将报文尽力传送到目的主机,无论传输正确与否,不做验证,不发确认,也不保证报文的顺序。
TCP/IP的可靠性体现在传输控制层,传输层协议中的TCP协议提供面向连接的可靠的端到端服务。这种端到端服务有两个优点:
(1) TCP/IP跟ISO/OSI相比,显得简洁清晰。面向连接协议的复杂性比无连接协议要高出许多。而TCP/IP只在TCP层提供面向连接的服务,比若干层同时向用户提供连接服务的协议族要简单得多。
(2)传输效率高。由于IP协议是“尽最大努力传递”方式,只有TCP层为保证传输可靠性做必要的工作,而不像ISO/OSI几乎每一层都要保证可靠传输。实践证明,TCP/IP的效率比ISO/OSI要高,尤其是当底层物理网络很可靠时,TCP/IP的效率更加显著。综上所述,TCP/IP将不同的底层物理网络、拓扑结构隐藏起来,向用户和应用程序提供通用的、统一的网络服务。这样,从用户的角度看,整个TCP/IP互联网就是一个统一的整体,它独立于具体的各种物理网络技术,如图8-4所示。在某种意义上,可以把这个单一的网络看做一个虚拟网,在逻辑上它是独立的、统一的,在物理上它是由不同的网络互连而成的。可见,TCP/IP网络完全撇开了底层物理网络的特性,是一个高度抽象的概念,正是这一抽象的概念,为TCP/IP网络赋予了巨大的灵活性和通用性。图8-4TCP/IP的体系特点(a) TCP/IP内部结构;(b) TCP/IP互连网用户视图8.2IP网络互连协议
Internet的核心协议是IP和TCP,而IP协议又是其中的重中之重。与IP配套使用的还有三个协议:地址解析协议ARP(AddressResolutionProtocol)。逆地址解析协议RARP(ReverseAddressResolutionProtocol)。
Internet控制报文协议ICMP(InternetControlMessageProtocol)。图8-2说明在网络互连层这三个协议与IP协议的关系,因为IP要使用ARP和RARP这两个协议,因此把它们画在下面。而ICMP要使用IP协议,因此把ICMP画在IP上面。8.2.1IP地址及表示方法
IP地址就是IP协议为标识主机所使用的一种寻址方法,它是32位(4字节)的无符号二进制数。互联网上的每个主机或路由器都被指定一个IP地址,它只是一种逻辑编号,并不是主机或路由器的MAC地址。对连接于多个网络的路由器,它就有多个不同的IP地址。在Internet上,每个主机或路由器分配到的IP地址在全球范围是惟一的(必须向Internet网络中心NIC申请)。当然,如果局域网不与Internet相连,则可自定义其IP地址。
1.IP地址的格式所有的IP地址包括两部分:网络号和主机号。通常IP地址的32位二进制数用4个十进制数来表示(每个字节用一个数),中间用小数点隔开,例如IP地址11000000101010000000111001100100,则记为00。这种寻址方法有点类似于把邮政编码分为几部分。由于不同网络其规模差异很大,有的网络拥有很多主机,而有的网络上的主机很少,为便于对IP地址的管理,将IP地址分为5类,即A类到E类(如图8-5所示)。最常见的是A、B、C三类地址。图8-5IP地址格式
A类地址用于主机数量非常多(最大可达16 777 216个)的大型网,但它的网络数量非常少,只有126个(其中及为保留地址)。B类地址用于主机数量较多(最多达65 536个)的中型网,它的网络数量也比较多,有16 384个。C类地址用于主机数量少于255台的小型网,但它的网络数量最多(可达2 097 152)。D类地址用于IP组播,通过组播可以将IP数据报一次发给多个主机。E类地址被保留将来使用。表8-1给出了IP地址的使用范围,图8-6为IP地址的比例数量。图8-6IP地址的分布上面举例的IP地址00就是一个C类地址,其中192.168.14是网络标识号,100是主机标识号。为了在Internet上保证IP地址的惟一性,IP地址内的网络号由InternetNIC统一分配,以避免冲突,而主机号则由各个自治系统ISP的网络管理员负责分配,用来指定网络中的网段及网段上的主机。
2.特殊IP地址在IP地址中还有一些特殊地址,这些地址有特殊的意义,表8-1中已扣除了这些特殊地址,在表8-2中列出了这些地址及用法和意义。
(1) “0”的IP地址用于使用动态主机配置DHCP服务器的网络上。当工作站启动时,使用全“0”地址与DHCP服务器进行通信,通过它获得自己的IP地址。
(2)网络号为全“0”的IP地址被解释为本地网络,若主机想在本网内通信,而又不知道网络号时,可以使用网络号为“0”的IP地址(但主机必须知道是哪一类网络,以确定网络号位数及0的个数)。
(3)主机号是全“0”的IP地址代表标识一个网络号,用它来表示一个网络本身,比如表示一个C类的网络号192.168.14。
(4)主机号全为“1”的IP地址称为广播地址。网上的某个主机可以使用广播地址向网络中的所有主机发送消息。通过指定目的网络号这种广播地址称为直接广播地址。如果主机只需在本地网内部进行广播,但又不知道本网的网络号时,可将32比特全“1”的IP地址用于本网的广播地址,该地址称为有限广播地址。
(5)网络号为“127”是一个保留地址,用于网络软件测试以及本机进程间通信,称为环回地址(loopbackaddress)。使用环回地址发送IP数据报时,IP软件立即将报文返回,不进行任何实际的网络传输,利用这一特性来为网络软件查错。与127一起使用的主机号是任意的,都是代表环回地址,通常使用主机号为1(即)作本机测试。
3.IP地址的特点
(1) IP地址是一种非等级的地址结构。也就是说,通过IP地址不能反映任何有关主机位置的地理信息,这和电话号的结构不一样。
(2)当一个结点(如路由器)同时连接到两个网络上时,该结点就必须同时具有两个相应的IP地址,并且网络标识号必须是不同的。
(3)按照Internet的观点,用中继或网桥连接起来的若干个局域网仍为一个网络,因此,这些局域网都具有同样的网络号。
(4)在IP地址中,所有分配的网络彼此都是平等的。
(5)通过IP地址形式来指明一个网络的地址。这时,只要将该IP地址的主机号二进制位全部置为0即可。例如,,和这三个IP地址分别代表A、B和C类地址所指定的单个网络地址。
4.IP地址子网划分在使用IP地址时会发现有很大浪费,比如某个单位申请到了一个C类网络地址,但该单位只有40台主机,这样这个地址中有200多个主机号就会白白浪费掉,因为其他单位的主机无法使用这些号。此外,为便于管理,通常将本单位的主机划分为彼此相连的若干网段(子网),而这些网段被作为统一的整体来管理。为了适合子网管理和避免IP地址浪费,在IP地址中,将主机标识号部分前若干个比特作为“子网号”,后面剩下的仍为主机号。这样做可以将本单位的各个子网分配相应的子网号,各子网再通过路由互连。需要强调的是,子网的划分纯属本单位内部的事,在本单位以外看不见这样的划分,从外部看,这个单位仍只有一个网络号。只有当外面的分组进入到本单位网络内,本单位的路由器再根据子网号进行选路,最后才找到主机。子网划分需要用“子网掩码”来进行,掩码是一个前面由若干连续的“1”和后面剩下的连续的“0”组成的32比特二进制串,“1”对应网络和子网部分,“0”对应主机部分。通过将掩码与IP地址作逻辑与操作,得到其IP地址的子网地址,将掩码的反码与IP地址作逻辑与操作,得到其IP地址的主机地址。由此可见,与A、B、C类地址对应的标准掩码分别为、和。例如,一个C类网络地址,利用掩码92将该网络划分为4个子网:、4、28和92,每个子网可容纳62(26-2)台主机,如图8-7所示。经这样划分后,如果有一个IP地址是29,通过掩码92得知,它的子网地址为28,子网的主机地址为。这样,在IP协议中,主机或路由器的每个网络接口都要为之分配一个IP地址,对应的每个地址都有相应的掩码。在同一个网络上的网络接口,其IP地址的掩码应该是一样的,以保证通过掩码计算的子网地址是相同的。图8-7子网掩码的意义
5.IP地址与MAC地址的转换前面已经提到,IP地址只是主机在网络层中的地址,它是不能直接用来进行通信的。要将网络层中传送的数据报交给目的主机,还要传到链路层转变成MAC帧后才能发送到网络。而MAC帧使用的是源主机和目的主机的硬件地址。因此,必须在IP地址和主机的硬件地址之间进行转换。此外,用户不愿意使用难以记忆的主机号,而是愿意使用易于记忆的主机名字。因此也需要在主机名字和IP地址之间进行转换。所以,在TCP/IP体系中有两种转换的机制。在主机名和IP地址之间通过域名系统DNS(DomainNameSystem)进行转换。所谓域名系统就是在网络中存在几个DNS服务器,上面分层次放有许多主机名字到IP地址转换的映射表。源主机中的名字解析软件自动找到DNS服务器来完成这种转换。域名系统DNS属于应用层软件,在本书后面还要详细讨论。图8-8中名字为HOST-a的主机要与名字为HOST-b的主机通信,通过DNS从目的主机名字HOST-b得出其IP地址为。从IP地址到物理地址的转换是由地址解析协议ARP完成的。图8-8表示从IP地址通过ARP得出了目的主机48比特的物理地址。图8-8主机名、主机物理地址与IP地址的转换由于IP地址是32比特,而网络的物理地址是48比特,因此它们之间不是一种简单的转换关系。此外,在一个网络上可能经常会有新的计算机加入进来,或撤走一些计算机。更换计算机的网卡也会使其物理地址改变。可见在计算机中应存放一个从IP地址到物理地址的转换表,并且能够经常动态更新。地址解析协议ARP很好地解决了这些问题。每一个主机都有一个ARP高速缓存,里面放有IP地址到物理地址的映射表,这些都是该主机目前知道的一些地址。当主机A欲向本局域网上的主机B发送一个IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地址。如有,就可查出其对应的物理地址,然后将此物理地址写入MAC帧,然后通过网络发往此物理地址。但也有可能查不到主机B的IP地址,这可能是主机B才入网,也可能是主机A刚刚加电,其高速缓存还是空的。在这种情况下,主机A就自动运行ARP,按以下步骤找出主机B的物理地址。
(1) ARP进程在本局域网上广播发送一个ARP请求分组,上面有主机B的IP地址。
(2)在本局域网所有主机上运行的ARP进程都收到此ARP请求分组。
(3)主机B在ARP请求分组中见到自己的IP地址,就向主机A发送一个ARP响应分组,上面写入自己的物理地址。
(4)主机A收到主机B的ARP响应分组后,就在其ARP高速缓存中写入主机B的IP地址到物理地址的映射。在很多情况下,当主机A向主机B发送数据报时,很可能此后不久主机B还要向主机A发送数据报,因而主机B也可能要向主机A发送ARP请求分组。为了减少网络上的通信量,主机A在发送其ARP请求分组时,就将自己的IP地址到物理地址的映射写入ARP请求分组。当主机B收到主机A的ARP请求分组时,主机B就将主机A的这一地址映射写入主机B自己的ARP高速缓存中。这对主机B以后向主机A发送数据报就更方便了。在进行地址转换时,有时还要用到逆向地址解析协议RARP。RARP使只知道自己物理地址的主机能够知道其IP地址。这种主机往往是无盘工作站。这种无盘工作站一般只要运行其ROM中的文件传送代码,就可用下载方法从局域网上其他主机得到所需的操作系统和TCP/IP通信软件,但这些软件中并没有IP地址。无盘工作站要运行ROM中的RARP协议来获得其IP地址。
RARP的工作过程大致如下:为了使RARP能工作,在局域网上至少有一个主机要充当RARP服务器,无盘工作站先向局域网发出RARP请求分组(在格式上与ARP请求分组相似),并在此分组中给出自己的物理地址。服务器有一个事先做好的从无盘工作站的物理地址到IP地址的映射表,当收到RARP请求分组后,RARP服务器就从这映射表查出该无盘工作站的IP地址。然后写入RARP响应分组,发回给无盘工作站。无盘工作站用此方法获得自己的IP地址。8.2.2IP数据报的格式
IP数据报有两层含义:第一,指IP层提供的无连接服务以及无连接数据报传输机制;第二,指IP数据报格式。两者是密切相关的,无连接数据报传输机制需要通过IP数据报格式来体现,而IP数据报格式只有在无连接的数据报传输机制中才真正具有意义。IP报文由头部和数据区两部分组成,头部则由一个长度为20字节的固定项和一个长度任意的可选项组成,如图8-9所示。图8-9IP数据报的头部格式
(1)版本(Version)字段:占4比特,它记录了报文属于哪个版本的IP,不同版本的IP,其报文格式是不完全相同的。目前IP是第4版(IPv4),也是本章主要讨论的IP。IP的下一个重要版本为第6版(IPv6),在后面将作简单介绍。所有的IP软件在处理数据报之前都必须首先检查版本号,以确保版本正确。IP软件拒绝处理协议版本不同的数据报,以避免错误解释其中的内容。
(2)头部长度IHL(IPHeaderLength)字段:占4比特,表示IP报头的长度(以32比特为单位)。IP报头由20字节的固定项和长度不定的可选项组成。因此,当IP数据报头没有可选项时,头部长度为最小值5。该字段最大值是15,这意味着IP数据报头的最大长度是60字节,由此可知可选项最长不超过40字节。
(3)总长(TotalLength)字段:占16比特,指明整个IP数据报的长度,包括所有数据及头部。IP数据报的最大长度为65536字节,这个长度足够应付目前的大多数应用,但对于未来的高速网络,也许这个长度还不够,因为在高速网络中,一个物理帧的长度有可能超过65535字节。
(4)服务类型ToS(TypeofService)字段:占8比特,它允许应用程序指定自己想要的服务,即应用程序告诉网络该IP数据报是高可靠性数据还是低延迟数据等。例如,对于数字话音通信,需要低延迟;而对于文件传输,则要求高可靠性。服务类型中包含:1个3比特的优先顺序字段(Precendence)、3个1比特的标志位D、T和R,还有2比特未用。●优先顺序字段:是标志IP数据报的优先级的,取值从0到7依次升高。●D、T、R标志位:表示本数据报所希望达到的传输效果。其中,D(Delay)表示低延迟;T(Throughput)表示高吞吐量;R(Reliability)表示高可靠性。要注意的是,服务类型字段只是用户的要求,对网络并不具有强制性,路由器在进行路由选择时把它们作为参考。如果路由器知道去往目的结点有若干条路径,则可以选择一条最能满足用户要求的路径。假设路由器知道有两条路径可以到达目的地,一条是低速但价格低廉的租用线路,另一条是高速但价格昂贵的卫星线路,则对于D标志置1的远程登录用户,可选用租用线路;而对于T标志置1的文件传输用户,则选用卫星线路。目前,服务类型ToS字段没有实际应用。虽然有的路由协议指定使用ToS字段进行路由选择,但由于用户端对ToS的支持非常有限,导致网络设备生产商很少实现ToS功能。由于IP数据报的实际传输最终要通过底层的物理网络,而不同的物理网络对帧的大小有规定,叫做最大传输单元MTU(MaximunTransferUnit),物理网络的MTU由其硬件决定,因此通常情况下MTU值是保持不变的。与MTU不同,IP数据报大小由软件决定,IPv4规定了IP数据报的最大长度为65 535个字节。为了能在各种物理网络上传输IP数据报,IP提供了将IP数据报分解成若干个分段进行传输的功能。在IP数据报头部中有3个字段与分段有关,分别是标识字段、标志位字段和分段偏移量字段。
(5)标识(Identification)字段:占16比特,用来控制分段重装,每个数据报不管被拆成多少分段,都具有相同的标识值,以确定该分段属于哪个数据报。当分段到达目的主机时,根据标识值、分段偏移和源地址进行重装。
(6) DF标志位:表示该数据报不能分段,因为目的主机或路由器不能重组分段。
(7) MF标志位:“1”表示数据报的分段没有结束,后面还有。“0”表示是最后一个分段。接收端可以通过MF位来判断数据报的所有分段是否已全部到达。
(8)分段偏移量(FragmentOffset)字段:占13比特,用于说明分段在数据报中的位置。该字段是按64比特(8字节)为一个单位来计算的,所以分段在数据报中的实际位置,如果按字节数来计算的话,应该是偏移量再乘以8。用标识、标志及分段偏移量可以惟一识别出每个分段,从而使得接收端能够正确重组源IP数据报。
(9)生存期TTL(TimeToLive)字段:占8比特,用来限制IP数据报在网络中所经过的跳步数。通过TTL字段,IP软件就可以自动丢弃那些已在网络中呆了很长时间的报文,从而防止IP数据报在网上不停地循环,浪费网络带宽。TTL一般设置为64,最大设置为255。其每经过一个路由器或一段延迟后便减1。一旦TTL减至0时,路由器就会将该报文丢弃,同时通过ICMP报文向产生该IP数据报的源端报告超时信息。例如,由于网络存在路径环路,造成IP数据报在网内不停循环而被丢弃。网络诊断命令trace就是使用了TTL字段来诊断网络是否存在循环。
(10)协议(Protocol)字段:占8比特。IP软件还必须知道IP数据报的数据区是由哪个高层协议创建的,以便IP接收模块能正确地将接收到的IP数据报交给适当的协议模块进行处理(如TCP、UDP、ICMP等),该项功能由协议字段完成。协议类型代码是由Internet网络信息中心(NIC)管理的,在整个Internet范围内保持一致。例如,TCP的协议代码为6,UDP的协议代码为17。协议字段提供了对TCP/IP协议族多路复用的支持。
(11)报头校验和(HeaderChecksum)字段:占16比特。每个IP数据报有一个报头校验和,它保护IP数据报头部内容免遭破坏。当主机创建IP数据报时,会产生一个覆盖整个头部的校验和。为了验证报文在传输过程中的正确性,路由器或主机每接收一个IP数据报,必须对其整个头部(包括校验和字段)重新计算校验和,计算结果应该为零。如果IP数据报的头部的任何一位在传输过程中被破坏,则计算出的校验和不为零,路由器或主机将丢弃该报文。路由器在转发该数据到下一个结点时,必须重新计算校验和,因为IP数据报头中的生存期(TTL)字段已经发生变化。
IP校验和只校验IP报头,而IP数据区的有效性验证将由传输层协议完成。这样做虽然看似很危险,但却使得IP数据报的处理非常有效,因为路由器无需关心报文的完整性。实践证明,IP数据的完整性由传输层进行验证是一种很好的选择,使得网络设备可以高效地转发报文,最后由目的端主机系统来完成数据的有效性验证。
(12)源IP地址和目的IP地址:指明发送方和接收方。每个地址为32位,包括网络号和主机号。
(13)可选项字段:可选项是变长的,主要用于控制和测试两大目的。作为IP协议的组成部分,在所有IP协议的实现中,选项处理是不可缺的。
IP数据报中的每个可选项由选项代码、长度和选项数据三部分组成。目前已定义了5个选项,分别为安全性、严格源路由选择、松散源路由选择、记录路由以及时间戳,但不是所有的路由器都支持全部5个可选项。●安全性(Security)选项:说明报文的安全程度。理论上,军用路由器可以用这个字段来指示不要经过某些军方认为是不友好的国家。实际上,所有路由器都忽略该字段。●严格源路由选择(StrictSourceRouting)选项:要求报文必须严格按给定的路由传送。当路由器的路由表出现故障,系统管理员发送紧急报文时,该字段很有用。●松散源路由选择(LooseSourceRouting)选项:要求报文在传送时必须按次序经过给定的路由器,但报文还可以穿过其他路由器。也就是说,该选项可以指定一些特殊的路由器作为报文的必经之地。当出于政治或经济考虑时,想要经过或绕过某些地区或国家时,该选项最有用。●记录路由(RecordRoute)选项:用于记录IP数据报从源端主机到目的端主机所经过的所有路由器的IP地址,以使系统管理员可以跟踪路由选择过程,并进行查错。●时间戳(TimeStamp)选项:用于记录IP数据报经过每一个路由器时的时间。该选项可以用来分析网络吞吐量、负载和拥塞情况,当然它也可用来为路由选择查错。8.2.3Internet控制报文协议ICMP
IP数据报是一种不可靠传送,即不能保证不丢失。但为了减少分组的丢失,允许主机或路由器使用Internet控制报文协议ICMP(InternetControlMessageProtocol)报告差错情况,比如线路故障、数据报超过生存时间、路由器发生拥塞等。它能由出错点发送站发出错误报文或控制报文,发送站收到这种报文后,由ICMP软件处理(或报告错误原因或重发错误数据报等)。ICMP实际上是IP协议中的一个模块,当IP收到ICMP报文后,交给ICMP模块来处理,因此ICMP被认为是IP协议中不可缺少的组成部分。值得注意的是,ICMP不是高层协议,它仍是IP层中的协议。ICMP报文被作为IP层数据报的数据来封装,加上数据报的首部,组成IP数据报发送出去。ICMP报文格式以及封装方法见图8-10所示。图8-10ICMP报文格式及封装
ICMP报文的前32比特(4个字节)的格式是固定的,共有3个字段。但后面的部分是可变的,其长度取决于ICMP的类型。
(1)类型字段:占8比特。该字段值与ICMP报文类型的关系如表8-3。
(2)代码字段:占8比特。它提供ICMP报文类型的进一步信息,比如代码值为“0”表示网络不可到达,代码值为“1”表示主机不可到达等。
(3)检验和字段:占16比特。它检验整个ICMP报文。由于数据报首部的检验和并不检验数据报的内容,因此不能保证经过传输的ICMP报文不产生差错,要靠ICMP本身的校验和字段检验。
ICMP报文分为两种类型:ICMP差错报文和ICMP询问报文。在ICMP差错报文中,改变路由报文用得最多(见图8-11的例子)。图8-11ICMP改变路由的举例从图8-11可看出,主机A向主机B发送IP数据报应经过路由器R1,而向主机C发送数据报则应经过路由器R2。现在假定主机A启动后,其路由表中只有一个默认路由器R1(当路由表中查不到应将分组送往何路由器时,就将该分组送往默认路由器)。当主机A向主机C发送数据报时,数据报就被送到路由器R1。从路由器R1的路由表可查出:发往主机C的数据报应经过路由器R2。于是数据报从路由器R1再转发到路由器R2,最后送到主机C。显然,这个路由不好,应该改变。于是,路由器R1向主机A发送“ICMP改变路由报文”,指出此数据报应经过的下一个路由器R2的IP地址。主机A根据收到的信息更新其路由表。以后主机A再向主机C发送数据报时,根据路由表就知道应将数据报送到路由器R2,而不再送到默认路由器R1了。当某个速率较高的源主机向另一个速率较低的目的主机(或路由器)发送一串数据报时,很有可能使速率较低的目的主机产生拥塞,因而不得不丢弃一些数据报。通过高层协议,源主机得知丢失了一些数据报,就不断地重发这些数据报。这就使得本来就已经拥塞的目的主机更加拥塞。在这种情况下,目的主机就要向源主机发送“ICMP源站抑制报文”,使源站暂停发送数据报,过一段时间再逐渐恢复正常。常用的ICMP询问报文有:
(1) ICMPEcho请求报文:这是由主机或路由器向一个特定的目的主机发出的询问。收到此报文的主机必须给源主机发送ICMPEcho回答报文。这种询问报文用来测试目的站是否可达以及了解其有关状态。在应用层有一个PING的实用程序就是用来测试两个主机之间的连通性。PING中使用了ICMPEcho请求与Echo回答报文。
(2) ICMP时间戳请求报文:这是要求某个主机或路由器回答当前的日期和时间。在ICMP时间戳回答报文中有一个32比特的字段,其中写入整数代表从1900年1月1日起到当前时刻一共有多少秒。时间戳请求与回答可用来进行时钟同步和测量时间。
(3) ICMP地址掩码请求报文:可使主机向子网掩码服务器得到某个接口的地址掩码。8.2.4IP报文的分段与重组一个IP报文要交给数据链路层封装之后才能发送,在理想情况下,每一个报文正好放入一个物理帧内发送,这种情况下网络传输效率最高。但实际情况不是这样,不同的物理网所支持的最大帧长各不相同。例如,以太网的帧最多可以容纳1500字节数据,FDDI帧可以容纳4470字节数据。规定物理网络一帧所能容纳的最大数据量称为最大传输单元(MTU,MaximumTransmissionUnit)。为了能将IP报封装在不同的物理帧中,每个报文应该小于或等于一个网络的MTU,否则就无法封装。但是,互联网中包含了各种各样的异构网络,特别是一个路由器可能连接着具有不同MTU值的多个网络,能从一个网上接收数据报并不意味着一定能在另一个网上转发此报文。图8-12说明了这种情况,图中主机H1连接网络1,其MTU值为1500,因此它能传送最多达1500字节的数据报;主机H2连接网络2,其MTU值为1000,因此它能传送最多达1000字节的数据报。这两个网通过路由器R连接。如果H1要将一个1500字节的数据报发送给H2,路由器R收到报文后却无法在网络2上发送。图8-12路由器连接两个具有不同MTU值的网络
IP数据报使用分段方法来解决这一问题。当一个数据报的尺寸大于要转发的网络MTU值时,路由器会将数据报分割成若干较小部分,称为IP分段(IPFragment),然后再将每段独立进行转发。每一个分段与其他的数据报有相同的格式,只是在头部的标志字段中有一位标识了一个数据报是分段还是完整的数据报(参见IP报文格式)。段的头部中还包含有其他信息(如段的偏移字段等),以便用来重组这些段,还原成原始的数据报。路由器在对数据报进行分段时,根据相应网络MTU和数据报头部尺寸来计算每段所能携带的最大数据量和分段个数,然后生成这些段。路由器先为每一段生成一个原数据报头部的副本作为分段的头部,然后单独修改其中的一些字段(比如设置标志字段中的相应位以指示这些数据报是一个分段)。最后,路由器从原数据报中复制相应的数据到每个段中,并开始转发。图8-13说明了这一过程。图8-13一个IP数据报被分为3段重组是分段的逆过程,即在所有分段基础上重新还原成原数据报的一个副本的过程。IP协议规定:只有最终目的主机才能对分段进行重组。因为每个段头部基本是原数据报头部的副本,因此都有与原数据报相同的目的地址,那么目的主机能否进行重组取决于所以的段是否都成功到达。目的主机收到一个IP报文时,可以根据其分段偏移和MF标志判断其是否为一个分段。如果MF为“0”,且分段偏移也为“0”,则可以断定这是一个完整的报文。否则,如果分段偏移不为“0”,或者MF标志为“1”,则表明它是一个分段。重组时根据分段偏移来确定该段在原始报文中的位置。将所有的分段重组成完整的原始报文后交给上层协议。在数据报分段以后的传输过程中,还有两个问题要解决:一是段的丢失;二是段的进一步分解。由于IP不能确保传递质量,如果底层网络丢失了包,则封装在其中的数据报或段也随之丢失。这样,一个数据报的一部分段到达目的主机后,很可能仍有一些段被延迟或丢失。这时目的主机还不能重组这些段,必须把它们保留在内存。当然,这些段不能无限期地被保留下去,为节省内存资源,IP规定了保留段的最大时间。当数据报的第一个段到达时,开始计时。如果数据报的所有段在规定的时间内全部到达,则取消计时。否则,计时过后,所有段仍未到齐,目的主机将丢弃这些已到的段。引入IP重组计时后产生的结果是:要么所有段全部到达,要么什么也没得到(整个数据报被丢弃)。而且,发送方主机重传数据报后,有可能选择了不同的路由,即每次传输不一定经过相同的路由器,因此不能保证重发的数据报会像上次一样被分段。执行数据报分段后,路由器将每一段转发到它的下一个路由器。如果某一分段转发后遇到一个MTU值更小的网络,该分段本身将再被执行分段。也就是说,IP网络上的另一个路由器可能将段进一步分割成更小的一些段。如果由于网络设计的问题,使其中MTU按从大到小的次序连接,则路径上的每个路由器都要对段再进行分段,造成网络传输效率很低。与此同时,IP对源段和子段并不加以区分,一律一视同仁,则目的方并不知道收到的是一个第一次分段形成的段,还是一个经历了多个路由器多次分段后形成的段。这样做的好处在于:目的方并不需要先重组子段后才能执行重组过程,节省了CPU时间,也减少了每一段的头部中所需的信息量。8.2.5IP数据报的转发机制在Internet中,完成IP数据报的正确转发是IP协议的一项重要功能,实现这一功能的关键设备是IP路由器。IP路由器主要有两大功能:一是将IP数据报正确转发到下一个路由器;二是根据路由算法与其他路由器不断交换路由信息,更新路由表。
IP路由器的作用和第6章中介绍的结点交换机很相似,但它们之间也有如下区别。●路由器是用来连接不同的网络,而结点交换机只是在一个特定的网络中工作。●路由器是专门用来转发分组的,而结点交换机还可以连接多个主机。●路由器使用统一的IP协议,而结点交换机使用所在广域网的特定协议。●在查找路由表时,路由器根据目的站所在的网络号找出下一站(即下一个路由器),而结点交换机则根据目的站所接入的交换机号找出下一站(即下一个结点交换机)。图8-14(a)是一个路由表的简单例子。它有4个A类网络通过3个路由器连接在一起。每一个网络上都可能有成千上万个主机。可以想像,若按这些主机的完整IP地址来制作路由表,则这样的路由表显然过于复杂。但若按主机所在的网络号来制作路由表,那么每一个路由器中的路由表就只包含4个要查找的网络。以路由器R2的路由表为例。由于R2同时连接在网络2和网络3上,因此只要目的站在这两个网络上,都可由路由器R2直接交付(当然可能要利用地址转换协议ARP才能找到这些主机相应的物理地址)。若目的站在网络1中,则下一站路由器应为R1,其IP地址为。由于路由器R2和R1同时连接在网络2上,因此从路由器R2转发分组到路由器R1是很容易的。同理,若目的站在网络4中,则路由器R2应将分组转发给IP地址为的路由器R3。既然在选择路由过程中路由表只根据目的站的网络号,那么就可以将整个的网络拓扑简化为图8-14(b)所示的那样。在简化图中,网络变成了一条链路,但每一个路由器旁边都注明其IP地址。使用这样的简化图,可以不用关心网络内部的拓扑以及内部包含有多少主机,因为这些对于研究路由选择问题并没有什么关系。这样的简化图强调了在互联网中转发分组的过程是从一个路由器转发到下一个路由器。图8-14IP路由器的路由表举例(a) R2的路由表;(b)将网络简化为链路这样,以目的站的网络号来确定下一站路由器的位置,其结果是:
(1)所有到同一个网络的数据报都走同一个路由。
(2)只有最后一个路由器才与目的主机进行通信,因此只有最后一个路由器才知道目的主机是否在工作。可见需要安排一种方法,使最后一个路由器能将有关最后的交付情况报告给源站主机。
(3)由于每个路由器都独立地进行路由选择,因此从主机A发往主机B的数据报完全可能与主机B发回给主机A的数据报选择不同的路由。当需要进行双向通信时,就必须使好多个路由器协同工作。虽然Internet所有的路由选择都是基于目的主机所在的网络,但是大多数的IP路由选择软件都允许将指明对某一个目的主机的路由作为一个特例。这种路由叫做指明主机路由。采用指明主机路由可使网络管理人员能更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种指明主机路由。在对网络的连接或路由表进行排错时,指明到某一个主机的特殊路由就十分有用。与第7章介绍的结点交换机路由表的情况相似,路由器也可采用默认路由以减少路由表所占用的空间和搜索路由表所用的时间。根据以上所讲的,在Internet中一个路由器通过查找路由表确定转发的过程为如图8-15所示。图8-15路由器的工作过程框图这里再次强调指出,在IP数据报中始终不出现下一站路由器的IP地址。在IP数据报的首部写上的地址是源站和目的站的IP地址。既然IP数据报中没有下一站路由器的IP地址,那么待转发的数据报怎样才能够找到下一站路由器呢?关于这点可用图8-16来说明。图8-16IP数据报的转发机制在IP软件中的路由选择算法用路由表得出下一站路由器的IP地址后,不是将此IP地址填入IP数据报,而是送交下层的网络接口软件。网络接口软件负责将下一站路由器的IP地址转换成物理地址,并将此物理地址放在链路层的MAC帧的首部,然后用这个物理地址找到下一站路由器。由此可见,当发送一连串的数据报时,上述的这种查找路由表、计算物理地址、写入MAC帧的首部等过程将不断地重复进行,这样便造成了一定的开销。那么,能不能在路由表中不使用IP地址而直接使用物理地址呢?在IP层及以上使用抽象的IP地址,本来就是为了隐蔽各种底层网络的复杂性而便于分析和研究问题,所付出的代价就是在选择路由时多了一些上述的开销。但反过来,如果在路由表中直接使用物理地址,那就会带来更多的麻烦。8.3IP路由选择协议
IP采用的路由选择协议属于自适应(即动态)分布式路由选择协议。当IP网络规模非常大时,如果让所有的路由器都知道所有网络的路径,则这种路由表将非常庞大,而且处理开销也大。因此,为了便于进行路由选择,IP将整个网络划分为许多较小的单位,每个单位就是一个自治系统AS(AutonomousSystem),比如按行政单位(公司、大学、政府部门等)划分。一个自治系统也是一个互联网络,其特点是:它有权自主地决定在本系统内应采用何种路由选择协议。因此,IP就把路由选择协议分为两种,即:●内部网关协议IGP(InteriorGatewayProtocol)。即在一个自治系统内部使用的路由选择协议,它与互联网中的其他自治系统选用什么路由协议无关。目前这类路由选择协议使用得最多,如RIP、HELLO和OSPF协议。●外部网关协议EGP(ExternalGatewayProtocol)。即源站和目的站处在不同的自治系统中(各自使用不同的IGP),当数据报转发到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中,这样的协议就是外部网关协议EGP。在外部网关协议中目前使用最多的是BGP。图8-17为两个自治系统互连在一起的示意图,实线双向箭头表示内部网关协议,而虚线双向箭头表示外部网关协议。这里要说明两点:
(1)早期文献中不使用“路由器”一词,而是使用“网关”这一名词,实际上就是现在大家惯用的名词“路由器”。
(2) IGP和EGP是协议类别的名称。但最早的一个外部网关协议名恰好也是EGP,后来设计了一种更好的外部网关协议,叫做边界网关协议BGP(BorderGatewayProtocol),目前已取代了旧的EGP。图8-17自治系统和IGP、EGP协议对于大型的自治系统,还可将其再次进行划分。例如,可以构筑一个链路速率较高的主干网和许多速率较低的区域网。每个区域网通过路由器连接到主干网。在一个区域内找不到目的站时,就通过路由器经过主干网到达另一个区域网,或者通过外部路由器到别的自治系统中去查找。8.3.1内部网关协议IGP
1.路由信息协议RIP路由信息协议RIP(RoutingInformationProtocol)是内部网关协议IGP中使用最广泛的。RIP是一个基于距离向量的分布式路由选择协议,它的最大优点就是简单。RIP协议定义“距离”为到目的网络所经过的路由器数,也称为“跳数”。每经过一个路由器,跳数就加1。RIP认为一个最佳路由就是它通过的路由器数最少。RIP规定一条通路最多只能包含15个路由器。因此当“距离”的值超过15时,就相当于目的站不可达。可见RIP只适用于小型互联网。
RIP不能在两个网络之间同时使用多条路由,它只选择其中一条具有最少路由器的路由(即使还存在另一条高速但路由器较多的路由)。RIP的工作流程如下:互联网中的每个路由器每隔30秒向相邻路由器广播自己的路由表。所谓相邻路由器是指同一个网络上与之相连的两个路由器。例如在图8-14中,路由器R1和R2是相邻路由器,但R1和R3不是相邻路由器。路由表中记录的最主要信息,一是到达某网络的距离,二是应经过的下一站。路由表更新的原则就是使到各目的网络的距离最短。RIP协议让互联网中的所有路由器与其相邻路由器不断交换距离信息,并不断更新其路由表。最后形成的路由表必然是最佳路由。更新路由表的依据是:若路由器X到目的网络Y的距离为N,则与X相邻的路由器K就知道,若将下一站路由器选为X,则路由器K到网络Y的距离为N+1。因此,路由器K在收到相邻路由器X的信息后,就按下面的步骤进行处理。
(1)若原路由表中没有到网络Y的表项,则增加一个到网络Y的表项。
(2)若原路由表中已有到网络Y的表项(到目的网络Y经过路由器Z距离为M),则只要M>N+l,都进行更新,否则不变。更新后的下一站路由器应为X。经过一段时间后,更新过程就收敛到所有的路由器都建立起自己的路由表。若3分钟后还没有收到相邻路由器的更新路由表,则将此相邻路由器记为不可达的路由器(即将距离置为16)。
RIP报文信息通过传输层的用户数据报UDP进行传送。图8-18是RIP的报文格式。从RIP报文的格式可看出,它包括32比特的首部以及若干个路由。每个路由给出从该路由器到某一目的网络地址的距离(每个路由占20个字节)。一个RIP报文最多可包括25个路由,因而RIP报文的最大长度是4+20×25=504字节。如超过,必须再用一个RIP报文来传送。命令字段为1是请求,为2是应答。版本字段一般为1,新版本是2。地址类别字段为2,表示采用IP地址。在RIP请求报文中,地址类别置为0,距离置为16。图8-18RIP报文格式为了更好地理解RIP协议的工作原理,仍以图8-14这个很简单的互联网为例来讨论各个路由器的路由表是怎样建立的(见图8-19)。图8-19中,路由表增加了“距离”一列,表示这是从该路由器到目的网络上路由器的距离。在“下一站路由器”表项中的符号“―”表示直接交付。这是因为路由器和同一网络上的主机可直接通信,而不需要再经过别的路由器进行转发。同理,到目的网络的距离也都是零,因为需要经过的路由器数为零。图8-19使用RIP协议时路由表的建立过程在一开始,所有路由器中的路由表只有路由器所接入的网络(共有两个网络)的情况。图中空心箭头表示路由表的更新。细箭头表示更新路由表要用到相邻路由器传送过来的信息。接着,各路由器都向其相邻路由器广播RIP报文,这实际上就是广播路由表中的信息。假定路由器R2先收到了路由器R1和R3的路由信息,然后就更新自己的路由表。更新后的路由表再发送给路由器R1和R3。路由器R1和R3分别再进行更新。这个例子非常简单,所以3个路由器中的路由表很快就全部更新完毕。实际的更新过程可能很复杂。因为RIP报文的交互具有随机性。可能是路由器R1先收到了路由器R2的信息,随即更新后又发送给路由器R2。但不管RIP报文交互的顺序如何,最终总能收敛到最后的路由表。值得注意的是,RIP报文本身并不提供下一站路由器的IP地址。从上面的讨论可以看出,RIP协议采用的是分布式处理模型。每一个路由器根据其相邻路由器发送来的路由信息,逐步建立并不断地更新自己的路由表。现在新版本的RIPv2协议本身并没有多少改变,但性能上有改进。在IP地址后面的两个32比特字段要分别填入该网络的掩码和下一站的IP地址。此外,它还支持多播。
RIP存在的一个问题是:当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器。用图8-19来说明这一问题。设3个路由器都已经建立了各自的路由表,现在路由器R1和网1的连接线路突然断开。路由器R1发现后,将其到网1的距离改为16,并将此信息发给路由器R2。由于路由器R3发给路由器R2的信息是“到网1经过R2距离为2”,于是路由器R2将此项目更新为“到网1经过R3距离为3”,并发给R3。R3再发给R2信息为“到网1经过R2距离为4”。这样一直到距离增大到16时,路由器R2和R3才知道网1是不可达的。RIP协议的这一特点叫做:好消息传播得快,坏消息传播得慢。这种因网络故障而使传播往往需要较长时间(例如数分钟)的现象,是RIP的一个主要缺点。但如果一个路由器发现了更短的路由,那么这种更新信息就传播得很快。为了使坏消息传播得更快些,可以采取多种措施。例如,让路由器记录收到某特定路由信息的接口,而不让同一路由信息再通过此接口向反方向传送。
2.HELLO协议
HELLO协议也是IGP中的一种,但它是基于路由的网络时延,而不是基于路由的距离。因此,它适合于对网络响应时间敏感的应用。虽然目前HELLO协议比较陈旧,但它在IP的发展中仍占有重要地位。
HELLO协议提供两种功能。一种功能是使各路由器的时钟得到同步;另一种功能是每个路由器都能计算出到目的主机的最小时延路由。因此,HELLO报文既包括路由信息,还带有时间戳信息。
HELLO协议原理并不复杂。参加交换HELLO报文的每一个路由器都有一个相邻路由器时钟的最佳估算值表。一个路由器在发送报文时,要加上一个时间戳,写入当前的时钟值。当从相邻路由器发来的分组到达时,路由器计算报文在链路上的时延,即从相邻路由器时钟的估算值减去报文中时间戳上的时钟值。所有的路由器都要周期性地向相邻路由器发出轮询,以重新建立时钟的估算值。
HELLO报文允许路由器计算新的路由。路由的算法与RIP很相似,只是要将RIP中的距离换成为时延。每一个路由器周期性地向所有相邻路由器发送对所有路由器的时延的估算值。设路由器B收到路由器A发来的路由表,B发现:从B到D的当前时延>(从B到A的时延)+(从A到D的时延)这时路由器B就要更新路由表,使报文经过A再到D。与其他路由算法相似,HELLO协议也不可能使路由表更新得很快,否则会出现路由的不稳定,即路由像开关一样在两条路由之间来回改变。例如,发现有另一条路由的通信量较小,因而时延也较小,于是立即改变路由,由原来时延较大的路由改变到这条时延较小的路由。但新的路由因通信量突然增大而导致时延又增大,于是又转回到原来的路由。不稳定的振荡就是这样产生的。要避免这种不稳定状态的发生,应当在不同路由的时延较大时才允许切换。
HELLO协议有一定的局限性,使用此协议的范围不能超过256个路由器。此外,每个路由器所使用的路由表需要由人工来配置。
3.开放最短通路优先协议前面已经讲过,RIP协议最大的优点就是简单。然而随着Internet的规模的不断扩大,RIP协议的缺点就更加严重了。首先是RIP限制了网络的规模,它能使用的最大距离为15;其次,路由器之间交换的完整路由信息开销太大;最后,坏消息传播得慢会使许多更新过程的收敛时间过长。开放最短通路优先协议(OSPF,OpenShortestPathFirst)就是为克服RIP的这些缺点开发出来的,但OSPF比较复杂。“开放”表明是公开的,任何人都可以实现它而不需要付费。“最短通路优先”是因为使用了Dijkstra提出的最短通路算法。OSPF目前还不是ISO或IEEE的标准,但它却从OSI的IS-IS路由选择协议(IS是中间系统的缩写,代表路由器)吸收了许多好的思想。在内部网关协议IGP中,OSPF协议比较新,也是很受欢迎的一种选路协议,最新版本的OSPFv2是在1997年7月公布的。要注意:OSPF只是一个协议的名字,它并不代表其他的路由选择协议不是“最短通路优先”。实际上,所有的路由选择协议都是要寻找一条最短的通路。
OSPF是一种分布式的链路状态协议(LinkStatusProtocol),而不是像RIP那样基于距离向量的协议。它最主要的特点是:
(1)所有的路由器都维持一个链路状态数据库(Link-StateDatabase),这个数据库实际上就是整个互联网的拓扑结构图。所谓一个路由器的“链路状态”就是指该路由器与哪些网络或路由器相邻,以及将数据发往这些网络或路由器所需的费用。这里的费用是一个量值(取值范围在1~65 535之间),可以表示费用、距离、时延、带宽等。这些都由网络管理人员来决定。在使用RIP协议的路由器中,各个路由器只知道到达所有目的网络的下一站路由器,但不知道全网的拓扑结构。
(2)由于网络中的链路状态可能经常发生变化,因此OSPF让每一个链路状态都带上一个32比特的序号,序号越大状态就越新。OSPF规定,链路状态序号增长的速率不得超过5s/次。这样,全部序号空间在600年内不会产生重复号。
(3)每一个路由器利用链路状态数据库中的数据,采用特定的算法(如Dijkstra的最短通路路由算法)计算出自己的路由表。可见OSPF使用的是一种分布式数据库模型。
(4)只要网络拓扑发生任何变化,链路状态数据库就能很快地进行更新,使各个路由器能够重新计算出新的路由表。OSPF的更新过程收敛快是其重要优点。
(5) OSPF依靠各路由器之间的频繁交换信息来建立链路状态数据库,并维持数据库在全网范围内的一致性(这称为链路状态数据库的同步)。
(6) OSPF不用UDP数据报,而是直接用IP数据报传送(其IP数据报头部的协议字段值为89),并且这种数据报很短。这样做可以减少路由信息的通信量。短数据报的另一好处是可以不必分段传送。分段传送的数据报只要丢失其中一个,就无法组装成原来的数据报,而整个数据报就必须重发。OSPF报文的头部为24字节,它包含报文类型、报文长度、供鉴别用的数据以及校验码等,见图8-20。图8-20OSPF报文用IP数据报传输
OSPF共有以下五种报文类型:●类型1:Hello报文,用来发现和维持邻站的可达性。●类型2:DatabaseDescription报文,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。●类型3:LinkStateRequest报文,向对方请求发送某些链路状态项目的详细信息。●类型4:LinkStateUpdate报文,用洪泛法向全网更新的链路状态。●类型5:LinkStateAcknowledgment报文,对链路更新报文的确认。
OSPF规定,每两个相邻路由器每隔10秒钟要交换一次Hello报文(不要和HELLO协议混淆,它们之间没有关系),这样就能确知哪些相邻站是可达的。只有可达的相邻站的链路状态信息才存入链路状态数据库,并由此计算出路由表来。在正常情况下,网络中传送的绝大多数OSPF报文都是Hello报文。若有40秒钟没有收到某个相邻路由器发来的Hello报文,则可认为该相邻路由器是不可达的,应立即修改链路状态数据库,并重新计算路由表。其它的四种报文都是用来进行链路状态数据库的同步。当一个路由器刚开始工作时,只能通过Hello报文得知它有哪些相邻的路由器在工作,以及将数据发往相邻路由器所需的“费用”。如果所有的路由器都把自己的本地链路状态信息对全网进行广播,那么各路由器只要将这些链路状态信息综合起来就可得出链路状态数据库。但这样做开销太大,因此OSPF采用另外的办法。
OSPF让每一个路由器用DatabaseDescription报文和相邻路由器交换本数据库中已有的链路状态摘要信息。摘要信息主要指出有哪些路由器的链路状态信息及其序号已经写入了数据库。经过与相邻路由器交换DatabaseDescription报文后,路由器就使用LinkStateRequest报文,向对方请求发送自己所缺少的某些链路状态项目的详细信息。通过一系列的这种报文交换,全网的链路数据库就建立了。在网络运行的过程中,只要一个路由器的链路状态发生变化,该路由器就要使用LinkStateUpdate报文,用洪泛法向全网更新链路状态。为了确保链路状态数据库与全网的状态保持一致,OSPF还规定每隔一段时间,如30分钟,要刷新一次数据库中的链路状态。由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,与整个互联网的规模无关。因此当互联网规模很大时,OSPF协议要比距离向量协议RIP好得多。由于OSPF没有“坏消息传播得慢”的问题,据统计,其响应网络变化的时间小于100 ms。
OSPF协议的主要特点有:
(1)OSPF协议使用服务类型进行选路。它使用“费用”来表示一个链路,这样就可根据不同的服务类型(如低时延或高吞吐量)来选择路由。当传送一个数据报时,运行OSPF的路由器根据目的站地址和IP数据报头部的服务类型字段来选择路由。也就是说,对于同一个目的站,对应于每一种IP服务类型,可以有多个路由表的项目。
(2)OSPF有负荷平衡的功能。如在同一费用下到某个目的站有多条路由,则OSPF协议能使负荷
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖南张家界市2025年一级建造师考试复习机电工程管理与实务(历届真题)
- 2026上半年教师资格证考试《教育教学知识与能力》真题及参考答
- 2025年化工企业安全生产应急统计分析管理规定
- 一级建造师考试(通信与广电工程管理与实务)真题及答案(山东)
- 2026年事业单位面试热点预测题
- 2026年北京市石景山区初三下学期二模道德与法治试卷和答案
- Galarubicin-hydrochloride-DA-125-生命科学试剂-MCE
- 妊娠剧吐的孕期并发症预防
- 2026mba提前面试题及答案
- 急性脑梗的电解质监测与护理
- 【MOOC】中药药理学-学做自己的调理师-暨南大学 中国大学慕课MOOC答案
- 医疗器械偏差
- 2023年6月福建省普通高中学业水平合格性考试化学试题(解析版)
- 专题21 热量 比热容平衡计算 (含答案) 2024全国初中物理自主招生专题大揭秘
- 安全生产及设备检维修风险辨识培训
- 第四单元期末知识点难点闯关(课件)-部编版语文五年级下册
- 梁慧星《民法总论》超级笔记
- 兼职台球教练合作协议
- 银行业金融机构监管数据标准化规范(2021版)数据结构一览表
- 隆化县新村矿业有限公司大乌苏沟超贫磁铁矿采矿权出让收益评估报告
- 中国民用航空飞行学院辅导员考试题库
评论
0/150
提交评论