轉載請注明來源:https://www.cnblogs.com/hookjc/
ARP數據包根據接收對象不同,可分為兩種:
1. 廣播包(Broadcast)。廣播包目的MAC地址為FF-FF-FF-FF-FF-FF,交換機設備接收到廣播包后,會把它轉發給局域網內的所有主機。
2. 非廣播包(Non-Broadcast)。非廣播包后只有指定的主機才能接收到。
ARP數據包根據功能不同,也可以分為兩種:
1. ARP請求包(ARP Request)。ARP請求包的作用是用於獲取局域網內某IP對應的MAC地址。
2. ARP回復包(ARP Reply)。ARP回復包的作用是告知別的主機,本機的IP地址和MAC是什么。
廣播的一般都是ARP請求包,非廣播的一般都是ARP回復包。
假設局域網內有以下兩台主機,主機名、IP地址、MAC地址分別如下:
主機名 IP地址 MAC地址
A 192.168.0.1 AA-AA-AA-AA-AA-AA
B 192.168.0.2 BB-BB-BB-BB-BB-BB
當主機A需要與主機B進行通訊時,它會先查一下本機的ARP緩存中,有沒有主機B的MAC地址。如果有就可以直接通訊。如果沒有,主機A就需要通過ARP協議來獲取主機B的MAC地址,具體做法相當於主機A向局域網內所有主機喊一嗓子:“喂~誰是192.168.0.2?我是192.168.0.1,我的MAC地址是AA-AA-AA-AA-AA-AA
。你的MAC地址是什么,快告訴我”,這時候主機A發的數據包類型為:廣播-請求。
當主機B接收到來自主機A的“ARP廣播-請求”數據包后,它會先把主機A的IP地址和MAC地址對應關系保存/更新到本機的ARP緩存表中,然后它會給主機A發送一個“ARP非廣播-回復”數據包,其作用相當於告訴主機A:“嘿,我是192.168.0.2,我的MAC地址是BB-BB-BB-BB-BB-BB”。當主機A接收到主機B的回復后,它會把主機B的IP地址和MAC地址對應關系保存/更新到本機的ARP緩存表中,之后主機A和B就可以進行通訊了。
從上述局域網主機通訊過程可以看出,主機在兩種情況下會保存、更新本機的ARP緩存表,
1. 接收到“ARP廣播-請求”包時
2. 接收到“ARP非廣播-回復”包時