我遇到了一个非常奇怪的问题,我在尝试访问网页时随机收到“与服务器的连接已重置”错误(根据 Windows 网络诊断工具的 HTTP 错误 12031) - 无论网页是否出现这种情况都会发生我正在尝试访问外部互联网,或者即使它来自在 localhost 上运行的本地 Apache 实例。它会影响我们本地网络(以太网,不是无线)上的所有计算机,所有这些计算机都运行 Windows XP。
有人向我建议,这可能与网络流量上使用的 MTU 有关。如果我进行Ping 测试以找出可以通过未分段的最大数据包,我可以使用 1492 字节的包(+28 字节用于标头?)来 ping 本地主机,并且可以使用 1462 字节的包来 ping 我们的路由器(包含 28 字节标头时为 1490 字节)。如果我尝试像 Google 一样在外部 ping 某些东西,我将无法通过大于 1430(带有标题的 1458)获得任何东西。
我尝试按照各种说明使用此 MTU 设置更新 Windows XP 注册表,更新HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{AdapterID}\MTU. 我试过没有尽头的替代值:最明显的正确值似乎是 1490,但我也试过 1462、1458、1430 等等。当我重新启动计算机以使更改生效时,它似乎工作了几分钟(很难确定,因为它总是随机而不是一致的)但它永远不会持续很长时间。
最初,当我尝试将 1430 作为值时,在正常工作几分钟后,Ping 测试的结果将减少 28 字节 - 突然间我发现我只能将 1402 字节的数据包发送到 Google。如果我将 MTU 注册表设置更新为 1402,当我重新启动并等待几分钟时,它会是 1374,然后是 1346,等等。网络上的其他计算机不受影响(仍然是 1430)并删除 MTU 设置从注册表将恢复正常(并且仍然损坏)。
我发现诊断所有这些最困难的事情是很难判断我是否在使用正确的注册表设置。因此,最简单的问题是:如何判断 Windows 尝试使用的 MTU 设置?
此外,如果有人有任何想法如何判断 MTU …
我的计算机的以太网适配器使用 1,500 字节的以太网帧。通常这意味着我的本地连接的MTU 是1500字节。
但是我的 (IPv4) 连接到 Internet 有一些开销。这意味着与 Internet 通信时我的实际 MTU 是1492. 这导致了错误配置的接口 MTU 存在的所有常规问题。
显然,我可以使用netsh,并使用自定义 MTU 覆盖我的网络接口。但我不想那样做。我的路由器的 DHCP 服务器已经知道 MTU 是1492. 如果询问,DHCP 服务器将使用 DHCP 选项 26 进行响应:
1492所以这让我发疯了为什么 DHCP 服务器没有告诉我的 Windows 7 机器 MTU 设置作为它在DHCP 报价中返回的项目之一:
192.168.1.12 hours255.255.255.0example.local最近(我觉得更新到 10.6.4 后)Mac OS X 一直坚持把我的 MTU 改成 1500,即使我的 Mac 直接连接的路由器的 MTU 是 1472。我注意到手动设置 MTU 为 1472大大提高了性能,大概是因为它几乎消除了数据包碎片,但 Mac OS X 会定期将 MTU 更改回 1500。
有谁知道为什么或如何阻止它?
假设我有两台机器和一台交换机。
M1--开关--M2。
设置是:
问题:
当M1尝试向M2发送一个100字节的数据包时,应该没有问题吧?
当 M2 尝试向 M1 发送 1000 字节的数据包时,有什么问题吗?
M2 可以发送一个 1000 字节的数据包给 Switch,但是当 Switch 尝试将数据包发送给 M1 时,它需要将数据包分成 10 个小数据包。那正确吗?
更现实一点:M1、Switch 和 M2 都运行在 10G 网络上,我们使用 IPv4。
设置是:
M1 将 MTU 设置为 1500
交换机的 MTU 设置为 9000
M2 将 MTU 设置为 9000
它有助于回答这个问题吗?
我需要更改MTU新安装的 ubuntu 18.04 中的大小。这可以通过 来完成ifconfig。但我无法安装ifconfig。每当我运行命令时,sudo apt install net-tools我都会收到以下错误。
Err:1 http://archive.ubuntu.com/ubuntu bionic/main amd64 net-tools amd64 1.60+git20161116.90da8a0-1ubuntu1
Could not resolve 'archive.ubuntu.com'
E: Failed to fetch http://archive.ubuntu.com/ubuntu/pool/main/n/net-tools/net-tools_1.60+git20161116.90da8a0-1ubuntu1_amd64.deb Could not resolve 'archive.ubuntu.com'
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
Run Code Online (Sandbox Code Playgroud)
然后我尝试sudo apt-get update并得到以下结果
asif@asif-HP:~$ sudo apt-get update
Hit:1 http://dl.google.com/linux/chrome/deb stable InRelease
Err:2 http://archive.ubuntu.com/ubuntu bionic InRelease
Could not resolve 'archive.ubuntu.com'
Err:3 http://archive.ubuntu.com/ubuntu bionic-updates InRelease
Could not resolve 'archive.ubuntu.com'
Err:4 …Run Code Online (Sandbox Code Playgroud) 我想知道为什么 TCP 标头中的 MSS 值为 1460 字节。我知道以太网的 MTU 是 1500 字节,IP 报头是 20 字节,TCP 报头是 20 字节......但是,为什么是 1460 字节?不能低于或高于那个吗?
我只是想了解一下 MTU、MRU 和 MSS。
我的兴趣最初来自这篇文章的答案: PING 的安全风险?:
某些 ICMP 数据包类型不得被阻止,特别是“目标不可达”ICMP 消息,因为阻止它会破坏路径 MTU 发现,症状是 DSL 用户(在将 MTU 限制为 1492 字节的 PPPoE 层后面)无法访问网站阻止这些数据包(除非它们使用其 ISP 提供的 Web 代理)。
从那以后,我发现这篇文章支持了这一点:
一些运行网络服务器的人(特别是一些银行)设置了他们的网络,以便他们阻止在数据包太大时发回的错误消息。如果他们不尝试发送 DF 位设置的 1,500 字节数据包,这也不会太糟糕。结果是数据包在到达低于 1,500 MTU 的链路时被丢弃并且必须重试。最终它可能会尝试更小的数据包大小,但这可能会在 20 秒之后。这是运行 Web 服务器的人的愚蠢网络设置。
我的问题是:这实际上是一个真正的问题吗?据我所知,我从未在使用 PPPoE 的 BT Infinity 连接上看到这种情况。据推测,这具有与上述相同的限制(我的路由器 MTU 设置为 1492)。