網絡之旅(三)

上一節是站在服務器和客戶端的角度講收發包的.這次我們站在包的角度上再看一下 一個包的一生

一個包被創建的過程

在這裏插入圖片描述
有這個表就可以看出 一個完整的包其實就是在數據包前加了三個包頭.

概述一個包的一生

當一個包在 IP 協議處進行最後的包裝後,它就開始了自己的旅程.遺憾的是 包 也不知道他的旅程會是怎樣的.
爲什麼這麼說呢 ?
因爲一個包只知道目的地 (IP地址告訴它)和下一站該去哪(MAC地址告訴它).每到一個驛站(網絡轉發設備),它就會詢問 我要去 目的地,我下一站應該去哪,然後他用答案 替換了 當前的下一站, 然後它又開始了自己的旅程,依次循環,直到到達目的地

IP地址(IP協議)和MAC地址(以太網協議)的關係

網絡轉發設備 --路由器.
路由器中有一張路由表,通過對比目的IP地址來查找下一個 IP 轉發設備的IP地址.
網絡轉發設備 – 集線器
集線器有一張表(以太網協議的表).通過這張表可以查出相應的傳輸方向.集線器在子網中將網絡包傳輸至下一個路由器

關係: IP協議在路由器中可以根據IP頭部找到一下個路由器的MAC地址,IP協議將下一個路由器的MAC地址替換掉當前的MAC地址,然後會委託以太網協議將包發到下一個路由器,依次循環.

MAC頭部

這裏對開始的圖片說明一下: MAC頭部是在IP協議層打包的,只不過是在以太網中使用 MAC 頭部.

字段名稱 長度(比特) 含義
接收方MAC地址 48 網絡包接收放的MAC地址,在局域網中使用這一地址來傳輸網絡包
發送方MAC地址 48 網絡包發送方的MAC地址,接收方通過它來判斷是誰發送了這個包
以太類型 16 使用協議的類型.
0800 :IP協議
0806 :ARP協議
86DD :IPv6

這裏有一個問題需要解決. 上面講了,IP協議將下一個路由器的MAC地址替換掉當前的MAC,那麼IP協議是怎樣知道下一個路由器的MAC地址呢??? 因爲路由表只知道 下一個路由器的 IP地址.

這裏又使用了ARP協議和廣播.
ARP:Address Resolution Protocol,地址解析協議 ---- 是根據IP地址獲取MAC地址的一個TCP/IP協議.
廣播:廣播可以把包發給鏈接在同一以太網中的所有設備.
ARP協議就向子網中的所有設備發出詢問.如果某一個設備的IP地址於ARP協議中的IP地址相同,這個IP地址的路由器就會把自己的MAC地址返回給該主機或路由器.

爲了提高查詢效率.計算機中有一個 ARP緩存的內存空間中會保留最近幾分鐘所查詢到的MAC地址.
每次查詢前現在ARP緩存區中查找一遍,如果沒有則再發起詢問.

那麼爲什麼ARP緩存區只保存最近幾分鐘的數據呢? 如果保存時間過長,對方的IP地址發生變化,ARP緩存的內容就會與現實發生差異.

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