使用tcpdump觀察ARP通訊過程和ARP報文詳解

readyao發表於2016-01-14

ARP協議簡介:

ARP協議能實現任意網路層地址到任意實體地址的轉換,此次討論從IP地址到乙太網地址(MAC地址)的轉換。其工作原理是:主機向自己所在的網路廣播一個ARP請求,該請求包含目標機器的網路地址。此網路上的其他機器都將收到這個請求,但只有被請求的目標機器會回應一個ARP應答,其中包含自己的實體地址。

1.搭建網路環境,見下圖


用了兩個虛擬機器系統來充當兩個結點主機進行通訊,搭建完環境之後測試一下網路的連通性。

在主機192.168.0.141下面輸入:ping 192.168.0.125進行測試


2.分別用ifconfig命令輸出兩個主機的IP和MAC地址資訊,見下圖



3.兩個主機都開啟echo服務

開啟echo服務的具體步驟見部落格:http://blog.csdn.net/linux_ever/article/details/50515632


4.用arp命令檢視arp快取,並用arp -d 192.168.0.125刪除快取

在主機192.168.0.141用arp -d 192.168.0.125刪除快取


5.在主機192.168.0.141登陸主機192.168.0.125的echo服務並監聽幀

首先:在主機192.168.0.141下監聽收到的幀

root@linux_ever:~# tcpdump -i eth0 -ent '(dst 192.168.0.125 and src 192.168.0.141) or (dst 192.168.0.141 and src 192.168.0.125)'


其次:在主機192.168.0.141下另外一個終端中輸入telnet 192.168.0.125 echo, 登陸主機192.168.0.125的echo服務,登陸成功之後輸入quit退出。此時我們可以看到tcpdump監聽到的幀。


監聽命令:

由tcpdump抓取的資料包本質上是乙太網幀,我們通過該命令的眾多選項來控制幀的過濾(比如用dst和src指定通訊的目的端IP地址和源端IP地址)和顯示(比如用-e選項開啟乙太網幀頭部資訊的顯示)。



登陸命令:


6.分析arp資料包

第一個資料包中,ARP通訊的源端的實體地址是08:00:27:23:9c:b4(主機1:192.168.0.141),目的端的實體地址是ff:ff:ff:ff:ff:ff,這是乙太網的廣播地址幀。數值0x806是乙太網幀頭部的型別欄位的值,它表示分用的目標是ARP模組。
“Request”表示這是一個ARP請求,“who-has 192.168.1.125 tell 192.168.1.141”則表示是主機1:192.168.0.141要查詢主機2:192.168.0.125的MAC地址。

該乙太網幀的長度為42位元組(實際上是46位元組,tcpdump未統計乙太網幀尾部4位元組的CRC欄位),其中資料部分長度為28位元組。


第二個資料包中,ARP通訊的源端的實體地址是08:00:27:5e:44:7e(主機2:192.168.0.125),目的端的實體地址是08:00:27:23:9c:b4(主機1:192.168.0.141)。

“Reply表示這是一個應答,“192.168.0.125 is-at 08:00:27:5e:44:7e”則表示目標機器主機2:192.168.0.125報告其實體地址。

該乙太網幀的長度為60位元組(實際上是64位元組,tcpdump未統計乙太網幀尾部4位元組的CRC欄位),可見它使用了填充位元組來滿足最小幀長度。

7.乙太網ARP請求/應答報文詳解



1、硬體型別欄位定義實體地址的型別,它的值為1表示MAC地址。
2、協議型別欄位表示要對映的協議地址型別,它的值為0x800,表示IP地址。
3、硬體地址長度欄位和協議地址長度欄位,顧名思義,其單位是位元組。對MAC地址來說,其長度為6;對IP(v4)地址來說,其長度為4。
4、操作欄位指出4種操作型別:ARP請求(值為1)、ARP應答(值為2)、RARP請求(值為3)和RARP應答(值為4)。
5、最後4個欄位指定通訊雙方的乙太網地址和IP地址。傳送端填充除目的端乙太網地址外的其他3個欄位,以構建ARP請求併傳送之。接收端發現該請求的目的端IP地址是自己,就把自己的乙太網地址填進去,然後交換兩個目的端地址和兩個傳送端地址,以構建ARP應答並返回之(當然,如前所述,操作欄位需要設定為2)。
6、ARP請求/應答報文的長度為28位元組。如果再加上乙太網幀頭部和尾部的18位元組,則一個攜帶ARP請求/應答報文的乙太網幀長度為46位元組。不過有的實現要求乙太網幀資料部分長度至少為46位元組,此時ARP請求/應答報文將增加一些填充位元組,以滿足這個要求。在這種情況下,一個攜帶ARP請求/應答報文的乙太網幀長度為64位元組。

相關文章