我一直在对位于本地网络中的两台 CentOS 计算机进行一些测试,但我不明白结果。我们有一个简单的应用程序,其中客户端 (xyz204) 将文本字符串发送到服务器 (xyz205)。一些捕获的数据包的有效负载大于 MTU:
x.y.z.205:~/ tshark -i br0 "host x.y.z.204"
Capturing on 'br0'
[...]
10 0.000357812 x.y.z.204 ? x.y.z.205 TCP 7306 40866 ? 1234 [ACK] Seq=6793 Ack=1 Win=29312 Len=7240 TSval=1462059169 TSecr=875693118
[...]
具体来说,第 10 帧为 7306 字节(7240 字节的 TCP 数据 + 32 字节的 TCP 头 + 20 字节的 IP 头 + 14 字节的以太网头)。
但是,网络接口似乎不支持大于 1500 字节的 MTU。这由接口配置指示:
x.y.z.204:~/ ip link list
[...]
5: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
link/ether 00:xx:18:yy:6c:zz brd ff:ff:ff:ff:ff:ff
[...]
或者通过 ICMP 测试:
x.y.z.204:~/ ping -M do -s 7240 x.y.z.205
PING x.y.z.205 (x.y.z.205) 7240(7268) bytes of data.
ping: local error: Message too long, mtu=1500
^C
如果接口配置或 ping 测试表明 MTU 为 1500 字节,我们怎么可能捕获 7240 字节的数据包?