【網絡協議抓包分析】ARP地址解析協議


前言

計算機之間可以相互通信的前提是要知道對方的地址,才可以發送信息給其他計算機,就像別人要聯系你也得先知道你的電話號碼一樣。這里的地址因為網絡分層的原因就包括IP地址和MAC地址(即網卡地址、硬件地址)。
計算機發送的信息最終都是被轉換成比特流在物理層上傳輸,所以我們一定要知道的目的主機的MAC地址,最終信息才可以被發送給目的主機。但是我們一般只擁有目標主機的IP地址(假設之前沒有與該目的主機通信過),那么在向目的主機發送數據包之前,我們要先獲取到目標主機的MAC地址。ARP(Address Resolution Protocol)協議便是解決這個問題而存在的,ARP的功能就是將IP地址解析成MAC地址。下面將介紹ARP的工作流程以及抓包分析ARP協議。

ARP工作流程

通信主機依據在同一網段和不同網段可以分為兩種情況,兩種情況的工作過程都包括請求過程和響應過程。

相互通信主機在同一網段

主機A與主機B通信,知道主機B的IP地址后,還要得到主機B的MAC地址。通過將子網掩碼與主機B的IP地址相與發現目的主機與自己在同一網段中,於是主機A獲取主機B的MAC地址將按以下過程進行。

  • 主機A首先在自己的ARP緩存表中檢查主機B匹配的MAC地址,若有,則封裝數據包填寫好主機B的MAC地址,然后發送數據包;否則,向所在網段廣播ARP請求,執行下面將的流程。

  • 同網段上的所有主機都會收到主機A的ARP請求並且檢查請求的IP地址是否與自己的IP地址匹配。若是不匹配,則求其該ARP請求
  • 主機B發現自己的IP地址與請求的IP地址匹配,則將主機A的IP地址與MAC地址(映射關系)添加到自己ARP緩存表。
  • 主機B將包含其MAC地址的ARP響應消息單播發送給主機A
  • 主機A收到來自主機B的響應消息后,就會把主機B的IP地址與MAC地址的映射關系存入本地ARP緩存表中。該映射記錄的有效時限默認是120s,當超時后,若在與主機B通信則重復請求過程。得到主機B的MAC地址后,就可以與主機B正常通信了。

相互通信的主機在不同網段

不同層次、不同區間的源地址和目的地址的轉換
  • 當主機A與主機B不在同一網段時,主機A就需要通過網關將信息發送出去。主機A會按照第一種情況得到網關的MAC地址,然后封裝數據,將封裝好的數據發送給網關。在封裝數據包時,源IP地址和源MAC地址填的就是主機A的IP和MAC地址,目的IP填為主機B的IP地址,目的MAC地址填網關(信息是通過網關再傳出去)。
  • 網關收到該數據包后,發現目標MAC地址是自己,但是目標IP確實其他主機,所以它不再繼續向上處理這個數據包。而是將數據包發送給下一跳路由(查路由表得出下一跳路由),發送前修改數據包的目的MAC地址為下一跳路由器的MAC地址(此地址由ARP請求獲得)。
  • 直到到某一路由器時,該路由器發現,該數據包的目的IP地址在自己所連的網段中,便先獲取到主機B的MAC地址,然后修改數據包的目的MAC地址,就可以將數據包發送給主機B。由此實現不同網段的主機A和B的通信。

得出的幾點結論

  • 需要注意ARP是解決同一局域網上的主機或路由器的IP地址和硬件地址映射問題。
  • 當源主機和目的主機不在不同一網段上時,數據包就會經過路由轉發,數據包的目的MAC地址也將不斷變化,但是源IP和目的IP是不會變的。在同一網段,源主機就會直接使用ARP請求得到目的主機的MAC地址。
  • 總的來說ARP請求過程可以概括為:廣播請求,單播回應

ARP緩存表

ARP緩存包含一個或多個表,這些表被稱為ARP緩存表,是用於存儲IP地址與其對應的MAC地址。為什么要把這些映射關系存儲起來呢?目的就是為了提高工作效率。將訪問的主機的MAC地址記下來,下一次訪問時就不必在啟用ARP協議(當然,映射記錄是由生存期限的)。

可以提高ARP效率的方法

ARP緩存是一種提高ARP效率的方法。還可以有:

  • 收到ARP請求的所有主機都緩存其中的IP/MAC,而不是直接丟棄
  • 主機入網時,主動廣播它的IP/MAC地址對

ARP抓包分析

ARP幀格式

請查看上一篇文章了解:https://www.cnblogs.com/myworld7/p/8430223.html#_label2

ARP請求包

廣播發送

ARP響應包

單播發送

無償ARP/免費ARP

廣播發送

小結

要想多了解協議,還是的抓包慢慢分析才得行。

參考:https://www.cnblogs.com/chengsheng/p/5628319.html


免責聲明!

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



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