前面说的那个网络故障(网页链接),问题解决了,但疑问并没有消失。
我通过抓包发现,A 以有线方式通过 B 上网,访问 IPv4 的时候,A 会发出大于 1500 的包,然后就是一堆 TCP Retransmission。显然包没发出去。这就是有些网站能访问,有些网站不能访问的原因。能访问的那些网站是解析为 IPv6 的。
但是,我打开网卡的高级设置,看到 Jumbo Frame 选项是 Disable。理论上,这里 Disable 了网卡就不应该发出超大的包。但我也只好死马当活马医,把 Jumbo Frame 设置成 9KB MTU——居然就好了。
按道理说,Jumbo Frame 设置成 9KB MTU 才会发出超大的包,但现在居然是设置成 9KB MTU 才不会发出超大的包。而且进一步测试发现,只有当 Jumbo Frame 设置为 9KB MTU 和 8KB MTU 时网络访问才正常,设置为 7KB MTU 或更小的值都不行。
所以说问题解决了,但疑问并没有消失。
PS:在评论区网友的提示下,我发现禁用 Large Send Offload 也能解决问题。但这仍然无法解释为什么把 Jumbo Frame 设置成 9KB MTU 可以解决问题……
我通过抓包发现,A 以有线方式通过 B 上网,访问 IPv4 的时候,A 会发出大于 1500 的包,然后就是一堆 TCP Retransmission。显然包没发出去。这就是有些网站能访问,有些网站不能访问的原因。能访问的那些网站是解析为 IPv6 的。
但是,我打开网卡的高级设置,看到 Jumbo Frame 选项是 Disable。理论上,这里 Disable 了网卡就不应该发出超大的包。但我也只好死马当活马医,把 Jumbo Frame 设置成 9KB MTU——居然就好了。
按道理说,Jumbo Frame 设置成 9KB MTU 才会发出超大的包,但现在居然是设置成 9KB MTU 才不会发出超大的包。而且进一步测试发现,只有当 Jumbo Frame 设置为 9KB MTU 和 8KB MTU 时网络访问才正常,设置为 7KB MTU 或更小的值都不行。
所以说问题解决了,但疑问并没有消失。
PS:在评论区网友的提示下,我发现禁用 Large Send Offload 也能解决问题。但这仍然无法解释为什么把 Jumbo Frame 设置成 9KB MTU 可以解决问题……