文档章节

ARP单播请求?

o
 osc_4nmshwhm
发布于 2018/08/07 11:34
字数 772
阅读 31
收藏 0

精选30+云产品,助力企业轻松上云!>>>

  在我的理解中,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请求报文其实是非常合理的
  

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

SnailSVN Pro for mac(SVN客户端) v1.9.9

macw为您带来SnailSVN Pro for mac ,SnailSVN Mac版是一款类似于 TortoiseSVN 的 Apache Subversion(SVN)客户端,与 Finder 紧密集成。SnailSVN Mac版允许你从 Finder 的上下文菜单中快速...

单手绕月
1分钟前
0
0
python网络编程(进程与多线程)

multiprocessing模块   由于GIL的存在,python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程。   multiprocessing包是Pytho...

osc_ky74f26k
1分钟前
0
0
CentOS7 redis5.0高可用部署

概述 Redis Sentinel为Redis提供高可用性。Redis Sentinel是一个分布式系统,Sentinel本身设计为在有多个Sentinel进程协同合作的配置中运行。具有多个Sentinel进程进行协作的优点如下: 1、当...

紅顏為君笑
1分钟前
0
0
Ocelot简易教程(四)之请求聚合以及服务发现

上篇文章给大家讲解了Ocelot的一些特性并对路由进行了详细的介绍,今天呢就大家一起来学习下Ocelot的请求聚合以及服务发现功能。希望能对大家有所帮助。 作者:依乐祝 原文地址:https://www...

osc_zo0djpuu
2分钟前
0
0
leetcode63(不同路径 II)--Java语言实现

求: 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 现在...

拓拔北海
2分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部