我正在编写一个将部署在第三方网络中的应用程序。它将接收 IP 数据包,我想知道它们实际上的最大大小是多少。我不是在问理论上的最大大小是多少,而是在问实践中通常看到的最大大小是多少。我听说可能使用 1576 的 MTU,但无法批准这一点?
问候
答案1
我在以太网上见过的最大的数据是 9000 多个标头,但除非您想通过在 Security Focus 上发帖而出名,否则我建议您不要使用静态缓冲区,而是确定需要分配多少空间并使用它。
答案2
如果您希望它通过 DSL 传输,它必须应对 1480 的 MTU。这在当今的分支机构中相当常见。
答案3
如果一家公司使用 IPsec/GRE 加密(例如,部署到远程办公室),MTU 可能会大大小于 1518 字节。我看到在 IPsec 隧道上配置的值是 1400 字节 MTU,1360 字节 TCP卫星发射系统。
或者,在数据中心,巨型帧允许 MTU 为 9000 字节或更大。
答案4
很难调查互联网上实际使用的 MTU,但可以观察 TCP 最大段大小 (MSS),它可能位于 TCP SYN 和 SYN/ACK 数据包的选项部分。它通常是接口 MTU 的一个很好的指标(尽管使用MSS 夹紧可能会使问题变得有些复杂)- 对于 IPv4,只需将 40(标头)添加到 MSS 即可获得 MTU,对于 IPv6,则为更大的标头添加 60。最常用的 MTU 是 1500,用于以太网 - 如下所示。一些最近的APNIC 所做的分析- 从文章中的表 1 中 - 提供了最常见的 MSS 值列表(来自总共 436,095,954 个唯一 TCP 会话 - 包括 IPv4 和 IPv6 流量):
MSS Count Proportion
1460 77,911,532 17.9%
1400 70,233,027 16.1%
1370 47,013,384 10.8%
1452 38,914,006 8.9%
1440 37,209,335 8.5%
1360 29,441,242 6.8%
1412 22,738,989 5.2%
1300 18,363,089 4.2%
1380 16,600,330 3.8%