[英]Fragmentation of TCP packet at network layer
假設一個TCP消息包含900字節的數據和20字節的TCP標頭。 現在,如果我們有一個鏈接可以支持最大512字節的幀大小,那么在傳輸層上將有2個TCP數據包,它們的大小足夠小,可以通過此鏈接發送。 還是將它們在數據鏈路層進一步細分?
以下哪一項會發生:
Transport layer: h1 data
Network layer: h2 h1 data
data link layer: frame 1 - h3 h2 h1 data-part1
frame 2 - h3 h2 h1 data-part2
要么
data link layer: frame 1 - h3 h2 h1 data-part1
frame 2 - h3 data-part2
碎片是IPv4 DNA的一部分,它發生在IPv4的第3層中。 IPv6消除了碎片,發送主機只能發送正確大小的數據包(將數據預碎片化)。
路由器在第3層(網絡層)運行,並且在IPv4路由器中會發生分段。 如果IPv6數據包對於下一跳而言太大,則路由器會毫不客氣地將其丟棄,並將ICMPv6消息發送回源主機。
互聯網協議還提供了長數據報的分段和重組(如果需要),以便通過“小數據包”網絡進行傳輸。
和
互聯網協議實現兩個基本功能:尋址和分段。
和
在將消息從一個Internet模塊路由到另一個Internet模塊時,數據報可能需要遍歷最大數據包大小小於數據報大小的網絡。 為了克服這個困難,在互聯網協議中提供了分段機制。
碎片過程的說明:
碎片化
當Internet數據報起源於允許大數據包大小的本地網絡並且必須穿越將數據包限制為較小大小的本地網絡到達目的地時,必須進行分段。
互聯網數據報可以標記為“不要分段”。 如此標記的任何Internet數據報在任何情況下都不得進行Internet分段。 如果標記為“不分段”的互聯網數據報無法在不分段的情況下傳遞到其目的地,則應將其丟棄。
Internet協議模塊不可見的跨本地網絡的分段,傳輸和重組稱為內部網分段,可以使用[6]。
Internet分段和重組過程需要能夠將數據報分解為幾乎任意數量的片段,以便稍后進行重組。 片段的接收者使用標識字段來確保不同數據報的片段不會混合。 片段偏移字段告訴接收者片段在原始數據報中的位置。 片段的偏移量和長度確定了此片段覆蓋的原始數據報的部分。 more-fragments標志指示(通過重置)最后一個片段。 這些字段提供了足夠的信息來重組數據報。
標識字段用於區分一個數據報的片段和另一個數據報的片段。 Internet數據報的始發協議模塊將標識字段設置為對於該源-目的地對和協議必須唯一的值,以確保該數據報在Internet系統中處於活動狀態。 完整數據報的始發協議模塊將more-fragments標志設置為零,並將片段偏移設置為零。
為了分段較長的Internet數據報,Internet協議模塊(例如,在網關中)將創建兩個新的Internet數據報,並將Internet報頭字段的內容從長數據報復制到兩個新的Internet報頭中。 長數據報的數據在8個八位位組(64位)邊界上分為兩部分(第二部分可能不是8個八位位組的整數倍,但第一部分必須是)。 在第一部分NFB中調用8個八位位組塊的數量(對於分塊數量)。 數據的第一部分放置在第一個新的Internet數據報中,並且總長度字段設置為第一個數據報的長度。 more-fragments標志設置為1。 數據的第二部分放置在第二個新的Internet數據報中,並且總長度字段設置為第二個數據報的長度。 more-fragments標志帶有與長數據報相同的值。 第二個新的Internet數據報的分片偏移字段設置為長數據報加NFB中該字段的值。
可以將此過程推廣到n向拆分,而不是所描述的雙向拆分。
為了組裝Internet數據報的片段,Internet協議模塊(例如,在目標主機上)將Internet數據報的四個字段(標識,源,目標和協議)的值都相同。 通過將每個片段的數據部分放置在該片段的Internet標頭中的片段偏移量指示的相對位置來完成組合。 第一個片段的片段偏移量將為零,而最后一個片段的more-fragments標志將重置為零。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.