日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

数据包分片和重组 MTU与MSS

發(fā)布時(shí)間:2025/3/21 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据包分片和重组 MTU与MSS 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

前言

?

任何一臺(tái)主機(jī)都有必要對(duì)IP分片進(jìn)行相應(yīng)的處理。

分片往往出現(xiàn)在網(wǎng)絡(luò)上遇到比較大的報(bào)文無法一下子發(fā)送出去才會(huì)進(jìn)行處理。

?

正文

比如說在前一個(gè)FDDI鏈路中的報(bào)文大小為4352字節(jié),小于其MTU所以能夠安全傳送。如果經(jīng)過一個(gè)路由器后,跳到以太網(wǎng)鏈路,由于以太鏈路的MTU為1500字節(jié),所以顯然報(bào)文無法傳輸。因此,路由器會(huì)將其分片成三個(gè)報(bào)文段進(jìn)行分別順序發(fā)送。這里分片的任務(wù)交給了路由器,而經(jīng)過分片之后的IP數(shù)據(jù)報(bào)在重組的時(shí)候,只能在目標(biāo)主機(jī)上進(jìn)行。


顯然,隨著網(wǎng)絡(luò)的流量的提升,一旦出現(xiàn)較多的分片 情況的話,路由器的負(fù)擔(dān)便會(huì)加重。也會(huì)降低網(wǎng)絡(luò)的傳輸效率。同時(shí)也是出于網(wǎng)絡(luò)安全的考慮。

因此,引入路徑MTU發(fā)現(xiàn)(Path MTU Discovery )

使用了路徑MTU發(fā)現(xiàn)技術(shù)后,使得路由器可以提前得知下一個(gè)鏈路的MTU大小。

在傳送過來的報(bào)文中,由于首先在發(fā)送端主機(jī)發(fā)送IP數(shù)據(jù)報(bào)的時(shí)候?qū)⑵涫撞康姆制箻?biāo)志位設(shè)置為1,根據(jù)這個(gè)標(biāo)志位,在遇到下一個(gè)路由器的時(shí)候就不會(huì)進(jìn)行分片處理,而是直接棄包。同時(shí)路由器通過一個(gè)ICMP的不可達(dá)消息將數(shù)據(jù)鏈路的MTU發(fā)送給主機(jī)。主機(jī)接收到這個(gè)值后在下一次發(fā)送報(bào)文的時(shí)候,IP層進(jìn)行分片。

IP分片發(fā)生在IP層,不僅源端主機(jī)會(huì)進(jìn)行分片,中間的路由器也有可能分片,因?yàn)椴煌木W(wǎng)絡(luò)的MTU是不一樣的,如果傳輸路徑上的某個(gè)網(wǎng)絡(luò)的MTU比源端網(wǎng)絡(luò)的MTU要小,路由器就可能對(duì)IP數(shù)據(jù)報(bào)再次進(jìn)行分片。而分片數(shù)據(jù)的重組只會(huì)發(fā)生在目的端的IP層。

注意:

1)對(duì)于UDP,由于UDP是不可重發(fā)的。UDP一般數(shù)據(jù)包大小會(huì)限制在512字節(jié)。

Internet大多數(shù)網(wǎng)絡(luò)接口MTU>512,即使DNS報(bào)文 + UDP+ IP= 512+8+20=540,這個(gè)大小幾乎可以在Internet上暢通無阻,而無需IP分片。

為何IP分片不好?
一個(gè)UDP報(bào)文如果因?yàn)閟ize > MTU,則會(huì)被IP層分成兩片或者多片,但是只有一片有端口號(hào),由于其它分片沒有端口號(hào)能否通過防火墻則完全看防火墻的臉色,所以對(duì)于能否通信成功是一個(gè)未知數(shù)。

如果防火墻網(wǎng)開一面,不檢查端口號(hào),分片可以全部通行,到目的地再組裝到一起,IP層提交給UDP/DNS,一點(diǎn)問題沒有。但是防火墻的安全功能大打折扣,如何阻止非法的外來攻擊包?

如果防火墻嚴(yán)格檢查端口號(hào),則沒有端口號(hào)的分片則統(tǒng)統(tǒng)丟棄,造成通信障礙。

所以選擇一個(gè)合適的UDP size至關(guān)重要,避免分片。

?

2)而對(duì)于TCP而言,由于是可重發(fā)的,所以第一次棄包(發(fā)送失敗)的時(shí)候,主機(jī)接收到路由器返回來的MTU值。根據(jù)TCP重發(fā)處理,數(shù)據(jù)包會(huì)被重新發(fā)送,在IP層進(jìn)行分片。

?


MTU:maximum transmission unit,最大傳輸單元,由硬件規(guī)定,如以太網(wǎng)的MTU為1500字節(jié)。

MSS:maximum segment size,最大分節(jié)大小,為TCP數(shù)據(jù)包每次傳輸?shù)淖畲髷?shù)據(jù)分段大小,一般由發(fā)送端向?qū)Χ薚CP通知對(duì)端在每個(gè)分節(jié)中能發(fā)送的最大TCP數(shù)據(jù)。MSS值為MTU值減去IPv4 Header(20 Byte)和TCP header(20 Byte)得到

分片:若一IP數(shù)據(jù)報(bào)大小超過相應(yīng)鏈路的MTU的時(shí)候,IPV4和IPV6都執(zhí)行分片(fragmentation),各片段到達(dá)目的地前通常不會(huì)被重組(re-assembling)。IPV4主機(jī)對(duì)其產(chǎn)生的數(shù)據(jù)報(bào)執(zhí)行分片,IPV4路由器對(duì)其轉(zhuǎn)發(fā)的數(shù)據(jù)也執(zhí)行分片。然而IPV6只在數(shù)據(jù)產(chǎn)生的主機(jī)執(zhí)行分片;IPV6路由器對(duì)其轉(zhuǎn)發(fā)的數(shù)據(jù)不執(zhí)行分片。

?

例如:一個(gè)以太網(wǎng)上的主機(jī)和一個(gè)令牌環(huán)網(wǎng)上的主機(jī)間建立連接,其中以太網(wǎng)上主機(jī)通告的MSS為1460,令牌環(huán)網(wǎng)上主機(jī)通告的MSS為4096。觀察分組,在兩個(gè)方向上都找不到大于1460字節(jié)的數(shù)據(jù),為什么?

??????? 令牌環(huán)網(wǎng)上發(fā)送到以太網(wǎng)的數(shù)據(jù)大小不大于1460字節(jié)的原因是因?yàn)橐蕴W(wǎng)上主要通告的MSS值就為1460個(gè)字節(jié),所以令牌環(huán)網(wǎng)上發(fā)送出去的數(shù)據(jù)的長(zhǎng)度不能夠大于MSS值;令牌環(huán)網(wǎng)上主機(jī)通告的MSS值為4096,也即是說以太網(wǎng)能夠發(fā)送到令牌環(huán)網(wǎng)上的TCP凈荷值為4096,但是以太網(wǎng)的MTU值又是由硬件所決定的,最大只支持1500(包括IP頭至少20B和TCP頭至少20B),為避免分片,因此以太網(wǎng)發(fā)送到令牌環(huán)網(wǎng)的數(shù)據(jù)的凈荷也為1500-20-20=1460B,所以兩個(gè)方向的凈數(shù)據(jù)長(zhǎng)度不會(huì)大于1460字節(jié)。

?

?

?

?

總結(jié)

以上是生活随笔為你收集整理的数据包分片和重组 MTU与MSS的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。