熱愛學習,享受生活
“MTU=最大傳輸單元 單位:位元組”
我們在使用網際網路時進行的各種網路操作,都是通過一個又一個“資料包”傳輸來實現的。而MTU指定了網路中可傳輸資料包的最大尺寸,在我們常用的乙太網中,MTU是1500位元組。超過此大小的資料包就會將多餘的部分拆分再單獨傳輸。
為什麼MTU影響網路效能?讓我們看看這個情況,在Windows系統中,預設MTU值也是1500位元組,但是“不同的接入方式、不同地區的網路運營商、不同的路由器”有著不同的MTU設定。
例如:ADSL接入時MTU為1492位元組,假設A需要給B傳輸3000位元組資料,如果整個傳輸過程中各個環節的MTU都是1500,那麼2個數據包就可以傳輸完成。可是偏偏這時ADSL接入方式的MTU是1492位元組,資料包就因為這個MTU差異額外拆分為3個(為了便於理解,暫時不將“資料包報頭”納入考慮範圍)
顯然這額外增加了需要傳輸的資料包數量,而且拆包組包的過程也浪費了時間。如果從本地到網路採用一致的MTU就可以避免額外拆包。
對下載速度的影響會有多大?就拿伊文家裡的線路質量不太好的電信4M頻寬為例,將作業系統的MTU值改為1492,再將路由器的MTU值從1460改為1492後,下載速度從原本的435KB/s提升到了450KB/s,提升了15KB/s。電信的頻寬檢測工具的檢測結果也從4.09M提升到了4.19M。
我該如何合理設定MTU呢?更快的下載速度,對於迅雷的使用者來說,顯然很有意義。可是MTU設定不能一個值天下通用,所以我們講究合理設定MTU。
那麼什麼情況下的MTU值才是合理的呢?
我們先看看什麼是不合理的:
1、本地MTU值大於網路MTU值時,本地傳輸的資料包過大導致網路會拆包後傳輸,不但產生額外的資料包,而且消耗了“拆包、組包”的時間。
2、本地MTU值小於網路MTU值時,本地傳輸的資料包可以直接傳輸,但是未能完全利用網路給予的資料包傳輸尺寸的上限值,傳輸能力未完全發揮。
這樣我們就知道,所謂合理的設定MTU值,就是讓本地的MTU值與網路的MTU值一致,既能完整發揮傳輸效能,又不讓資料包拆分。
接下來最重要的就是要找出對於你的網路環境來說MTU多少才是合理的。
方法如下:
1、按Win+R組合鍵,調出“執行”選單,輸入“cmd”然後回車
2、在出現的“命令提示符”視窗中輸入“ping -l 1472 -f www.baidu.com”然後回車
含義:
ping:發起一個探測請求;
-l(L的小寫):限制探測包大小;
1472:包大小為1472位元組;
-f:禁止路由器拆分資料包
www.baidu.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”