802.11和以太网封装问题

内核编译和嵌入式产品的设计与开发
回复
hongrun007
帖子: 17
注册时间: 2010-10-12 20:37

802.11和以太网封装问题

#1

帖子 hongrun007 » 2013-09-28 1:28

写了一个小模块,重要信息如下:

代码: 全选

        struct sk_buff *sk = skb;
        struct iphdr *iphead = (struct iphdr *)sk->network_header;
        struct ethhdr *eth = (struct ethhdr *)sk->mac_header;

        printk(KERN_ALERT "Receive packet from: %x.%x.%x.%x.%x.%x\n",eth->h_source[0],eth->h_source[1],
                        eth->h_source[2],eth->h_source[3],
                        eth->h_source[4],eth->h_source[5]);
        return NF_ACCEPT;
得到的MAC是正确的,一开始没注意,后来想想不对啊,我源主机和目的主机都是连的无线网,封装不应该是以太网,怎么会得到的正确的结果的,然后用wireshark抓包看了下,网卡好像拿到的是以太网封装,请教怎么回事,是不是无线网卡驱动自动更换封装了?如果是,如果想要看到802.11的封装形式,难道不应该用的sk_buff吗?
头像
lilydjwg
论坛版主
帖子: 4249
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 802.11和以太网封装问题

#2

帖子 lilydjwg » 2013-09-28 15:45

物理层不都是网卡管的吗?
hongrun007
帖子: 17
注册时间: 2010-10-12 20:37

Re: 802.11和以太网封装问题

#3

帖子 hongrun007 » 2013-09-28 21:34

lilydjwg 写了:物理层不都是网卡管的吗?
是网卡管的,netfilter是内核级别的,应该能看到原始数据吧?
ssjmhyvi
帖子: 1
注册时间: 2014-02-16 17:14
系统: ubuntu 10.01

Re: 802.11和以太网封装问题

#4

帖子 ssjmhyvi » 2014-02-16 18:16

80211工作在L2,netfilter拿到的包实际上是无线网卡驱动提交给L2以太网的包,这个包已经经过了转换,比如去掉80211帧头,修改以太网帧头等。所以你的wireshark拿到的也只是以太网帧而已。实际上L2里面还细分两层,LLC层与MAC层了MAC层就已经提供了无线帧与以太网帖的转换,LLC层屏蔽下层差异,使上层统一以以太网帧格式处理。所以你要捉取无线帧的话,得在无线驱动里面添加源码(类似于ieee80211_input.c/ieee80211_output.c里面)。
头像
lilydjwg
论坛版主
帖子: 4249
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 802.11和以太网封装问题

#5

帖子 lilydjwg » 2014-02-18 0:11

哦哦~
回复