MTU 与 MSS 计算器

算出一个 MTU 能留下多少 MSS,并计入 IPv6、隧道与 TCP 选项。

MTU 与 MSS 计算器完全在你的浏览器中运行:它只做算术,不发送任何数据包,输入内容也不会离开本机。

打开 CIDR 子网计算器

关于 MTU 与 MSS 计算器

MSS 是链路 MTU 扣掉各层头部之后剩下的部分:IPv4 占 20 字节、IPv6 占 40 字节,TCP 再占 20 字节,启用时间戳还要再加 12 字节,此外还有隧道包在外面的部分。算错时很少干净利落地失败:需要分片的包在相应 ICMP 被过滤时会直接消失,连接不是建立不起来,而是在传输途中卡住。这个计算器处理常见封装的算术,并把一次 ping 测试变成实测的路径 MTU。

功能特性

如何使用 MTU 与 MSS 计算器

  1. 填入链路的 MTU:以太网为 1500,PPPoE 之后为 1492
  2. 选择 IP 版本与流量经过的隧道
  3. 读取需要钳制的 MSS 与头部明细
  4. 不确定时用 ping 模式实测路径 MTU

示例

输入

MTU 1500 · IPv4 · WireGuard tunnel (60 bytes)

输出

Effective MTU 1440 · MSS 1400
Clamp MSS to 1400 on the tunnel interface

每一层封装都直接从有效载荷中扣除,这正是隧道需要 MSS 钳制的原因。

常见错误与故障排除

常见问题

如何由 MTU 计算 MSS?
减去 IP 头与 TCP 头:1500 − 20 − 20 得到以太网 IPv4 上常见的 1460。隧道开销要在此之前扣除。
为什么我的 MTU 是 1492 而不是 1500?
多数 DSL 和不少光纤使用的 PPPoE 会增加 6 字节 PPPoE 头与 2 字节 PPP 头,这些都从以太网载荷中扣除。
WireGuard 隧道该钳制到多少?
WireGuard 在 IPv4 上约占 60 字节,IPv6 上约 80 字节,因此 1500 的链路大致剩下 1400 与 1360。
如何用 ping 找出路径 MTU?
禁止分片并逐步减小包体:Linux 用 ping -M do -s 1472,macOS 用 ping -D -s 1472,Windows 用 ping -f -l 1472。在能通过的最大值上加 28 字节。

相关工具

全部 ArrayKit 工具