#码力全开·技术π对#关于ICMP type 3 code 2问题

qt上位机使用 ping命令 ping gd32 ,下位机gd32 lwip 输出 ICMP type 3 code 2 not supported,主要的问题是我下位机收到了一条不符合icmp的报文。从wireshark抓包发现也确实是上位机发来的,但是目前上位机只调佣ping cmd。这种回事什么问题呢?


tcp icmp
莹莹浮动的尘埃
2025-05-14 08:56:11
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
周周的奇妙编程
周周的奇妙编程

从 Wireshark 抓包来看,报文确实是上位机发出的,但内容不符合标准 ICMP 协议格式。

这种情况通常不是因为上位机调用了别的命令,而是网络环境中存在某些中间层对 ICMP 报文做了封装、转换或注入了异常流量。例如,某些虚拟网卡驱动(如 VMware、VirtualBox、Windows Sandbox 等)或防火墙/NAT 软件可能会在底层修改 ICMP 包结构,导致发往目标设备的数据包并不是标准的 ping 请求,从而被 LwIP 认为是非法协议类型并丢弃。


此外,也有可能是上位机本身存在多个网络接口,其中一个非预期的接口误发了其他类型的 ICMP 或 IP 报文,比如 IGMP 或者 TCP/UDP 封装的控制信息,而这些数据被错误地路由到了 GD32 的 IP 地址。


建议你在上位机使用更精确的网络工具(如 ​​ping -S 指定源地址​​ 或使用 WinPcap / libpcap 接口的自定义 ping 工具)来限定发送接口和构造标准 ICMP Echo 请求,并通过 Wireshark 对比分析实际发出的帧是否为标准 ICMP 类型 8(Echo Request)。同时检查 GD32 的 LwIP 配置是否完整启用了 ICMP 支持,确保其能正确响应标准 ping 请求。

分享
微博
QQ
微信https://www.51cto.com/aigc/
回复
2025-05-14 15:00:28
发布
相关问题
提问