1. 程式人生 > >OSI互聯數據包封裝與解封裝

OSI互聯數據包封裝與解封裝

數據包 封裝 解封裝

當我們在七層協議最上層,主機A想和其它主機通信, 比如telnet到主機B,各層都為數據打包後再封裝上自己能識別的數據標簽,現在我們只說四層以下的通信過程。

技術分享

技術分享

技術分享

1、當一個高層的數據包到達傳輸層,由於telnet使用TCP協議,傳輸層將上層傳過來的數據不變再封裝TCP的包頭以便目標主機可以正確解包,繼續向下層(網絡層)傳遞。

2、網絡層同樣不會改變之前的數據包,當然也包括之前封裝的任何包頭,首先主機

A要對目標主機作判斷,他會用自己的IP地址和自己的子網掩碼進行與運算結果是172.16.12.0,然後在拿自己的掩碼和主機BIP地址作與運算,假若結果是172.16.12.0,這個時候他知道他們在同一網段內,這時他會封裝自己的IP及目標的IP地址,同上層傳下來的數據一下向下傳。假若是61.152.251.0,發現不在同一個網段,註意:這時也是用自己IP和目標IP進行封裝,然後向下層傳遞。

3.在數據鏈路層這時就不會封裝目的的MAC地址,他也不知道目的MAC地址是什麽,這時他會封裝網關的MAC地址,而讓網關將數據轉發出去。

同時在網關收到數據時候,他會查看目標IP地址,當然不是他自己的IP地址了,所以他知道這個數據包是要由他路由出去的,然後路由器查找自己的路由表,若存在到該網絡的路由便按路由表從對應接口發出去,若路由表中沒有到該網絡的路由則檢查是否存在默認路由,如果沒有則丟棄數據包,並向源主機發送網絡不可達

icmp消息。若一切正常,路由器會把數據包發給了他的鄰居或網絡運營商的路由器上去,重復以上動作,在TTL值為0之前將數據傳遞給某X官方網站,數據傳遞成功!

數據鏈路層其實包括兩個子層,一是LLC子層另一個是MAC子層。我們知道在以太網中通信是物理尋址的,在這層中會封裝自己的MAC地址及對方的MAC地址。當然用戶是沒有通知他MAC地址是多少的,這時主機會查自己的緩存表,看有沒有主機BMAC地址,如果有就封裝,否則他會發一個ARP的地址解析廣播包,該包雖然可以向所有處在同一廣播域中的主機發送,,但只會傳遞到不同網絡的主機的數據鏈路層,更確切的說傳遞到了不同一網絡的主機的數據鏈路層的高層後就被丟棄了。

4接著該數據會從我們的網線等傳輸介質傳出去,主機B當收到數據的時候進行相同的工作但是作相反的操作

技術分享

計算機在接收到數據幀後,需要去掉為了傳輸而添加的附加信息,這稱為解封裝,是上述封裝操作的逆向過程。


本文出自 “寫個博客騙錢” 博客,請務必保留此出處http://dadonggg.blog.51cto.com/12672150/1948711

OSI互聯數據包封裝與解封裝