网际协议IP(Internet Protocol)是TCP/IP体系中两个最主要的协议之一。IP协议是负责网络互联的网络层的核心协议,与它配套使用的还有以下4个协议:
(1)地址解析协议(Address Resolution Protocol,ARP)。
(2)逆地址解析协议(ReverseAddress Resolution Protocol,RARP)。
(3)因特网控制报文协议(Internet Control Message Protocol,ICMP)。
(4)因特网组管理协议(Internet Group Management Protocol,IGMP)。
图3-64是表达这4个协议与IP的关系。传输控制协议(Transmission Control Protocol,TCP),它是IP配套使用的一个运输层协议。TCP虽然和网络互联并没有直接关系,但TCP协议对保证互联网络端到端的可靠传输起到非常重要的作用。
1.IP数据报的格式
互联网的基本传输单元是IP数据报。IP数据报包括数据报报头(首部)和数据区两部分。图3-65是IP数据报的完整格式。在TCP/IP标准中,各种数据格式常以32bit(即4B)为单位来描述。
(1)IP数据报首部的固定部分。
1)版本:指IP协议的版本,占有4bit。通信双方的IP协议版本必须一致。目前广泛使用的IP协议版本号有老版本IPv4和新版本IPv6。
2)首部长度:占4bit。4bit[24即为4bit(二进制)可以表达的最大十进制数]是选择代码,最大可表示15个数值单位(一个单位为4B)。因此IP首部长度的最大值为15×4=60B。当IP分组首部的长度不是4B(32bit)的整数倍时,必须利用最后一个填充字段加以填充,这样在实现IP协议时更方便。最常用的首部长度是20B。
3)服务类型:占8bit。用来获得更好的服务。
①前3个bit表示8个优先等级中的某个优先级。
②第4个bit表示有更低的延时,用Dbit表示。
③第5个bit表示要求有更高的吞吐量,用Tbit表示。
④第6个bit表示要求有更高的可靠性,用Rbit表示。
⑤第7个bit表示选择费用更低的路由器。
⑥第8个bit尚未使用。
图3-64 网际协议IP及其配套协议
图3-65 IP数据报的格式
4)总长度:是指首部与数据之和的长度,单位为字节。数据报的最大长度为65535B(即64KB)。
数据报通过底层物理网络传输。IP数据报封装在一个帧中,物理网络把包括数据报首部(报头)的整个数据报作为IP数据报发送。在理想情况下,将整个数据报封装在一个物理帧中,使物理网络上的传送十分有效。图3-66为IP数据报的封装图。
在IP层下面的每个数据链路层都有自己的帧格式,其中包括数据字段的最大长度,在IP层中称为最大传送单元(Maximum Transfer Unit,MTU)。IP层数据报封装成链路层帧时,它的总长度一定不能超过网络容许的最大传送单元(MTU)的规定值。由于以太网的普遍应用,实际上使用的数据报长度很少超过1500B,有时数据报的长度被限制在576B。如果数据报的长度超过网络容许的最大传送单元(MTU)的数值时,必须将过长的数据报进行分段(或称分片)后才能在网络上传送。此时,数据报的“总长度”是指分段(分片)后每段的首部长度与数据长度之和。
图3-66 IP数据报的封装
5)标志(Flag):占3bit。
①标志字段中的最低位,记为MF(More Fragment)。MF=1,表示后面还有分段的数据报;MF=0,表示分段数据为最后一个分段。
②标志字段中间的一位,记为DF(Don’t Fragment),意指是不能分段,只有当DF=0时才允许分段。
6)标识(Identification):占16bit。它是一个计数器,用来产生数据报的标识。相同的标识字段的数值使分段以后的各数据段最后能正确地重新装成为原来的数据报。
7)片偏移:较长的数据报在分段(片)后,某个分段相对于数据字段起始点的偏移量。分段偏移(片偏移)8B为偏移单位。偏移为5时,表明偏移量为40B。每个分段的长度为8B(64bit)的整数倍。
举例说明:
一个数据报的数据长度为3800B,使用固定首部(即20B长度)。需要分段的长度不超过1420B。我们把3800B的数据报分为3个数据报段,它们的数据长度分别为:1400B、1400B和1000B。原始数据报的首部被复制为各数据报段的首部,但必须修改有关字段的值,如表3-11所示。图3-67是数据报的分段图。
(www.daowen.com)
图3-67 数据报的分段(分片)
表3-11 IP数据报首部作为分段数据报首部必须修改的有关字段数值
注:∗标识字段12345是任意给出的,具有相同标识的数据报分段在目的站可无误地重装成原来的数据报。
8)生存时间:生存时间字段(Time To Live,TTL),用来设置该数据报在互联网中允许存在的时间,单位为秒。当源站向互联网输入一个数据报时,就为该数据报设置一个最大生存时间。当数据报通过主机和路由器对该数据报进行处理时,逐步递减其生存时间的数值,当生存时间为0时,路由器会丢弃该数据报,把它从网上删除。
9)协议:占8bit。协议字段指出此数据报携带的数据是使用何种协议,以便让目的主机的IP层知道应将此数据报交给哪个进程(进程是指正在运行的程序)。常用的一些协议和相对应的协议字段数值如表3-12所示。
表3-12 常用的协议与对应的协议字段数值
10)首部检验和:此字段只检验数据报的首部,不包括数据部分。
(2)IP数据报首部的可变部分。IP数据报首部的可变部分是一个选项字段。选项字段用来支持排错、测量及安全等措施。此字段的长度是可变的,从1B到40B,具体长度取决于所选择的项目。某些选项只需1B,它只包括1B的选项代码。另外一些选项需多个字节。
IP首部的可变部分有两个选项是关于源站路由选择的,即不严格的源站路由选择(Loose sour cerouting)和严格的源站路由选择(Strict source routing)。在数据报中加入路由选择选项,可使网络管理者了解网络中的某条通路的通信情况是否正常。一般用户并不使用这一功能。
IP首部还有一个选项是因特网的时间戳。时间戳记录了路由器收到数据报的日期和时间,占用4B。单位为毫秒(ms)。时间戳可用来统计数据报路由器产生的延时和延时的变化。
2.IP数据报的路由选择
(1)IP数据报的直接传送和间接传送。在分组交换系统中,路由选择是指选择一条路径发送分组的过程。路由选择可分为直接和间接传送两种方式。
直接传送方式将一个数据报从一台主机经过物理网络直接传送到目的站点。这是所有因特网的通信基础。只有当两台通信计算机连接在同一个物理传输系统时,才能采用直接传送方式。
如果源站和目的站计算机不是直接连接在同一物理网时,只能采用间接传送方式。发送方只能将数据报发送给一个路由器再进行传送。
在同一个物理网上,两台计算机之间的IP数据报传送可以直接传送,而不涉及路由器。发送方将数据报封装在物理帧中,将IP数据报的目的地址和一个物理硬件地址绑定在一起组成一个帧,直接传送到目的站。由于IP地址中包含网络地址和主机地址两部分,通过判别网络地址就能确定源站和目的站计算机是否同在一个物理网络上。
当源站和目的站通过多个路由器互联时,数据报的传送只能采用间接传送方式。发送主机通过网络将数据报传送给一台路由器。帧一旦到达该路由器,将封装的数据报提取出来,并在通往目的地的路径上选择下一台路由器,直到数据报送到某台可以直接传送至目的站的路由器,如图3-68所示。
(2)IP路由选择表。为了进行路由选择,需要路由选择表。路由表是根据路由选择算法得出的,它存储各个目的站点和如何到达目的站点的信息。为尽可能使用最少的信息进行路由选择,采用了信息隐蔽原理。
IP地址分配规定连接到同一物理网上的计算机具有相同的网络地址。这样路由选择表中只需包含网络地址信息,不需整个IP地址信息,从而大大提高了路由选择效率,使路由选择表变得很小。特定目的主机的信息被限制在主机运行的本地环境中。
图3-68 直接交付(A→B)和间接交付(A→C或D)
路由表包含一系列成对的信息,用N和R分别表示。N为目的网络的IP地址,R是沿着网络N的路径到下一个路由器的IP地址。路由器中的路由选择表只指定了从路由器R到目的网络路径上的一步,路由器并不知道目的站点的完整路径。
路由选择表的大小仅取决于互联网中网络的数量,与连接到主机的数量无关。IP路由选择软件仅需维护有关目的网络地址的信息,而与主机地址的信息无关。
路由选择是个非常复杂的问题,因为它是网络中的所有结点共同协调工作的结果。其次,路由选择的环境往往是不断变化的,而这种变化有时是无法事先知道的,例如,网络中出了某些故障。此外,当网络发生拥塞时,就特别需要能缓解这些拥塞的路由选择。
3.差错与控制报文协议
通过路由器转发数据报,因特网协议软件提供的是不可靠的无连接数据报传送服务。如果路由器不能正确选择路由和数据报,或者它检测到一个异常条件,影响它转发数据报,此时路由器需要通知源站点采取措施避免或纠正出现的问题。为能让互联网中的路由器能报告差错信息或提供有关意外情况,在TCP/IP中设计了一个特殊用途的报文机制,即Internet控制报文协议(Inter-net Control Message Protocol,ICMP)。它是IP的一部分。ICMP报文是放置在IP数据报中数据部分的一个控制报文协议。它允许路由器向其他路由器或主机发送差错或控制报文,为两台主机提供Internet协议软件通信。
ICMP为发生差错的路由器向初始源站点提供报告差错的方法,并没有全部指定解决每个差错的可能措施。数据报产生差错时,ICMP只向初始源站点回送差错情况报告,源站点必须将有关差错交给一个应用程序或采取其他措施来纠正问题。
ICMP报文采取图3-69的两级封装。每个ICMP报文放在IP数据报的数据部分中,数据报本身放在帧的数据部分,通过物理网络传送。携带ICMP报文的数据报与携带用户信息的数据报具有完全相同的路由选择,没有优先级区别。
互联网路由器使用本地路由选择表来计算下一站。为避免数据报在互联网上无止境地循环,每个数据报都包含了一个生存时间计数器。只要路由器处理数据报,它就递减该计数器的值,直到计数器值到达0时丢弃该数据报。同时,路由器向数据报源站点发回一个ICMP超时间报文。
路由算法按网络的通信量可分为静态路由选择策略和动态路由选择策略两类。静态路由选择又称非自适应路由选择,特点是简单和开销较小,但不能及时适应网络状态的变化。动态路由选择又称自适应路由选择,特点是能较好地适应网络状态的变化,但实现起来较为复杂,开销也较大。因特网采用的路由选择协议属于自适应的(即动态的)、分布式路由选择协议。
图3-69 ICMP报文的两级封装
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。