我正在浏览思科的文档- 用GRE和IPSEC IP碎片、MTU、MSS和PMTUD问题
我对示例3有一个混淆。下面是截图。

据我所知,总页眉大小为44 (新IP报头(20) + GRE报头(4) +原始IP报头(20))。如示例3所述,路径之间的路由器有1400个字节的MTU。因此,这将留给TCP有效负载1400-44= 1356字节。
但是,该示例显示"1352字节“,即在1400个字节的路径上比最小MTU少4个字节。剩下的104个字节的数据已被传送到下一个片段。
为什么第一个数据包不是完整的1400个字节,而是1396个字节(1352 + 44),并将100个字节的TCP有效负载添加到下一个片段中?
谢谢。
发布于 2016-11-26 16:49:47
您忘记了一个事实,即数据必须在八位组(64位)边界上被分割。如果您取1400-octetMTU并减去44个八进制标头,那么数据只剩下1356个八进制,但是1356年不能被8:1356 / 8 = 169.5整除,而是被169 x 8 = 1352整除。
请参见RFC 791,因特网协议:
为了分割长因特网数据报,因特网协议模块(例如,在网关中)创建两个新的因特网数据报,并将因特网头字段的内容从长数据报复制到两个新的互联网报头中。长数据报的数据在8位组(64位)边界上被分成两部分(第二部分可能不是8位字节的整数倍数,但第一部分必须是)。在第一部分NFB中调用8个八进制块的数量(对于片段块的数量)。数据的第一部分放置在第一新的因特网数据报中,总长度字段被设置为第一数据报的长度。多片段标志设置为1。数据的第二部分放置在第二新的因特网数据报中,总长度字段被设置为第二数据报的长度。多片段标志与长数据报具有相同的值。第二个新的因特网数据报的片段偏移字段设置为该字段在长数据报+ NFB中的值。
https://networkengineering.stackexchange.com/questions/36804
复制相似问题