很久之前有个问题,网络适配器查看详细信息,发现ip地址变成两个了,一个是设置的固定ip,一个是169.254开头的无效ip。经过长时间的对比发现,出现这种问题的情况下与环境中是否存在dhcp服务器有很大的关系。
所以查了一下dhcp和arp包,发现一个技术点
APIPA是一个DHCP故障转移机制。当DHCP服务器出故障时, APIPA在169.254.0.1到 169.254.255.254的私有空间内分配地址
查找tcpip/params的注册表,研究了每个字段
IPAutoconfigurationEnabled | Microsoft Learn
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters下的IPAutoconfigurationEnabled字段(不存在就创建DWORD类型)设置为0,然后禁用网卡,启动网卡,ip里面的确没有169.254的ip了,但是还是没有网络。
ArpRetryCount | Microsoft Learn
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters下的ArpRetryCount字段(不存在就创建DWORD类型)设置为0,然后禁用网卡,启动网卡,ip还是有问题,重启后ip正常了
于是采用了设置ArpRetryCount设置为0的方案,根据程序运行环境判断ArpRetryCount设置为0符合使用场景。