1. 程式人生 > >ARP協議簡析

ARP協議簡析

ARP地址解析協議(IP地址—>MAC地址)

地址解析協議,即ARP(Address Resolution Protocol),是根據IP地址獲取實體地址的一個TCP/IP協議。主機與主機之間的通訊在物理上實質是網絡卡與網絡卡之間的通訊,而網絡卡只認識MAC地址,所以要想實現主機與主機之間的通訊,需要知道對方IP地址所對應的MAC地址,完成這一過程的協議就是ARP協議。在具體的網路傳輸過程中,使用地址解析協議,可根據網路層IP資料包包頭中的IP地址資訊解析出目標硬體地址(MAC地址)資訊,以保證通訊的順利進行。

ARP工作原理

每臺主機或路由器都有一個ARP快取表,用來儲存IP地址與MAC地址的對應關係。

以主機A(192.168.1.5)向主機B(192.168.1.1)傳送資料為例。當傳送資料時,主機A會在自己的ARP快取表中尋找是否有目標IP地址。如果找到了,也就知道了目標MAC地址,直接把目標MAC地址寫入幀裡面傳送就可以了;如果在ARP快取表中沒有找到目標IP地址,主機A就會在網路上傳送一個廣播arp request,請求包中包含了A主機的ip地址和mac地址。網路上其他主機並不響應ARP詢問,直接丟棄,只有主機B接收到這個幀時,才以單播方式向主機A做出迴應arp reply,並帶上自己的ip和mac地址,而B主機收到A的請求包時也會將A主機的IP與MAC對應關係儲存在自己的快取區。A收到B的迴應包後便可得知B的MAC地址,將其存入ARP快取。此後A再向B傳送資料時,就可以直接從快取表中查詢B的地址了,然後直接把資料傳送給B。由於B在接收A的請求時也儲存了A的地址資訊,因此B要向A傳送資料也可以直接從快取表中查詢。

ARP快取表設定了生存時間TTL,在一段時間內(一般15到20分鐘,跟作業系統有關)如果表中的某一行沒有使用,就會被刪除,這樣可以大大減少ARP快取表的長度,加快查詢速度。

ARP封裝

可以對ARP報文有個直觀的認識,深入的話可以結合WireShark抓包學習。 在這裡插入圖片描述

arp命令

可通過如下命令檢視快取記憶體中的所有專案:

arp -a

其他選項:

-a 顯示所有介面的當前ARP快取表;

-v 顯示詳細資訊; 

-n 以數字地址形式顯示; 
RARP協議(MAC地址—>IP地址)

反向地址轉換協議,RARP(Reverse Address Resolution Protocol),就是將區域網中某個主機的實體地址轉換為IP地址。

MAC地址

MAC(Medium/Media Access Control)地址,用來表示網際網路上每一個站點的識別符號,採用十六進位制數表示,共六個位元組(48位)。其中,前三個位元組是由IEEE的註冊管理機構RA負責給不同廠家分配的程式碼(高位24位),也稱為“編制上唯一的識別符號”(Organizationally Unique Identifier),後三個位元組(低位24位)由各廠家自行指派給生產的介面卡介面,稱為擴充套件識別符號(唯一性)。一個地址塊可以生成224個不同的地址。MAC地址實際上就是介面卡地址或介面卡識別符號EUI-48。