考点三:IP数据报格式

考点三:IP数据报格式

如图4-7所示,IP协议把从传输层收到的数据添加IP首部之后,得到IP数据报,一个IP数据报由首部和数据两部分组成。首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。

图4-7 IP数据报格式

(1)版本信息占4位,指IP协议的版本。通信双方使用的IP协议的版本必须一致。目前广泛使用的IP协议版本号为4,即IPv4。以后要使用的IPv6,即版本6的IP协议。

(2)首部长度(报头长度)占4位,可表示的最大十进制数值是15。注意,首部长度字段所表示数的单位是32位字长(1个32位字长是4个字节)。因为IP首部的固定长度是20个字节,所以首部长度字段的最小值是5(二进制表示的首部长度是0101)。而当首部长度为最大值1111时(十进制数的15),就表明首部长度达到最大值15个32位字长,即60字节。当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。

(3)区分服务占8位,此字段用来获得更好的服务,实际上一直没有被使用过。

(4)总长度指首部和数据之和的长度,单位为字节。总长度字段为16位,因此数据报的最大长度为216=65536字节。在IP层下面的每种数据链路层协议都规定了一个数据帧中的数据字段的最大长度,称为最大传输单元(MTU)。当一个IP数据报封装成数据链路层的帧时,此数据报的总长度(首部加上数据部分)一定不能超过数据链路层所规定的MTU值。以太网规定其IP数据报的最大值是1500字节。若所传送的数据报长度超过数据链路层的MTU值,就必须把过长的数据报进行分片处理。

(5)标识(Identification)占16位。它是一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。但这个“标识”并不是序号,当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有数据报片的标识字段中,相同的标识字段使分片后的各数据报片最后能正确地重装为原来的数据报。

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

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

假设一个IP数据报的数据部分是3800字节,采用固定首部长度,网络层规定最大的数据部分是1400字节,请计算该IP数据报的分片情况,以及MF、DF的值。

解析过程:因为原始数据报的数据部分是3800字节,网络层规定的最大数据报的数据部分是1400字节,且采用固定首部,所以分片后第一片的数据是1400字节,对应MF=1,DF=0,片偏移是0/8=0;第二片的数据是1400字节,对应MF=1,DF=0,片偏移是1400/8=175;第三片的数据是1000字节,对应MF=0,DF=0,片偏移是2800/8=350。IP数据报分片示例如图4-8所示。

图4-8 IP数据报分片示例

根据上述计算,IP数据报首部与分片有关的字段中的数值如表4-6所示。

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

注意:如果计算时不能正好整除,按照向下取整计算。

(8)生存时间占8位,生存时间字段的英文缩写是TTL(Time To Live),表明这是数据报在网络中的转发次数。由发出数据报的源点设置这个字段,其目的是防止无法交付的数据报无限制地在互联网中兜圈子。其原理是每经过一个路由器时,就把TTL值减1。当TTL值减为0时,就丢弃这个数据报。

(9)协议占8位,协议字段指出此数据报携带的数据的上一层使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个协议进行处理,常用的协议和相应的协议字段值如表4-7所示。

表4-7 常用的协议和相应的协议字段值

(10)首部校验和占16位。这个字段只检验数据报的首部,但不包括数据部分。为减少计算校验和的工作量,IP首部的校验和不采用复杂的CRC检验码,而采用二进制反码运算。一旦出错,IP层不提供纠错功能,直接将此数据报丢弃。

(11)IP数据报首部的可变部分。IP数据报首部的可变部分就是一个选项字段。选项字段用来支持填充、排错、测量及安全等措施。

政哥应试提醒:IP首部格式重点考查几个字段,如源地址、目的地址、MF、DF、TTL、片偏移等,在考试中,首部格式会被给出的,大家只需要知道每个字段的功能就可以了。

难度系数:★

牛刀小试

1.下列关于IP数据报分片和重组描述正确的是( )。

A.分片在信源机,重组在目的机

B.分片在经过路由器时就进行,重组也一样

C.分片只可能发生在路由器,而重组必须在目的机

D.分片只可能发生在路由器,而重组可能发生在目的机,也可能发生在路由器

2.在IP数据报报头中有两个有关长度的字段,一个为报头长度字段,一个为总长度字段,其中( )。

A.报头长度字段和总长度字段都以8bit为计数单位

B.报头长度字段以8bit为计数单位,总长度字段以32bit为计数单位

C.报头长度字段以32bit为计数单位,总长度字段以8bit为计数单位

D.报头长度字段和总长度字段都以32bit为计数单位

3.在TCP/IP网络中,转发路由器对IP数据报进行分片的目的是( )。

A.提高路由器的转发效率

B.降低网络拥塞的可能性

C.使得目的主机对数据报的处理更简单高效

D.保证数据报不超过物理网络能够传输的最大报文长度

4.当路由器接收到一个1500字节的IP数据报时,需要将其转发到MTU为980的子网,分片后产生两个IP数据报,长度分别是( )。

A.750字节,750字节 B.980字节,520字节

C.980字节,540字节 D.976字节,544字节

5.IP分组中的校验和检查的范围是( )。

A.仅是首部 B.仅是数据

C.首部和数据 D.仅是源地址和目的地址

6.IP数据报头中用于控制数据报分段和重组字段的是( )。

A.标识字段、可选字段和片偏移字段 B.可选字段、标志字段和片偏移字段

C.标识字段、标志字段和片偏移字段 D.生命期字段、标志字段和片偏移字段

7.IP数据报经分段后进行传输,在到达目的主机之前,分段后的IP数据报( )。

A.可能再次分段,但不进行重组 B.不可能再次分段和重组

C.不可能再次分段,但可能进行重组 D.可能再次分段和重组

8.IP数据报的哪个字段用于防止无限循环?( )

A.区分服务 B.标识 C.标志 D.生存时间

9.一个UDP用户数据报的数据字段为8192字节。在数据链路层要使用以太网传送,应当划分6个IP数据报片,第一片偏移字段的值为0,则第二片偏移字段的值为( )。

A.1480 B.185 C.2960 D.370

牛刀小试解析

1.C 解析 本题考查IP数据报在传输过程中的分片和重组。当路由器将IP数据报发往网络,而该网络又无法将整个IP分组一次发送完毕的时候,路由器就会将该IP数据报分成多片,使得各分片的长度小于等于这个网络的最大分组长度,能在该网络内传输。

IP分组的分片在传输的过程中,仍可能继续分片。当这些分组到达目的主机时,根据IP数据报的偏移的值来进行数据报的重组。

2.C 解析 本题考查IP数据报的首部长度字段和总长度字段的计数单位。“总1首4偏8”,这是一个口诀,即总长度是按1字节算的,首部长度是4字节的倍数,片偏移是8字节的倍数。

3.D 解析 本题考查IP数据报分片的目的。IP数据报经过不同网络的时候,由于网络的最大传输单元MTU可能不同,为了使得数据报能在这些网络上传输,需对这些数据报进行分片,保证数据报不超过物理网络能够传输的最大报文长度。故而,本题选择D项。

4.C 解析 因为目的子网的MTU是980字节,所以1500字节的IP数据报被分成两片,第一片的长度是980字节,第二片的长度是520字节。但是,第二片需要再加上20个字节的IP首部,所以大小是520+20=540字节。故而,选择C项。

5.A 解析 本题考查IP分组中的校验和检查范围。IP分组中的校验和又称为首部校验和,占16位,该校验和只校验分组首部,而不校验分组的数据部分。

6.C 解析 我们回顾一下IP数据报的首部,如图4-9所示。

我们对IP数据报的首部标识字段、标志字段和片偏移字段做如下分析:

标识字段占16位,每个数据报从源主机产生之后,都赋予唯一的标识,在传输的过程中不允许改变。即使当一个数据报长度超过某个网络的MTU的时候,进行了分片,标识字段也不会改变。标识被复制到每个分组,便于到达目的主机之后重组报文。

标志字段占3位,最低位MF=1表示后面还有分片,MF=0表示最后一个分片了。标志字段中间一位DF=1表示不允许分片,DF=0表示允许分片。

片偏移字段指出分组在分片之后的相对位置,占13位。因为数据报总长度是16位,所以片偏移以8个字节为偏移单位。目的主机根据分片偏移来寻找位置重组报文。

7.A 解析 不同的网络,可能有不同的MTU。IP数据报经过分片之后,若在传输过程中经过某网络,该网络的MTU小于分片的长度,还得继续分片。但是,在IP数据报传输过程中,中间节点不对分片进行重组,只有在目的主机上才会对分片进行重组。故而,选择A项。

图4-9 IP数据报的首部

8.D 解析 本题考查IP数据报的格式和生存时间字段的作用。

生存时间占8位,即TTL,每经过一个路由器,TTL的值就会减1。当TTL值减为0时,就丢弃这个数据报,使得数据报不能在网络中无限传输。

9.B 解析 本题考查IP数据报分片偏移值的计算方法。以太网的最大帧长是1518字节,而MAC帧头部长度是18字节,IP数据报的头部长度是20字节。故而,UDP分片在每个帧里面数据部分最大长度是1480字节,8192字节的UDP数据报可以分成6片IP数据报,前5片是1480字节,最后一片是800字节。这6片IP数据报分片的数据部分起始字节的值分别是0、1480、2960、4440、5920和7400。按照“总1首4偏8”规则,得到各片偏移字段的值分别是0、185、370、555、740、925。故而,可得到第二片的偏移字段的值为185,选择B项。