當咱們在七層協議最上層,主機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進行封裝,而後向下層傳遞。ide
3.在數據鏈路層這時就不會封裝目的的MAC地址,他也不知道目的MAC地址是什麼,這時他會封裝網關的MAC地址,而讓網關將數據轉發出去。網站
同時在網關收到數據時候,他會查看目標IP地址,固然不是他本身的IP地址了,因此他知道這個數據包是要由他路由出去的,而後路由器查找本身的路由表,若存在到該網絡的路由便按路由表從對應接口發出去,若路由表中沒有到該網絡的路由則檢查是否存在默認路由,若是沒有則丟棄數據包,並向源主機發送網絡不可達icmp消息。若一切正常,路由器會把數據包發給了他的鄰居或網絡運營商的路由器上去,重複以上動做,在TTL值爲0以前將數據傳遞給某X官方網站,數據傳遞成功! spa
數據鏈路層其實包括兩個子層,一是LLC子層另外一個是MAC子層。咱們知道在以太網中通訊是物理尋址的,在這層中會封裝本身的MAC地址及對方的MAC地址。固然用戶是沒有通知他MAC地址是多少的,這時主機會查本身的緩存表,看有沒有主機B的MAC地址,若是有就封裝,不然他會發一個ARP的地址解析廣播包,該包雖然能夠向全部處在同一廣播域中的主機發送,,但只會傳遞到不一樣網絡的主機的數據鏈路層,更確切的說傳遞到了不一樣一網絡的主機的數據鏈路層的高層後就被丟棄了。blog
4、接着該數據會從咱們的網線等傳輸介質傳出去,主機B當收到數據的時候進行相同的工做可是做相反的操做接口
計算機在接收到數據幀後,須要去掉爲了傳輸而添加的附加信息,這稱爲解封裝,是上述封裝操做的逆向過程。路由