ARP Protocol

May 12, 2016

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 RequestARP 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有無一樣。