我一直在努力使用 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 和子网掩码似乎都是正确的。
我已经尝试了两个网关以防出现问题,但没有区别。
我一直在努力解决这个问题,任何帮助将不胜感激!
对于其他发现此问题的人:
看来我一直在收到来自路由器的 ARP 响应。我没有意识到的主要事情是 ARP 响应是单播的,所以我根本不能指望在我的笔记本电脑上运行的 Wireshark 上看到它,因为它不是针对那个的!