关于前段时间抓包镜像端口的数据,发现板卡linux抓到的数据比在windows wireshark抓到的数据多4个字节的问题!现在做个初步的总结。
为什么多出来四个字节,而wireshark抓不到这四个字节呢?
1、交换机-tp-link 2层交换机,支持镜像端口,下面标注颜色的文字注意读。
VLAN(802.1Q)标签在以太网帧中占4个字节,即带VLAN标记的数据帧比普通的以太网帧多4个字节,包含2个字节的标签协议标识(TPID)和2个字节的标签控制信息(TCI):
(1)TPID(Tag Protocol Identifier)是IEEE定义的类型,表明这是一个加了802.1Q标签的帧,此2个字节固定为0x8100。
我抓到的数据是 0x81000001,然后接着是0x0800(这应该是标注ip数据类型的)
(2)TCI包含下面的一些元素:
Priority:这3 位指明帧的优先级。一共有8种优先级,0-7。IEEE 802.1Q标准使用这三位信息。
CFI(Canonical Format Indicator):CFI值为0说明是规范格式,1为非规范格式。它被用在令牌环/源路由FDDI介质访问方法中来指示封装帧中所带地址的比特次序信息。
VLAN ID(VLAN Identified): 这是一个12位的域,指明VLAN的ID,一共4096个,每个支持802.1Q协议的交换机发送出来的数据包都会包含这个域,以指明自己属于哪一个VLAN。
******镜像交换机端口抓包的过程中,机器网卡会自动识别并将数据包中的vlan tag标记去除掉送给上层处理,所以在wireshark软件里面是看不到VLAN tag的相关信息的。所以,需要修改机器的部分参数来让网卡保留VLAN tag标签*******我没有找到我的电脑怎么设置,可能我的电脑网卡不支持该功能吧!有条件的童鞋测试一下,同时也可以给我发个图片观摩观摩
之前根本不知道这个梗,抓到的数据一直解不出来,以为根本没有抓到数据,解出来的对应到的都是些乱七八糟的数据,然后将抓到的数据总长度打印出来看,发现总长度都比wireshark抓到的长度多4个字节,然后看到mac地址打印好像是正确的,但是对应的ip地址都不能跟mac地址对应起来,试着做了偏移,之前做的是链路层偏移14个字节是ip数据,最后发现偏移18个字节之后,解出来的ip地址跟mac地址对应上了,后面就验证payload数据是否是我需要的数据
。。。。。。。。
镜像交换机端口抓包的过程中,机器网卡会自动识别并将数据包中的vlan tag标记去除掉送给上层处理,所以在wireshark软件里面是看不到VLAN tag的相关信息的。所以,需要修改机器的部分参数来让网卡保留VLAN tag