以太网头与80211头部的相互转换

原创 2018年04月17日 10:40:38

头部转换主要流程如下,起始那个snap header在我的驱动中直接是固定的值,有些是几种,具体有什么用一直不太了解,主要说明下mac headers。


80211头部如何解析需要关注DS段的值,根据值来解析地址。


其中转换后的wlan头中的addr2不一定就是以太网数据头的源mac,如下


举个例子

网络组网方式


usb连接电脑后,电脑发送数据到sta1

那么电脑端的802.3 header应该是这样

到达wlan上需要从空口发出去,转换成wlan头部,由于wlan是中转站点,所以源地址和发送地址并不一样,一次wlan头如下


memcpy(GetAddr1Ptr(pframe), (const void *)pethhdr->daddr, WLAN_ADDR_LEN);
memcpy(GetAddr2Ptr(pframe), BSSID, WLAN_ADDR_LEN);
memcpy(GetAddr3Ptr(pframe), (const void *)pethhdr->saddr, WLAN_ADDR_LEN);

sta接收到的数据转换为802.3,恢复成上面的样子

memcpy(daddr, (const void *)w_hdr->addr1, WLAN_ETHADDR_LEN);
memcpy(saddr, (const void *)w_hdr->addr3, WLAN_ETHADDR_LEN);

同时如果sta1回过来的数据包,那么eth和wlan头分别如下:


memcpy(GetAddr1Ptr(pframe), BSSID, WLAN_ADDR_LEN);
memcpy(GetAddr2Ptr(pframe), (const void *)pethhdr->saddr, WLAN_ADDR_LEN);
memcpy(GetAddr3Ptr(pframe), (const void *)pethhdr->daddr, WLAN_ADDR_LEN);

【以太网数据结构】以太网头部

以太网封包格式如图所示: 以太网目的地址和源地址各占6个字节,该地址即平常所说的网卡的MAC。每个网卡在全球拥有唯一的MAC! 在地址后面有两个字节表示类型,如:0800表示此真数据是IP...
  • u012819339
  • u012819339
  • 2015-11-24 17:14:03
  • 3412

以太网,IP, TCP, UDP头部格式

1.以太网帧的格式 以太网封装格式 2.IP报头格式   IP是TCP/IP协议簇中最为重要的协议。所有的TCP,UDP, ICMP和IGMP数据都以IP数据报格式传输。IP提供的是不可靠、无连接的...
  • star19830909
  • star19830909
  • 2017-04-26 11:29:28
  • 552

Ethernet IP TCP UDP 协议头部格式及大小

http://www.cnblogs.com/luxiaoxun/archive/2012/08/08/2628627.html The Ethernet header struct...
  • winbobob
  • winbobob
  • 2014-11-25 07:18:33
  • 1975

网络编程---以太网头 IP头 ARP包结构体封装及常用自定义网络转换函数(已测试)

以下的结构体在实际工程中经过了测试是可以的,自定义函数也经过了测试,到目前为止没有出现问题。// --------------------------------------------- // TC...
  • FreeApe
  • FreeApe
  • 2016-03-17 13:34:56
  • 1458

MTU与MSS的关系---以太网帧结构

MSS是指应用层在一个数据包内最大能传输的字节数 MTU是指IP层在一个数据包内最大能传输的字节数 MTU= MSS+TCP层头部长度+IP层头部长度 对于千兆以太网,每秒能传输1000Mbit...
  • yuxin8000
  • yuxin8000
  • 2014-03-29 21:48:46
  • 2052

TCP/IP/UDP/ICMP/ARP/ethernet 各种协议头部结构体

TCP/IP协议头部结构体(转)   网络协议结构体定义 [cpp] view plaincopyprint? // i386 is l...
  • xiexievv
  • xiexievv
  • 2015-04-23 19:41:33
  • 7284

ieee802.11数据radiotap介绍

之前文章介绍过在Linux系统用wireshark或tcpdump抓无线网卡数据包。发现每一数据帧前面都有一个叫radiotap的东西。它包含了如信号强度、频率等信息。本文首先介绍radiotap,然...
  • subfate
  • subfate
  • 2016-11-16 22:34:20
  • 3041

MAC、IP头、TCP头、UDP头帧格式、详解

一、MAC帧头定义 typedef struct _MAC_FRAME_HEADER {  char m_cDstMacAddress[6];    //目的mac地址  char m...
  • mincheat
  • mincheat
  • 2017-03-10 10:33:19
  • 638

mpls mpls mpls mpls mpls mpls mpls mpls

  • 2010年04月06日 00:03
  • 25KB
  • 下载
收藏助手
不良信息举报
您举报文章:以太网头与80211头部的相互转换
举报原因:
原因补充:

(最多只允许输入30个字)