什么是免费ARP-看这篇就够了

本文解析了免费ARP(Gratuitous ARP)的概念,包括其工作原理、触发条件、ARP探针和响应的区别,以及Windows系统如何利用它来避免IP冲突。重点讲解了ARP请求报文中的特殊字段,以及免费ARP在实际配置过程中的应用实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

免费ARP本质是ARP协议的实现,所以只要有支持TCP/IP的网卡,支持ARP协议,就有免费ARP。免费ARP报文就是ARP请求或ARP响应,只是它的目的并不是为了获取或告知MAC地址(虽然是通过获取或告知完成的),它的触发方式也不同(虽然是由ARP协议触发的)

免费ARP

免费ARP

Gratuitous ARP,也称为“无故ARP”,在没有人问自己的情况下,无缘无故自问自答

功能

检测局域网内IP地址冲突

什么情况下触发ARP协议发送免费ARP

局域网IP地址冲突时,地址修改或变更时,DHCP分发地址时,ARP缓存表清理时,网关冗余协议HSRP交互时,TFTP协议传输数据前

免费ARP请求

配置IP地址

准备两台windows10的电脑,用网线直连,其中主机B配置IP地址为192.168.0.200/24

用wireshark抓取主机A的本地网卡流量

主机A配置IP地址为192.168.0.10/24,在wireshark抓取ARP报文

这四条ARP报文都是主机A以广播的形式发出去的,其中前三条是ARP探针,第四条是ARP公告

首先分析ARP探针

  • destinationMAC == ff:ff:ff:ff:ff:ff

说明这是一个广播报文

  • sourceMAC

填充的是主机A的MAC

  • Type == 0x0806

说明这是一个ARP协议报文

  • Opcode == 1

说明这是一个ARP请求报文

  • senderMAC

填充的是主机A的MAC

  • senderIP

填充0.0.0.0

  • targetMAC

填充全0

  • targetIP

填充的是主机A的IP

分析

这是一条ARP请求广播报文,与正常的ARP请求报文不同的是,它的senderIP字段填充的是0.0.0.0,targetIP填充的是源主机IP

为什么senderIP不填充源主机IP,而是全0?targetIP填充的却是源主机IP?

再回到前面,想一想,是做了什么让ARP协议发送这三条ARP探针的?

是配置主机A的IP地址192.168.0.10,然后在wireshark上看到主机A发送三条ARP请求广播报文

而且wireshark标明了这三条ARP请求报文是ARP Probe(刺探),刺探什么?

当然是主机A在配置IP地址时,为了防止配置的IP地址和局域网内的其他主机冲突,而主动发送的ARP探针,刺探其他主机的IP地址是否相同

所以,主机A在配置IP地址时,会自动触发ARP协议发送三条ARP请求报文广播给局域网内所有主机,targetIP填充自己的IP地址,这样如果其他主机接收到ARP请求且自己的IP地址和targetIP相同,就会回复ARP响应

主机A收到ARP响应,就说明有主机的IP地址和自己相同,地址冲突了,那么配置无法成功

由于主机B的IP地址是192.168.0.200,并没有冲突,所以没有收到ARP响应,windows连续发送三次ARP Probe后没有收到ARP响应,说明局域网内没有主机IP地址和自己冲突,IP地址配置成功

但是为什么senderIP不是源主机的IP地址,而是全0呢?

因为这三条是为了刺探有没有冲突,还不代表这个IP地址可以正式使用

只有发送三条ARP Probe后没有收到ARP响应,说明没有冲突,配置成功,此时ARP协议层还会再发送一条ARP Announcement,senderIP和targetIP都是192.68.0.10

如果主机A配置和主机B相同的IP地址呢?

上面两条是发送一条ARP Probe后收到了ARP响应,说明地址冲突,然后主机A的windows系统自动把IP地址配成了之前成功配置的IP地址,所以就有了后面的四条

我们再单独分析下收到的那条ARP响应

其他字段都好理解,但是为什么targetIP不是主机A的地址呢?

因为主机B发现收到的ARP请求是ARP Probe,且和自己的IP冲突,那主机A就不能用这个IP地址了,所以主机B把targetIP填充全0

主机B如何辨别收到的ARP请求是正常的ARP请求还是ARP Probe呢?

可以比较下正常的ARP请求和ARP Probe的不同,发现senderIP不同,正常的ARP请求senderIP是源主机的IP,ARP Probe的senderIP是全0

从wireshark抓包来看,ARP Probe和ARP Announcement都是wireshark命名的,并没有标记“Gratuitous”关键字,那它们能算是免费ARP吗?

这是有争议的

如果从自己问自己的角度,它们都是免费ARP,因为它们都是在问自己配置的IP地址192.168.0.10,而且目的都是为了检测地址是否冲突。

当然,更严谨的免费ARP,senderIP和targetIP是一致的

免费ARP响应

windows系统是用免费ARP请求检测地址冲突,有些设备使用免费ARP响应检测地址冲突

免费ARP响应其实就是ARP响应报文,只是它需要广播,且senderIP和targetIP也要相同

地址冲突的主机对于免费ARP响应也是需要回复的,回复的也是免费ARP响应,与其说是给地址冲突的主机回复,不如说是告诉整个广播域,我的IP才是xxx,然后源主机收到后又会广播免费ARP响应,两台地址冲突的主机轮流发

图片来自网络,侵删

总结

  • 免费ARP本质上是ARP报文

  • 免费ARP数据链路层destinationMAC为广播地址

  • 免费ARP的senderIP和targetIP一致,都是自己的IP地址

  • 免费ARP响应也是可能有回复的

  • ARP Probe可以看成免费ARP,虽然senderIP全0


<think>好的,用户想了解Windows中arp -a命令的功能、作用及用法。首先,我需要回忆ARP协议的基本概念,ARP是地址解析协议,用于将IP地址转换为物理MAC地址。arp -a应该是用来显示ARP缓存表的命令。 接下来,我得确认Windows下arp命令的具体参数。根据用户提供的引用,引用[1]提到arp -a参数会显示当前ARP项,如果指定IP地址,只显示该计算机的IP和MAC地址。如果有多个网络接口,每个接口的ARP表都会显示。引用[5]也提到了Linux下的arp命令,但用户问的是Windows,不过参数可能有相似之处,比如-a通常用于显示所有条目。 需要进一步解释arp -a的作用,包括显示缓存中的动态和静态条目,可能的结构是怎样的,比如Internet地址、物理地址、类型(动态或静态)。用户可能还想知道如何使用这个命令,比如直接输入arp -a,或者指定IP地址的例子,如arp -a 192.168.1.1。 另外,用户提供的引用[4]提到静态ARP绑定,可以补充说明arp -a显示的信息中包含静态绑定的条目。同时,引用[3]虽然关于注销和关机命令,但可能不需要涉及,除非有其他关联。 需要确保回答结构清晰,分点说明作用和用法,可能还要包括示例,比如命令输出格式。然后生成相关问题,比如如何绑定ARP,如何清空缓存,动态静态条目的区别,以及ARP欺骗相关的问题。这些问题需要基于现有引用和常见ARP相关知识。 最后,检查引用是否正确应用,比如引用[1]和[4]关于ARP显示和绑定,引用[5]关于删除条目。确保不涉及Linux的内容,但可能对比说明,但用户主要关注Windows,所以重点放在Windows的实现上。 总结回答结构:先介绍命令作用,详细说明输出内容,用法示例,然后相关应用场景如排查网络问题,最后生成相关问题。确保使用中文,LaTeX格式正确,没有行内公式,独立公式可能不需要,因为内容不涉及数学表达式。</think>### Windows中`arp -a`命令的作用及用法 #### 一、命令作用 `arp -a`用于**显示当前系统的ARP缓存表**,即本机与其他设备的IP地址与MAC地址的映射记录[^1]。ARP(Address Resolution Protocol)协议负责将网络层的IP地址解析为链路层的MAC地址,而`arp -a`可帮助用户查看这些解析结果的缓存信息,常用于排查网络连接问题或验证地址绑定[^4]。 #### 二、输出内容详解 执行`arp -a`后,输出的典型格式如下: ``` 接口: 192.168.1.100 --- 0x3 Internet 地址 物理地址 类型 192.168.1.1 aa-bb-cc-dd-ee-ff 动态 192.168.1.255 ff-ff-ff-ff-ff-ff 静态 ``` - **Internet 地址**:目标设备的IP地址。 - **物理地址**:对应的MAC地址。 - **类型**:分为`动态`(自动学习,超时后删除)和`静态`(手动绑定,永久保留)[^1]。 #### 三、使用方法 1. **查看完整ARP缓存表** 直接输入命令: ```cmd arp -a ``` 若系统有多个网络接口(如以太网、Wi-Fi),会分别显示每个接口的ARP表。 2. **查看指定IP的ARP记录** 添加目标IP作为参数: ```cmd arp -a 192.168.1.1 ``` 3. **结合网络接口使用** 若需指定特定接口(通过接口IP标识): ```cmd arp -a -N 192.168.1.100 ``` #### 四、应用场景 - **网络故障排查**:验证本机是否成功获取网关或设备的MAC地址。 - **检测ARP欺骗**:对比实际设备的MAC地址与缓存是否一致。 - **静态绑定验证**:确认手动绑定的IP-MAC条目是否生效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汽车通信技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值