ARP協議工作原理
1、ARP請求:
主機A首先會去檢查ARP快取表(ARP快取用來存放IP地址和MAC地址的關聯資訊)中是否存在主機C的MAC地址。
本例中由於是第一次通訊,主機A的ARP快取表中沒有主機C的MAC地址。
這時主機A會發送ARP request報文(廣播報文)來獲取主機C的MAC地址。而廣播報文只會在廣播域中傳播,路由器可以隔離廣播域。
ARP request報文封裝在以太幀裡。
幀頭中的源MAC地址為傳送端主機A的MAC地址,此時,由於主機A不知道主機C的MAC地址,所以目的MAC地址為廣播地址FF-FF-FF-FF-FF-FF。
ARP request報文中包含源IP地址、目的IP地址、源MAC地址、目的MAC地址,其中目的MAC地址的值為0。
ARP Request報文會在整個網路上傳播,該網路中所有主機包括閘道器都會接收到此ARP request報文。閘道器將會阻止該報文傳送到其他網路上。
本例中主機B和主機C都會收到主機A傳送的ARP廣播請求報文。
2、ARP應答:
主機B收到主機A傳送的ARP廣播請求報文,檢視目的IP不是自己會丟棄,但是會在自己的ARP快取表中記錄主機A的IP和MAC的對映關係,在主機B上透過命令arp -a 可以查詢到:
主機C發現目的IP是自己,會在自己的ARP快取表中記錄主機A的IP和MAC的對映關係,並會向主機A單播迴應ARP Reply報文。
主機A收到主機C的迴應報文後後會在自己的ARP快取表中記錄主機C的IP和MAC的對映關係,下次傳送資料時就可以查詢到主機C的MAC。
ARP Reply報文中的源協議地址是主機C自己的IP地址,目標協議地址是主機A的IP地址,目的MAC地址是主機A的MAC地址,源MAC地址是自己的MAC地址,同時Operation Code被設定為reply。
ARP Reply報文透過單播傳送。
ARP報文格式
ARP的工作過程是透過ARP廣播請求報文和ARP單播迴應報文實現的,下面我們一起看下ARP報文的格式。
ARP報文中包含以下欄位:
1、Hardware Type:表示硬體地址型別,一般為乙太網;
2、Protocol Type:表示三層協議地址型別,一般為IP;
3、Hardware Length和Protocol Length:為MAC地址和IP地址的長度,單位是位元組;
4、Operation Code:指定了ARP報文的型別,包括ARP request和ARP reply;
5、Source Hardware Address:指的是傳送ARP報文的裝置MAC地址;
6、Source Protocol Address:指的是傳送ARP報文的裝置IP地址;
7、Destination Hardware Address:指的是接收者MAC地址,在ARP request報文中,該欄位值為0;
8、Destination Protocol Address:指的是指接收者的IP地址。
實戰
下面我們搭建拓撲,模擬下主機A和主機C的通訊過程,在ensp模擬器下開啟wireshark抓取下ARP請求和迴應報文。
1、主機A上ping 主機C ip 10.0.0.3。
2、檢視抓包結果。
可以看到:抓取到了主機A傳送的ARP廣播請求報文、主機C迴應的單播報文,以及ping的ICMP報文;
3、報文分析。
ARP請求報文格式:
可以看到ARP請求報文中:
1、Hardware Type為乙太網;
2、Protocol Type為IP;
3、MAC地址為6位元組,IP地址的長度為4位元組;
4、Operation Code指定了ARP報文的型別為ARP request;
5、傳送ARP報文的裝置MAC地址為54-89-98-1F-3A-EA;
6、傳送ARP報文的裝置IP地址為10.0.0.1;
7、接收者MAC地址為ff-ff-ff-ff-ff-ff;
8、接收者的IP地址為10.0.0.3。
ARP迴應報文:
可以看到ARP迴應報文中:
4、Operation Code指定了ARP報文的型別為ARP reply;
5、傳送ARP報文的裝置MAC地址為54-89-98-DB-33-4E;
6、傳送ARP報文的裝置IP地址為10.0.0.3;
7、接收者MAC地址為54-89-98-1F-3A-EA;
8、接收者的IP地址為10.0.0.1。
ARP協議工作原理
1、ARP請求:
主機A首先會去檢查ARP快取表(ARP快取用來存放IP地址和MAC地址的關聯資訊)中是否存在主機C的MAC地址。
本例中由於是第一次通訊,主機A的ARP快取表中沒有主機C的MAC地址。
這時主機A會發送ARP request報文(廣播報文)來獲取主機C的MAC地址。而廣播報文只會在廣播域中傳播,路由器可以隔離廣播域。
ARP request報文封裝在以太幀裡。
幀頭中的源MAC地址為傳送端主機A的MAC地址,此時,由於主機A不知道主機C的MAC地址,所以目的MAC地址為廣播地址FF-FF-FF-FF-FF-FF。
ARP request報文中包含源IP地址、目的IP地址、源MAC地址、目的MAC地址,其中目的MAC地址的值為0。
ARP Request報文會在整個網路上傳播,該網路中所有主機包括閘道器都會接收到此ARP request報文。閘道器將會阻止該報文傳送到其他網路上。
本例中主機B和主機C都會收到主機A傳送的ARP廣播請求報文。
2、ARP應答:
主機B收到主機A傳送的ARP廣播請求報文,檢視目的IP不是自己會丟棄,但是會在自己的ARP快取表中記錄主機A的IP和MAC的對映關係,在主機B上透過命令arp -a 可以查詢到:
主機C發現目的IP是自己,會在自己的ARP快取表中記錄主機A的IP和MAC的對映關係,並會向主機A單播迴應ARP Reply報文。
主機A收到主機C的迴應報文後後會在自己的ARP快取表中記錄主機C的IP和MAC的對映關係,下次傳送資料時就可以查詢到主機C的MAC。
ARP Reply報文中的源協議地址是主機C自己的IP地址,目標協議地址是主機A的IP地址,目的MAC地址是主機A的MAC地址,源MAC地址是自己的MAC地址,同時Operation Code被設定為reply。
ARP Reply報文透過單播傳送。
ARP報文格式
ARP的工作過程是透過ARP廣播請求報文和ARP單播迴應報文實現的,下面我們一起看下ARP報文的格式。
ARP報文中包含以下欄位:
1、Hardware Type:表示硬體地址型別,一般為乙太網;
2、Protocol Type:表示三層協議地址型別,一般為IP;
3、Hardware Length和Protocol Length:為MAC地址和IP地址的長度,單位是位元組;
4、Operation Code:指定了ARP報文的型別,包括ARP request和ARP reply;
5、Source Hardware Address:指的是傳送ARP報文的裝置MAC地址;
6、Source Protocol Address:指的是傳送ARP報文的裝置IP地址;
7、Destination Hardware Address:指的是接收者MAC地址,在ARP request報文中,該欄位值為0;
8、Destination Protocol Address:指的是指接收者的IP地址。
實戰
下面我們搭建拓撲,模擬下主機A和主機C的通訊過程,在ensp模擬器下開啟wireshark抓取下ARP請求和迴應報文。
1、主機A上ping 主機C ip 10.0.0.3。
2、檢視抓包結果。
可以看到:抓取到了主機A傳送的ARP廣播請求報文、主機C迴應的單播報文,以及ping的ICMP報文;
3、報文分析。
ARP請求報文格式:
可以看到ARP請求報文中:
1、Hardware Type為乙太網;
2、Protocol Type為IP;
3、MAC地址為6位元組,IP地址的長度為4位元組;
4、Operation Code指定了ARP報文的型別為ARP request;
5、傳送ARP報文的裝置MAC地址為54-89-98-1F-3A-EA;
6、傳送ARP報文的裝置IP地址為10.0.0.1;
7、接收者MAC地址為ff-ff-ff-ff-ff-ff;
8、接收者的IP地址為10.0.0.3。
ARP迴應報文:
可以看到ARP迴應報文中:
1、Hardware Type為乙太網;
2、Protocol Type為IP;
3、MAC地址為6位元組,IP地址的長度為4位元組;
4、Operation Code指定了ARP報文的型別為ARP reply;
5、傳送ARP報文的裝置MAC地址為54-89-98-DB-33-4E;
6、傳送ARP報文的裝置IP地址為10.0.0.3;
7、接收者MAC地址為54-89-98-1F-3A-EA;
8、接收者的IP地址為10.0.0.1。