对应这个话题:
最大段大小(不包括 TCP 或 IP 标头)通常在层之间协商为 MTU 的大小减去标头大小。对于以太网 MTU 通常配置为 1500 字节。TCP 报头是 160 位,或 20 字节。IPv4 报头的固定部分是 160 位,也就是 20 字节。... . 因此:
- 用于基于 TCP/IPv4 的 HTTP
开销 = TCP + IP = 40 字节
有效载荷 = 1500 - 40 = 1460 字节
开销 % = 2% (40 * 100 / 1460)
这是在 TCP 模式下使用默认 Debian 发行版的 100 Mbit 和 1Gbit iperf 结果:
[ 5] local 10.0.51.1 port 5001 connected with 10.0.51.20 port 45009
[ 5] 0.0-10.0 sec 112 MBytes 94.1 Mbits/sec
[ 4] local 10.0.51.1 port 5001 connected with 10.0.51.94 port 35065
[ 4] 0.0-10.0 sec 1.10 GBytes 941 Mbits/sec
通过将 MTU 提高到 9000,我可以将其降低到近 2% 的开销:
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-10.0 sec 1.14 GBytes 982 Mbits/sec
但它不应该更少吗?
overhead = TCP + IP = 40 bytes
payload = 9000 - 40 = 8960 bytes
overhead % = 0.4% (40 * 100 / 8960)
为什么实际的“带宽损失”明显大于理论值?如果公式缺少有价值的东西?