TCP/IP協議族——網際協議版本4(IPv4)

一 概念

IP是TCP/IP協議族在網絡層使用的傳輸機制,是一種不可靠的無連接數據報協議(盡最大努力交付),它依靠更高層的協議來解決可靠性問題。

二 數據報

網絡層的分組稱爲數據報,數據報是一個可變長度的分組,它由兩部分組成:首部和數據。如下圖所示:

VER:版本,目前爲4。

HLEN:首部長度,以4字節爲單位,最小長度爲20字節。

總長度:以字節爲單位。爲何需要該字段?

封裝在一個幀裏不僅僅只有數據報,有時還有填充字段(IP數據報長度小於46字節時),此時剝去幀的首部和尾部得到的是數據報+填充字段,當機器對該數據報進行拆裝時,必須檢查總長度字段。以便確認數據的真正長度

備註:數據長度=總長度-首部長度

標識、標誌、分片偏移:用於分片。

生存時間:經過一個路由器減一,爲0時丟棄,該字段目的:

(1)防止路由表毀壞導致數據報在兩個或多個路由器間逗留很長時間,也沒能交付到主機。

(2)設置該字段爲1可把該分組閒着在局域網範圍。

協議:定義了使用此IP層服務的高層協議。

源地址、目的地址:兩個字段始終保持不變。

三 分片

3.1 最大傳輸單元MTU

當數據報被封裝成幀時,數據報的總長度必須小於數據鏈路層數據字段最大長度(以太網1500B)。而IP數據報的最大長度爲65535B,如果IP數據報長度大於MTU,則需要分割數據報,這就是分片。

數據報可以被源主機或途中的任何路由器分片,但數據報的重裝卻只能在目的主機上進行,理由如下:

(1)一個數據報的多個數據報片會走不同的路徑。

(2)同一數據報的多個數據報片總會到達目的主機。

(3)傳輸期間重裝會嚴重影響效率。

3.2 與分片相關的字段

對數據報進行分片的主機或路由器必須改變三個字段的值:標誌、分片偏移、總長度。其餘字段必須被複制,不管是否進行分片,校驗和總是要重新計算

與一個數據報的分片與重裝有關的字段是:標識、標誌和分片偏移

標識:標識+源IP地址唯一確定這個數據報。數據報分片時,標識字段的值要複製到所有分片中,即所有分片都具有相同的標識號。終點會將具有相同標識的分片組裝成一個數據報。

標誌:3位,第一位保留;第二位爲“不分片”位,爲1不可分片;第三位爲“還有分片”位,爲1標識其後還有分片。

分片偏移:分片在整個數據報中的相對位置(永遠是相對於原始數據報的)。以8B位單位。——第一個分片的字節數量能被8除

3.3 重裝策略

(1)第一個分片的分片偏移字段爲0。

(2)第一個分片的長度除以8得到第二個分片偏移值。

(3)第一個和第二個分片總長度除以8,得到第三個分片偏移值。

(4)繼續以上過程,直到最後一個分片的“還有分片”位爲0。

四 選項

IP數據報首部由兩部分組成:固定部分(20B)和可變部分(選項,最長40B)。


8位的長度字段定義了選項的總長度,包括類型字段和長度字段本身。

編號字段:

無操作:用作選項和選項間的填充,使下一個選項16或32位對齊。

選項結束:選項字段結束時的填充,後面跟着數據部分。

記錄路由:記錄處理數據報的因特網路由。

嚴格路由:預先指定數據報傳送時的路由。

不嚴格路由:所列路由器必須通過,但也可以通過其他路由器。

時間戳:記錄路由器處理數據報的時間。

備註:traceroute跟蹤分組的路由,-g選項實現不嚴格路由,-G實現嚴格路由

五 校驗和

發送端計算校驗和,接收端進行相同的計算,相符合則接受分組,否則丟棄分組。

5.1 發送端計算校驗和

(1)把分組劃分k段,每段n位(一般爲16)。

(2)反碼算術運算把所有段相加。

(3)最終結果取反碼。

5.2 接收端計算校驗和

(1)把分組劃分k段。

(2)把所有段相加。

(3)將和取反碼,結果爲0則接收分組。

5.3 IP分組中的校驗和

(1)把校驗和字段置爲0。

(2)把首部劃分爲16位的段。

(3)各段相加結果取反,並插入校驗和字段。

備註:IP分組校驗和僅覆蓋首部,而不管數據,原因?

(1)將數據封裝在IP數據報中的所有高層協議,都有一個涉及整個分組的校驗和字段。

(2)沒經過一個路由器,IP數據報的首部就要有所變化,但數據部分保持不變。校驗變化部分即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章