Sender IP字段为"0.0.0.0"的ARP请求报文

Posted lipx9527

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sender IP字段为"0.0.0.0"的ARP请求报文相关的知识,希望对你有一定的参考价值。

  今天在研究免费ARP的过程中,抓到了一种Sender IP字段为“0.0.0.0”的ARP请求报文(广播),抓包截图如下:

技术分享图片

  这让我很疑惑。一个正常的ARP请求不应该只是Target MAC字段为全0吗?经过我多次试验,发现在网卡在启动的过程中会出现这个神奇的ARP请求包,具体的操作为: 拔掉网线再插上、DHCP获取地址、手动更改网卡的IP或者掩码时,会出现这个ARP请求包。(前提条件是网卡曾经是配置了IP地址的)

  我猜测是在网卡启动时,网卡先进行IP冲突检测,检测一下是否有其他设备正在使用这个IP地址(即图中的172.168.2.110),看这个地址是否可用。同时又因为此时网卡还在启动,IP地址可以理解为还不存在,因此就用0.0.0.0代替IP来组装ARP请求包。

  截图中还可以看出,连续三次发送了这种报文,也未收到ARP应答。网卡就将自己IP暂时设为原来的172.168.2.110(此时网卡应该已经启动完了);以防万一,网卡还重新发了一个免费ARP(Serder IP和Target IP相同,均为172.168.2.110),再次确认网络上是否有设备在使用这个IP地址。之后(截图中大概是5s以后)就是进行正常的ARP请求应答了。

  这个报文在win10和win7上都能抓到,都是三个,但是后续免费ARP就只能在win10系统上抓到,win7上没有抓到后续的那个免费ARP(操作都是相同的,几种办法都尝试了)。由此可见,win7就是通过这个Sender IP字段为"0.0.0.0"的ARP请求报文来进行IP地址冲突检测;win10就是双重保险,两种请求报文都有。

  

  

以上是关于Sender IP字段为"0.0.0.0"的ARP请求报文的主要内容,如果未能解决你的问题,请参考以下文章

java获得访问者ip,为啥获得的值是ip "0:0:0:0:0:0:0:1" (id=114)

javascript 验证IP地址的正则表达式!!!

如何算有多少个ip地址

JAVA Servlet获取IP地址问题

QT udp通信如何获取本机IP?

处理java获取ip为0:0:0:0:0:0:0:1的问题