這篇文章主要為大家分析了IP數(shù)據(jù)報(bào)的分片和組裝原理是什么的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì)易懂,操作細(xì)節(jié)合理,具有一定參考價(jià)值。如果感興趣的話,不妨跟著跟隨小編一起來(lái)看看,下面跟著小編一起深入學(xué)習(xí)“IP數(shù)據(jù)報(bào)的分片和組裝原理是什么”的知識(shí)吧。
成都創(chuàng)新互聯(lián)公司自2013年起,先為宿遷等服務(wù)建站,宿遷等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為宿遷企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。一份數(shù)據(jù)從一個(gè)主機(jī)通過(guò)路由器發(fā)送給另一個(gè)主機(jī)時(shí),要經(jīng)過(guò)很多路由層轉(zhuǎn)發(fā)的。過(guò)程比較復(fù)雜,那么IP在路由層到底是以怎樣的形式轉(zhuǎn)發(fā)和目的主機(jī)這份數(shù)據(jù)報(bào)的時(shí)候又是如何處理的?
首先我們需要了解數(shù)據(jù)報(bào)的格式:
IP的轉(zhuǎn)發(fā)和控制都是由IP數(shù)據(jù)報(bào)的頭部決定
4位首部長(zhǎng)度的數(shù)值是以 4字節(jié)為單位的,最小值為 5,也就是說(shuō)首部長(zhǎng)度最小是 4x5=20字節(jié) ,
也就是不帶任何選項(xiàng)的 IP首部 ,4位能表表示的大值是 15,也就是說(shuō)首部長(zhǎng)度大是 60字 節(jié)
8位TOS字段有 3個(gè)位用來(lái)指定IP數(shù)據(jù)報(bào)的優(yōu)先級(jí) (目前已經(jīng)廢棄不用 ),還有4個(gè)位表示可選
的服務(wù)類型 (最小延遲、大呑吐量、大可靠性、最小成本 ),還有一個(gè)位總 是0。
16位總長(zhǎng)度是整個(gè)數(shù)據(jù)報(bào) (包括IP首部和 IP層payload)的字節(jié)數(shù)。
每傳一個(gè) IP數(shù)據(jù)報(bào) ,16 位的標(biāo)識(shí)加1,可用于分片和重新組裝數(shù)據(jù)報(bào)。
3位標(biāo)志和13位片偏移用于分片 。
TTL(Time to live) 是這樣用的 :源主機(jī)為數(shù)據(jù)包設(shè)定一個(gè)生存時(shí)間 ,比如 64,每過(guò)一個(gè)路由器
就把該值減 1,如果減到 0就表示路由已經(jīng)太長(zhǎng)了仍然找不到目的主機(jī)的網(wǎng)絡(luò) ,就丟棄該包 ,因此
這個(gè)生存時(shí)間的單位不是秒 ,而是跳 (hop)。
協(xié)議字段指示上層協(xié)議是 TCP、 UDP、 ICMP還是 IGMP。
然后是 校驗(yàn)和, 只校驗(yàn)IP首部 ,數(shù)據(jù)的校驗(yàn)由更高層協(xié)議負(fù)責(zé)。
IPv4的IP地址長(zhǎng)度為 32位。
在IP數(shù)據(jù)報(bào)中總長(zhǎng)度是16位的字段,一次數(shù)據(jù) 報(bào)的大長(zhǎng)度為2^16-1,雖然盡可能長(zhǎng)的數(shù)據(jù)報(bào)能夠提高傳輸效率,但是很少 有超過(guò) 1500字節(jié)的;所以在這里只要超過(guò)1500字節(jié),就認(rèn)為此數(shù)據(jù)報(bào)該分片了。IP數(shù)據(jù)報(bào)被分片以后,各分片分別組成一個(gè)具有IP首部的分組,并各自獨(dú)立的路由,分別抵達(dá)目的主機(jī)后,目的主機(jī)的IP層會(huì)在傳送給傳輸層之前將收到的所有分片重新組裝成一個(gè)數(shù)據(jù)報(bào)。
一.IP分片
1.IP分片原理:
分片和重新組裝的過(guò)程對(duì)于傳輸層是透明的,原因是IP數(shù)據(jù)報(bào)進(jìn)行分片以后,只有它到達(dá)下一站時(shí)才可以 進(jìn)行重新組裝,且它是由目的端的IP層來(lái)完成的,分片之后的數(shù)據(jù)報(bào)根據(jù)需要可以再次 分片;
IP分片和完整的報(bào)文差不多擁有相同的IP頭,ID域?qū)γ烙⒎制际且恢碌?,這樣才能在進(jìn)行組裝的時(shí)候識(shí)別出來(lái) 同一個(gè)IP數(shù)據(jù)報(bào)文分片。在IP頭里面,16位識(shí)別號(hào)唯一記錄了一個(gè)IP報(bào)的ID,具有同一個(gè)ID的IP分片將會(huì)重新進(jìn)行組裝;而13位片偏移則記錄了某IP片相對(duì)于整個(gè)包的位置;這兩個(gè)表中間的3位標(biāo)志則標(biāo)志著該分片后面是否還有新的分片。這三個(gè)域組成了IP分片的所有信息,接受方可以利用這些信息對(duì)IP數(shù)據(jù)進(jìn)行重新組裝。
(1)標(biāo)志字段的作用
0 DF MF
標(biāo)志字段共三位,最高位為0,該值必須復(fù)制到 所有 分組中
不分片(Do not Fragment ,DF)值必須復(fù)制。DF=1表示 接受主機(jī)不能對(duì)分組進(jìn)行分片。如果分組的長(zhǎng)度超過(guò) MTU,又不可以分片,那么這個(gè)分組只能丟棄,并要用ICMP差錯(cuò)報(bào)文向源主機(jī)報(bào)告 。DF=0,表示可以分片
分片(MF)表示分片是不是最后一個(gè)分片,MF=1表示接受分片不是 最后一個(gè)分片,MF=0表示 接受分片時(shí)是最后一個(gè)分片
故意發(fā)送部分IP分片而不是全部,則會(huì)導(dǎo)致目標(biāo)主機(jī)總是等待分片消耗并占用系統(tǒng)資源。
2.MTU(大傳輸 單元)原理
當(dāng)兩臺(tái)遠(yuǎn)程CP互聯(lián)的時(shí)候,他們的數(shù)據(jù)要穿過(guò)很多的路由器和各種各樣的網(wǎng)絡(luò)媒介才能到達(dá)對(duì)端
,網(wǎng)絡(luò)中不同媒介的MTU各不相同,就好比一長(zhǎng)段的水管,由不同粗細(xì)的水管組成(MTU不同 )通過(guò)這段水管大水量就要由中間最細(xì)的水管決定。
對(duì)于網(wǎng)絡(luò)層的上層協(xié)議而言(這里以TCP/IP協(xié)議簇為例)他們對(duì)水管的粗細(xì)不在意因?yàn)樗麄冋J(rèn)為 這是網(wǎng)絡(luò)的事情。網(wǎng)絡(luò)層IP協(xié)議會(huì)檢測(cè)每個(gè)從上層協(xié)議下來(lái)的數(shù)據(jù)報(bào)包的大小 ,并根據(jù)本機(jī)的MTU大小決定是否分片處理。分片大的壞處就是降低了傳輸性能,本來(lái)可以一次搞定的事情,分成多次。所以在網(wǎng)絡(luò)的更高一層(傳輸層的實(shí)現(xiàn))往往會(huì)對(duì)此加以注意,因?yàn)橛行└邔右驗(yàn)槟承┰蚩赡芫鸵蟛荒軐?duì)分組進(jìn)行分片,索引會(huì)在IP數(shù)據(jù)報(bào)的包頭加上一個(gè)標(biāo)簽:DF這樣IP數(shù)據(jù)包在一大段網(wǎng)絡(luò)傳輸?shù)臅r(shí)候,如果遇到MTU小于 數(shù)據(jù)包的情況,轉(zhuǎn)發(fā)設(shè)備會(huì)根據(jù)情況丟掉這個(gè)數(shù)據(jù)包。然后返回一個(gè)錯(cuò)誤信息給 發(fā)送者,這往往會(huì)造成通訊上的問(wèn)題,不過(guò)幸運(yùn)的是大部分網(wǎng)絡(luò)鏈路MTU都是1500或者大于 1500
對(duì)于UDP而言,這個(gè)協(xié)議本身是無(wú)連接的協(xié)議,對(duì)數(shù)據(jù)包的到達(dá)順序是否正確并不關(guān)心,所以一般UDP對(duì)分片沒(méi)有多大要求
對(duì)于TCP就不一樣了,這個(gè)協(xié)議是面向連接的協(xié)議,對(duì)于 TCP而言它非常在意數(shù)據(jù)包的到達(dá)順序
以及在傳輸過(guò)程中是否有錯(cuò)誤發(fā)生,所以有些TCP應(yīng)用對(duì)分片有要求---不能分片
3.MSS(大報(bào)文段長(zhǎng)度 )原理
MSS就是TCP數(shù)據(jù)包每次能夠傳輸?shù)拇髷?shù)據(jù)分段,為了達(dá)到最佳的傳輸效能TCP協(xié)議在建立連接的時(shí)候通常要協(xié)商雙方MSS的值,這個(gè)值TCP協(xié)議在實(shí)現(xiàn)的時(shí)候用MTU代替(要減去IP數(shù)據(jù)包的包頭大小20bites和TCP數(shù)據(jù)段的包頭20BITES)所以MSS大小往往為1460,雙方會(huì)根據(jù)提供的MSS最小值 確定這次連接的MSS大值
二.IP分片步驟
一個(gè)未分片的數(shù)據(jù)報(bào)的分片信息字段全為0,即多個(gè)分片標(biāo)志位為 0,并且偏移量 為0,分片一個(gè)數(shù)據(jù)報(bào)需要經(jīng)過(guò)一下步驟
(1)檢查DF標(biāo)志位,查看是否允許分片,如果設(shè)置了該位,則數(shù)據(jù)報(bào)將被丟棄 ,并將ICMP錯(cuò)誤返回給源端
(2)基于MTU值,把數(shù)據(jù)字段分成兩個(gè)或?qū)€(gè)部分,除了最后的數(shù)據(jù) 部分外,所有新建的數(shù)據(jù)選項(xiàng) 長(zhǎng)度必須為8字節(jié)的倍數(shù)
(3)每個(gè)數(shù)據(jù)被放入一個(gè)IP數(shù)據(jù)報(bào),這些數(shù)據(jù)報(bào)的包頭略微改了原先的報(bào)文頭
(4)除了最后的數(shù)據(jù)報(bào)分片外,所有的分片都設(shè)置了多個(gè)分片標(biāo)志位
(5)每個(gè)分片中的片偏移量字段設(shè)為這個(gè)數(shù)據(jù)部分在原來(lái)數(shù)據(jù)報(bào)中所占的位置,這個(gè)位置相對(duì)于原來(lái)未分片數(shù)據(jù)報(bào)中的開(kāi)頭處。
(6)如果在原來(lái)的數(shù)據(jù)報(bào)中包括了選項(xiàng),則選項(xiàng)類型字節(jié)的高位字節(jié)決定了這個(gè)信息是被復(fù)制到所有分片數(shù)據(jù)報(bào),還是只復(fù)制到第一個(gè)數(shù)據(jù)報(bào)。
(7) 設(shè)置新數(shù)據(jù)報(bào)的報(bào)文頭字段及總長(zhǎng)度字段。
(8)重新計(jì)算報(bào)文頭部校驗(yàn)和字段。
此時(shí)這些分片數(shù)據(jù)報(bào)如一個(gè)完整的IP數(shù)據(jù)報(bào)一樣被轉(zhuǎn)發(fā),IP獨(dú)立的處理每個(gè)數(shù)據(jù)報(bào)分片,數(shù)據(jù)報(bào)分片能夠通過(guò)不同的路由 ,到達(dá)目的,如果他們通過(guò)了那些規(guī)定了更小的MTU路由,還能夠進(jìn)一步對(duì)他們進(jìn)行分片
在目的主機(jī)上,數(shù)據(jù)被 重新組合成原來(lái)的數(shù)據(jù)報(bào) ,發(fā)送主機(jī)設(shè)置的標(biāo)示字段與數(shù)據(jù)報(bào)中的袁IP地址和目的IP地址一起使用,分片過(guò)程不改變這個(gè)字段
三 .重組
為了重新組合這些數(shù)據(jù)報(bào)分片,接受主機(jī)在第一個(gè)分片到達(dá)時(shí)分配一個(gè)存儲(chǔ)緩沖區(qū)。這個(gè)主機(jī)還將啟動(dòng)一個(gè)計(jì)時(shí)器。當(dāng)數(shù)據(jù)報(bào)的后續(xù)分片到達(dá)時(shí),數(shù)據(jù)被復(fù)制到緩沖區(qū)存儲(chǔ)器中片偏移量指定的位置,當(dāng)所有分片都到達(dá)時(shí),完整的未分片的原始數(shù)據(jù)報(bào)就被恢復(fù)了。
如果計(jì)時(shí)器超時(shí)并且分片保持尚未認(rèn)可狀態(tài),則數(shù)據(jù)將被丟棄。這個(gè)計(jì)時(shí)器的初始值為IP數(shù)據(jù)報(bào)的生存期值,它依賴于實(shí)現(xiàn)的,一些實(shí)現(xiàn)允許對(duì)他進(jìn)行配置。
重組步驟
在接受方,一個(gè)由發(fā)送方發(fā)出的原始數(shù)據(jù)IP報(bào),將所有的分片重新組合,才能夠提交到上一層協(xié)議,每一個(gè)將被重組的IP數(shù)據(jù)報(bào)都用一個(gè)ipq結(jié)構(gòu)來(lái)表示
為了能夠有效提高組裝分片,用于保存分片的結(jié)構(gòu)必須做到以下幾點(diǎn)
(1)快速定位某一個(gè)數(shù)據(jù)報(bào)的一組分組
(2)在屬于某一個(gè)數(shù)據(jù)報(bào)的一組分片中快速插入新的分片
(3)有效的判斷一個(gè)數(shù)據(jù)報(bào)的所有分片是否已經(jīng)被全部接收
(4)具有重組超時(shí)機(jī)制,如果在重組完成之前超時(shí)溢出,則刪除該數(shù)據(jù)報(bào)的所有內(nèi)容
這篇文章主要為大家分析了IP數(shù)據(jù)報(bào)的分片和組裝原理是什么的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì)易懂,操作細(xì)節(jié)合理,具有一定參考價(jià)值。如果感興趣的話,不妨跟著跟隨小編一起來(lái)看看,下面跟著小編一起深入學(xué)習(xí)“IP數(shù)據(jù)報(bào)的分片和組裝原理是什么”的知識(shí)吧。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
本文標(biāo)題:IP數(shù)據(jù)報(bào)的分片和組裝原理是什么-創(chuàng)新互聯(lián)
鏈接URL:http://chinadenli.net/article48/cdjjhp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、虛擬主機(jī)、網(wǎng)站營(yíng)銷、自適應(yīng)網(wǎng)站、建站公司、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容