IP切片及重組

來源:互聯網
上載者:User

標籤:ip協議   傳輸裝置   資料包   

分區:就是當一個skb包長度大於傳輸裝置或者鏈路上物理裝置的mtu時,會根據一定的方式進行切割,從而使報文得以發送出去。但是這裡需要說明,分區又分為IP和TCP分區兩種,由於tcp報文有自己的機制去分區,不需要依賴IP層分區;而對於udp或者icmp等報文,只能依賴IP層去分區。

分區與重組關係:IP協議理論上允許的最大IP資料報為65535位元組(16位來表示包總長)。但是因為協議棧網路層下面的資料連結層一般允許的幀長遠遠小於這個值,例如乙太網路的MTU(即Maximum Transmission Unit,傳輸單元最大值)通常在1500位元組左右。假如我們需要傳輸一個位元組為4600的資料,則我們需要將其分為四片。所以較大的IP資料包會被分區傳遞給資料連結層發送,分區的IP資料報可能會以不同的路徑傳輸到接收主機,接收主機通過一系列的重組,將其還原為一個完整的IP資料報,再提交給上層協議處理。

IP資料報格式:

650) this.width=650;" src="http://s4.51cto.com/wyfs02/M02/84/67/wKioL1ePhx-xqHOvAAD3_f14CGw877.png-wh_500x0-wm_3-wmp_4-s_1671124133.png" title="哦哦.PNG" alt="wKioL1ePhx-xqHOvAAD3_f14CGw877.png-wh_50" />


    把一份IP資料報文分區以後,只有到達目的地才進行重新組裝,這裡的目的地是指IP報文傳送的下一站,而不是最終的目的地,因此分區和重新組裝的過程對傳輸層是透明的。

    在IP前序中,16位標識、3位標誌、13位段位移就是用於IP報文的分區與重組的。其中標識欄位長度為16位元,用於標識一個IP資料報。也就是說當發送端將某個較大的IP報文分區進行傳輸時,其中每個分區的識別欄位都是相同的,代表這些分區是屬於同一個資料報。段位移欄位13位元,用於指示該片在未經處理資料報中所處的位置。

標誌欄位有三位,其中第一位未使用;第二位用於指出是否要對資料報分段,稱為“請勿分段(DF)”位,如果該位的值設定為1,表示該資料報不能分段。如果必須對資料報分段,而DF位又置為1,則資料報會被丟棄,並向源端發送一個ICMP差錯報文;第三位用於指出當前分段後面是否還有更多的分段,如果此位置0,表示當前分段是資料報的最後一個分段。 

650) this.width=650;" src="http://s1.51cto.com/wyfs02/M02/84/67/wKiom1ePhc2h6cx4AAAas_bzAXg107.png-wh_500x0-wm_3-wmp_4-s_1729570861.png" title="無標題.png" alt="wKiom1ePhc2h6cx4AAAas_bzAXg107.png-wh_50" />

分區函數:

ip_fragment(int ip_fragment(struct sk_buff *skb, int (*output)(struct sk_buff *)))

首先ip_fragment必須處理如下兩種情況:

  <1>必須切成小塊的大資料,要切割大資料就需要分配新的緩衝區,並且在大的緩衝區和小緩衝區見做記憶體的拷貝。

  <2>不需要再分區的資料鏈表或數組,如果分配的緩衝區又足夠的空間新增較抵層的L3頭和L2頭,則ip_fragment處理這些緩衝區不需要進行記憶體拷貝。ip層要做的就是

重組函數:

int ip_defrag(struct sk_buff *skb,u32 user)

IP分區的優點是它為上層協議提供了一個透明的傳輸管道,使上層協議不必關心底層硬體技術,缺點是:在傳輸過程中,即使丟失其中的一片資料也要重傳整個資料報。

本文出自 “11440755” 部落格,請務必保留此出處http://luodn.blog.51cto.com/11440755/1828331

IP切片及重組

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.