一、實驗目的
驗證“在向目的主機發送數據包時會先查詢ARP高速緩存,如果ARP高速緩存中已保存了目的主機的MAC地址,不進行ARP查詢,使用ARP高速緩存中的MAC地址;如果緩存中沒有IP對應的MAC地址,發送ARP請求。”
二、實驗設備
一台筆記本電腦操作系統為Windows 10,使用VMware Workstation Pro安裝虛擬操作系統Ubuntu19.1。虛擬機使用NAT模式與宿主主機連接。安裝Wireshark-3.2.7抓包工具和Win10Pcap工具。(NAT模式的網絡拓撲圖如下圖)
三、實驗原理
Ping命令使用ICMP協議。對目的主機進行Ping的原理:源主機對目的主機發送ICMP請求,接收ICMP應答的過程。
ARP協議工作原理:如果不知道目的主機IP地址對應的MAC地址,則會廣播發送ICMP請求包,目的主機回應ICMP應答包。
四、實驗過程
以Ubuntu來作為一台計算機,對Ubuntu進行Ping操作來模擬發送數據包。使用Wireshark抓包工具捕獲數據包,來判斷是否有ARP請求發出。
五、實驗步驟
1、打開Ubuntu,查看Ubuntu的IP地址及MAC地址(如圖1)。
(圖1)
2、打開Windows 10操作系統的命令提示符(cmd),輸入ipconfig /all查看Windows的IP地址和MAC地址(如圖2)
(圖2)
輸入arp -a查看ARP高速緩存中的IP地址對應的MAC地址(如圖3)。其中192.168.81.254為DHCP服務器,192.168.81.1為宿主機虛擬網卡地址。
(圖3)
3、打開Wireshark選擇Ubuntu所在的網卡適配器,進行抓包。
4、在Windows 10下的cmd輸入命令ping 192.168.81.128(如圖4)
(圖4)
抓得的數據(如圖5)抓得的數據包不包含ARP請求包,即在ping操作之前沒有進行ARP查詢。說明ARP高速緩存中已保存了對方的MAC地址,不進行ARP查詢。
(圖5)
5、在Windows 10下以管理員權限打開cmd輸入arp -d *,清空ARP高速緩存中的IP地址於MAC地址的對應關系,在輸入arp -a查看ARP高速緩存中的IP地址與MAC地址的對應關系。(如圖6)。
(圖6)
6、再次用Wireshark抓包,同時在Windows 10下ping 192.168.81.128,抓的數據包(如圖7)。在四次ICMP請求和應答報文前,有一次ARP請求和應答。說明在高速緩存中沒有對方的IP地址對應的MAC地址時,會先發送ARP請求,獲得IP地址與MAC地址的對應關系。
(圖7)
7、再次在cmd中輸入arp -a查看ARP緩存中信息(如圖8)。
(圖8)
六、實驗結果
1、ARP高速緩存中存在IP地址和MAC地址的對應關系時,從圖5中可以看到在ICMP報文段(ping命令)前沒有arp請求和應答(沒有ARP數據包)
2、ARP高速緩存中沒有IP地址和MAC地址的對應關系時,從圖7中可以看到在ICMP報文段(ping命令)前存在一次arp請求和應答。說明ARP高速緩存中沒有目標IP地址與MAC地址的對應關系時會發送ARP請求,查詢IP地址與MAC地址的對應關系。
七、結論
在發送數據包時會先查詢ARP緩存,如果緩存中已保存了對方的MAC地址,不進行ARP查詢,使用緩存中的MAC地址;如果緩存中沒有IP對應的MAC地址,發送ARP請求。