我确实理解数据包分段的目的。从答案来看,我唯一不理解的是总长度和片段偏移量。如果你能给我解决这个问题的任何帮助,我将不胜感激。
下面是问题和答案。
假设主机A连接到路由器R1,R1连接到另一个路由器R2,R2连接到主机B。假设一个包含900字节数据和20字节TCP报头的TCP消息被传递到主机A处的IP代码,以便传送到B。假设链路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发布于 2015-11-11 22:21:19
这肯定是大学里的一个练习。
请读一读。
我会给你一个部分的回答。剩下的,你应该自己解决它来学习。DF表示发送者不想分片。我想在您的练习中它将始终为0。
因此,如果一个数据报被分成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个八位字节( IP报头最小为20个八位字节,TCP报头最小为20个八位字节)。
作为提示,在IPv4中的任何一跳都会发生碎片。在IPv6中,只有源节点可以分段。因此,在A-R1中不需要分段。
https://stackoverflow.com/questions/33645661
复制相似问题