0x0806 ARP協議分析


轉載於 https://www.cnblogs.com/onlycat/p/11340872.html#/cnblog/works/article/11340872

一、基本概念

  ARP(Address Resolution Protocol) 即地址解析協議,用於實現從IP地址到MAC地址映射。

 

二、 ARP工作流程

2.1 同一網段ARP工作流程分析

1.  PC1 要和PC3 通行,首先查看自己的ARP表,查看其中是否包含PC3的MAC地址信息,如果找到對應關系,直接利用ARP表中的MAC地址對IP數據包進行封裝。並將數據包發送給PC3。

2. 如果PC1在ARP表中未找到PC3對應的MAC地址,則先緩存數據報文,然后利用廣播方式(目標MAC地址FF:FF:FF:FF:FF:FF)發送一個ARP報文請求,ARP請求中的發送端MAC地址分別是PC1的IP地址和MAC地址,接收端的IP地址為PC3的IP地址,MAC地址全為0,因為ARP請求報文是以廣播方式發送,所以該網段上的所有主機都可以接收到該請求包,但只有其IP地址與目的IP地址一致的PC3才會對該請求進行處理。

3. PC3將ARP請求報文中的發送端(即PC1)的IP地址和MAC地址存入自己的ARP表中。然后以單播方式向PC1發送一個ARP相應報文,應答報文中就包含了自己的MAC地址,也就是原來在請求報文中要請求的目的MAC地址。

4. PC1收到來自PC3的ARP響應報文之后,將PC3的MAC地址加入到自己的ARP表中以用於后續報文的轉發,同時將原來緩存的IP數據包再次修改(在目的MAC地址字段填上PC3的MAC地址)后發送出去。

 2.2 跨網段的ARP地址解析流程

  1. 如果主機A不知道網關的MAC地址(也就是主機A的ARP表中沒有網關對應的MAC地址表項),則主機A先在本網段中發出一個ARP請求廣播,ARP請求報文中的目的IP地址為網關的IP地址,代表其目的就是想獲得網關的MAC地址。如果主機A已經知道網關的MAC地址,則略過此步。
  2. 網關收到ARP廣播包后同樣會向主機A發回一個ARP應答包。當主機A收到的應答包中獲得網關的MAC地址后,在主機A向主機B發送的原報文的目的MAC地址字段填上網關的MAC地址后發給網關。
  3. 如果網關的ARP表中已有主機B對應的MAC地址,則網關直接將在來自主機A的報文中的目的MAC地址字段填上主機B的MAC地址后轉發給B。
  4. 如果網關ARP表中沒有主機B的MAC地址,網關會再次向主機B所在的網段發送ARP廣播請求,此時目的IP地址為主機B的IP地址,當網關從收到來自主機B的應答報文中獲得主機B的MAC地址后,就可以將主機A發來的報文重新再目的MAC地址字段填上主機B的MAC地址后發送給主機B。

 

 

三、協議格式

 

    以太網目的地址: 目的主機的硬件地址。目的地址全為1表示廣播地址

    以太網源地址:源主機的硬件地址

    幀類型:ARP:0x0806、 RARP:0x8035

    硬件類型:表示硬件地址類型,ARP當前可用硬件類型如下

類型 含義 備注 類型 含義 備注
0x001 以太網                           0x0012 本地網                       
0x002 實驗性以太網   0x0013 超鏈路  
0x003 業務無線電AX.25   0x0014 SMDS  
0x004 Proteon ProNet令牌環   0x0015 幀中繼  
0x005 ChaosNET   0x0016 ATM  
0x006 IEEE 802網   0x0017 HDLC(高級數據鏈路控制)  
0x007 ARCnet   0x0018 未指定  
0x008 超信道   0x0019 異步傳輸模式  
0x009 Lanstart   0x0020 串行線路  
0x0010 Autonet短地址   0x0021 異步傳輸模式  
0x0011 Local talks        

    協議類型:IP類型:0x0800

    硬件地址長度:對於以太網II來說,MAC地址作為硬件地址,因此該字段值為十六進制06

    協議地址長度:對於IPv4來,IP地址長度位32個字節,因此該字段值為十六進制04

    操作類型:ARP定義了兩種操作:0x0001(請求)、0x0002(應答)

    發送端以太網地址:對於以太網II來說,MAC地址作為硬件地址

    發送端IP地址:對於IPv4來, 值為IPv4地址

    目的以太網地址:對於以太網II來說,MAC地址作為硬件地址

    目的IP地址:對於IPv4來, 值為IPv4地址

       

四、協議分析

4.1 普通ARP

    即通過ip地址獲得MAC地址,即網絡中通過IP尋找對應MAC地址信息。

    1. 請求包

    解析:

      鏈路層解析:

主機(54 89 98 ec 0f 66) 向局域網內發送廣播(ff ff ff ff ff ff), 使用類型類型為 ARP (0806)

      網絡層解析:  

該數據包的硬件地址類型為以太網(00 01), 使用IPv4(08 00)協議類型, 其中硬件地址長度為6個字節(以太網MAC地址長度), 協議地址長度為4字節(IPv4地址長度);該數據包為ARP請求包(0001),  數據包內容為 宿主機MAC地址為54 89 98 ec 0f 66 ,IP地址為 192.168.1.2(c0 a8 01 02) 向網絡(ff ff ff ff ff ff)中請求IP地址為192.168.1.4(c0 a8 01 04的mac地址。該網絡中主機收到該數據包請求根據包中發送方地址信息,更新自己ARP表信息,若該IP地址為自己IP地址,則對請求方進行回復,若非自己IP地址,則丟棄。

 2. 響應包

  

解析:

      鏈路層解析:

主機(54 89 98 49 3a 78) 向主機發送響應消息(54 89 98 ec 0f 66), 使用類型類型為 ARP (0806)

      網絡層解析:  

該數據包的硬件地址類型為以太網(00 01), 使用IPv4(08 00)協議類型, 其中硬件地址長度為6個字節(以太網MAC地址長度), 協議地址長度為4字節(IPv4地址長度);該數據包為ARP響應包(0002),  數據包內容為 宿主機MAC地址為54 89 98 49 3a 78,IP地址為 192.168.1.4(c0 a8 01 04) 向主機(54 89 98 ec 0f 66)發出的ARP請求數據包進行響應,接收方收到該響應包更新系統ARP表。

4.2 免費ARP

免費ARP報文與普通ARP請求報文的區別在於普通的ARP請求報文,其ARP封裝內的“目的IP地址”是其他機器的IP地址,而免費ARP的請求報文,其ARP封裝內的“目的IP地址”是其自己的IP地址。免費ARP的數據包格式如下圖所示:

免費ARP在實際環境中的一些應用

1.  免費ARP主要用於檢測IP地址沖突

當一台主機發送了免費ARP請求報文后,如果收到了ARP響應報文,則說明網絡內已經存在使用該IP 的主機。

2. 利用免費ARP確認設備接口地址

一般的設備在網卡地址加載階段都會向網絡中發送免費的ARP報文(也有些安全設備為了安全起見,讓設備在加載地址期間不向外發送免費ARP報文),當我們想知道某些設備的接口地址但又沒有相應記錄可查時,我們就可以利用設備的這種特性,抓取其免費ARP報文,從而分析出其接口使用的IP地址。

3. 使用免費ARP報文,更新某些設備的ARP表項

4. 利用免費ARP的攻擊

5. 網關設備利用免費ARP防止ARP攻擊

  

4.3 代理ARP

代理ARP是ARP協議的一個變種。對於沒有配置缺省網關的計算機要和其他網絡中的計算機實現通信,網關收到源計算機的 ARP 請求會使用自己的 MAC 地址與目標計算機的 IP地址對源計算機進行應答。代理ARP就是將一個主機作為對另一個主機ARP進行應答。它能使得在不影響路由表的情況下添加一個新的Router,使得子網對該主機來說變得更透明化。同時也會帶來巨大的風險,除了ARP欺騙,和某個網段內的ARP增加,最重要的就是無法對網絡拓撲進行網絡概括。代理ARP的使用一般是使用在沒有配置默認網關和路由策略的網絡上的。

    1. 基本實現

        

    2. 數據解析

      1. 在主機192.168.2.2 上ping 主機 192.168.3.2 抓取數據包如下, 

      

      解析: 主機192.168.2.2 與主機 192.168.3.2 進行通行,先向發送廣播包,請求網關MAC地址,網關收到該廣播后發送單播給請求方告知自己的MAC地址信息

 

     抓取 192.168.3.0/24 網絡側數據包如下 

    

 

      解析: 網關收到192.168.2.1 發送給192.168.3.2的信息,先檢查自身MAC地址表若沒有192.168.3.2 的MAC地址信息,則在192.168.3.0 網段進行廣播請求192.168.3.2 的MAC地址信息,192.168.3.2收到網關的ARP請求信息,向網關發送單播告知自己的MAC地址信息。

 

五、ARP常用命令

功能 Mac  Windows Linux  Huawei H3C Cisco Ruijie
查看ARP表 arp -a  arp -a arp -a display arp all   show mac-address-table    
清理ARP表 arp -ad     reset arp all   clear arp  


免責聲明!

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



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