網路技術

當前位置 /首頁/計算機/網路技術/列表

如何檢測和設定路由器MTU值

意思是網路上傳送的最大資料包。MTU的單位是位元組。大部分網路裝置的MTU都是1500。如果本機的MTU比閘道器的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: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

結果出現了迴應了!這表示這一個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_MACHINESYSTEMCurrentControlSetServicesTcpipParametersInterfaces

(3)、Interfaces下有多個子項,每個子項對應一個網絡卡。請按如下方法選擇網絡卡:

(4)、確定本機用來連線Internet的網絡卡或撥號連線的IP,如;

(5)、用滑鼠點選Interfaces上的子項,檢視鍵值列表中的IPAddress項;

(6)、如果IPAddress的鍵值與(4)中的IP相同,即,則該子項就是要找的網絡卡。

(7)、進入該子項,在右邊的窗口裡按滑鼠右鍵,選擇“新建”->“雙位元組值”,輸入名稱“MTU”,按回車。再用滑鼠雙擊“MTU”,彈出修改視窗:如圖3:填入MTU的值。填寫前請先把基數設為十進位制。設定好後,需要重啟機器才能生效。

實踐、重啟、測試,最後得出最佳的網路狀態,探索無極限,努力,終會有好結果。

TAG標籤:路由器 檢測 設定 mtu #