接收UDP数据包



我目前正在处理FPGA和Ubuntu 20主机之间的UDP连接(防火墙已关闭,测试了不同的NIC(。为了发送UDP数据包,在FPGA上实现了一个自定义的以太网程序。在接收方,有一个简单的UDP服务器接收这些数据包。

问题是,我无法接收任何数据包。简单的UDP服务器已经过测试,当我从另一台电脑向它发送消息时,它就可以工作了。为了对FPGA进行故障排除,Wireshark用于监控流量。在Wireshark中,可以看到每个数据包及其数据,这意味着1-4层不负责(Wireshark记录(。甚至终端命令";ip-s链路";显示没有丢弃任何数据包(终端输出(。

我怎样才能找到包裹的下落?

工作和";FPGA";UDP数据包:差异

  • 239.255.255.250不是有效的源地址,因为它是多播地址。多播地址具有范围224到239中的第一部分(并且240-255被保留以供将来扩展(。多播源地址毫无意义,内核可能因此而丢弃了数据包
  • 它也在与接收器不同的子网上。我不认为这有什么不同,但也许它对169.254子网有影响(如果没有路由器,默认情况下会得到这个子网(。请尝试以169.254开头的源地址
  • 它也太短了。有效以太网数据包的最小大小为64字节,包括以太网CRC。你不必为UDP数据使用所有字节——UDP长度可以比数据包短,多余的字节是未使用的
  • 请验证IPv4标头校验和。我不知道Wireshark为什么不帮你核实。它必须是正确的,否则内核将丢弃数据包

最新更新