V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
aqtata
V2EX  ›  宽带症候群

arp 收不到回复可能是什么原因?

  •  
  •   aqtata · 260 天前 · 1427 次点击
    这是一个创建于 260 天前的主题,其中的信息可能已经有所发展或是发生改变。

    局域网,一台电脑控制嵌入设备。udp 通信,软件启动时会广播一下,设备回复,然后本地 ARP 缓存就更新了。

    以前仅支持单一网卡,所以 udp 绑定到特定的网卡,比如 192.168.10.100 ,广播地址是 255.255.255.255 ,这样一切正常。

    新程序要支持多网卡,所以 udp 绑定到 0.0.0.0 ,广播地址为特定网段的地址,比如 192.168.10.255 。

    问题来了,如果设备意外重启后,程序再发送任何数据都会失败,因为 arp 缓存已经没了。

    抓包发现系统会再次发送 arp 请求,但是收不到设备回复。可如果我用老程序的方式绑定在具体的网卡(192.168.10.100)上,并全局广播( 255.255.255.255 )就能收到 ARP 回复。

    是硬件存在问题还是什么原因?

    9 条回复    2024-03-01 11:45:54 +08:00
    pagxir
        1
    pagxir  
       260 天前 via Android
    明显是网络配置有问题。广播报文是跟网卡的。
    wheat0r
        2
    wheat0r  
       260 天前
    多网卡关程序什么事,你在操作系统上做 teaming 不好吗

    首先要理清几个问题:
    1 、你说的软件是安装在哪里的,你说的程序又是安装在哪里?
    2 、多网卡是安装在哪里
    3 、失效的 ARP 缓存是在哪里
    johnnyyeen
        3
    johnnyyeen  
       260 天前
    想办法定期重新预热 arp 缓存?
    aqtata
        4
    aqtata  
    OP
       260 天前
    @wheat0r windows 系统上的工具软件,arp 就是用 arp -a 查看的啊,设备 ip-mac 映射过期后就会发送失败。我用 win32 api SendARP 去发起请求,设备也不会回复。唯独用老程序中的方法去广播就回复了,很奇怪。。。
    aqtata
        5
    aqtata  
    OP
       260 天前
    @johnnyyeen 暂时将设备 ip 、mac 添加为静态 arp 解决了
    beyondstars
        6
    beyondstars  
       260 天前
    我感觉设备不回复 ARP 那问题就出在设备上,而不是出在控制设备的那个 Windows 电脑上。
    beyondstars
        7
    beyondstars  
       260 天前
    我觉得回不回复 ARP 那确实不是应用程序(或者应用程序开发者)关心的问题,像 ARP 这种底层的协议一般都是操作系统实现的,应该是嵌入式设备网络配置错误的原因,跟程序 UDP 绑定哪个 socket 关系不大……
    wscgogo
        8
    wscgogo  
       259 天前
    应该是嵌入式设备的问题,一般广播的 arp 请求发出后如果设备端拥有该 ip 就会答复报文,这里没有答复一可能是网络禁用了广播报文只允许静态 arp 二就是设备端问题了
    htfcuddles
        9
    htfcuddles  
       259 天前
    应该是广播报文没从对应网卡发出去,两边抓包分析一下就知道了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1146 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 18:53 · PVG 02:53 · LAX 10:53 · JFK 13:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.