linux - 所有收到的 VLAN 数据包都变成错误 Vlan 数据包

标签 linux network-programming virtual-machine ethernet libpcap

我正在尝试发送和接收 VLAN 数据包,但我在该 mac 上收到的每个数据包都变成了错误数据包。 有人可以向我解释一下收到错误数据包的原因吗?

这是状态...

有关以太网接口(interface) 4、10G_PLANE_A 的信息: 设备状态:UP 链路状态:UP 链接速度:10000 双工模式:全双工 流量控制:禁用 ------ MAC地址:02:00:01:02:08:40 收到的数据包:5662 收到的字节数:449816 收到的错误数据包:0 无客户端的数据包:5655 发送的数据包:1211 发送的字节数:41174 收到的 VLAN 数据包:1761 发送的 VLAN 数据包:1211 收到错误 Vlan 数据包:1761 发送错误 Vlan 数据包:0 雷德掉落:0

我发送的数据包是......

0000 02 00 01 02 08 40 00 01 ec 69 c7 b5 81 00 80 b4 .....@.. .i...... 0010 82 12 01 00 00 10 ab ba 交流 dc 07 ff 00 10 e9 ab ........................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 31 0b fa 74 ........ ....1..t

我尝试更改 VLNID,但没有用...

提前致谢 穆拉里·克里希纳。

最佳答案

您的 vlan 802.1Q header 为:0x8100 80b4,因此您的 vlan id 应为 0xb4 = 180 十进制

在此处查看 802.1Q header : http://en.wikipedia.org/wiki/IEEE_802.1Q

以太类型/长度就在 0x8100 80b4 之后,所以它是 8212。 由于 8212 大于 0x05DC,因此它被视为以太类型,但我找不到 0x8212 作为有效的 etype。

很可能您的数据包缺少长度字段。您应该在 0x8212 之前添加长度字段(2 个字节)。尝试一下,看看是否适合您。

关于linux - 所有收到的 VLAN 数据包都变成错误 Vlan 数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25684970/

相关文章:

sockets - 套接字编程中select()中的“nfds”参数

python - twisted.protocols.basic.LineReceiver 和 twisted.internet.protocol.Protocol 有什么区别?

azure - 为虚拟机指定的 Azure OS 磁盘大小太大?

azure - Azure 上的虚拟机迁移

Azure GPU密集型任务最佳解决方案

php - 未知 : Failed opening required '0ff' (include_path ='.:/tmp:/usr/lib/php:/usr/local/lib/php' ) in Unknown on line 0

linux - 如何切换文件中文本的大小写

java - 我如何知道服务器使用 Java 提供的默认密码套件

mysql - 如何测试MySQL在哪个端口上运行以及是否可以连接?

linux - 无需 cron 即可递归执行脚本