Ⅰ 測試一個網路MTU值的操作步驟
順便說一句,個人電腦修改MTU無任何意義! 下面是方法。
1、本地MTU值大於網路MTU值時,本地傳輸的數據包過大導致網路會拆包後傳輸,不但產生額外的數據包,而且消耗了「拆包、組包」的時間。
2、本地MTU值小於網路MTU值時,本地傳輸的數據包可以直接傳輸,但是未能完全利用網路給予的數據包傳輸尺寸的上限值,傳輸能力未完全發揮。
這樣我們就知道,所謂合理的設置MTU值,就是讓本地的MTU值與網路的MTU值一致,既能完整發揮傳輸性能,又不讓數據包拆分。
接下來最重要的就是要找出對於你的網路環境來說MTU多少才是合理的。
方法如下:
1、按Win+R組合鍵,調出「運行」菜單,輸入「cmd」然後回車
2、在出現的「命令提示符」窗口中輸入「ping -l 1472 -f www..com」然後回車
含義:
ping:發起一個探測請求;
-l(L的小寫):限制探測包大小;
1472:包大小為1472位元組;
-f:禁止路由器拆分數據包
www..com:設網路為探測目標
(你問我為什麼不用Google做目標?考慮到Google時不時被牆,還是算了吧。。)
3、這時有2種情況:
(1)、如果收到了回復,那麼說明你的網路允許最大MTU值就是1500位元組,與系統默認值相同,只需要將路由器的MTU值也設置為1500即可;
(2)、如果出現需要拆分數據包但是設置 DF。或是Packer needs to be fragmented but DF set.的提示,那就說明數據包大小超過了網路限定的MTU大小。需要減小探測包大小再次嘗試。(為了截效果圖,我將探測包改為1473了)
4、按「上箭頭」恢復剛才輸入的命令,然後以5為跨度減小包大小為1467位元組,再次回車探測。
5、這時同樣也有兩種可能:
(1)、如果有返回,說明數據包小於MTU限制,就將包大小+3再次探測,如果+3之後沒有返回,那就以1為跨度降低數據包大小進行探測。
(2)、如果還是沒有返回,就繼續以5為跨度減小包大小,直至有返回後進行5(1)中的操作。
6、直至你發現數據包-1後,有了返回,就說明你探測到了MTU允許的准確數據包大小。(例如從1465降低到1464就有了返回,那麼允許的數據包大小就是1464)
7、不過上面得到的值還不能設置為操作系統或路由器的MTU,你找到的數據包大小需要加上28位元組的「數據包報頭」,才是完整的數據包尺寸。
(例如:探測到的數據包大小是1464,那麼加上28位元組,最終MTU=1492位元組)
8、最後,只需要將路由器和操作系統中的MTU值設置為你得出的結果即可。
路由器設置方法見路由器說明書!建議使用「Windows優化大師、超級兔子魔法設置、魯大師」等軟體修改操作系統的MTU。
以下是較復雜的方法:
(1)、XP操作系統設置方法:
1、 按Win+R組合鍵,調出「運行」菜單,輸入regedit,然後回車;
2、 選擇「HKEY_Local_Machine>SYSTEM>CurrentControlSet>Services>Tcpip>Parameters>interface」;
3、在 interface 中下可能有很多項,需要逐個觀察鍵值,會有一個項與你的網卡IP一致,選中該項;
4、然後在該項上點擊右鍵,選擇「編輯>新建>DWORD值」,然後在右側將其命名為「MTU」;
5、右鍵點擊MTU,選擇「修改」,在彈出的窗口中選擇「十進制」,填入你得出的合理MTU值即可。
(2)、Vista、Win7操作系統設置方法:
1、進入系統盤:\Windows\System32\找到cmd.exe,右鍵「以管理員身份運行」;
2、在出現的「命令提示符」窗口中輸入「netsh interface ipv4 show subinterfaces」並回車來查看當前的MTU值
3、接下來輸入「netsh interface ipv4 set subinterface "需修改的連接名" mtu=你得出的合理值 store=persistent」並回車即可
例如:「netsh interface ipv4 set subinterface "本地連接" mtu=1492 store=persistent」