MTU

Windows系列在安裝時,默認的是針對以太網的設置,在TCP/IP數據包 傳送過程中就會把一些無用功做在了分包和組合上,以適應ISP。雖然ADSL使用PPPoE協議,具有局域網的特點,但是又不完全等同於局域網協議,所以 還有優化的餘地。我們可以通過軟件修改註冊表中的有關參數,使系統針對ADSL進行優化。具體的參數有MaxMTU、DefaultRcvWindow 等,這種優化能夠使ADSL適應ISP的網絡參數,最大限度地提高ADSL的工作效率。
在廣域網上,大小超出ISP要求的數據包將無法傳輸,而操作系統則會根據本機MTU值自動將大小不符合要求的數據進行分包處理再進行傳輸,所以我們可以通過向Internet上的某臺主機發送一個定長數據包,並且不允許操作系統更改其大小的方式去檢查該數據包能否被正常傳輸,如果數據包小於或等於ISPMTU值時,傳輸就能正常進行,而如果發送的數據包大於ISP使用的MTU值時,傳輸就會失敗,這樣我們就能通過不斷髮送不同大小的數據包最終得到ISP端的MTU大小,而這個數據再加上28字節的包頭信息就是我們需要的最終MTU值。
   MTU是英文Maximum Transmission Unit的縮寫,意爲"最大傳輸單位",也就是在連接的時候,所傳輸信息包最多可以有多少字節。我們必須找到不會返回fragment(碎片)信息的最大 MTU。除了ADSL PPPoE的MTU是1492外,其餘各種DSL的MTU標準設置都是1500。
MaxMTU是最大的TCP/IP傳輸單元,在TCP/IP協議中,將要傳輸的數據分成較小的組進行傳輸,每個組的大小爲576字節。Windows默認 的字節爲1500,ADSL使用的 PPPoE略小於這個數值,根據ISP的不同又有微小差異。使用默認值會降低傳輸效率。MaxMTU在註冊表中的位置是HKEY_LOCAL_ MACHINE\System\ CurrentControlSet\Services \s\NetTrans\00yy,鍵名爲MaxMTU,其中"yy"是TCP/IP的入口,隨設置的不同而不同,一般在00到30之間。使用Ping命 令自己就可以獲得ISP的MTU值。如pingwww.yahoo.com -f -l 1500將發送按照1500分組(-l 1500)的數據www.yahoo.com(最好是你的ISP的網站),並檢查是否發現分組不同產生的數據碎片(-f),如果存在就降低分組值,最終就可以找到匹配的MaxMTU。這個值也就是ADSL優化最關鍵的部分。
DefaultRcvWindow是缺省的傳輸單元緩衝區的大小。該值的大小與Modem的速度有關,最好是MSS(Maximum Segment Size,最大分組數,等於MxaMTU減去40字節的地址信息)的整數倍, DefaultRcvWindow在註冊表中的位置是HKEY_LOCAL_MACHINE\ System\CurrentControlSet\Services \VxD\MSTCP,鍵名爲DefaultRcvWindow。
DefaultTTL是TCP/IP分組的壽命,如果分組在Internet中傳輸的時間超過了分組的壽命,則該分組將被丟棄。將DefaultTTL改 得更大些,有利於信息在Internet中傳得更遠。 DefaultTTL在註冊表中的位置是 HKEY_LOCAL_MACHINE\System\ CurrentControlSet\Services\ VxD\MSTCP,鍵名爲DefaultTTL。
修改好上面的註冊表後,重新啓動計算機。
windows mtu 修改
什麼是MTU? MTU是Maximum Transmission Unit的縮寫。意思是網絡上傳送的最大數據包。MTU的單位是字節。 大部分網絡設備的MTU都是1500。如果本機的MTU比網關的MTU大,大的數據包就會被拆開來傳送,這樣會產生很多數據包碎片,增加丟包率,降低網絡 速度。把本機的MTU設成比網關的MTU小或相同,就可以減少丟包。 3、如何檢測網關的MTU? 在本機打開dos窗口,執行: ping -f -l 1472 192.168.0.1 其中192.168.0.1是網關IP地址,1472是數據包的長度。請注意,上面的參數是“-l”(小寫的L),而不是“-1”。 如果能ping通,表示數據包不需要拆包,可以通過網關發送出去。 如果出現: Packet needs to be fragmented but DF set. 表示數據包需要拆開來發送。此時,減少數據包長度,再執行上面的ping命令。從1400到1472之間多試幾次,就能找到合適的數據包長度了。把數據包 長度加上數據包頭28字節,就得到MTU的值。 如果檢測到網關的MTU值是1500,不需要修改。 如果網關有防火牆ping不通,可以試試直接把MTU設爲1400。 4、如何修改本機的MTU? 修改方法如下: (1)、運行regedit (2)、瀏覽到: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces 如圖2 (3)、Interfaces下有多個子項,每個子項對應一個網卡。請按如下方法選擇網卡: (a)確定本機用來連接Internet的網卡或撥號連接的IP,如192.168.0.19; (b)用鼠標點擊Interfaces上的子項,查看鍵值列表中的IPAddress項; (c)如果IPAddress的鍵值與(a)中的IP相同,即192.168.0.19,則該子項就是要找的網卡。 (4)、進入該子項,在右邊的窗口裏按鼠標右鍵,選擇“新建”->“雙字節值”,輸入名稱“MTU”,按回車。再用鼠標雙擊“MTU”,彈出修改窗 口: 如圖3: 填入MTU的值。填寫前請先把基數設爲十進制。 設置好後,需要重啓機器才能生效。
linux mtu修改
在通過局域網上網時,默認的MTU值通常是1500,這使得有些網站長時間打不開,如 百度;
爲使系統在起動時自動設定MTU的值而不需要每次都手動修改,可以這樣做,修改 /etc/conf.d/local.start(gentoo,各發行版可能有所不同),加入如下一行:
ifconfig eth0 mtu 768   #768可以任意設定

同樣要在系統起動時自起動的也可以加進這個腳本
用下面命令可以修改mtu值
ip link set dev eth0 mtu 1024
上面這條命令把我的eth0這塊網卡的mtu值改成了1024字節,這樣就解決了多數網站上不去的問題了。windows下可以通過編輯註冊表來改變mtu值。
linux確實很方便,修改mtu值就是一例。windows下編輯完註冊表還要重新啓動才能生效。linux下使用這樣一條命令問題就解決了^_^
學校一個電子教室通過ADSL寬 帶“貓”上網,系統爲RedHat 9.0,但在上網時有些網頁打不開,而且網速不快。有同事告訴筆者,說這跟MTU值有關係,將它修改到適當的值即可。在Windows下可以通過修改註冊 表來修改MTU值,可在Linux下面又該如何做呢?通過查閱一些資料,筆者終於解決了這個問題,其實只需要一個簡單的命令即可:
  # ifconfig eth0 mtu number
  其中“number”爲MTU的數值。修改完成後,可以用“ifconfig”命令來查看修改的結果。也可以通過一些網站來測試網速,進一步通過修改MTU值使網速達到最佳。爲了不必每次都修改,我們可以在配置文件中修改,如:
  # vi /etc/sysconfig/network-scripts/ifcfg-eth0
  MTU=1000
  這樣Linux的靈活性又一次得到了體現!
  小知識:MTU的英文全稱爲Maximum Transmission Unit,意爲最大傳輸單位,也就是在連接的時候,所傳輸信息包最多可以有多少字節。MTU決定着信息包的大小,如果信息包太小,同樣大小的數據就會分成 很多個包傳輸,計算機不得不頻繁地作出響應;如果信息包太大則會產生錯誤,導致傳輸失敗。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章