z_h 发表于 2023-8-22 15:33:38

A40i 自定义以太网帧被网卡识别为错误包

本帖最后由 z_h 于 2023-8-22 15:48 编辑

我们使用 FCU2401 作为数据采集终端,用 网线直连外部设备。设备间没有走常规的网络协议而是基于 libpcap 进行网口数据帧的抓取。在数据帧抓取过程中发现有一种类型的数据帧抓取不到,使用ifconfig eth1 查看发现此类数据帧被网卡识别为错误包。

但在windows上通过 抓包工具Wireshark是可以抓到所有数据的, 通过Wireshark上抓取的内容比对与试验,发现错误帧与正常帧的区别。第13 14位数据为0x64 0x00时可以被网卡识别, 为 0x02 0x00 时无法被识别。
在发现数据帧被网卡识别为错误帧后,本人尝试通过ethtool 关闭了 网卡和校验, 但依然无效。

因数据帧协议是购买产品中已经定义好的, 无法修改协议。并且此类数据在windows上可以正常抓取,本人怀疑是网卡的某些解析或者校验未通过。希望有了解此方面的大师可以提供帮助!

zhichao 发表于 2023-8-23 09:52:52

网络协议不一致的需要您自己更换网络协议,解析不出来是正常的,本身两个协议的数据含义就不一样

z_h 发表于 2023-8-23 14:23:10

zhichao 发表于 2023-8-23 09:52
网络协议不一致的需要您自己更换网络协议,解析不出来是正常的,本身两个协议的数据含义就不一样

不是数据协议的问题, 我写了一个小程序通过 libpcap 库向 网口发送不同的以太网帧(该数据帧未加校验),通过测试我发现是 当以太网帧的第13个字节 小于 0x06 时就会被网卡认为是错误包,丢弃,大于等于 0x06 时就可以收到。

z_h 发表于 2023-8-23 14:30:32

通过查找资料发现以太网帧的格式为:

目标Mac(6字节)      源Mac(6字节)   网络类型(2字节)   数据

通过将第13字节赋值为 0-255 发现当第13字节小于0x06 时就是错误包,现在怀疑会不会是 13 14 字节代表了网络类型,0x06 以下为保留或者特殊含义,因此被网卡丢弃。但困惑的是在 windows系统的电脑上是可以的。

zhichao 发表于 2023-8-23 15:58:57

https://blog.csdn.net/weixin_46691179/article/details/128937449,由于数据部分的最大长度为1500(十六进制为0x05DC),所以可通过2字节的取值是否大于1500来区分是长度(取值小于或等于1500)还是类型(取值大于1500)。

z_h 发表于 2023-8-23 16:16:11

zhichao 发表于 2023-8-23 15:58
https://blog.csdn.net/weixin_46691179/article/details/128937449,由于数据部分的最大长度为1500(十六 ...

现在很奇怪的就是通过我的测试发现, 第13字节 只要小于0x06 就会被网卡认为是错误包丢弃,就是如何不让网卡把它丢弃呢

zhichao 发表于 2023-8-24 08:49:28

您把开发板使用的网络协议改成您用的协议就可以了
页: [1]
查看完整版本: A40i 自定义以太网帧被网卡识别为错误包