接收端如何判断一个收到的IP数据包的分片情况?

如题所述

IP数据包的分片情况有以下四种情况:

1、如果收到的包IP头中Fragmentation Flags为0且有UDP字段,则未分片。


2、如果收到的包IP头中Fragmentation Flags为1且有UDP字段,则为第一片。


3、如果收到的包IP头中Fragmentation Flags为1且无UDP字段,则为中间片。


4、如果如果收到的包IP头中Fragmentation Flags为0且无UDP字段,则为最後一片。

分片是分组交换的思想体现,也是IP 协议解决的两个主要问题之一。在IP 协议中的分片算法主要解决异种网最大传输单元(MTU) 的不同, 但是分组在传输过程中不断地分片和重组会带来很大的工作量还会增加一些不安全的因素。

一、什么是IP分片
IP分片是网络上传输IP报文的一种技术手段。IP协议在传输数据包时,将数据报文分为若干分片进行传输,并在目标系统中进行重组。这一过程称为分片( fragmentation)。

二、为什么要进行IP分片
通常要传输的IP报文的大小超过最大传输单位MTU(Maximum Transmission Unit)时就会产生IP分片情况。IP分片通常发生在网络环境中。比如说,在以太网(Ethernet)环境中可传输最大IP报文大小(MTU)为1500字节。而传输的报文大小要比1500字节(不包括以太协议的首部和尾部18个字节)大,这个时候就需要利用到分片技术,经分片后才能传输此报文。另外,使用UDP很容易导致IP分片,而很难强迫TCP发送一个需要进行分片的报文。

三、IP分片原理及分析
分片和重新组装的过程对传输层是透明的,其原因是当IP数据报进行分片之后,只有当它到达下一站时,才可进行重新组装,且它是由目的端的IP层来完成的。分片之后的数据报根据需要也可以再次进行分片。
IP分片和完整IP报文差不多拥有相同的IP头,ID域对于每个分片都是一致的,这样才能在重新组装的时候识别出来自同一个IP报文的分片。在IP头里面,16位识别号唯一记录了一个IP包的ID(ipid),具有同一个ID的IP分片将会重新组装;而13位片偏移则记录了某IP片相对整个包的位置;而这两个表中间的3位标志则标志着该分片后面是否还有新的分片。这三个域就组成了IP分片的所有信息, 接受方就可以利用这些信息对IP数据进行重新组织。

参考资料

IP分片原理及分析. Chinaunix论坛[引用时间2018-4-1]

温馨提示:答案为网友推荐,仅供参考