问题 问答题

假设路由器R存在两个接口,接口R1连接标准局域网,接口R2连接限制最大传输单元(MTU)的局域网,现在一个IP数据包从接口R1转发到接口R2,从R2链路上截获两个数据包的IP报头,如下表所列,请回答如下问题:


编号 IP分组内容(十六进制)
1 45 00 00 64 00 1e 20 00 ff 01 18 27 c0 a8 01 01 c0 a8 01 02
2 45 00 00 58 00 1e 00 1e ff 01 38 15 c0 a8 01 01 c0 a8 01 02

根据截获的IP报头,请填充没有截获的数据报,注意不包含头部校验和。
注:IP分组头结构分别如下图所示。

答案

参考答案:没有截获的数据包是中间的两个IP分片:
第二个分片:45 00 00 64 00 1e 20 0a ff 01 18 1d c0 a8 01 01 c0 a8 01 02
第三个分片:45 00 00 64 00 1e 20 14 ff 01 18 13 c0 a8 01 01 c0 a8 01 02

解析: 本题从网络协议分析的角度考查IP分片的原理及其应用。在IP层下面的每一种数据链路层都有其自己的帧格式,其中包括帧格式中的数据字段的最大长度,称为最大传输单元(MTU,Maximum Transfer Unit)。当一个IP数据报封装成数据链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的数据链路层的MTU值,这就是分片问题产生的原因。
在IP分组头结构里面和分片相关的字段主要有三个:
(1)标识字段,用于标识数据报。当数据报长度超出网络最大传输单元(MTU)时,必须进行分割,并且需要为分割段(Fragment)提供标识。所有属于同一数据报的分割段被赋予相同的标识值。
(2)标志字段,后两位最低位记为MF(More Fragment)。MF=1即表示后面“还有分片”的数据报。MF=0表示这已是若干数据报片中的最后一个。标志字段中间的一位记为DF(Don’ t Fragment),表示不能分片。只有当DF=0时才允许分片。
(3)片偏移,用以指出该分段在数据报中的相对位置,也就是说,相对于用户数据字段的起点,该片从何处开始。特别注意片偏移以8字节为偏移单位。
从以上原理出发,针对第一个报文可以得到,IP报头总长度是100字节,这个总长度是包含报头和数据部分,因此MTU是100。然后从第一个报文还可以得出,IP的片偏移是0,因此第一个报文是分片的第一个分片。从第二个报文可以得出,IP的片偏移是240,数据总长度是88字节,注意包含了20个字节的头部长度,再看标志位MF为0,是最后一个分片,这就可以得到原始数据包的大小是240+(88-20)=308字节,因为MTU是100个字节,因此必须分为4片。
面对第三个问题,注意版本、头部长度、服务类型、标识字段、TTL、协议、源IP地址、目的IP地址必须是一致的。特别是标识字段,总长度就是最大传输单元100字节,需要添加的是标志和片偏移,分别是MF=1,DF=0,片偏移=80,和MF=1,DF=0,片偏移=160,因此填充后的IP数据包头部结果如下:
第二个分片:45 00 00 64 00 1e 20 0a ff 01 18 1d c0 a8 01 01 c0 a8 01 02
第三个分片:45 00 00 64 00 1e 20 14 ff 01 18 13 c0 a8 01 01 c0 a8 01 02

单项选择题
判断题