0

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

下面是问题和答案。

假设主机 A 连接到路由器 R 1,R 1 连接到另一个路由器 R 2,并且 R 2 连接到主机 B。假设包含 900 字节数据和 20 字节 TCP 头的 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
4

1 回答 1

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 个八位字节(IP 标头最小为 20 个八位字节,TCP 标头最小为 20 个八位字节)。

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

于 2015-11-11T14:21:19.203 回答