tcpdump抓包原理是在linux内核中全局的ptype_all中挂载了该套接字的pt(packet_type *pt),其中pt的字段func设置了相应的回调函数packet_rcv,但是这里有个疑问,内核__netif_receive_skb函数中,在遍历ptype_all之前,有个对protocol的判断,如果skb->protocol等于ETH_P_8021Q,就调用vlan_untag函数将skb中的vlan tag剥离,那么,为什么tcpdump还可以捕捉到带vlan tag的报文呢
--
FROM 59.61.185.*