首页 理论教育 IP数据报格式-计算机网络

IP数据报格式-计算机网络

时间:2023-11-09 理论教育 版权反馈
【摘要】:IP数据报的格式能够说明IP都具有什么功能。图4-16IP数据报的完整格式从图4-16可看出,一个IP数据报由首部和数据两部分组成。首部的前一部分是固定长度,共20 Byte,是所有IP数据报必须具有的。因固定首部长度为20 Byte,因此每个数据报片的数据部分长度不能超过1 400 Byte,于是分为3个数据报片,其数据部分的长度分别为1 400 Byte、1 400 Byte和1 000 Byte。生存时间表明这是数据报在网络中的寿命。由发出数据报的源点设置这个字段。

IP数据报格式-计算机网络

IP数据报的格式能够说明IP都具有什么功能。在TCP/IP的标准中,各种数据格式常常以32 bit(即4 Byte)为单位来描述。图4-16所示是IP数据报的完整格式。

图4-16 IP数据报的完整格式

从图4-16可看出,一个IP数据报由首部和数据两部分组成。首部的前一部分是固定长度,共20 Byte,是所有IP数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。下面介绍首部各字段的意义。

1.IP数据报首部的固定部分中的各字段

(1)版本占4 bit,指IP的版本。通信双方使用的IP的版本必须一致。目前广泛使用的IP版本号为4(即IPv4)。关于以后要使用的IPv6(即版本6的IP),将在4.6节中对此进行讨论。

(2)首部长度占4 bit,可表示的最大十进制数值是15。请注意,首部长度字段所表示数的单位是32 bit(1个32 bit字长是4 Byte)。因为IP首部的固定长度是20 Byte,因此首部长度字段的最小值是5(即二进制表示的首部长度是0101)。而当首部长度为最大值1111时(即十进制数的15),就表明首部长度达到最大值15个32 bit字长,即60 Byte。当IP分组的首部长度不是4 Byte的整数倍时,必须利用最后的填充字段加以填充,因此IP数据报的数据部分永远在4 Byte的整数倍时开始,这样在实现IP时较为方便。首部长度限制为60 Byte的缺点是有时可能不够用。这样做是希望用户尽量减少开销。最常用的首部长度是20 Byte(即首部长度为0101),这时不使用任何选项。

(3)区分服务占8 bit,用来获得更好的服务。这个字段在旧标准中叫作服务类型,但实际上一直没有被使用过。1998年IETF把这个字段改名为区分服务(Differentiated Serv⁃ices,DS)。只有当使用区分服务时,这个字段才起作用。在一般的情况下都不使用这个字段[RFC2474,3168,3260]。

(4)总长度,总长度指首部和数据之和的长度,单位为字节。总长度字段为16 bit,因此数据报的最大长度为216-1=65 535(Byte)。然而实际上传送这样长的数据报在现实中是极少遇到的。在IP层下面的每一种数据链路层协议都规定了一个数据帧中的数据字段的最大长度,称为MTU。当一个IP数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的数据链路层所规定的MTU值。例如,最常用的以太网就规定其MTU值是1 500 Byte。若所传送的数据报长度超过数据链路层的MTU值,就必须把过长的数据报进行分片处理。

虽然使用尽可能长的IP数据报会使传输效率得到提高(因为每个IP数据报中首部长度占数据报总长度的比例就会小些),但数据报短些也有好处。每个IP数据报越短,路由器转发的速度就越快。为此,IP规定,在互联网中所有的主机和路由器必须能够接受长度不超过576 Byte的数据报。这是假定上层交下来的数据长度有512 Byte(合理的长度),加上最长的IP首部60 Byte,再加上4 Byte的富余量,就得到576 Byte。当主机需要发送长度超过576 Byte的数据报时,应先了解一下目的主机能否接受所要发送的数据报长度,否则就要进行分片。在进行分片时(见后面的“片偏移”字段),数据报首部中的“总长度”字段是指分片后的每一个分片的首部长度与该分片的数据长度的总和。

(5)标识占16 bit。IP软件存储器中维持一个计数器,每产生一个数据报,计数器就把数值加1,并将此值赋给标识字段,但这个“标识”并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报片的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。

(6)标志占3 bit,但目前只有两位有意义。标志字段中的最低位记为MF(More Frag⁃ment)。MF=1,即表示后面“还有分片”的数据报;MF=0,表示这已是若干数据报片中的最后一个。标志字段中间的一位记为DF(Don't Fragment,意思是“不能分片”)。只有当DF=0时才允许分片。

(7)片偏移占13 bit。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置,也就是说,相对于用户数据字段的起点,该片从何处开始。片偏移以8 Byte为偏移单位,这就是说,每个分片的长度一定是8 Byte(64 bit)的整数倍。

下面举一个例子。

【例4-1】一数据报的总长度为3 820 Byte,其数据部分总长度为3 800 Byte长(使用固定首部),需要分片为长度不超过1 420 Byte的数据报片。因固定首部长度为20 Byte,因此每个数据报片的数据部分长度不能超过1 400 Byte,于是分为3个数据报片,其数据部分的长度分别为1 400 Byte、1 400 Byte和1 000 Byte。原始数据报首部被复制为各数据报片的首部,但必须修改有关字段的值。图4-17给出分片后得出的结果(请注意片偏移的数值)。

图4-17 数据报的分片举例(www.xing528.com)

表4-5所示是本例中数据报首部与分片有关的字段中的数值,其中标识字段的值是任意给定的(12345)。具有相同标识的数据报片在目的站就可无误地重装成原来的数据报。

表4-5 IP数据报首部与分片有关的字段中的数值

现在假定数据报片2经过某个网络时还需要再进行分片,即划分为数据报片2-1(携带数据800 Byte)和数据报片2-2(携带数据600 Byte),那么这两个数据报片的总长度、标识、MF、DF和片偏移分别为820、12345、1、0、175;620、12345、1、0、275。

(8)生存时间(Time To Live,TTL)占8 bit。生存时间表明这是数据报在网络中的寿命。由发出数据报的源点设置这个字段。其目的是防止无法交付的数据报无限制地在互联网中兜圈子(例如从路由器R1转发到R2,再转发到R3,然后又转发到R1),因而白白消耗网络资源。最初的设计是以秒作为TTL值的单位。每经过一个路由器时,就把TTL值减去数据报在路由器所消耗掉的一段时间。若数据报在路由器消耗的时间小于1 s,就把TTL值减1。当TTL值降至零时,就丢弃这个数据报。

然而随着技术的进步,路由器处理数据报所需的时间不断在缩短,一般都远远小于1 s,后来就把TTL字段的功能改为“跳数限制”(但名称不变)。路由器在每次转发数据报之前就把TTL值减1。若TTL值降到零,就丢弃这个数据报,不再转发。因此,现在TTL的单位不再是s,而是跳数。TTL的意义是指明数据报在互联网中至多可经过多少个路由器。显然,数据报能在互联网中经过的路由器的最大数值是255。若把TTL的初始值设置为1,就表示这个数据报只能在本局域网中传送。由于这个数据报一传送到局域网上的某个路由器,在被转发之前TTL值就降至零,因此就会被这个路由器丢弃。

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

常用协议及相应的字段值见表4-6。

表4-6 常用协议及相应的字段值

(10)首部检验和占16位。这个字段只检验数据报的首部,但不包括数据部分。这是因为数据报每经过一个路由器,路由器都要重新计算首部检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。不检验数据部分可减少计算的工作量。为了进一步减小计算检验和的工作量,IP首部的检验和不采用复杂的CRC检验码而采用下面的简单计算方法:在发送方,先把IP数据报首部划分为许多16位字的序列,并把检验和字段置零。用反码算术运算把所有16位字相加后,将得到的和的反码写入检验和字段。接收方收到数据报后,将首部的所有16位字再使用反码算术运算相加一次。将得到的和取反码,即得出接收方检验和的计算结果。若首部未发生任何变化,则此结果必为0,于是就保留这个数据报;否则即认为出了差错,并将此数据报丢弃。

(11)源地址占32位。

(12)目的地址占32位。

2.IP数据报首部的可变部分

IP数据报首部的可变部分就是一个选项字段。选项字段用来支持排错、测量以及安全等措施,内容很丰富。此字段的长度可变,从1~40 Byte不等,取决于所选择的项目。某些选项项目只需要1 Byte,它只包括1 Byte的选项代码。而有些选项需要多个字节,这些选项一个个拼接起来,中间不需要有分隔符,最后用全0的填充字段补齐成为4 Byte的整数倍。

增加首部的可变部分是为了增加IP数据报的功能,但这同时也使IP数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销。实际上这些选项很少被使用。很多路由器都不考虑IP首部的选项字段,因此新的IP版本IPv6就把IP数据报的首部长度做成固定的。这里不讨论这些选项的细节。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈