您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>電子百科>通信技術(shù)>傳輸網(wǎng)/接入網(wǎng)/交換網(wǎng)>

分段和重組,分段和重組是什么意思

2010年04月03日 17:13 www.ttokpm.com 作者:佚名 用戶評(píng)論(0
關(guān)鍵字:分段(7753)重組(7529)

分段和重組,分段和重組是什么意思

對(duì)于不同的網(wǎng)絡(luò),其中傳送的包大小可能不一樣,因此把大包分小的功能是必須的。分段是將數(shù)據(jù)分組分割成小塊以便它們能夠適合基礎(chǔ)網(wǎng)絡(luò)的幀。數(shù)據(jù)報(bào)也可以被標(biāo)記為“不可分段”,如果一個(gè)數(shù)據(jù)報(bào)被標(biāo)記了,那么在任何情況下都不準(zhǔn)對(duì)它進(jìn)行分段。如果不分段到不了目的地,那就把包在半路拋棄了。在本地網(wǎng)內(nèi)進(jìn)行的重新分段和重組對(duì)IP模塊是不可見(jiàn)的,這種方法也可以使用。

接收系統(tǒng)將這些分段重新組裝成原始的數(shù)據(jù)分組。對(duì)段的重組要求以下四個(gè)域有相同的值:標(biāo)記,源地址,目標(biāo)地址和協(xié)議。將不同的數(shù)據(jù)報(bào)根據(jù)自己帶的偏移量重新組合為新段,第一個(gè)段的偏移量為0,最后一個(gè)段的多段標(biāo)記為0。

MTU(最大傳輸單元)一詞指一個(gè)幀中能夠傳輸?shù)淖畲髷?shù)據(jù)量。不同的網(wǎng)絡(luò)有不同的MTU大小,所以可能需要將數(shù)據(jù)分組分段以符合傳輸它們的網(wǎng)絡(luò)的幀大小。圖F-8闡釋了該過(guò)程。

image: bk0712110m_1.jpg

圖F-8 將數(shù)據(jù)分組分段以符合它們必須跨越的網(wǎng)絡(luò)的幀大小網(wǎng)際協(xié)議(如IP)使用分段,因?yàn)閿?shù)據(jù)分組在其中傳輸?shù)拿總€(gè)網(wǎng)絡(luò)都可能有不同的幀大小。分段發(fā)生在連接兩個(gè)具有不同MTU的網(wǎng)絡(luò)的路由器中。雖然有可能設(shè)計(jì)出具有相同MTU大小的內(nèi)部網(wǎng)絡(luò),但對(duì)于因特網(wǎng)它并不是很好的選擇,因?yàn)橐蛱鼐W(wǎng)包括幾干個(gè)獨(dú)立管理的、互相連接的網(wǎng)絡(luò)。

因?yàn)榉侄螘?huì)降低性能,所以它總是不合需要的。事實(shí)上,在IPv6中,就不允許分段。大的數(shù)據(jù)分組總是更可取的,特別是大文件在高性能網(wǎng)絡(luò)中傳輸時(shí)。但是有些時(shí)候,試圖消除或減少分段可能會(huì)引起額外的問(wèn)題。IPv6通過(guò)依靠終端系統(tǒng)來(lái)發(fā)現(xiàn)MTU整個(gè)的傳送路徑從而嘗試消除對(duì)分段的需求。它被稱為路徑MTU發(fā)現(xiàn),IPv4中已經(jīng)使用,這在后面有討論。IPv6將加強(qiáng)這一點(diǎn)。一個(gè)重要的概念是每個(gè)分段都變成一個(gè)新的、更小的IP數(shù)據(jù)報(bào)。這是因?yàn)橐粋€(gè)新的IP頭被附加到數(shù)據(jù)報(bào)中,該數(shù)據(jù)報(bào)包含原始數(shù)據(jù)報(bào)IP頭的許多信息以及與分段過(guò)程相關(guān)的信息。新的IP數(shù)據(jù)報(bào)被放入基礎(chǔ)網(wǎng)絡(luò)的某個(gè)幀中。后面討論并圖示了該過(guò)程。新數(shù)據(jù)報(bào)(IP頭加上數(shù)據(jù))的總的大小不能超過(guò)該網(wǎng)絡(luò)的MTU。 

只有目的地對(duì)分段的數(shù)據(jù)分組進(jìn)行重組。傳輸路徑中的路由器從不執(zhí)行重組。想一想數(shù)據(jù)分組被分段后,它的分段可能會(huì)不再采用不同的路徑到達(dá)目的地。所有的分段再次出現(xiàn)的惟一地點(diǎn)就是目的地。接收器啟動(dòng)計(jì)時(shí)器并開(kāi)始將分段放入緩沖器中,他們被保留在那里直到所有的分段都到達(dá)。如果只是某一個(gè)數(shù)據(jù)分組分段未能出現(xiàn)在目的地,則整個(gè)數(shù)據(jù)分組必須重新傳輸,因?yàn)闆](méi)有請(qǐng)求和重新傳輸單個(gè)分段的機(jī)制。

因?yàn)門(mén)CP段進(jìn)入IP數(shù)據(jù)報(bào)而IP數(shù)據(jù)報(bào)進(jìn)入基礎(chǔ)網(wǎng)絡(luò)的幀,它們中間有一些有趣的關(guān)系。首先,TCP段不能大于IP數(shù)據(jù)報(bào)減去IP頭。IP數(shù)據(jù)報(bào)的最大大小是65535Byte減去IP頭(大小可能在20到60Byte之間)。其大小以4Byte的增量變化,這取決于頭選項(xiàng)的設(shè)置。極少的數(shù)據(jù)鏈連接具有能容納65K數(shù)據(jù)報(bào)的MTU。以太網(wǎng)的MTU是l500Byte,FDDI的MTU是4500Byte。

下面是一些影響分段大小的其他因素:

每個(gè)IP數(shù)據(jù)報(bào)分段必須是8Byte的倍數(shù)。

IP頭被添加到IP數(shù)據(jù)報(bào)分段中,所以總的分段大小等于(數(shù)據(jù)分段+IP頭)。

MTU指定所允許的最大分段大小(分段+IP頭)?!?

因?yàn)榉侄伪仨毷?Btye的倍數(shù),總的分段大小可能并不總是等于MTU。假設(shè)MTU是512Byte,頭大小是20Byte (如果不使用選項(xiàng),頭大小為20Byte)。因?yàn)镮P數(shù)據(jù)報(bào)只能以8Byte的倍數(shù)來(lái)分段,該示例網(wǎng)絡(luò)的最大分段大小(在添加頭之前)添加頭之前,是488Byte。添加頭后,總的分段大小為508Byte,處于5l2Byte的MTU限制范圍內(nèi)。請(qǐng)注意8的下一個(gè)倍數(shù)是496Byte。加上頭之后總的分段大小就是5 l6Byte,超出了MTU范圍。

下列字段是IP頭中使用的,用來(lái)提供分段信息和控制:

數(shù)據(jù)分組標(biāo)識(shí)符 一個(gè)l6bit的字段,使用一個(gè)惟一的編號(hào)標(biāo)識(shí)所有分段的數(shù)據(jù)分組。在接收器處理完所有的分段之前,該編號(hào)不能被再次使用。

分段偏移 為接收器提供信息以將分段重組成原始的數(shù)據(jù)分組。改值表明分段中的數(shù)據(jù)相對(duì)于數(shù)據(jù)開(kāi)始處的位置。

不分段標(biāo)志 當(dāng)設(shè)置為1時(shí),不使用分段數(shù)據(jù)報(bào)進(jìn)行傳輸。如果不能做到,數(shù)據(jù)報(bào)將會(huì)丟失,并將返回一條出錯(cuò)消息到發(fā)送器那里(使用 ICMP)。該標(biāo)志可用于“scout”數(shù)據(jù)分組,發(fā)送這些數(shù)據(jù)分組以確定網(wǎng)絡(luò)中可以發(fā)送的最大 MTU。請(qǐng)參閱后面的“路徑MTU發(fā)現(xiàn)”一節(jié)。

更多分段標(biāo)志 當(dāng)設(shè)置為1,該標(biāo)志表明將會(huì)有更多分段。0則表示數(shù)據(jù)分組是最后一個(gè)分段?!?

圖F-9闡釋了一個(gè)l300By泌的數(shù)據(jù)報(bào)是如何被分段成網(wǎng)絡(luò)中的三個(gè)數(shù)據(jù)報(bào)的,其中該網(wǎng)絡(luò)中的MTU為500Byte(為清楚起見(jiàn),值都被四舍五入)。

圖F-9分段過(guò)程

路由器必須接受具有指定MTU大小的掛接網(wǎng)絡(luò)的數(shù)據(jù)報(bào)。而且它們還必須接受大小為576Byte的最小數(shù)據(jù)報(bào),該值是在1983年RFC 879為了幫助供貨商創(chuàng)建能夠共同操作的路由器而定義的。RFC 879中的規(guī)則指定“主機(jī)不能發(fā)送大于576Byte的數(shù)據(jù)報(bào),除非它們明確知道目標(biāo)主機(jī)已準(zhǔn)備好接受更大的數(shù)據(jù)報(bào)”。現(xiàn)在,大多數(shù)路由器支持l500Byte的MTU,但是在具有未知MTU大小的非本地網(wǎng)絡(luò)中傳輸時(shí)仍然使用最小值。通常,因特網(wǎng)中的網(wǎng)絡(luò)現(xiàn)在都支持576Byte的最小MTU。

RFC 879中制定的規(guī)則的另一部分是最大的TCP段大小(數(shù)據(jù)進(jìn)入IP數(shù)據(jù)報(bào),而IP數(shù)據(jù)報(bào)則會(huì)分段)等于最大的IP數(shù)據(jù)報(bào)大小加上40Byte的頭。因此,最大的TCP段大小是536Byte(576Byte減去40Byte)。

大多數(shù)操作系統(tǒng)都提供有更改MTU大小的方法。例如,在Windows 98,可以按如下方式查看并更改撥號(hào)網(wǎng)絡(luò)的設(shè)置。打開(kāi)“控制面板”中的“網(wǎng)絡(luò)”實(shí)用程序,單擊“配置”選項(xiàng)卡,選項(xiàng)“撥號(hào)適配器”,然后單擊“屬性”。在“高級(jí)”選項(xiàng)卡中,單擊“IP數(shù)據(jù)分組大小”。出現(xiàn)下列可用的值:  自動(dòng)默認(rèn)設(shè)置 大 1500Byte?

中 1000Byte  小 576Byte??  在“自動(dòng)”模式中,所有低于128kbit/s的PPP連接都使用576Byte的MTU,而高于128kbit/s的連接則使用1500Byte的MTU。

路徑MTU發(fā)現(xiàn)

最大轉(zhuǎn)移單位(MTU)是對(duì)單個(gè)傳輸?shù)臄?shù)據(jù)字節(jié)最大號(hào)碼限制的鏈接層。路徑MTU是源節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)之間的路徑中的所有鏈接中的最小MTU。路徑MTU發(fā)現(xiàn)是一個(gè)過(guò)程,在這個(gè)過(guò)程中,數(shù)據(jù)分組就像“scout”一樣被發(fā)送到網(wǎng)絡(luò)中以發(fā)現(xiàn)最小的路徑MTU。發(fā)現(xiàn)最小的MTU后,發(fā)送器可使用該值作為最大的IP數(shù)據(jù)報(bào)大小,以便在傳輸過(guò)程中不用分段數(shù)據(jù)分組。如前所述,分段會(huì)增加開(kāi)銷(xiāo)并降低性能。只要可能就應(yīng)該使用大的數(shù)據(jù)分組。

MTU路徑的發(fā)現(xiàn)過(guò)程

我們使用非碎片比特在IP頭信息作為動(dòng)態(tài)地發(fā)現(xiàn)一條給定的線路的路徑MTU標(biāo)記。消息提供者承擔(dān)一條路徑的PMTU是已知的MTU的第一個(gè)中斷段。

他需要發(fā)送所有的數(shù)據(jù)包并且設(shè)置非段位。

如果沿著目的主機(jī)的路徑,有一路由器需要數(shù)據(jù)包到片段為了把它傳遞給下一個(gè)中斷段,如果非段位被設(shè)置,將產(chǎn)生一條ICMP錯(cuò)誤消息(類(lèi)型3代碼4“段需要和DF設(shè)置”)。

當(dāng)發(fā)送主機(jī)收到ICMP錯(cuò)誤消息時(shí)應(yīng)該減少假定的PMTU。

當(dāng)估計(jì)的PMTU是足夠低的數(shù)據(jù)包不成碎片時(shí)進(jìn)程能結(jié)束。在一些時(shí)候形成碎片的數(shù)據(jù)包,消息提供者自己能停止該過(guò)程。DF位通常被加裝在所有的數(shù)據(jù)包,如果一條路由變化成目的主機(jī),并且PMTU降低,我們就能發(fā)現(xiàn)借此發(fā)現(xiàn)它。

因?yàn)樵诼酚缮贤負(fù)涞淖兓?,一條路徑的PMTU可能會(huì)增加。為了能夠檢測(cè)到它,發(fā)送主機(jī)應(yīng)為此鏈接周期性地增加假定的PMTU。在ICMP中的MTU鏈接領(lǐng)域 " 碎片存儲(chǔ)需要和DF設(shè)定 "的錯(cuò)誤信息攜帶MTU跳躍,使來(lái)源主機(jī)能夠知道他需要設(shè)置PMTU那條路徑以外允許數(shù)據(jù)包的傳送的準(zhǔn)確的值(路由器)沒(méi)有碎片。

路徑MTU發(fā)現(xiàn)的工作原理如下:

1.發(fā)送器傳輸數(shù)據(jù)分組(通常是本地網(wǎng)絡(luò)的默認(rèn)大小)并將“不分段”標(biāo)志設(shè)置為1。

2.如果數(shù)據(jù)分組大于網(wǎng)絡(luò)中的任何MTU,連接到該網(wǎng)絡(luò)的路由器將會(huì)丟失數(shù)據(jù)分組并返回給發(fā)送器一條ICMP消息。該消息指示如果數(shù)據(jù)分組不分段,將無(wú)法轉(zhuǎn)發(fā)而且還包含引起問(wèn)題的網(wǎng)絡(luò)的MTU。

3.發(fā)送器再次嘗試新的數(shù)據(jù)分組大小并從第l步開(kāi)始處理。連接到某個(gè)具有更小MTU的網(wǎng)絡(luò)的路由器可能丟失數(shù)據(jù)分組并返回一條錯(cuò)誤消息?!?

通過(guò)使用路徑MTU發(fā)現(xiàn),系統(tǒng)可以在多個(gè)使用盡可能最大的數(shù)據(jù)分組的網(wǎng)絡(luò)中發(fā)送數(shù)據(jù)分組而不用支付分段及重組的開(kāi)銷(xiāo)。

但是,路徑MTU發(fā)現(xiàn)也有它自己的成本。實(shí)際的數(shù)據(jù)直到發(fā)現(xiàn)最好的MTU以后才傳輸,這就造成了延遲。使用新的MTU大小,幾個(gè)路由器可能都返回錯(cuò)誤消息。而且,發(fā)現(xiàn)數(shù)據(jù)分組使用網(wǎng)絡(luò)帶寬并需要網(wǎng)絡(luò)中路由器的額外處理。盡管如此,人們認(rèn)為這種帶寬的使用以及處理還是比分段數(shù)據(jù)報(bào)要優(yōu)越。

非常好我支持^.^

(5) 100%

不好我反對(duì)

(0) 0%

( 發(fā)表人:admin )

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?