RFC791(IP協議) 概述

2021-08-30 06:43:23 字數 2515 閱讀 6405

下圖說明了ip協議再整個協議分層中所處的位置:

ip協議一側對接的是高層的主機對主機型別的協議,另一側對接的是本地網路協議。這裡的「本地網路協議」可以是建築內的小型網路,也可以是像阿帕網的大型網路。

應用程式間傳輸資料報的操作模型可以用如下的場景來描述(假設資料傳輸中間會經過乙個閘道器):

發報應用程式準備好資料,呼叫本地ip模組把資料以資料報的形式發出,同時傳遞給ip模組目的位址和其他需要的呼叫引數。

ip模組準備好ip包頭,並把資料和ip包頭拼接起來。ip模組決定ip位址的本地網路位址,在這裡它是閘道器的位址。ip模組傳送資料報和本地網路位址給本地網路介面。

本地網路介面建立乙個本地網路包頭,並拼接ip模組傳送的資料報,然後通過本地網路傳送出去。

資料報到達本地網路頭中指定的閘道器主機,閘道器主機的本地網路介面剝掉本地網路包頭,併發資料傳遞給ip模組。ip模組通過資料報中的ip位址發現需要**到第二個網路的主機。ip模組決定可以到達目的主機的本地網路位址,然後呼叫本地網路介面傳送資料到第二個網路。

本地網路介面建立乙個本地網路包頭,並拼接資料報,然後傳送到目的主機。

在目的主機,資料報被本地網路介面去掉本地網路包頭,然後傳遞給ip模組。

ip模組決定資料報是要傳送給主機上的哪個應用程式。ip模組響應系統呼叫,以呼叫結果的方式把資料、源位址、其他引數傳遞給應用程式。

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。

網路包通過一系列的閘道器繼續在網路上傳輸。閘道器還實現了其他閘道器間協議(ggp),處理路由資訊、網路控制資訊。

閘道器實際上包含任何跨網路的中間裝置,一般是指路由器,也可以是有多張網絡卡的主機可以不實現高層網路協議,只把ggp併入ip模組。