我今天早些时候解决了一个问题,但我有兴趣了解它为什么有效。我们设置了一个新的 Hyper-V 虚拟机,结果发现 HTTP 流量无法正常工作。HTTPS、ping,其他一切正常。
经过几个月的摸索,我在黑暗中开了一枪。在 Hyper-V 主机服务器上,物理 NIC 卡的“最大以太网帧大小”高级设置设置为 1500。将此设置设置为 1514 后,问题得到解决。或者,将其设置为 1512 也没有解决问题;1514 是神奇的数字。
我最好的猜测是,当此设置设置为 1500 时,它允许传入 ping,因为数据负载比 HTTP 流量小得多。至于 HTTPS 流量,我读到了一些叫做“路径 MTU 发现”的东西,我将假设为什么 HTTPS 流量可以正常通过,尽管速度较慢。
查看这篇文章,人们同意 1518 是最大总帧大小。为什么我不需要将其更改为 1518 而不是 1514 字节?如果这是以太网有效负载的最大大小而不是最大大小,为什么默认帧大小为 1500 。
1518 是“老式”802.3 以太网的最大帧大小。如果帧校验和序列被卸载到 NIC,则 1514 是最大帧大小(因为 4 字节帧校验和将由 NIC 添加)。
1500 是以太网的 IP 最大传输单元 (MTU),因为 1518 字节的以太网帧中有 1500 字节的有效载荷可用。将 NIC 的最大帧大小设置为 1500 字节将导致 IP MTU 为 1482 字节。
我不清楚为什么有人会将 NIC 的最大帧大小更改为 1500 字节。我怀疑有人将最大帧大小与 MTU 混淆了。没有人会按照您描述的方式进行设置。