ARP單播請求?


  在我的理解中,ARP請求是已知對方的IP地址,想要請求對方的MAC地址,用以封裝以太網幀頭。因此在不知道對方MAC地址的情況下,會廣播ARP請求到整個子網,讓子網中的所有設備收到這個廣播ARP請求報文。當特定的主機接收到這個ARP報文后,會發送一個ARP應答報文給發送者。也就是說ARP請求是廣播報文。

  今天無意中使用Wireshark抓包時,抓到了單播的ARP請求報文,廢話不多說,直接上圖。

  這就讓我很疑惑了,明明都知道了對方的MAC(見Target MAC字段),為什么還要"明知故問"的發一個單播ARP請求報文來詢問對方的MAC地址呢?(這個就是單播ARP請求的概念)這個行為就好比: “嗨,李果,你叫什么名字?”。

  我猜測: 可能是為了定期確認對方的IP--MAC映射是否還有效,以保證ARP緩沖表的實時性和有效性,使用單播的ARP請求可以減少網絡中的ARP報文數量

  后在網上找了下資料。原來,在RFC1122 中定義了四種用於刷新 ARP 緩存條目的機制,其中的第二種 Unicast Poll (單播輪詢)就是定時向 ARP 緩存條目中的主機發送點到點(單播)的 ARP 請求報文,假如在 N 次連續超時時間過后,都沒有收到對應主機的 ARP響應報文,則將此條目從 ARP 緩存中刪除。原英文文檔如下:
  
(2) Unicast Poll -- Actively poll the remote host by 
periodically sending a point-to-point ARP Request o it, and delete the entry if no ARP Reply is received from N successive polls. Again, the timeout should be on the order of a minute, and typically N is 2。   
  這就是單播ARP請求的原因,和我猜測大致相符合,這里使用單播,而不是使用廣播,這可以在一定程度上減少網絡中的ARP報文數量(瞧瞧,設計者確實是厲害)。
  總結: 廣播ARP和單播ARP是相輔相成的。當一個主機第一次想去獲取同一網絡中某個設備的MAC地址,由於此時主機不知道設備的MAC地址,所以只能廣播ARP請求,以便於這個ARP請求能被設備收到;當第一個過程走完之后(其實就是主機收到了設備的ARP應答),雙方都知道對方的IP--MAC映射,也會在自己的ARP表中生成這個映射;由於ARP老化機制第二種--單播輪詢,主機會定期向設備發送點到點的單播ARP請求報文,用來確認對方是否存在,確認這條ARP緩存是該更新(主要是更新老化定時器)還是刪除,同時,使用單播還可以減少網絡中的ARP報文數量;因此。這種"明知故問"的單播ARP請求報文其實是非常合理的
  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM