一个IP分组的数据部分长度为8000字节,在通过MTU为1492的局域网时,如何分片?
时间: 2024-04-17 10:27:34 浏览: 12
在将一个IP分组的数据部分长度为8000字节的数据通过MTU为1492的局域网进行传输时,需要将数据进行分片以适应MTU的限制。
首先,计算每个分片的大小。由于MTU为1492字节,IP头部占用20字节,因此每个分片的有效载荷大小为1492 - 20 = 1472字节。
然后,计算分片数量。将8000字节的数据部分除以1472字节,得到5个分片,再加上最后一个分片中剩余的384字节,总共需要6个分片。
接下来,对数据进行分片。每个分片都需要包含IP头部信息,所以每个分片的总长度为1472字节。前五个分片都是完整的1472字节,而最后一个分片只包含剩余的384字节。
在IP头部中,需要设置以下字段:
- 版本号:IPv4或IPv6
- 总长度:整个IP分组的长度
- 标识:用于识别原始IP分组的标识号
- 分片偏移:标识当前分片在原始IP分组中的位置
- 标志位:MF(More Fragments)表示后面还有更多的分片,DF(Don't Fragment)表示禁止分片
- 生存时间(TTL):限制分组在网络中的生存时间
- 协议:指示上层协议,如TCP或UDP
- 源IP地址和目标IP地址:指示数据的源和目标地址
每个分片的分片偏移字段需要根据MTU和分片大小计算得出。第一个分片的偏移为0,每个后续分片的偏移为前一个分片的偏移加上分片大小除以8。
接收端在收到分片后,根据标识号和分片偏移字段将分片重新组装成原始的IP分组。
注意:以上是IPv4的分片过程,IPv6不再进行分片,而是依靠路径MTU发现来保证整个IP分组能够在网络中传输。
相关问题
ip分片时为啥片中数据长度要求为8字节的整数倍
IP分片是在数据包传输过程中,由于网络链路的限制或者路由器的缓冲区不够大而将原始IP数据包分为多个较小的IP数据包传输的一种方法。而数据长度要求为8字节的整数倍是因为以下几个原因:
1. 网络链路MTU限制:网络链路(如以太网)在传输数据时有一个最大传输单元(MTU)的限制,它表示链路能够一次性传输的最大数据量。如果IP数据包的长度超过了链路的MTU,就需要进行分片才能在链路上正常传输。而为了确保分片后每个片段的长度能够被链路正常接收,所以要求分片中数据长度为8字节的整数倍。
2. 路由器缓冲区大小:在分片时,每个片段都会经过一系列的路由器进行转发。为了确保路由器能够正确处理分片,使得所有的片段长度一致,可以简化路由器的处理逻辑。而8字节的整数倍作为分片长度的要求,可以使得这种逻辑更加简化。
3. 重组效率:分片后的片段需要在目的主机上重新组装成原始的IP数据包。如果分片长度不是8字节的整数倍,就会导致重组过程变得复杂,可能会增加处理的时间和资源开销。因此,为了提高重组的效率,要求分片中数据长度为8字节的整数倍。
一个400字节长度的运输层报文,传递到IP层加上固定首部后形成IP数据报,若该IP数据报需通过MTU值为150 字节的二层链路,则需要分为几个分片,每个IP分片的MF标记、片偏移值、总长度为多少?
根据题目中给出的条件,我们需要将一个长度为400字节的运输层报文传递到MTU值为150字节的二层链路上。因为IP首部大小为20字节,所以每个IP数据报的大小为20字节加上运输层报文的大小。因此,每个IP数据报最大只能携带130字节(150字节MTU值减去20字节IP首部大小)的数据。
因此,我们需要将原始的400字节运输层报文分为多个IP分片。每个IP分片的大小为130字节,除了最后一个分片可能会小于130字节。每个IP分片需要添加20字节的IP首部,因此每个IP分片的总长度为150字节。
由于IP分片需要标记分片的位置和MF标记,以便接收方能够正确地重组原始数据报。因此,第一个IP分片的MF标记应该设置为1,代表还有后续分片,片偏移值为0。第二个分片的MF标记仍然设置为1,片偏移值应该为130/8=16。最后一个分片的MF标记应该设置为0,片偏移值为32。
因此,将一个长度为400字节的运输层报文传递到MTU值为150字节的二层链路上需要分为3个IP分片,每个IP分片的MF标记、片偏移值、总长度如下:
- 第一个IP分片:MF=1,片偏移值=0,总长度=150字节(包括20字节IP首部和130字节数据)
- 第二个IP分片:MF=1,片偏移值=16,总长度=150字节(包括20字节IP首部和130字节数据)
- 第三个IP分片:MF=0,片偏移值=32,总长度=80字节(包括20字节IP首部和60字节数据)