ARP協議 地址解析協議:IP地址轉換為MAC地址

馬小超i發表於2020-09-28

ARP協議 地址解析協議

ARP協議全稱 Address Resolution Protocol。
ARP協議能實現任意網路層地址到任意實體地址的轉換,我們在此只討論IP到乙太網MAC地址的轉換。

工作原理:

主機向自己所在的網路廣播一個ARP請求,該請求包含目標機器的網路地址,此網路上的的其他機器都將收到這個請求,但只有目的機器會回應一個ARP應答,其中包含自己的實體地址。

乙太網ARP請求/應答報文:

硬體型別:不同的值表示不同的實體地址型別。值為 1 表示 MAC 地址。
協議型別:表示要對映的協議地址型別。值為 0x800 表示 IP 地址。
硬體地址長度:對應硬體型別的地址長度,MAC地址長度為6。單位是位元組。
協議地址長度:對應的協議型別的長度,IP地址長度是4。單位是位元組。
操作:4中操作型別:1--ARP請求、2--ARP應答、3--RARP請求、4--RARP應答
最後4各個欄位是通訊雙方的乙太網地址和IP地址。

傳送方會填寫除目標端乙太網地址外的其他3個欄位,構建ARP請求併傳送,接收端發現該請求的目的端IP地址是自己,就把自己的乙太網地址填進去,然後交換兩個目的端地址和兩個傳送端地址,構建ARP應答並返回(運算元要改為2)。

ARP請求/應答報文的長度是28位元組,再加上乙太網幀頭部和尾部的18位元組,則一個攜帶ARP請求/應答報文的乙太網幀長度是46位元組。不過有的乙太網幀資料部分要求長度至少是46位元組,此時ARP請求/應答報文將增加一些填充位元組,以滿足這個要求。在這種情況下,一個攜帶ARP請求/應答報文的乙太網幀長度為64位元組。

(乙太網幀頭部和尾部的18位元組是固定的,規定傳輸的幀最小長度是64位元組,也就是要求資料部分不小於46位元組,顯然ARP報文才28位元組是不夠的,所以要填充下)

ARP快取記憶體的檢視和修改:

ARP維護一個快取記憶體,包含經常訪問或者最近訪問的機器地址到實體地址的對映。這樣就避免了重複的ARP請求,提高了傳送資料包的速度。

使用tcpdump觀察ARP通訊過程:

抓包前先清理ARP快取。

 

相關文章