需要澄清网络层中的数据包碎片

时间:2015-11-11 07:02:00

标签: tcp network-protocols ip-fragmentation

我确实理解数据包碎片的目的。从答案来看,我唯一不理解的是总长度和片段偏移量。我非常感谢您在解决这个问题时能给我的任何帮助。

以下是问题和答案。

假设主机A连接到路由器R 1,R 1连接到另一个路由器R 2,并且R 2连接到主机B.假设TCP消息包含900字节数据和20字节TCP报头传递到主机A的IP代码,以便传送到B.显示通过三个链路传输的每个数据包中IP报头的总长度,标识,DF,MF和片段偏移字段。假设链路A-R1可以支持1024字节的最大帧大小,包括14字节帧头,链路R1-R2可以支持512字节的最大帧大小,包括8字节帧头,以及链路R2-B可支持512字节的最大帧大小,包括12字节帧头。

答案:

The initial IP datagram will be fragmented into two IP datagrams at I1. No other fragmentation will occur.
Link A-R1:
Length = 940; ID = x; DF = 0; MF = 0; Offset = 0
Link R1-R2:
(1) Length = 500; ID = x; DF = 0; MF = 1; Offset = 0 
(2) Length = 460; ID = x; DF = 0; MF = 0; Offset = 60
Link R2-B:
(1) Length = 500; ID = x; DF = 0; MF = 1; Offset = 0 
(2) Length = 460; ID = x; DF = 0; MF = 0; Offset = 60

1 个答案:

答案 0 :(得分:0)

这肯定是大学的一项练习。如果你试图自己解决它而不是要求回应它会更好。

您可以在此处看到字段值:http://mars.netanya.ac.il/~unesco/cdrom/booklet/HTML/NETWORKING/node020.html

请阅读。

我会给你一个部分回应。其余的,你应该单独解决它来学习。 DF表示发件人不想分段。我想你的练习总是0。

如果下面还有另一个片段,则MF为1。因此,如果数据报在2个数据报中被分段,则第一个数据报将其置于1中,第二个数据报将其置于0中,因为没有其他片段。当目的地接收到片段1时,它将知道至少有另一个片段要等待,因为MF是1.当目的地在片段1之前接收片段2时,它将知道它是更大的片段化数据报的一部分,因为偏移量不是0 (在片段2中MF为0)。

在所有数据报中,您必须考虑TCP层(如果是TCP)的20个字节(通常)和IP层的20个字节。通常在Ethernetv2(不是GbE)中,MTU是1500个八位字节。然后,您可以在IP有效负载中发送最大1480个八位字节(IP层报头为20个八位字节),在TCP有效负载中最多发送1460个八位字节(20个八位位组,最小值,对于IP报头,20个八位位组,最小值,对于TCP报头)。

作为提示,IPv4中的任何一跳都会发生碎片。在IPv6中,只有源节点可以分段。因此,在A-R1中不需要碎片化。