1. 程式人生 > >解決只能上QQ和百度,其它的網址和 網路應用使用不了的問題

解決只能上QQ和百度,其它的網址和 網路應用使用不了的問題

為什麼只能上QQ和百度,其它的瀏覽器,網址,播放器等網路應用軟體使用不了。或許有的人可能會遇到,這是

我切身體會到的問題,為了解決這個問題花費了一下午的時間,竟然只是一個小小的MTU值問題引起的,不免感覺整

個暑假學的網路技術沒有用,記得當時看這部分內容的時候留意過,但是沒有徹底理解。解決這個問題,不得不說

MTU(最大傳輸單元)這個最直截了當的東西。MTU設定不當,可能會導致許多網路問題,如某些網路應用無法使用,

某些網站無法訪問等。

   一解釋下一MTU以及相關的一系列的概念

   Mtu即最大傳輸單元,全稱為Maximum Transmission Unit,是指通訊協議的某一層上面所能通過的最大資料包大

小(以位元組為單位)。由於定義的模糊性,在此也介紹幾個相關的名詞,MRU、PMTU、MSS和JUMBO FRAME,供

大家甄別。

    MRU即最大接收單元,全稱為Maximum Receive Unit,與MTU相對,稱為最大接收單元,目前也沒有權威的標準定義,但許多文章中有這個名詞。一臺主機或路由器的MTU與MRU可以不一致。



    PMTU,全稱為 path maximum transmission unit,即路徑MTU,把一條IP路徑上MTU的最小值稱為PMTU,PMTU

是個理想化的概念,但目前業界沒有有效的手段來實現PMTU的發現和更新。`

    MSS是OSI參考模型中四層的一個概念,即最大分段長度,全稱為TCP Maximum Segment Size,指TCP每次能夠

傳輸的最大資料分段長度(以位元組為單位),MSS一般比MTU小40位元組。

   Jumbo Frame(有些稱Giant Frame),網路上會遇到jumbo frame的概念,cisco路由器的介面中也有這個引數,超過

乙太網標準長度1518位元組的幀稱為jumbo frame。

   二理解MTU和MRU

   MTU不能太大也不能太小,要剛剛合適才行

   比如:一個數據總長度是2999位元組

   MTU為1500時,這個資料被拆成1500為標準的一段分1500+1499 2段 傳送完畢

   MTU為1400時,這個資料被拆成1500為標準的一段分1400+1400+1993段 傳送完畢

   ......

   所以太小了,傳送的效率就被限制了

   比如:一個數據總長度是9999位元組

   MTU為15000時,這個資料被拆成15000為標準的一段分15000 1段 傳送完畢

   ......

   所以太大了,傳送的效率就被限制了

   三MTU涉及主要原理

   常見網路的MTU值:

    IP網路以包為單位進行資訊傳遞,那麼,一次傳送多大的包合適、多大的包最高效就成為一個核心問題一。MTU

就是決定在什麼樣的物理網路傳送多大資料包大的事實標準,不同型別網路由於物理特性、發展階段不同,其MTU的

預設值也不盡相同,以下是摘錄的各類網路及其預設MTU值:

   對於windows作業系統來講,其乙太網網絡卡MTU預設為1500,但可以通過修改工具或修改登錄檔進行修改,但只

能改小,不能改大,即只能修改為小於或等於1500位元組。

    2PMTU 發現過程

    對於一個基於網路的應用來講,如果應用穿過網路的MTU與PMTU相等,那麼應用穿過網路的效率最高,或者

說,應用通過主機網絡卡發出的最大資料包與PMTU越接近(指小於等於PMTU),應用穿過網路的效率越高,原因是有

效的避免了分片和重組。

    為了達到這個目的,一些作業系統支援自動發現路徑MTU的功能,具體過程為:路由器介面上收到一個報文長

度大於本介面MTU值的報文,如果該報文被打上不分片的標記,將丟棄本報文,並且返回一個ICMP差錯報文,通知

報文發起者丟棄原因。報文發起者將傳送比較小的報文。通過多次上述報文協商,將得到對於某一個固定路徑上的最

小Mtu值,這個過程叫做“Mtu Discovery”。

     四如何確定網路MTU

    某些ISP接入的MTU可能會比常規使用的MTU小,這時如果設定了過大的MTU,就可能會導致很多服務無法使

用的問題。可以通過ping程式確定MTU的值。

    Windows+R 開啟執行,輸入cmd,可以開啟命令提示符:



使用 ping -f  -l <MTU> <IP地址>的方式確定MTU(也有其他的方式確定MTU值)

    如:ping -f  -l 1400 192.168.1.1可以從1400逐漸向上取值找到最合適的MTU值,最大不超過1500。





    如果能ping通,說明詞MTU是可以的,可適當加大MTU值,直到最大;否則就要適當調小MTU值。設定最大的

MTU值可以有效的提高網路吞吐量。

    以上找到最大的適合MTU值為1472。

    再提供一種測試MTU值的方法:


        在命令提示符中輸入 PING -l <MTU> -f <HOST>的方式確定MTU

    如:ping -l 1400 -f www.baidu.com

    實驗過程為:


    五修改方法

    第一種 方法是windows修改:

    (1)windows+R執行regedit 



   (2)瀏覽找到: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces 





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

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

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



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

   (4)進入該子項,在右邊的窗口裡按滑鼠右鍵,選擇“新建”->“雙位元組值”,輸入名稱“MTU”,按回車。再用

滑鼠雙擊“MTU”,彈出修改視窗,填入合適的MTU的值。填寫前請先把基數設為十進位制。設定好後,需要重啟機

器才能生效。注意,系統的版本不一樣,可能下面的子項不一樣,最好找到相應的系統。這裡是win10作業系統的。

   第二種方法是路由器修改:

   (1)在瀏覽器的網址位置輸入192.168.1.1或192.168.0.1進入自己的路由器相關配置介面



   (2)在路由設定中找到網路引數,再找到WAN設定,選擇高階設定



   (3)在PPPoE高階設定中找到資料包MTU,就可以手動設定MTU值了。要找到最適合的值,不要一味的調大或調

小,一般預設的即可。

   若是遇到一部分網路應用打不開和一部分網址打不開的時候,這時候去檢測自己主機的MTU值,測試哪一個是最

適合你這個寬頻連線方式的,可以適當調小MTU值,這樣就可以執行網路應用和開啟網址了。適當的調整MTU值也可

以加快開啟網頁的速度。