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