MSS和MTU有什么区别?


33

我对最大段大小和最大传输单位之间的差异感到困惑。

有人可以解释第二层和第三层吗?

如果我在有效负载中有一个800字节的数据包。说MSS为800字节(如果我将其设置为该字节)而MTU为840会正确吗?TCP 20和IP 20字节。如果我使用PPPoE,会有所不同吗?


虽然严格来讲这不是重复的,但此问题的答案也可能回答您的问题。
YLearn

Answers:


19

此外。MSS从价值导出值MTU,如果你有一个800字节的数据包,它也可以说,这样的数据包原本是2260个字节长,他闯入2包1460个+ 800个字节,如果我们使用MTU = 1500。
您如果您的MSS = 800,则MTU至少应为840。由于PPPoE开销为8字节,因此MTU = 1492字节,MSS = 1492-40 = 1452字节。


28

MTU是给定链接的最大IP数据包大小。大于MTU的数据包在找到较低MTU的位置被分段,并在链的更下方进行重组。

如果不需要分段,则必须在每个跃点上检查MTU或为此使用辅助协议(Path MTU Discovery)。

需要注意的是IPv6的确实不是由路由器支持数据包碎片,因此PMTUD与ICMPv6的是强制性的,如果你不想失去,因为小MTU的数据包的地方。端点可以分段,但不能分段,而且,IPv6的MINIMUM MTU更高。

MSS是最大TCP段大小。与MTU不同,超出MSS的数据包不会被分段,它们只会被丢弃。MSS通常是在TCP三向握手中决定的,但是某些设置可能会产生路径,其中所决定的MSS仍然太大,从而导致数据包丢失。MSS不是针对每个数据包协商的数据包,而是针对完整的TCP会话,也不考虑TCP / IP标头

使用PPPoE时,所有开销意味着您通常需要减少MSS,通常是在找到阻塞点的路由器上指定它,然后使用较高的正确较低值替换通过三向握手的MSS。PPPoE只是在所有内容(IP + TCP)之上添加了8个字节(6个字节的PPPoE + 2个字节的PPP),并且旨在通过以太网以1500字节的MTU运行,因此通常配置1492 MSS使其通过。

您的IP堆栈将截取要发送到MSS的数据,将其放入TCP段中,然后将其放入一个或多个IP数据包中(具体取决于它是否大于本地MTU设置),然后再发送。如果中间路由器的MTU较低,则可以将其进一步削减,但它们只会影响IP数据包本身,而不会影响TCP段/报头。


4
说明:IPv6不支持路由器中的分段,但是终端站可能会分段IPv6数据包
Mike Pennington 2014年

1
编辑我的回答更具体
雷米勒图尔勒

0

MTU是给定链路的最大IP数据包大小。MSS是最大TCP段大小。

MTU用于分段,即将大于MTU的数据包分段。但是,对于MSS,将丢弃大于MSS的数据包。

MSS是在TCP握手期间基本在SYN中指定的,建立连接后无法更改其值。

MSS = MTU-40(IP标头(20字节)+ TCP标头(20字节))


我认为TCP标头不一定是20个字节,这仅仅是最小长度?
Sajuuk

可能会有其他选项标头
aneesh joshi
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.