1. 程式人生 > >網路協議抓包分析——ARP地址解析協議

網路協議抓包分析——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