我正在解决一个在PPPoE服务上导致碎片的MTU/MSS问题。下面是与我的问题相关的来自不同服务(工作正常)的TCP三次握手的数据包转储。
我理解PMTUD的工作方式是这样的:通过将IP报头中的Don't Fragment (DF)位设置为1,需要对数据包进行分片的通往目的地的路由器将ICMP发送回主机,以相应地调整MSS大小。然而,我的理解是,这只会在分段发生时发生(数据包大于路径MTU)。这表明PMTUD在数据交换阶段工作,而不是在协商TCP三次握手时工作(因为这些是小数据包,在本例中为78字节)。
在上面的数据包捕获中,SYN数据包发送一个MSS=1460 (由于PPPoE的8字节开销,这个值太大了),来自服务器的SYN/ACK响应发送回正确的MSS=1452。在此交换过程中,TCP使用什么机制来确定MSS?
发布于 2016-10-18 04:56:26
也许,在这个三次握手过程中,服务器还没有计算MSS。例如,如果系统管理员观察到大量碎片,他可以将整个系统的MSS设置为1452 (使用命令ip tcp adjust-mss 1452
),因此当您进行三次握手时,服务器只通告其默认MSS。它适用于你的情况吗?
https://stackoverflow.com/questions/37638325
复制相似问题