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


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

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

2、網絡層同樣不會改變之前的數據包,當然也包括之前封裝的任何包頭,
首先主機A要對目標主機作判斷,他會用自己的IP地址和自己的子網掩碼進行與運算結果是172.16.12.0
然后在拿自己的掩碼和主機B的IP地址作與運算,假若結果是172.16.12.0,這個時候他知道他們在同一網段內,這時他會封裝自己的IP及目標的IP地址,同上層傳下來的數據一下向下傳。
假若是61.152.251.0,發現不在同一個網段,注意:這時也是用自己IP和目標IP進行封裝,然后向下層傳遞。 在數據鏈路層這時就不會封裝目的的MAC地址,他也不知道MAC地址是什么,這時他會封裝網關的MAC地址,而讓網關將數據轉發出去。
同時在網關收到數據時候,他會查看目標IP地址,當然不是他自己的IP地址了,所以他知道這個數據包是要由他路由出去的,然后路由器查找自己的路由表,若存在到該網絡的路由便按路由表從對應接口發出去,
若路由表中沒有到該網絡的路由則檢查是否存在默認路由,如果沒有則丟棄數據包,並向源主機發送網絡不可達icmp消息。
若一切正常,路由器會把數據包發給了他的鄰居或網絡運營商的路由器上去,重復以上動作,在TTL值為0之前將數據傳遞給某X官方網站,數據傳遞成功!
3、數據鏈路層其實包括兩個子層,一是LLC子層另一個是MAC子層。我們知道在以太網中通信是物理尋址的,在這層中會封裝自己的MAC地址及對方的MAC地址。
當然用戶是沒有通知他MAC地址是多少的,這時主機會查自己的緩存表,看有沒有主機B的MAC地址,
如果有就封裝,否則他會發一個ARP的地址解析廣播包,該包雖然可以向所有處在同一廣播域中的主機發送,
但只會傳遞到不同網絡的主機的數據鏈路層,更確切的說傳遞到了不同一網絡的主機的數據鏈路層的高層后就被丟棄了。
4、接着該數據會從我們的網線等傳輸介質傳出去,主機B當收到數據的時候進行相同的工作但是作相反的操作

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM