IPv4數據報的封裝與解封裝

摘自:《深入理解計算機網絡》 王達著 機械工業出版社
IPv4數據報格式請點擊這裏

IPv4數據報的封裝與解封裝

IPv4數據報的封裝

發送端網絡層生成的IP數據報還要繼續往下傳輸,到達數據鏈路層後就要封裝成數據幀了。IP數據報的“幀封裝”原理很簡單,只需要把來自網絡層的整個IP數據報(包括包頭部分和數據部分)當做數據鏈路層的數據部分,然後再前面加上與數據鏈路層對應的協議頭即可。以太局域網中,由於數據鏈路層分成了LLC子層和MAC子層的協議頭封裝,最終形成數據鏈路層的以太網MAC幀,如下圖所示。在幀頭中我們一般要加上源和目的節點的MAC地址,因爲數據鏈路層是通過MAC地址進行尋址的。


IPv4數據報的封裝

IPv4數據報的封裝和解封裝流程


IPv4數據報的封裝和解封裝流程

以上所述是經過一個網絡的情形,如果一個IP數據報在整個傳輸過程中要經過幾個網絡時,怎麼辦呢?這是其實又涉及到一個解封裝的過程。解封裝就是由數據鏈路層的幀格式解封成原始的數據報格式。當源主機發送一個IP數據報經過兩個路由器連接的三個網絡時的封裝和解封過程如下(流程圖見上圖):
1. 當源主機發送一個IP數據報時,在內網網絡1中傳輸是以幀形式進行的,所以首先需要把元素的IP數據報封裝成幀,在網絡1中的鏈路上進行傳輸。此時把原來的IP數據報作爲整個MAC幀的“數據”部分,然後加上網絡1鏈路層協議的頭部信息,作爲幀頭,即幀頭1。
2. 當幀傳輸到路由器1連接網絡1的接口時,相當於要把幀從數據鏈路層上傳到網絡層,於是要對原來的幀進行解封裝,去掉幀頭和幀尾信息(在有幀尾的情況下),還原出原來的IP數據報,以識別包中的目的地址信息,然後根據路由器中的路由表信息進行路由轉發。此時IP數據報的內容都沒有改變,包括IP包頭部分中的源和目的地址信息等。
3. 當IP數據報在路由器1中從網絡1路由到網絡2後,又需要在網絡2的鏈路層進行傳輸,所以又要重新封裝成幀,仍把原來的整個IP數據報作爲數據部分,不過此時加上的是網絡2鏈路層的協議頭信息作爲幀頭部,即幀頭2。
4. 當幀傳輸到路由器2連接網絡2的接口時,又相當於從數據鏈路層到了網絡層,所以又要對幀進行解封裝,仍舊還原出原來的IP數據報,使路由器2可以識別包中的目的地址信息,只有這樣路由器2才能根據其路由表信息進行正確的數據報路由、轉發。
5. 當IP數據報在路由器2從網絡2到網絡3後,又需要在網絡3的鏈路層進行傳輸,所以又要重新封裝和解封,仍把原來的整個IP數據報作爲數據部分,不過此時加上的是網絡3鏈路層的協議頭信息作爲幀頭部,即幀頭3。
6. 當從網絡3的數據鏈路層把幀傳輸到目的主機時,在目的主機上又會對幀進行解封裝,去掉幀頭和幀尾,還原出原來的IP數據報,以獲取IP數據報中的真正數據。
從以上的過程可以看出,IP數據報無論經過了多少個網絡,整個數據報內容都是不會改變的,包括包頭部分的源和目的地址信息。變化的只是在不同網絡數據鏈路上傳輸的幀頭信息,即在不同網絡鏈路上傳輸的幀源MAC地址會改變,目的MAC地址不會改變。

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