OSI互聯數據包封裝與解封裝
當我們在七層協議最上層,主機A想和其它主機通信, 比如telnet到主機B,各層都為數據打包後再封裝上自己能識別的數據標簽,現在我們只說四層以下的通信過程。
1、當一個高層的數據包到達傳輸層,由於telnet使用TCP協議,傳輸層將上層傳過來的數據不變再封裝TCP的包頭以便目標主機可以正確解包,繼續向下層(網絡層)傳遞。
2、網絡層同樣不會改變之前的數據包,當然也包括之前封裝的任何包頭,首先主機
3.在數據鏈路層這時就不會封裝目的的MAC地址,他也不知道目的MAC地址是什麽,這時他會封裝網關的MAC地址,而讓網關將數據轉發出去。
同時在網關收到數據時候,他會查看目標IP地址,當然不是他自己的IP地址了,所以他知道這個數據包是要由他路由出去的,然後路由器查找自己的路由表,若存在到該網絡的路由便按路由表從對應接口發出去,若路由表中沒有到該網絡的路由則檢查是否存在默認路由,如果沒有則丟棄數據包,並向源主機發送網絡不可達
數據鏈路層其實包括兩個子層,一是LLC子層另一個是MAC子層。我們知道在以太網中通信是物理尋址的,在這層中會封裝自己的MAC地址及對方的MAC地址。當然用戶是沒有通知他MAC地址是多少的,這時主機會查自己的緩存表,看有沒有主機B的MAC地址,如果有就封裝,否則他會發一個ARP的地址解析廣播包,該包雖然可以向所有處在同一廣播域中的主機發送,,但只會傳遞到不同網絡的主機的數據鏈路層,更確切的說傳遞到了不同一網絡的主機的數據鏈路層的高層後就被丟棄了。
4、接著該數據會從我們的網線等傳輸介質傳出去,主機B當收到數據的時候進行相同的工作但是作相反的操作
計算機在接收到數據幀後,需要去掉為了傳輸而添加的附加信息,這稱為解封裝,是上述封裝操作的逆向過程。
本文出自 “寫個博客騙錢” 博客,請務必保留此出處http://dadonggg.blog.51cto.com/12672150/1948711
OSI互聯數據包封裝與解封裝