為什麼我的 HP C7200 印表機的 MTU 可能為 1498?

為什麼我的 HP C7200 印表機的 MTU 可能為 1498?

在我的無線網路上,我可以在 Ubuntu linux 12.04 上使用 1500 的 MTU 追蹤到 Mac 的路徑。

(出於某種原因,Mac MTU 設定為 1470,但回覆幀沒有那麼大,所以這並不重要)

當我追蹤 HP 印表機的路徑時,它永遠不會回應任何 1514 位元組長的幀:MTU(1500) + 乙太網路(14) (SRC(6) + DST(6) + type(2)) = 1514

但如果我將 MTU 設定為 1498,我的印表機就會回應。 1499 的 MTU 也會失敗。

注意:在我的 Mac 上將 MTU 設為 1500 也會導致列印失敗,因此我懷疑這與電腦或路由器有關。

更新:如果我追蹤 google.com 的路徑,我可以看到我的路由器(在其 WAN 連結上)回覆 ICMP 封包,說明需要分段,並且後續幀 MTU 需要為 1474。

Tracepath 更改幀大小以匹配此內容並繼續。這意味著它現在發送 1488 位元組長的幀。

對於我的印表機,它不會發回任何 ICMP 封包,表明它無法處理 1500 位元組的有效負載。就好像它是大於 1512 位元組的黑洞幀。

更新:較新的 Mac 使用 1500,列印效果很好。當我查看發生的情況時,我的 Mac 會先嘗試 1500,如果失敗,則會將 MTU 降至 1470(根據記憶)——Apple 的一個有趣的解決方法。

答案1

實際上MTU是包括的28位元組頭。根據您的描述,您的印表機似乎配置為 1498 的 MTU,這是合理的。


如果您將電腦的 MTU 設定為 1500,那麼它將發送總大小最多為 1500 位元組的封包(而不是您所描述的 1514 位元組)。

另一種確定路徑或特定主機的 MTU 的方法是使用 ping 指令:

-f sets the Do Not Fragment bit 
-l configures the data size (remember to add 28 bytes for the header)

因此,要測試 host.example.com 的 MTU 為 1500,您將使用

ping -f -l 1472 主機.example.com。

相關內容