理论教育 IP数据报分片:计算机网络技术指南

IP数据报分片:计算机网络技术指南

时间:2023-11-22 理论教育 版权反馈
【摘要】:IP数据报的分片涉及首部不可分片标志位、后续标志位和偏移量字段。3个数据报的长度分别为1500、1500和1068字节,因为每个数据报都包括20字节的IP首部,因此3个IP数据报的数据部分则分别为1480、1480和1048字节,总和刚好是4008字节的数据,可见在分片过程中数据部分并不会被改动。一个4008字节的IP数据报,因为MTU的1500字节限制,分成了两个1500字节和一个1068字节的分片。

IP数据报分片:计算机网络技术指南

IP数据报的分片涉及首部不可分片标志位、后续标志位和偏移量字段。为了重装,还涉及源IP地址、目的IP地址和标识符字段。

首先来看一个关于标志位影响IP数据报传输的例子。在WindowsXP下,单击“程序→运行”,输入cmd命令,在弹出窗口中输入“ping-l1472-f192.168.1.1”。其中,参数-l是设置ping命令的数据部分的大小,参数-f是将该IP数据报设置为不可分片。该命令的输出结果如下所示。

978-7-111-31053-2-Chapter05-12.jpg

从上面看到,当把IP数据报设置为不可分片、数据部分大小设置为1472字节时,可以成功地连接到默认网关(即IP地址为192.168.1.1的路由器)。

但是,当仍旧保持IP数据报为不可分片状态,把数据部分大小设置为1473字节时,仅比上次多1字节,即输入“ping-l1473-f192.168.1.1”。输出结果如下。

978-7-111-31053-2-Chapter05-13.jpg

可以看到,这次并没有成功连接到网关地址,而是显示“Packet needs to be fragmented but DFset.(IP数据报需要分片而不可分片位(DF)被置位。)”。这是因为Ping命令利用到了后面要讲的ICMP查询回显请求报文。其中ICMP报文首部长为8字节,而IP首部为20字节。1472字节加上这些首部,长度刚好是1500字节——这是前文所提到的以太网最大传输单元MTU的大小。也就是说当数据为1473字节时,虽然只是增加了1字节,IP数据报就要进行分片,而由于设置了不可分片标志位,所以数据报被丢弃,这就是没有成功连接的原因。

下面以发送4000字节的ping命令数据包为例(加上8字节的ICMP首部,实际为4008字节,放入IP数据报的数据字段中),来详细分析IP数据分片时各字段的设置。采用某款网络抓包软件对“ping-l4000”命令发送的数据包进行抓取,得到3个IP数据报。

3个数据报的长度分别为1500、1500和1068字节,因为每个数据报都包括20字节的IP首部,因此3个IP数据报的数据部分则分别为1480、1480和1048字节,总和刚好是4008字节的数据,可见在分片过程中数据部分并不会被改动。

图5-7是该分片重装流程描述。一个4008字节的IP数据报,因为MTU的1500字节限制,分成了两个1500字节和一个1068字节的分片。

978-7-111-31053-2-Chapter05-14.jpg(www.daowen.com)

图5-7 分片重装流程图

接下来利用捕获到的3个IP数据报(分片),看一下与分片相关的字段的设置。对于抓包软件显示的每个数据报,下半部分是数据报的字节内容(十六进制表示),上半部分是抓包软件对该数据报各字段的解释。只显示了IP首部的前几个字段,其中共同的部分是:版本为4,首部长度为20字节,服务类型字段为0x00,标识符为0xd0af。

在第一个分片中可以看到,标志位+分片偏移量的16位组为0x2000(其中黑体部分),即不可分片标志为0(可分片),后续标志位为1(有后续分片),偏移量为0。

978-7-111-31053-2-Chapter05-15.jpg

在第二个分片中,该16位组为0x20B9,对应各字段为不可分片标志为0(可分片),后续标志位1(有后续分片),偏移量为0xB9=185(单位为8字节,即1480字节)。

978-7-111-31053-2-Chapter05-16.jpg

在第三个分片中,该十六位组为0x0172,即不可分片标志为0(可分片),后续标志位为0(无后续分片),偏移量为0x172=370(单位为8字节,即2960字节)。

978-7-111-31053-2-Chapter05-17.jpg

978-7-111-31053-2-Chapter05-18.jpg

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

我要反馈