Air Kiss技术实现方案(0.5).docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Air Kiss技术实现方案(0.5).doc

Air Kiss(飞吻)技术实现方案 一、Air Kiss技术原理简介 802.11是IEEE制定的无线局域网协议,802.11以802.2的逻辑链路控制封装来携带IP封包,因此能够以802.2 SNAP格式接收无线网络数据。如果开启wifi芯片的混杂模式监听空间中的无线信号,并以802.2 SNAP格式从数据链路层截取数据,就会得到如下图所示的数据包: 38-1492bytes 6bytes 6bytes 2bytes 3bytes 5bytes 4bytes 802.2 SNAP 格式数据包 DA字段表示目标mac地址,SA字段表示源mac地址,Length字段表示后面数据的长度,LLC字段表示LLC头,SNAP字段包括3bytes的厂商代码和2bytes的协议类型标识,DATA字段为负载,对于加密信道来说是密文的,FCS字段表示帧检验序列。 从无线信号监听方的角度来说,不管无线信道有没有加密,DA、SA、Length、LLC、SNAP、FCS字段总是暴露的,因此信号监听方便有了从这6个字段获取信息的可能。但从发送方的角度来说,由于操作系统的限制(比如ISO或者Android),DA、SA、LLC、SNAP、FCS五个字段的控制需要很高的控制权限,发送方一般是很难拿到的。因此只剩下Length这一字段,发送方可以通过改变其所需要发送数据包的长度进行很方便的控制。所以,只要制定出一套利用长度编码的通信协议,就可利用802.2 SNAP 数据包中的Length字段进行信息传递。 在实际应用中,我们采用UDP广播包作为信息的载体。信息发送方向空间中发送一系列的UDP广播包,其中每一包的长度(即Length字段)都按照Air Kiss通信协议进行编码,信息接收方利用混杂模式监听空间中的无线信号,并从数据链路层截取802.2 SNAP格式数据包,便可得到已编码的Length字段,随后接收方便可根据Air Kiss通信协议解析出需要的信息。整个过程如下图所示: AP 信息接收方 信息发送方 Air Kiss技术信息传输过程 二、Air Kiss通信协议 物理层协议 在信号载体方面,采用wifi无线信号进行信息传递,1-14全信道支持。 在信号编码方面,802.2 SNAP 数据包中的Length字段为数据发送方唯一可控字段,因此Air Kiss通信协议利用发送数据包的长度进行编码。由于受到MTU的限制,Length字段最大可编码位数为10bit。但实际测试过程中发现,UDP包长度与丢包率、乱序率成正比。因此本协议中,我们把Length字段编码位数限制在9bit,即UDP广播包的发送长度不大于512字节。 我们身处的无线网络环境有可能及其复杂,很有可能在同一个空间中存在多个AP,而这些AP又分布在相同或者不同的信道上,这样接收者一开始是不知道发送方在1-14哪个信道上发送信息,而且同一个信道上也可能会有很多设备在发送UDP广播包。在这种情况下,接收方监听到的数据包是海量的。必须从海量的数据信息中定位出发送方所在的信道和发送方的mac地址。另外,由于在UDP广播包发送过程中,一个UDP层的数据包,要经过IP层、数据链路层的封装,并且通过加密(加密方式包括WPA2、WPA、WEP三种)后才会被发送出去,所以发送方发送UDP广播包的长度与接收方监听SNAP包中的Length字段值存在差异,这就需要进行转义。然而,由于底层加密方式的不确定性,使得这个差异值也具有不确定性。 为解决这两个问题,在发送链路层数据(见下节)之前,需要先发送400ms的前导域(400ms = 8*50ms,即如果设备端以50ms的频率切换信道,则可以覆盖8个信道,因为一般用户环境不用监听14个信道,所以覆盖8个信道足已)。前导域由4个字节组成,其值固定为{1,2,3,4}。接收方在接收到这些前导域数据包后,利用SNAP包中的Length字段与之相减,从而获取到这个差异值。 举个例子,接受方通过监听,在链路层截获802.2 SNAP格式的前导数据包,其Length字段的值分别为53,54,55,56,那差异值就能确定为53-1=52。之后接收方接收到数据之后都用SNAP包的Length字段值减去52,即能得到实际的信息数据。 链路层协议 链路层数据结构如下图所示: 链路层数据结构示意图 链路层

文档评论(0)

suijiazhuang1 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档