RFC791(IP協議)——概述

2.概述

2.1 和其他協議的關係

下圖說明了IP協議再整個協議分層中所處的位置:
在這裏插入圖片描述

IP協議一側對接的是高層的主機對主機類型的協議,另一側對接的是本地網絡協議。這裏的“本地網絡協議”可以是建築內的小型網絡,也可以是像阿帕網的大型網絡。

2.2 操作模型

應用程序間傳輸數據報的操作模型可以用如下的場景來描述(假設數據傳輸中間會經過一個網關):

發報應用程序準備好數據,調用本地IP模塊把數據以數據報的形式發出,同時傳遞給IP模塊目的地址和其他需要的調用參數。

IP模塊準備好IP包頭,並把數據和IP包頭拼接起來。IP模塊決定IP地址的本地網絡地址,在這裏它是網關的地址。IP模塊發送數據報和本地網絡地址給本地網絡接口。

本地網絡接口創建一個本地網絡包頭,並拼接IP模塊發送的數據報,然後通過本地網絡發送出去。

數據報到達本地網絡頭中指定的網關主機,網關主機的本地網絡接口剝掉本地網絡包頭,併發數據傳遞給IP模塊。IP模塊通過數據報中的IP地址發現需要轉發到第二個網絡的主機。IP模塊決定可以到達目的主機的本地網絡地址,然後調用本地網絡接口發送數據到第二個網絡。

本地網絡接口創建一個本地網絡包頭,並拼接數據報,然後發送到目的主機。

在目的主機,數據報被本地網絡接口去掉本地網絡包頭,然後傳遞給IP模塊。

IP模塊決定數據報是要發送給主機上的哪個應用程序。IP模塊響應系統調用,以調用結果的方式把數據、源地址、其他參數傳遞給應用程序。

在這裏插入圖片描述

2.3功能說明

IP協議的功能或者用途是通過一組互相連接的網絡進行數據傳輸。傳輸的過程IP協議把數據報從一個網絡傳輸到另一個網絡,直到目的地爲止。IP模塊存在於網絡中的主機和網關裏。IP模塊通過解析網絡地址把數據報從各自的網絡傳輸到另一個IP模塊。因此,IP協議的一個重要機制就是網絡地址。

在數據報從一個IP模塊路由到另一個IP模塊的過程中,數據報可能會經過一個最大包大小小於數據報大小的網絡。爲了解決這種問題,IP協議提供了分片的機制。

尋址

首先說明名字(主機名或者域名)、地址、路由之間的區別:名字指出我們尋找的是什麼,地址指出它在哪裏,路由指出怎麼到達那裏。IP協議主要處理其中的地址問題,高層協議(比如,主機間協議或者應用層協議)處理名字到地址的映射。網絡模塊完成網絡地址到局域網地址的映射。低層協議(比如,局域網或者網關)處理局域網地址到路由的映射。

地址是4個8字節數字組成的固定長度(32位)字符串。地址由前部分的網絡號和後部分的本地地址組成。網絡地址分成三類:A類地址最高比特位爲0,後續7個比特位代表網絡號,剩下的24比特位是本地地址;B類地址最高兩個比特位是10,後續14個比特位是網絡號,最後16個比特位是本地地址;C類地址最高三個比特位是110,後續21個比特位是網絡號,最後8個比特位是本地地址。網絡地址分類法已經不再使用,現在使用CIDR的方式區分是否在同一個網段

映射網絡地址到本地地址必須特別注意:一個物理主機必須能夠扮演多個主機,使用多個網絡地址;有些主機有多個獨立的物理接口(比如,網卡)。

也就是說,一個主機可能有多個連接到網絡的接口,每個接口有多個邏輯網絡地址。

分片

網絡包分片是必須的,因爲它可能在一個允許大包的局域網生成,並且需要通過一個限制網絡包必須是小包的局域網,然後才能到達目的地。

網絡包可以標記成不允許分片。一旦被標記成不允許分片,不論在任何網絡環境下,網絡包都不會被分片。如果被標記的網絡包不分片,就不能分發到目的網絡,那麼,網絡包會被丟棄。

分片包括:分片、傳輸、重組,這個過程有IP模塊完成。

分片和重組過程能夠把網絡包切分成任意數量的分片,並且能夠重組分片,還原成原始的數據包。分片的接收端依據編號字段保證不同的數據報分片不會發生錯亂。分片的偏移量字段指明分片在原始報文中的位置。分片的偏移量和長度決定了分片覆蓋了原始報文的哪一部分字符。更多分片字段指明當前是否爲最後一個分片。這些分片提供了足夠的信息進行數據包的重組。

編號字段用來區分當前包的分片屬於當前包,而不是其他的包。產生數據包的IP模塊設置編號字段爲一個唯一值,保證這個值在數據包的生存期間,在當前原地址-目標地址及協議類型下不會重複。對於不需要分片的完整數據包,設置更多分片和偏移量字段值爲0。

分片一個長數據包,IP模塊創建兩個新的數據包,並且拷貝元數據包的包頭到兩個新數據包的包頭。長數據包的包數據以8字節爲邊界切分成兩部分(第二部分可能不是8字節的整倍數,但是第一部分必須是)。把第一部分的數據塊叫做NFB。第一部分數據放到第一個數據包裏,總數據包長度放到第一個數據包的長度字段裏。第一個數據包的更多分片字段賦值爲1.第二部分數據放到第二個數據包裏,數據的長度賦值給第二個數據包的長度字段。第二個數據包的更多分片字段賦值爲原數據包的更多分片字段值。第二個數據包的偏移量字段賦值爲原數據包的偏移量加NFB的長度。

以上是2分的分片方式,也可以採用N分的分片方式。

重組網絡分片,IP模塊組裝所有編號、原地址、目的地址、協議類型四組值相同的數據包。重組過程依據數據包的偏移量值把分片數據組合到一起。第一個分片的偏移量爲0,最後一個分片的更多分片字段爲0。

2.4 網關

網絡包通過一系列的網關繼續在網絡上傳輸。網關還實現了其他網關間協議(GGP),處理路由信息、網絡控制信息。
網關實際上包含任何跨網絡的中間設備,一般是指路由器,也可以是有多張網卡的主機可以不實現高層網絡協議,只把GGP併入IP模塊。

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