地址解析協議(ARP) 分析


什么是ARP協議

ARP(A ddress R esolution P rotocol)— 地址解析協議 ,用於將IP地址解析為MAC地址。復雜來說,ARP用於32位IPv4地址和以太網的48位MAC地址之間的映射。

與ARP相反功能的協議稱為 RARP(Reverse Address Resolution Protocol)逆地址解析協議 。用於將MAC地址轉換為IP地址。一般用於無盤系統中。

一個基本的例子

PC1 訪問 網關(switch0,192.168.1.1)

網絡拓撲結構如下圖:

環境

  1. PC1 沒有ARP緩存

  2. PC1 ,PC2,Switch0 在同一個網段同一個Vlan

PC1 執行如下命令,並且監聽並捕獲e0/0 和 e0/1 兩個端口(只捕獲ARP協議)

VPCS> ping 192.168.1.1

捕獲結果

e0/0

e0/1

捕獲分析

  • No.773幀,PC1 向 Switch0 發送一個幀,Switch 0在本Vlan廣播 ,查找誰的IP是192.168.1.1

  • No770,Switch廣播幀到網段,向e0/1 發送廣播幀,PC2接受但沒有回復。

  • No774,Switch0 答復了PC1。表明192.168.1.1 對應的MAC地址是我的

NO.773 幀:

需要注意的是

  1. 目標地址是一個廣播地址(MAC全為1的),用來對全網進行廣播。

  2. opcode 字段為 1,是一個ARP請求

NO.774

需要注意:

  1. opcode 字段值為2,為ARP應答

  2. 發送方MAC和IP為Switch0 的映射

  3. 目標MAC為PC1 的MAC地址,這里目標IP沒有,是直接交付的幀。

簡單來說就是這樣:

image

結論

解析IP分為以下幾個步驟:

  • 發送幀查找局域網中有無對應的MAC地址

  • 有則回復,如果局域網中沒有這個對應MAC,ARP會有一個規定時間,超過這個時間則認為沒有。

需要注意以下幾點:

  • ARP不是廣播回復,是直接應答原始請求的發送方。

  • 接受到回復的主機將映射存儲在本地的緩存中以供下次使用。

ARP緩存

ARP 緩存用來記錄每個接口從網絡層地址(IP地址)到硬件地址的最新映射 (MAC地址)。

其正常到期時間是條目創建開始后的20分鍾[RFC1122]

查看ARP緩存

通過使用命令

> arp -a

windows平台下的顯示結果:

類型字段指明了映射關系是通過動態獲取還是靜態獲取

ARP幀

下圖顯示了ARP幀的格式:

字段解釋:

以太網幀頭部

    - DST:目的地址

    - SRC : 源地址

    - 長度或類型:多數情況用於確定后面的協議類型,在ARP幀中,這個值是0x0806

固定大小:

    - 硬件類型:指出硬件地址的類型。對以太網來說該值為1

    - 協議類型:指出映射的協議地址類型。位於IPv4地址,該值為0x0800

    - 硬件大小,協議大小:

        分別指出硬件地址和協議地址的字節數

        對於以太網使用IPv4地址的ARP請求或應答,它們的值分別為6和4

    - op:指出操作的類型,這個值是必須的(?由於ARP請求和ARP應答的長度/類型字段相同)

        ARP請求(值為1)

        ARP應答(2)

        RARP請求(3)

        RARP應答(4)

可變大小:

    - 發送方硬件地址

    - 發送方協議地址

    - 目的硬件地址

    - 目的協議地址

  • FSC:用於校驗

ARP幀的示例

下圖是一個ARP幀的示例,1.2 主機查找1.5主機的ARP請求幀:

其中 :

以太網幀部分

  • 前導碼和SFD占了8個bit

  • 目的地址為FFFF.FFFF.FFFF(全1的廣播地址),同網段同vlan的所有主機將接受到這個幀

  • type(類型)字段為0x0806,用來表示這是一個ARP幀

ARP幀部分:

    - HARDWARE TYPE(硬件類型):在以太網中該值為1

    - PROTOCAL TYPE(協議類型):0x0800,對於IPv4地址,該值為0x0800

    - 硬件大小(HLEN)和協議大小(PLEN)

        這里分別是0x06和0x04 ,表示MAC 6字節,IPv4地址4字節

    - OP(OPCODE):操作碼,這里表示ARP請求(值為1)

可變大小:

  • 發送方的硬件地址(SOURCE MAC)

  • 發送方的協議地址(SOURCE IP):這里是一個IPv4地址

  • 目的硬件地址(TARGET MAC)

  • 目的協議地址(TARGET IP)

ARP緩存超時

刷新緩存,來保證映射條目是最新的。

防止出現不完整條目,比如說IP和MAC對應不上(出現這種情況可能是主機IP設置改變,網卡改變)

完整條目的超時為20分鍾,不完整條目的超時為3分鍾

代理ARP

代理ARP用來隱匿發送端和接收端。

代理ARP使一個系統可回答不同主機的ARP請求

這樣做有兩個常見原因:

  • 有些系統無法進行子網划分

  • 有些系統使用比較舊的廣播地址(全零的主機ID ,而不是全1的主機ID)

免費ARP和地址沖突檢測

Gratuitous ARP ,被翻譯為“免費ARP”,也被稱為“無故ARP”。相比“免費”這個翻譯,“無故”這個更易理解:“在沒有人問自己的情況下,無緣無故自問自答”,即免費ARP是設備發送的一個發送端IP地址和目標IP地址都是本設備IP地址的ARP request/reply報文

一個免費ARP的例子

PC3 的IP地址與PC1的沖突

網絡拓撲結構圖如下:

環境

  • 只捕獲ARP幀

  • PC3 的IP地址沒有設置

  • PC3的ARP緩存表是空的

分析

e0/2 端口

e0/0 端口

e0/1 端口

通過上述包分析得知:

  1. 首先PC3 先發送一個探測幀,探測是否有無相同的映射關系。

  2. PC1 回復了PC3 ,表示這個IP有人用了,用這個IP的人是我。

  3. PC2 沒有回復PC3,因為沒有檢測到沖突。

ACD的三次探測

什么是ACD

ARP並沒有為IP和MAC的映射沖突提供解決方式,而是由[RFC5277]描述IPv4地址沖突檢測(ACD)
ACD 定義了ARP探測分組和ARP通告分組。探測分組是一個ARP請求分組,ARP通告與ARP探測相同,除了發送方協議地址和目的協議地址字段被填充為候選IPv4地址外。它用於通告發送方使用候選IPv4地址的意圖

如下是ACD的三次通告:

  • time列中,每次間隔一秒發送,用來防止接口擁塞,網絡流量激增。

ACD 被認為是一個持續的過程

這是它與免費ARP的區別

當一個主機通告它正在使用的地州,它會繼續檢查輸入的ARP流量(請求和應答),查看自己的地址與之沖突(自己的協議地址是否出現在發送方的協議地址字段中,也就是IP地址相同),如果IP地址相同,代表發生沖突了,ACD提供了三種可能的解決方案:

  1. 停止使用這個地址

  2. 保留這個地址。 但發送一個“防御性”ARP通告,如果沖突繼續,則停止使用

  3. 不理會沖突,繼續使用。

與ARP有關的攻擊

最為典型的中間人攻擊

如下圖所示:

引用/參考/使用的工具

參考書籍與網站:

https://zhiliao.h3c.com/Theme/details/27896

TCP/IP 詳解 卷一

工具:

EVE-NG

Packet tracer


免責聲明!

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



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