![DHCP 成功后嵌入式系统的 ARP 请求无响应](https://linux22.com/image/1608003/DHCP%20%E6%88%90%E5%8A%9F%E5%90%8E%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%BB%9F%E7%9A%84%20ARP%20%E8%AF%B7%E6%B1%82%E6%97%A0%E5%93%8D%E5%BA%94.png)
我一直致力于使用 Wiznet W5100S 互联网卸载芯片在嵌入式系统上实现 UDP 单播数据包。
他们的库支持 DHCP 协商,我已经成功地从我所连接的网关租用了一个本地 IP 地址。当调用发送 UDP 单播数据包的函数时,如果芯片之前没有执行过此操作的记忆,它将自动发出 ARP 请求。我希望网关能够用它的 MAC 做出响应,但我根本没有得到任何响应,嵌入式系统报告“Dest_Unreach”。
您可以在下面看到 DHCP 协商(数据包 8-14)和失败的 ARP 请求(24):
我正在通过 wireshark 监控一切,并在此处捕获:https://filebin.net/m4x2a2ujezk6hug8
将我的嵌入式系统发出的 ARP 请求与我的笔记本电脑发出的 ARP 请求进行比较,除了我的嵌入式系统有一些尾随填充零之外,结构上没有任何区别。比较如下:
我想知道 DHCP 中是否有某些东西导致 ARP 失败,但与我的笔记本电脑的协商相比,差别不大,客户端 IP、网关 IP 和子网掩码似乎都正确。
我已经尝试了两个网关以防出现问题,但没有什么区别。
我一直在努力弄清楚这一点,任何帮助都将不胜感激!
答案1
对于其他发现此问题的人:
看来我一直在从路由器接收 ARP 响应。我主要没有意识到 ARP 响应是单播的,因此我根本无法指望在笔记本电脑上运行的 Wireshark 上看到它,因为它不是针对这个的!