天天看點

網絡基礎篇——IP資料報格式及路由器報表算法

1、Ip資料報格式

網絡基礎篇——IP資料報格式及路由器報表算法

IP資料報的首部長度和資料長度都是可變的,但總是4位元組的整數倍。

版本号表示IP資料報是哪個版本,對于PIv4,4位版本字段是4

4位首部長度的數值都是以4位元組為機關的,最小值為5,最大值是15,是以首部長度的大小介于20到60。

8位TOS字段有3個位用來指定IP資料報的優先級(目前已經廢棄不用),還有4位表示可選的服務類型,還有一位總為0。

16位總長度是整個資料報的位元組數。

三位标志和13位片移用于分片。(後面細談)

TTL為資料報的生存時間。

2、IP資料報的分片群組裝以及三位标志的含義

IP分片的原理:

分片和重新組裝的過程對傳輸層是透明的,其原因是當IP資料報進行分片之後,隻有當它到達下一站時,才可進行重新組裝,且它是由目的端的IP層來完成的。分片之後的資料報根據需要也可以再次進行分片。

IP分片和完整IP封包差不多擁有相同的IP頭,ID域對于每個分片都是一緻的,這樣才能在重新組裝的時候識别出來自同一個IP封包的分片。在IP頭裡面,16位識别号唯一記錄了一個IP包的ID(ipid),具有同一個ID的IP分片将會重新組裝;而13位片偏移則記錄了某IP片相對整個包的位置;而這兩個表中間的3位标志則标志着該分片後面是否還有新的分片。這三個域就組成了IP分片的所有資訊, 接受方就可以利用這些資訊對IP資料進行重新組織。

标志字段的作用

标志字段在分片資料報中起了很大作用,在資料報分片時把它的值複制到每片中。标志字段的其中一個比特稱作“不分片”位,用其中一個比特來表示“更多的片”。除了最後一片外,其他每個組成資料報的片都要把該比特置1。片偏移字段指的是該片偏移原始資料報開始處的位置。另外,當資料報被分片後,每個片的總長度值要改為該片的長度值。如果将标志字段的”不分片”比特置1,則IP将不對資料報進行分片。相反把資料報丢棄并發送一個I C M P差錯封包并通知源主機廢棄的原因。如果不是特殊需要,則不應該置1;最右比特置1表示該封包不是最後一個IP分片。

IP分片的步驟:

一個未分片的資料報的分片資訊字段全為0,即多個分片标志位為0,并且片偏移量為0。分片一個資料報,需執行以下幾個步驟:

 檢查DF标志位,查明是否允許分片。如果設定了該位,則資料報将被丢棄,并将一個ICMP錯誤傳回給源端。

 基于MTU值,把資料字段分成兩個部分或者多個部分。除了最後的資料部分外,所有建立資料選項的長度必須為8個位元組的倍數。

 每個資料部分被放入一個IP資料報。這些資料報的封包頭略微修改了原來的封包頭。

 除了最後的資料報分片外,所有分片都設定了多個分片标志位。

 每個分片中的片偏移量字段設為這個資料部分在原來資料報中所占的位置,這個位置相對于原來未分片資料報中的開頭處。

 如果在原來的資料報中包括了選項,則選項類型位元組的高位位元組決定了這個資訊是被複制到所有分片資料報,還是隻複制到第一個資料報。

 設定新資料報的封包頭字段及總長度字段。

 重新計算封包頭部校驗和字段。

此時,這些分片資料報中的每個資料報如一個完整IP資料報一樣被轉發。IP獨立地處理每個資料報分片。資料報分片能夠通過不同的路由器到達目的。如果它們通過那些規定了更小的MTU網絡,則還能夠進一步對它們進行分片。

在目的主機上,資料被重新組合成原來的資料報。發送主機設定的辨別符字段與資料報中的源IP位址和目的IP位址一起使用。分片過程不改變這個字段。

重組

為了重新組合這些資料報分片,接收主機在第一個分片到達時配置設定一個存儲緩沖區。這個主機還将啟動一個計時器。當資料報的後續分片到達時,資料被複制到緩沖區存儲器中片偏移量字段指出的位置。當所有分片都到達時,完整的未分片的原始資料包就被恢複了。處理如同未分片資料報一樣繼續進行。

如果計時器逾時并且分片保持尚未認可狀态,則資料報被丢棄。這個計時器的初始值稱為IP資料報的生存期值。它是依賴于實作的。一些實作允許對它進行配置。在某些IP主機上可以使用netstat指令列出分片的細節。如TCP/IP for OS/2中的netstat-i指令。

重組的步驟:

在接收方,一個由發送方發出的原始IP資料報,其所有分片将被重新組合,然後才能送出到上層協定。每一個将被重組的IP資料報都用一個ipq結構執行個體來表示,是以先來看看ipq這個非常重要的結構。

為了能高效地組裝分片,用于儲存分片的資料結構必須能做到以下幾點:

1、快速定位屬于某一個資料報的一組分組

2、在屬于某一個資料報的一組分片中快速插入新的分片

3、有效地判斷一個資料報的所有分片是否已經全部接收

4、具有組裝逾時機制,如果在重組完成之前定時器溢出,則删除該資料報的所有内容

繼續閱讀