MTU Maximum Transfer Unit 最大傳遞單元
MTU Maximum Transport Unit 最大傳送單元
最大傳輸單元(Maximum Transmission Unit,MTU)是指一種通信協(xié)議的某一層上面所能通過(guò)的最大數(shù)據(jù)報(bào)大。ㄒ宰止(jié)為單位)。最大傳輸單元這個(gè)參數(shù)通常與通信接口有關(guān)(網(wǎng)絡(luò)接口卡、串口等)。
因特網(wǎng)協(xié)議允許IP分片,這樣就可以將數(shù)據(jù)報(bào)分成足夠小的片段以通過(guò)那些最大傳輸單元小于該數(shù)據(jù)報(bào)原始大小的鏈路了。這一分片過(guò)程發(fā)生在IP層(OSI模型的第三層,即網(wǎng)絡(luò)層),它使用的是將分組發(fā)送到鏈路上的網(wǎng)絡(luò)接口的最大傳輸單元的值。原始分組的分片都被加上了標(biāo)記,這樣目的主機(jī)的IP層就能將分組重組成原始的數(shù)據(jù)報(bào)了。
在因特網(wǎng)協(xié)議中,一條因特網(wǎng)傳輸路徑的“路徑最大傳輸單元”被定義為從源地址到目的地址所經(jīng)過(guò)“路徑”上的所有IP跳的最大傳輸單元的最小值;蛘邚牧硗庖粋(gè)角度來(lái)看,就是無(wú)需進(jìn)一步分片就能穿過(guò)這條“路徑”的最大傳輸單元的最大值。
RFC 1191描述了“路徑最大傳輸單元發(fā)現(xiàn)方法”,這是一種確定兩個(gè)IP主機(jī)之間路徑最大傳輸單元的技術(shù),其目的是為了避免IP分片。在這項(xiàng)技術(shù)中,源地址將數(shù)據(jù)報(bào)的DF(Don''t Fragment,不要分片)位置位,再逐漸增大發(fā)送的數(shù)據(jù)報(bào)的大小——路徑上任何需要將分組進(jìn)行分片的設(shè)備都會(huì)將這種數(shù)據(jù)報(bào)丟棄并返回一個(gè)“數(shù)據(jù)報(bào)過(guò)大”的ICMP響應(yīng)到源地址——這樣,源主機(jī)就“學(xué)習(xí)”到了不用進(jìn)行分片就能通過(guò)這條路徑的最大的最大傳輸單元了。
不幸的是,越來(lái)越多的網(wǎng)絡(luò)封殺了ICMP的傳輸(譬如說(shuō)為了防范DDOS攻擊)——這使得路徑最大傳輸單元發(fā)現(xiàn)方法不能正常工作,其常見(jiàn)表現(xiàn)就是一個(gè)連接在低數(shù)據(jù)流量的情況下可以正常工作,但一旦有大量數(shù)據(jù)同時(shí)發(fā)送,就會(huì)立即掛起(例如在使用IRC的時(shí)候,客戶會(huì)發(fā)現(xiàn)在發(fā)送了一個(gè)禁止IP欺騙的ping之后就得不到任何響應(yīng)了,這是因?yàn)樵撨B接被大量的歡迎消息堵塞了)。而且,在一個(gè)使用因特網(wǎng)協(xié)議的網(wǎng)絡(luò)中,從源地址到目的地址的“路徑”常常會(huì)為了響應(yīng)各種各樣的事件(負(fù)載均衡、擁塞、斷電等等)而被動(dòng)態(tài)地修改——這可能導(dǎo)致路徑最大傳輸單元在傳輸過(guò)程中發(fā)生改變——有時(shí)甚至是反復(fù)的改變。其結(jié)果是,在主機(jī)尋找新的可以安全工作的最大傳輸單元的同時(shí),更多的分組被丟失掉了。
對(duì)于時(shí)下大多數(shù)使用以太網(wǎng)的局域網(wǎng)來(lái)說(shuō),最大傳輸單元的值是1500字節(jié)。但是像PPPoE這樣的系統(tǒng)會(huì)減小這個(gè)數(shù)值,這就使得在使用最大傳輸單元發(fā)現(xiàn)方法時(shí)可能會(huì)產(chǎn)生這樣的結(jié)果:一些處于配置不當(dāng)?shù)姆阑饓χ蟮恼军c(diǎn)變得不可達(dá)了。對(duì)于這種情況,還是可能找到變通的方法的,但這取決于你控制的是網(wǎng)絡(luò)的哪一部分。這些方法包括改變用來(lái)在防火墻一端建立TCP連接的第一個(gè)分組的MSS(Maximum Segment Size,最大分段大。
對(duì)于一些支持老版本以太網(wǎng)協(xié)議的IBM系統(tǒng)(例如XSeries),可能只有在把最大傳輸單元設(shè)為1492之后才能在當(dāng)下常見(jiàn)的局域網(wǎng)上進(jìn)行運(yùn)作。
如何檢測(cè)網(wǎng)關(guān)的MTU
在本機(jī)打開(kāi)dos窗口,執(zhí)行: ping -f -l 1472 192.168.0.1 其中192.168.0.1是網(wǎng)關(guān)IP地址,1472是數(shù)據(jù)包的長(zhǎng)度。請(qǐng)注意,上面的參數(shù)是“-l”(小寫(xiě)的L),而不是“-1”。 如果能ping通,表示數(shù)據(jù)包不需要拆包,可以通過(guò)網(wǎng)關(guān)發(fā)送出去。 如果出現(xiàn): Packet needs to be fragmented but DF set. 表示數(shù)據(jù)包需要拆開(kāi)來(lái)發(fā)送。此時(shí),減少數(shù)據(jù)包長(zhǎng)度,再執(zhí)行上面的ping命令。從1400到1472之間多試幾次,就能找到合適的數(shù)據(jù)包長(zhǎng)度了。把數(shù)據(jù)包長(zhǎng)度加上數(shù)據(jù)包頭28字節(jié),就得到MTU的值。 如果檢測(cè)到網(wǎng)關(guān)的MTU值是1500,不需要修改。 如果網(wǎng)關(guān)有防火墻ping不通,可以試試直接把MTU設(shè)為1400。
如何修改本機(jī)的MTU[編輯本段]修改方法如下:
(1)、運(yùn)行regedit (2)、瀏覽到: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParametersInterfaces
(3)、Interfaces下有多個(gè)子項(xiàng),每個(gè)子項(xiàng)對(duì)應(yīng)一個(gè)網(wǎng)卡。請(qǐng)按如下方法選擇網(wǎng)卡: (a)確定本機(jī)用來(lái)連接Internet的網(wǎng)卡或撥號(hào)連接的IP,如192.168.0.19; (b)用鼠標(biāo)點(diǎn)擊Interfaces上的子項(xiàng),查看鍵值列表中的IPAddress項(xiàng); (c)如果IPAddress的鍵值與(a)中的IP相同,即192.168.0.19,則該子項(xiàng)就是要找的網(wǎng)卡。 (4)、進(jìn)入該子項(xiàng),在右邊的窗口里按鼠標(biāo)右鍵,選擇“新建”->“雙字節(jié)值”,輸入名稱“MTU”,按回車。再用鼠標(biāo)雙擊“MTU”,彈出修改窗口: 如圖3: 填入MTU的值。填寫(xiě)前請(qǐng)先把基數(shù)設(shè)為十進(jìn)制。 設(shè)置好后,需要重啟機(jī)器才能生效。
Linux下可使用如下命令修改 需要root權(quán)限
ifconfig 網(wǎng)卡 MTU值
如 ifconfig eth0 mtu 1460
Maximum Transmission Unit,最大傳輸單元。 在網(wǎng)絡(luò)中能夠傳輸?shù)淖畲髷?shù)據(jù)報(bào)文。大小根據(jù)網(wǎng)絡(luò)可變,如在 X.25 網(wǎng) 絡(luò)中是 576 字節(jié),以太網(wǎng)中是 1500 字節(jié),16Mbit/s 令牌環(huán)中是 17914 字節(jié)。MTU 大小取決于網(wǎng)絡(luò)的鏈路層。當(dāng)報(bào)文在網(wǎng)絡(luò)上傳輸 時(shí),路徑 MTU,即 PMTU 確定了相關(guān)網(wǎng)絡(luò)中最小報(bào)文尺寸,即所有 網(wǎng)絡(luò)能夠不 分段傳輸?shù)膱?bào)文大小。