ARP
從本地端電腦傳送封包到你瀏覽的網頁,他會利用 IP Address 把封包傳送至目的地。但,這之間會學習到目的地 Host 的 MAC Address(Media Access Control Address),這樣才能達到準確溝通。在 Ethernet(乙太網路)環境下,Ethernet進行了連線、傳遞訊號等。要用 IP Address 找出 MAC 得要用 ARP(Address Resolution Protocol) ,ARP 屬於 OSI Model 網路層。
ARP 學習
當 R1 想找 PC1,但 R1 什麼都不知道,只認識自己。R1 發送 broadcast
發出一個 ARP Request
,ARP Request
包含了PC1 的 IP Address 等,到了 Switch1 進行 flooding
使每個目的端 Host 都接收(因為是 broadcast
)。接著,目的端都接收,會進行 ARP reply
的動作,只有符合 R1 要找的 IP 才會進行回覆以 unicast
方式,其餘的 Host 會把此 frame Drop 掉,之後 R1 會把找到的 Host MAC
給記錄到 ARP
表格。
ARP 表格過一段時間會自動清除,清除後它又不認的對方是誰了,就會再進行一次 ARP Request
。
實作
利用(圖一)拓樸
設定好 R1 IP Address 和 VPC1、2、3 IP Address 和 gateway。
Step 1
R1#show arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 192.168.10.1 - ca01.07ae.0000 ARPA FastEthernet0/0
只有認得自己。
Step 2
使用 Wireshark 監聽 R1 f0/0 介面。
Step 3
R1#ping 192.168.10.10
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.10.10, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 4/7/12 ms
R1 ping PC1
Step 4
查看 Wireshark 介面
其中第 9、10 就是 ARP 封包
Step 5
查看第 9 個 Frame
Ethernet
Destination:ff:ff:ff:ff:ff:ff (broadcast) for ARP request
Source:ARP requester
Type:
ARP request/reply: 0x0806
RARP request/reply: 0x8035
IP datagram: 0x0800
Address Resolution Protocol (request)
Hardware type: 1 for ethernet
Protocol type: 0x0800 for IP (0000.1000.0000.0000)
同樣的Ethernet標頭攜帶 IP datagram!
Hardware len = length in bytes of hardware addresses (6 bytes for ethernet) Protocol len = length in bytes of logical addresses (4 bytes for IP)
ARP operation(Opcode):
1=request
2=reply
RARP
3=request
4=reply
第 10 個 Frame,ARP reply
Step 6
R1#show arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 192.168.10.1 - ca01.07ae.0000 ARPA FastEthernet0/0
Internet 192.168.10.10 0 0050.7966.6800 ARPA FastEthernet0/0
R1 已經學習到 PC1 的 MAC
。
Step 7
VPCS> show ip/all
NAME IP/MASK GATEWAY MAC DNS
VPCS1 192.168.10.10/24 192.168.10.1 00:50:79:66:68:00
查看MAC有無一樣。