意思是網絡上傳送的最大數據包。MTU的單位是字節。大部分網絡設備的MTU都是1500。如果本機的MTU比網關的MTU大,大的數據包就會被拆開來傳送,這樣會產生很多數據包碎片,增加丟包率,降低網絡速度。把本機的MTU設成比網關的MTU小或相同,就可以減少丟包。
如何檢測網關的MTU?
最大傳輸單元MTU(Maximum Transmission Unit)是指一種通信協議的某一層上面所能通過的最大數據報大小,單位是字節。合理設置路由器和本機的MTU值,可以優化上網速度。
如果本機的MTU比網關的MTU大,大的數據包就會被拆開來傳送,這樣會產生很多數據包碎片,增加丟包率,降低網絡速度。網站訪問異常、發送帶有附件的郵件失敗這些都有可能和MTU的設置有關。
不同的網絡接入方式MTU值不相同,一些典型的MTU值:
超通道 65535
16Mb/s信息令牌環(IBM) 17914
4Mb/s令牌環(IEEE802.5) 4464
FDDI 4352
EtherNet(以太網) 1500
PPPoE(ADSL) IEEE802.3/802.2 1492
Dial-up X.25 576
點對點(低時延) 296
兩臺主機之間的通信要通過多個網絡,那么每個網絡的鏈路層就可能有不同的MTU。重要的不是兩臺主機所在網絡的MTU的值,而是兩臺通信主機路徑中的最小MTU,它被稱作路徑MTU。
TCP/IP協議涉及到四層:鏈路層,網絡層,傳輸層,應用層。
以太網(Ethernet)的數據幀在鏈路層,以太網的物理特性決定了數據幀的長度MTU(Maximum Transmission Unit)為1500;
IP包在網絡層,IP包的首部占用20字節,MTU為1500-20=1480;
TCP或UDP包在傳輸層,UDP包的首部占用8字節,MTU為1480-8=1472;
TCP或UDP中的數據(Data)在應用層,Data最大長度為1472。
數據幀{IP包{TCP或UDP包{Data}}}
MTU對UDP編程很重要,當UDP包中的數據多于MTU(1472)時,發送方的IP層需要分片fragmentation進行傳輸,接收方IP層則需要進行數據包重組,由于UDP是不可靠的傳輸協議,如果分片丟失導致重組失敗,將導致UDP數據包被丟棄。
在普通的局域網環境下,UDP的數據最大為1472字節最好(避免分片重組)。但在網絡編程中,Internet中的路由器可能有設置成不同的值(小于默認值),Internet上的標準MTU值為576,所以Internet的UDP編程時數據長度最好在576-20-8=548字節以內。
在本機打開dos窗口,執行:
ping-f-l1452192.168.1.1
其中192.168.1.1是網關IP地址,1452是數據包的長度。請注意,上面的參數是“-l”(小寫的L),而不是“-1”。如果能ping通,表示數據包不需要拆包,可以通過網關發送出去。如果出現:
PacketneedstobefragmentedbutDFset.
PacketneedstobefragmentedbutDFset.
PacketneedstobefragmentedbutDFset.
PacketneedstobefragmentedbutDFset.
表示數據包需要拆開來發送。此時,減少數據包長度,再執行上面的ping命令。從1400到1472之間多試幾次,就能找到合適的數據包長度了。把數據包長度加上數據包頭28字節,就得到MTU的值。如果檢測到網關的MTU值是1500,不需要修改。如果網關有防火墻ping不通,可以試試直接把MTU設為1400。
C:/DocumentsandSettings/Administrator>ping-f-l1452192.168.1.1
Pinging192.168.1.1with1452bytesofdata:
Replyfrom192.168.1.1:bytes=1452time=5msTTL=64
Replyfrom192.168.1.1:bytes=1452time=5msTTL=64
Replyfrom192.168.1.1:bytes=1452time=5msTTL=64
Replyfrom192.168.1.1:bytes=1452time=1msTTL=64
結果出現了回應了!這表示這一個MTU值是可行的!不過,強烈建議找出可行的最大MTU值!這樣一來,在設定的時候,才可以達到最佳的網速!
找出MTU值:利用上面這個方法找到的數值還不是MTU喔!由于一些封包上面的問題,上面這個值再加上28才是我們所需要的MTU值!所以,在上面的例子中,我們所需要的MTU值是1464+28=1492!
附注:我設置為1452+28=1480后,還是會出現有些網站打不開、遠程桌面無法通過域名登陸的問題(通過ip可以正常遠程桌面登陸),而把MTU設置為1452后,反而這些問題都迎刃而解了,并且,此時,登陸zlbog后臺正常、使用域名登陸遠程桌面正常。
一般來講,設計好本機的MTU值,可以解決部分網站打不開的情況,但是如果你的共享主機或路由器的MTU設置有問題,有時問題仍然存或,或者出現網速過慢的情況。合理的設置路由器與本機的MTU值,就可以完全解決上述問題,使上網速度達到最大化。
如何修改本機的MTU?修改方法如下:
(1)、運行regedit
(2)、瀏覽到:HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters/Interfaces
(3)、Interfaces下有多個子項,每個子項對應一個網卡。請按如下方法選擇網卡:
(4)、確定本機用來連接Internet的網卡或撥號連接的IP,如192.168.0.19;
(5)、用鼠標點擊Interfaces上的子項,查看鍵值列表中的IPAddress項;
(6)、如果IPAddress的鍵值與(4)中的IP相同,即192.168.0.19,則該子項就是要找的網卡。
(7)、進入該子項,在右邊的窗口里按鼠標右鍵,選擇“新建”->“雙字節值”,輸入名稱“MTU”,按回車。再用鼠標雙擊“MTU”,彈出修改窗口:如圖3:填入MTU的值。填寫前請先把基數設為十進制。設置好后,需要重啟機器才能生效。
實踐、重啟、測試,最后得出最佳的網絡狀態,探索無極限,努力,終會有好結果。
新聞熱點
疑難解答