在回答這個問題之前我們先來了解一下ARP
一、ARP協議
ARP(Address Resolution Protocol)地址解析協議,目的是實現IP地址到mac地址的轉換。
在計算機間通信的時候,計算機要知道目的計算機是誰(就像我們人交流一樣,要知道對方是誰),這中間需要涉及到MAC地址,而MAC地址才是真正的電腦的唯一標識符。(畫外音:局域網內的IP是可以隨意變化的)
為什么需要ARP協議呢?因為在OSI七層模型中,對數據從上到下進行封裝發送出去,然后對數據從下到上解包接收,但是上層(網絡層)關心的IP地址,下層關心的是MAC地址,這個時候就需要映射IP和MAC。
功能
地址解析協議由互聯網工程任務組(IETF)在1982年11月發布的RFC 826中描述制定。 [1] 地址解析協議是IPv4中必不可少的協議,而IPv4是使用較為廣泛的互聯網協議版本(IPv6仍處在部署的初期)。
OSI模型把網絡工作分為七層,IP地址在OSI模型的第三層,MAC地址在第二層,彼此不直接打交道。在通過以太網發送IP數據包時,需要先封裝第三層(32位IP地址)、第二層(48位MAC地址)的報頭,但由于發送時只知道目標IP地址,不知道其MAC地址,又不能跨第二、三層,所以需要使用地址解析協議。使用地址解析協議,可根據網絡層IP數據包包頭中的IP地址信息解析出目標硬件地址(MAC地址)信息,以保證通信的順利進行。
原理
工作過程
- 每臺主機都會在自己的ARP緩沖區中建立一個 ARP列表,以表示IP地址和MAC地址的對應關系。
- 當源主機需要將一個數據包要發送到目的主機時,會首先檢查自己 ARP列表中是否存在該 IP地址對應的MAC地址。
- 如果有,就直接將數據包發送到這個MAC地址;如果沒有,就向本地網段發起一個ARP請求的廣播包,查詢此目的主機對應的MAC地址。
- 此ARP請求數據包里包括源主機的IP地址、硬件地址、以及目的主機的IP地址。網絡中所有的主機收到這個ARP請求后,會檢查數據包中的目的IP是否和自己的IP地址一致。
- 如果不相同就忽略此數據包;如果相同,該主機首先將發送端的MAC地址和IP地址添加到自己的ARP列表中。
- 如果ARP表中已經存在該IP的信息,則將其覆蓋,然后給源主機發送一個 ARP響應數據包,告訴對方自己是它需要查找的MAC地址。
- 源主機收到這個ARP響應數據包后,將得到的目的主機的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息開始數據的傳輸。
- 如果源主機一直沒有收到ARP響應數據包,表示ARP查詢失敗。
貼上一張流程圖:

ARP工作流流程圖
總結
計算機之間的通信依賴MAC地址,而ARP的作用就是在局域網內通過廣播獲取IP與MAC地址的映射。