今天早些时候我修复了一个问题,但我感兴趣的是了解它为什么有效。我们设置了一个新的 Hyper-V 虚拟机,结果发现 HTTP 流量不起作用。HTTPS、ping,其他一切都运行正常。
经过几个月的摸索,我决定尝试一下。在 Hyper-V 主机服务器上,物理 NIC 卡的“最大以太网帧大小”高级设置设置为 1500。将此设置设置为 1514 后,问题得到解决。或者,将其设置为 1512 也无法解决问题;1514 是一个神奇的数字。
我最好的猜测是,当此设置设为 1500 时,它允许传入 ping,因为数据有效负载比 HTTP 流量小得多。至于 HTTPS 流量,我读到过一种称为“路径 MTU 发现”的东西,我猜想这就是 HTTPs 流量虽然速度较慢但可以顺利通过的原因。
正在看这个帖子,人们同意 1518 是最大总帧大小。为什么我不需要将其更改为 1518 而不是 1514 字节?如果这是以太网的最大大小,为什么默认帧大小是 1500有效载荷而不是最大尺寸。
答案1
1518 是“老式” 802.3 以太网的最大帧大小。如果帧校验和序列被卸载到 NIC,则 1514 是最大帧大小(因为 NIC 将添加 4 字节帧校验和)。
1500 是以太网的 IP 最大传输单元 (MTU),因为 1518 字节以太网帧中有 1500 字节的有效负载。将 NIC 的最大帧大小设置为 1500 字节将导致 IP MTU 为 1482 字节。
我不明白为什么有人会将 NIC 的最大帧大小更改为 1500 字节。我怀疑有人将最大帧大小与 MTU 混淆了。没有人会意思是按照您描述的方式进行设置。