淺析ARP協議

一、ARP協議

1、概念

我們知道,以太網設備比如網卡都有自己唯一的MAC地址,它們是以MAC地址傳輸以太網數據包的,但是它們卻識別不了IP包中的IP地址,所以我們在以太網中進行IP通信的時候就需要一個協議來建立IP地址與MAC地址的對應關係,以使數據包能發到一個確定的地方去,這就是ARP(地址解析協議)
所以它的作用爲:
ARP協議建立了主機 IP地址 和 MAC地址 的映射關係。
在網絡通訊時,源主機的應用程序知道目的主機的IP地址和端口號,卻不知道目的主機的硬件地址;數據包首先是被網卡接收到再去處理上層協議的,如果接收到的數據包的硬件地址與本機不符,則直接丟棄。因此在通訊前必須獲得目的主機的硬件地址。

2、ARP數據報格式

ARP數據報的格式如下:
這裏寫圖片描述
分析:
(1)源MAC地址,目的MAC地址在以太網首部和ARP請求中各出現一次。
(對於鏈路層爲以太網的情況是多餘的,但如果鏈路層是其它類型的網絡則有可能是必要的)
(2)硬件類型指鏈路層網絡類型,1爲以太網
(3) 協議類型指要轉換的地址類型,0x0800爲IP地址
(4)硬件地址長度對於以太網地址爲6字節;
(5)協議地址長度對於和IP地址爲4字節;
(6)op字段爲1表示ARP請求,op字段爲2表示ARP應答
過程:
(1)源主機發出ARP請求,詢問」IP地址是192.168.0.1的主機的硬件地址是多少」;
將這個請求廣播到本地網段(以太網首部的硬件地址填FF:FF:FF:FF:FF:FF,表示廣播);
(2)目的主機接受到廣播的ARP請求,發現其中的IP地址與本機相同,則發送一個ARP應答數據包給源主機,將自己的硬件地址填寫在應答包中。
(3)每臺主機都維護一個ARP緩存表,可以用arp -a命令查看(下文會介紹)。緩存表中的表項有過期時間(一般爲20分鐘),如果20分鐘內沒有再次使用某個表項,則該表項失效,下次還要發ARP請求來獲得目的主機的硬件地址。

3、舉例

請求:
這裏寫圖片描述
注意上圖中,
以太網首部:目的主機採用廣播地址,源主機的MAC地址是00:05:5d:61:58:a8,上層協議類型0x0806表示ARP。
由於以太網規定最小數據長度爲46字節,ARP幀長度只有28字節,因此有18字節填充位,填充位 的內容沒有定義,與具體實現相關。
應答:
這裏寫圖片描述

二、arp命令

arp命令用於操作主機的arp緩衝區,它可以顯示arp緩衝區的所有條目,刪除指定的條目或者添加靜態ip地址與MAC地址對應的關係 。
參數介紹:
1、arp -v:詳細模式
這裏寫圖片描述
2、arp -n:顯示數字地址
這裏寫圖片描述
3、arp -a:查看主機的IP和MAC對應關係,默認顯示全部
這裏寫圖片描述
4、arp -d:刪除指定主機的IP和MAC對應關係
5、arp -i:只顯示指定網卡的IP和MAC對應關係
這裏寫圖片描述

注:地址解析協議是根據IP地址獲取物理地址的協議,而反向地址轉換協議(RARP)是局域網的物理機器從網關服務器的ARP表或者緩存上根據MAC地址請求IP地址的協議,其功能與地址解析協議相反。與ARP相比,RARP的工作流程也相反。