资讯详情

Android 系统 wifi基础知识

第3章 Wi-Fi基础知识 本文涉及的源代码文件名称和位置 ·wireless.h external/ kernel-headers/ original/ linux/ wireless.h ·driver_wext.c external/ wpa_supplicant_8/ src/ drivers/ driver_wext.c ·netlink.h external/ kernel-headers/ original/ linux/ netlink.h ·driver_nl80211.c external/ wpa_supplicant_8/ src/ drivers/ driver_nl80211.c ·nl80211_copy.h external/ wpa_supplicant8/ wpa_supplicant/ src/ drivers/ nl80211_copy.h 3.1 概述 W i-Fi(W ireless Fidelity)无线网络通信技术的品牌W i-Fi联盟(W i-Fi Alliance,W FA)拥有。W FA专门负责W i-Fi认证和商标授权。严格来说,W i-Fi是 认证名称用于测试无线网络设备是否符合要求IEEE 802.一系列协议的规范。 过该认证的设备将被授予一个名为W i-Fi CERTIFIED商标。然而,随着获得,W i-Fi认证 随着设备的普及,人们习惯为常被称为无线网络W i-Fi网络了。 提示 IEEE 802.11规范和W i-Fi一两句话很难说清楚关系。读者可以阅读参考资料 [1]理解。简单地说,IEEE 802.11是无线网络技术的官方标准,W FA则参考802.11 制定了一套规范W i-Fi测试方案(Test Plan)。不过,Test Plan和802.11的内容还没有完成 一致Test项目包括目前的802.11未涉及的内容。Test Plan也未覆盖802.11 所有内容。所以参考资料[1]W i-Fi定义为802.扩展规范子集。 本章从以下两个方面向读者介绍W i-Fi技术。 ·IEEE 802.11协议涉及的理论知识包括无线频谱资源IEEE 802.11/ 802.X协议中 相关内容和关键概念(如Access Point)、MAC帧、无线网络安全等。 ·如何在Linux系统中通过Linux W ireless Extension以及nl80211 API操作无线网 络设备。 提示 由于篇幅问题,本书将不讨论W FA一些标准(如W i-Fi Display、W i-Fi Simple Configuration等等。但是作为W i-Fi作者将在博客中处理技术的重要组成部分 系统介绍 ① 。 ① 作者的博客地址是blog.csdn.net/ innost或者my.oschina.net/ innost/ blog。 3.2 无线电频谱和802.协议的发展过程 本节将介绍无线电频谱和802.协议的发展历程。 3.2.1 无线电频谱知识 [2] W i-Fi依靠无线电波传输数据。在绝大多数情况下,这些可以收发无线电波的设备经常被接收 由于无线频谱线频率范围内工作。这是因为无线频谱(即无线电波的频率)Radio Spectrum,单位为Hz)这是一种非常重要的资源。因此,目前大多数国家使用无线频谱 有国家级管制。以下是几个主要国家的管制机构。 ·FCC(Federal Communication Commission),联邦通信委员会。 ·ERO(European Radio-Communication Office),欧洲无线电通信局。 ·MIIT(Ministry of industry and Information Technology),工信部下属 的无线电管理局。 ·ITU(International Telecommunication Union),国际电信联盟。 这些机构如何管理无线频谱资源?一般来说,无线频谱资源将遵循无线电频谱 划分频率。频率范围内的频谱资源必须经这些管制机构授权才能使用, 一些频率范围的频谱资源可以在没有管制机构授权的情况下使用。这些未经授权的频谱大多集中 在ISM(Industrial Scientific Medical),在国际共用频段中。 ISM是位于ISM工业、科学、医学三大机构采用频谱资源。ISM一词最早 由FCC定义。但是,各国的ISM频段不完全一致。例如,美国有三个频段ISM,分别 是902-908MHz、2400-2483.5MHz和5725-5850MHz。此外,各国都将2.4GHz频段划分 于ISM范围,所以W i-Fi、蓝牙可以在这个频段工作。 注意 虽然无须授权就可以使用这些频段资源,但管制机构对设备的功率却有要求,因 无线频谱具有易污染的特点,而较大的功率会干扰周围其他设备的使用。 3.2.2 IEEE 802.11发展历程 使用过W i-Fi读者或多或少接触过IEEE 802.它到底代表什么? IEEE(Institute of Electrical and Electronics Engineers)是美国电气和电子工人 程师协会的缩写。802是该组织专门负责制定局域网标准的委员会,也被称为 LMSC(LAN/ MAN Standards Committee,局域网/ 成立城域网标准委员会。 1980年2月,其任务是制定局域网和城域网标准。 由于工作量大,委员会被细分为多个工作组(W orking Group),每个工作组负 责解决某个特定方面问题的标准。工作组也会被赋予一个编号(位于802编号的后面,中间 用点号隔开),所以802.第11个工作组代表802项目 [3] ,专门负责制订无线局域网 (W ireless LAN)的介质访问控制协议(Medium Access Control,MAC)及物理层 (Physical Layer,PHY)技术规范。 类似于工作组的划分,工作组将细分为多个任务组(Task Group,TG),任务 是标准修改和更新的具体方面。TG如英文字母,a、b、c等。 提示 TG编号使用大小写字母,其含义不同。小写字母的编号表示该标准不能单独存储 在。例如802.11b代表它是在802.11修订工作本身不能独立存在。大写字母 这是一个完整的独立标准,如802.1X是处理安全的独立标准。 802.无线网络技术的规范已经制定好几个版本。表3-1是IEEE 802.11各 简要介绍版本 [4] 。 提示 可从IEEE下载802官网.11-2012标准PDF全文(下载地址为 http:/ / standards.ieee.org/ about/ get/ 802/ 802.11.html),长达2793页,包括802页.11a 到802.11z每个版本(包括a、b、d、e、g、h、i、j、k、n、p、r、s、u、v、w、y、z) 涉及的技术规范。 3.3 802.11无线网络技术 本节将介绍802.11涉及无线网络技术。首先介绍OSI基本参考模型。 3.3.1 OSI基本参考模型及相关基本概念 1.OSI/ RM ISO(International Organization for Standardization,国际标准化组织)和 IEC(International Electrotechnical Commission,国际电工技术委员会)于1983年 联合发布了ISO/ IEC 7498标准。该标准定义了名称OSI/ RM [5] (开放系统互联参考模型 型,Open Systems Interconnection Reference Model)。 在OSI/ RM计算机网络系统结构分为七层,其名称及对应关系如图3-1所示。 图中绘制了OSI/ RM另一个常用的网络系统TCP/ IP结构OSI/ RM,它将网 络分为七层,由上到下分别如下 [6] 。 ·应用层(Application Layer):应用层可以与应用程序界面沟通,以显示给用户 目的。共同协议有HTTP、HTTPS、FTP、SMTP等等。其数据单位为 APDU(Application Protocol Data UNIT)。 ·表示层(Presentation Layer):语法转换层可以为不同的客户端提供数据和信息 更换,使系统解释为正确的数据,并提供压缩解压、加密解密等服务。例如,不同的网格 式图像(如GIF、JPEG、TIFF等)显示是由位于表示层的协议支持的。其数据单位 为PPDU(Presentation Protocol Data UNIT)。 图3-1 OSI RM及TCP/ IP结构 ·会话层(Session Layer):会话层用于为通信双方制定通信方式,创建和取消会话 (双方通讯)等。共同协议包括ZIP、AppleTalk、SCP等等。其数据单位为 SPDU(Session Protocol Data UNIT)。 ·传输层(Transport Layer):传输层用于控制数据流量和调试错误 为了保证通信的顺利进行。发送端的传输层将为数据分组添加序列号,以便于接收端重组分组 有用的数据或文件。传输层的常见协议包括TCP、UDP等。其数据单位为TPDU(Transport Protocol Data Unit)。 ·网络层(Network Layer):网络层搜索数据传输的目的地,然后选择传输 发送数据的最佳路线。网络层数据的单位是Packet或Datagram。路由器等是常见的设备。 见协议有IP、IPv6。 ·数据链路层(Data Link Layer):建立相邻节 点之间的数据链路。通过错误控制提供数据帧(Frame)信道上没有错误传输。数据链路 层在不可靠的物理介质上提供可靠的传输。该层的作用包括物理地址寻址、数据的成帧、流 量控制、数据的检错、重发等。数据链路层数据的单位为Frame(帧)。常见的设备有二层 交换机、网桥等。 ·物理层(Physical Layer):物理层定义了通信设备机械、电气、功能和过程等方面 的特性,用以建立、维护和拆除物理链路连接。物理层数据的单位为bit。 图3-1中左边所示为另外一个常用的网络体系,即TCP/ IP模型。对比图3-1中的两个模 型,我们可简单认为TCP/ IP Model是OSI/ RM的一个简化版本。 提示 关于OSI/ RM的详细信息,请读者阅读本章参考资料[5]。 2.LLC和MAC子层 虽然ISO/ IEC 7498标准所定义的OSI/ RM只将网络划分为七层。但实际上每一层还可 划分为多个子层(Sub Layer)。所有这些子层中,最为人熟知的就是ISO/ IEC 8802 [7] 规 范划分Data Link Layer而得到的LLC(Logic Link Control Sub Layer)和 MAC(Medium Access Control Sub Layer)。它们的信息如图3-2所示。 图3-2 MAC和LLC子层 ISO/ IEC 8802将Data Link Layer划分成了两个子层。 ·媒介访问控制子层(MAC Sub Layer):该子层的目的是解决局域网(Local Area Network,LAN)中共用信道的使用产生竞争时,如何分配信道的使用权问题。目前LAN 中常用的媒介访问控制方法是CSMA/ CD(争用型介质访问控制)。由于无线网络的特殊 性,MAC的控制方法略有不同。将在下文介绍相关内容。 ·逻辑链路控制子层(LLC Sub Layer):该子层实现了两个站点之间帧的交换,实 现端到端(源到目的),无差错的帧传输和应答功能及流量控制功能。 在Data Link层划分的这两个子层中,802.11只涉及MAC层。由于物理介质的不同, 无线和有线网络使用的MAC方法有较大差别,主要区别如下 [8] 。 ·有线网络最常使用的方法(此处仅考虑以太网)是CSMA/ CD(Carrier Sense Multiple Access/ Collision Detect,载波监听多路访问/ 冲突检测机制)。其主要工作原 理是:工作站发送数据前先监听信道是否空闲,若空闲则立即发送数据。并且工作站在发送 数据时,边发送边继续监听。若监听到冲突,则立即停止发送数据并等待一段随机时间,然 后再重新尝试发送。 ·无线网络主要采用CSMA/ CA(Carrier Sense Multiple Access/ Collision Avoidance,载波监听多路访问/ 冲突避免机制)方法。无线网络没有采用冲突检测方法的 原因是:如果要支持冲突检测,必须要求无线设备能一边接收数据信号一边传送数据信号, 而这种设计对无线网络设备来说性价比太低。另外,冲突检测要求边发送数据包边监听,一 旦有冲突则停止发送。很显然,这些因发送冲突而被中断的数据发送将会浪费不少的传输资 源。所以,802.11在CSMA/ CD基础上进行了一些调整,从而得到了CSMA/ CA方法。其主 要工作原理见下节内容。 注意 CSMA/ CA协议信道利用率低于CSMA/ CD协议信道利用率。信道利用率受传输 距离和空旷程度的影响,当距离远或者有障碍物影响时会存在隐藏终端问题,降低信道利用 率。在802.11b W LAN中,在1Mbps速率时最高信道利用率可达到90% ,而在11Mbps时最 高信道利用率只有65% 。 3.CSMA/ CA [8] CSMA/ CA主要使用两种方法来避免碰撞。 ·设备发送数据前,先监听无线链路状态是否空闲。为了避免发生冲突,当无线链路被 其他设备占用时,设备会随机为每一帧选择一段退避(backoff)时间,这样就能减少冲突 的发生。 ·RTS-CTS握手。设备发送帧前,先发送一个很小的RTS(Request To Send)帧给 目标端,等待目标端回应CTS(Clear To Send)帧后才开始传送。此方式可以确保接下来 传送数据时,其他设备不会使用信道以避免冲突。由于RTS帧与CTS帧长度很小,使得整体 开销也较小。 我们通过图3-3来介绍RTS和CTS的作用。 图3-3 RTS/ CTS原理 如图3-3所示,以站A和站B之间传输数据为例,站B、站C、站E在站A的无线信号覆盖 的范围内,而站D不在其内。站A、站E、站D在站B的无线信号覆盖的范围内,但站C不在 其内。 如果站A要向站B发送数据,站A在发送数据帧之前,要先向站B发送一个请求发送帧 RTS。在RTS帧中会说明将要发送的数据帧的长度。站B收到RTS帧后就向站A回应一个允 许发送帧CTS。在CTS帧中也附上站A欲发送的数据帧的长度(从RTS帧中将此数据复制到 CTS帧中)。站A收到CTS帧后就可发送其数据帧了。 怎么保证其他站不会干扰站A和站B之间的数据传输呢? ·对于站C,站C处于站A的无线传输范围内,但不在站B的无线传输范围内。因此站C 能够收听到站A发送的RTS帧,但经过一小段时间后,站C收听不到站B发送的CTS帧。这 样,在站A向站B发送数据的同时,站C也可以发送自己的数据而不会干扰站B接收数据(注 意,站C收听不到站B的信号表明,站B也收不听到站C的信号)。 ·对于站D,站D收听不到站A发送的RTS帧,但能收听到站B发送的CTS帧。因此,站 D在收到站B发送的CTS帧后,应在站B随后接收数据帧的时间内关闭数据发送操作,以避 免干扰站B接收自A站发来的数据。 ·对于站E,它能收到RTS帧和CTS帧,因此,站E在站A发送数据帧的整个过程中不 能发送数据。 总体而言,使用RTS和CTS帧会使整个网络的效率下降。但由于这两种控制帧都很短 (它们的长度分别为20和14字节)。而802.11数据帧则最长可达2346字节,相比之下的开 销并不算大。相反,若不使用这种控制帧,则一旦发生冲突而导致数据帧重发,则浪费的时 间就更大。 另外,802.11提供了三种情况供用户选择以处理。 ·使用RTS和CTS帧。 ·当数据帧的长度超过某一数值时才使用RTS和CTS帧。 ·不使用RTS和CTS帧。 尽管协议经过了精心设计,但冲突仍然会发生。例如,站B和站C同时向站A发送RTS 帧。这两个RTS帧发生冲突后,使得站A收不到正确的RTS帧因而站A就不会发送后续的 CTS帧。这时,站B和站C像以太网发生冲突那样,各自随机地推迟一段时间后重新发送其 RTS帧。 提示 根据802.11协议,CSMA/ CA具体运作时由协调功能(Coordination Function,CF)来控制。协议规定有四种不同的协调功能,分别是DCF(Distributed CF,分布式协调功能)、基于DCF之上的PCF(Point CF)、HCF(Hybrid CF,混合 型协调功能)以及用于Mesh网络的MCF(Mesh CF)。由于无线网络是共享介质,所以协 调功能的目的就是用于控制各个无线网络设备使用无线媒介的时机以避免冲突发生。形象点 说,这就好比在一个会议室里,所有人都可以发言,但如果多个人同时发言又不知道谁和谁 在说话。所以,每个打算发言的人都需要检查当前发言的情况。本章不详细介绍802.11中 CF相关的内容。感兴趣的读者可阅读802.11协议第9节"MAC sublayer functional description"。 另外,规范还定义了基于竞争的服务(contention-based service,使用DCF进行数 据交换)和基于无竞争的服务(contention-free service,使用PCF进行数据交换),本 章也不讨论它们。 4.MAC层Service及其他概念 [5][9] ISO/ IEC 7498及相关的一些标准文档除了对网络体系进行层次划分外,还定义了层和 层之间交互方式及其他一些基本组件。它们可用图3-4来表示。 图3-4 MAC Entity、Service和Clients 图3-4绘制了MAC层相关的组件及交互方式。 ·协议规定了每一层所提供的功能,这些功能统一用Service来表示。MAC层为上层提 供MAC Service。从Java编程角度来看,就好比定义了一个名为MAC Service的Java Package。 ·每一层内部有数个Entity。Entity代表封装了一组功能的模块。上面提到的Service 就是由Entity提供的。根据OSI/ RM的层次关系,第N层为第N+1层提供服务。所以,MAC Entity对上一层提供MAC Service。从Java编程角度来看,MAC Entity就好比MAC Service Package中定义的类,不同的Entity代表该Package中实现不同的功能类。一个 Package中的Entity可以相互调用以完成某个功能。 ·第N+1层要使用第N层服务时,必须经由Service Access Point来完成。MAC的 Service必须借由MSAP(MAC Service Access Point)来访问。 根据上面的介绍,Entity定义了一个类,其中是否定义了相应的功能函数呢?在标准文 档中,和功能函数对应的术语是primitives(原语)及它们的parameters(参数)。图3- 4列举了MAC Service的两个重要函数,分别是如下。 ·M_UNITDATA.request:Client调用该原语发送数据。该原语的参数是 destination_address(目标地址)、source_address(源地址)、MSDU(MAC Service Data Unit,即数据)、priority(优先级)。 ·M_UNITDATA.indication:当位于远端机器的MAC层收到上面发送的数据后,将 通过indication原语通知上一层以处理该数据。 提示 关于MAC层的服务详细定义,请读者阅读3.3.5节MAC服务定义内容。 值得指出的是,规范只是从逻辑上定义了上述内容,它并没有指定具体的实现。关于 MAC Service的详细定义,读者可阅读本章参考资料[10],即ISO/ IEC 15802-1。 协议还定义了SDU和PDU两个概念。当上一层调用MAC的request原语时,会把要发 送的数据传给MAC层。这个数据被称为MSDU。对MAC层来说,MSDU其实就是MAC要 发送的数据,即载荷(Payload)。MAC层处理Payload时还会封装MAC层自己的一些头 信息。这些信息和MSDU共同构成了MAC层的Protocol Data Unit(简写为MPDU)。从 OSI/ RM角度来看,经过N+1层封装后的数据是(N+1)-PDU。该数据传递给N层去处理 时,对N层来说就是(N)-SDU。N层封装这个SDU后就变成自己的(N)-PDU了。 5.MIB [11] 在阅读802.11相关规范时,经常会碰到MIB(Management Information Base,管理 信息库)。MIB是一个虚拟的数据库,里边存储了一些设备信息供查询和修改。MIB常见的 使用之处是网管利用SNMP协议管理远程主机、路由器等。 MIB内部采用树形结构来管理其数据。内部的每一个管理条目(Entry)通过 OID(Object IDentifier)来访问。MIB定义了Entry的属性和可取的值。由于属性及其 可取值的定义采用了与具体编程语言无关的方式,所以一个MIB库可以很轻松地通过编译器 (compiler)将其转换成对应的编程语言源码文件。 提示 MIB的定义比较烦琐,可阅读参考资料[11]中的资料列表以学习完整的MIB知 识。 从笔者角度来看,对802.11来说,MIB就是定义的一组属性。802.11定义的MIB属性 在http:/ / www.ieee802.org/ 11/ 802.11mib.txt中。下载后将得到一个802.11mib.txt文 件。可通过JMIBBrowser ① 工具加载并查看其内容,如图3-5所示。 图3-5 802.11 MIB内容 首先点击图3-5所示左下角的"Load MIB"按钮以加载802.11mib.txt文件,然后查看 802.11mib定义的一些属性。如图3-5所示,左侧显示当前查看的dot11MACAddress的条 目。右侧显示该条目的信息,Access中的"read-only"表示只读,Description表示该条目 的意义。 802.11mib定义了一个较全的属性集合,一般而言,设备可能只支持其中一部分属性。 图3-6所示为Note 2上wlan0设备的MIB信息截图(由于篇幅问题只包含部分Note 2 wlan0 设备的MIB属性)。 以第一条属性dot11RSNAOptionImplemented为例,其在802.11mib.txt的定义如图 3-7所示。 相比直接浏览802.11mib.txt文本文件而言,利用JMIBBrowser工具查看属性会更加 方便和直观一些。 图3-6 Note 2 wlan0设备的MIB属性 图3-7 dot11RSNAOptionImplemented属性内容 提示 以后分析wpa_supplicant源码时,会碰到802.11mib定义的属性,建议在阅读 本节时下载相关文件和工具程序。另外,以上内容涉及的知识点是读者以后阅读802.11协议 时必然会碰到的。由于802.11协议引用的参考资料非常多,故本节整理了其中最基础的知识 点,请读者务必认真阅读本节内容。 ① 用Java语言编写的小工具,可利用SNMP协议查看和设置指定设备MIB,下载地址为 http:/ / sourceforge.net/ projects/ jmibbrowser/ 。 3.3.2 802.11知识点导读 802.11规范全称为《Part 11:W ireless LAN Medium Access Control(MAC)and Physical Layer(PHY)Specifications》。从其标题可 知,802.11规范定义了无线局域网中MAC层和PHY层的技术标准。 2012年版的802.11协议全文共2793页,包含20小节(clause),23个附录(A~ W )。图3-8所示为802.11协议原文目录的一部分。 图3-8 802.11协议原文目录 由图3-8可知802.11协议内容非常丰富。读者可尝试阅读该文档,但估计很快会发现这 将是一件非常枯燥和令人头疼的事情。主要原因是此规范类似于手册,它非常重视细节的精 准,但各技术点前后逻辑上的连贯性较差,使得读者极难将散落在协议中各个角落的技术点 整理出一个内容有序,难度由浅入深的核心知识框架来。 基于上述原因,本章后续小节将从以下几个方面介绍802.11规范中的一些核心内容。 ·3.3.3节介绍802.11中的物理组件和网络结构。 ·3.3.4节将在物理组件和网络结构基础上,介绍802.11为无线网络所定义的服务。了 解这些服务对我们从整体上理解无线网络的功能有重要意义。 ·3.3.5节介绍802.11 MAC服务和帧方面的内容。这部分知识比较具体,相信读者理解 起来没有问题。 ·3.3.6节介绍MAC层管理实体方面的内容。清楚这部分内容有助于读者理解后续有关 Linux W i-Fi编程的知识。 ·3.3.7节介绍802.11安全性方面的知识。 提示 篇幅原因,本书不可能囊括规范的所有内容。但相信读者在理解本节内容的基础 上,能够轻松开展更加深入的研究。另外,为帮助读者理解规范,本章会在重要知识点之处 添加“规范阅读提示”。 由于802.11物理层涉及大量和无线电、信号处理相关的知识。这些知识不仅内容枯燥繁 杂,而且对软件工程师来说并无太大意义,故本章不做介绍。愿意深入研究的读者可阅读相 关资料。 3.3.3 802.11组件 本节介绍802.11规范中的物理组件和相关网络结构。首先来看无线网络中的物理组件。 1.物理组件 [12] 802.11无线网络包含四种主要物理组件,如下所示。 ·W M(W ireless Medium,无线媒介):其本意指能传送无线MAC帧数据的物理 层。规范最早定义了射频和红外两种物理层,但目前使用最多的是射频物理层。 ·STA(Station,工作站):其英文定义是"A logical entity that is asingly addressable instance of aMAC and PHY interface to the W M"。通俗点说,STA就是 指携带无线网络接口卡(即无线网卡)的设备,例如笔记本、智能手机等。另外,无线网卡 和有线网卡的MAC地址均分配自同一个地址池以确保其唯一性。 ·AP(Access Point,接入点):其原文定义是"An entity that contains one STA and provides access to the distribution services,via the W M for associated STAs"。由其定义可知,AP本身也是一个STA,只不过它还能为那些已经关联的 (associated)STA提供分布式服务(Distribution Service,DS)。什么是DS呢?请读 者阅读下文。 ·DS(Distribution System,分布式系统):其英文定义为"A system used to interconnect aset of basic service sets(BSSs)and integrated local area networks(LANs)to create an extended service set(ESS)“。DS的定义涉及BSS、 ESS等无线网络架构,其解释见下文。 上述四个物理组件如图3-9所示。其中,最难解释清楚的就是DS。笔者在仔细阅读规范 后,感觉其对DS的解释并不直观。此处将列举一个常见的应用场景以帮助读者理解。 图3-9 802.11四大主要物理组件 一般家用无线路由器一端通过有线接入互联网,另一端通过天线提供无线网络。打开 Android手机上的W i-Fi功能,并成功连接到此无线路由器提供的无线网络(假设其网络名 为"TP-LINK_1F9C5E”,可在路由器中设置)时,我们将得到: ·路由器一端通过有线接入互联网,故可认为它整合(integrate)了LAN。 ·不论路由器是否接入有线网络(即本例中的互联网),手机(扮演STA的角色)和路 由器(扮演AP的角色)之间建立了一个小的无线网络。该无线网络的覆盖范围由AP即路由 器决定。这个小网络就是一个BSS。另外,定义中提及的ESS是对BSS的扩展。一个ESS可 包含一或多个BSS。在本例中,ESS对应的ID就是"TP-LINK_1F9C5E",即我们为路由器 设置的网络名。 上述内容中将BSS和LAN结合到一起以构成一个ESS的就是DS。虽然规范中并未明示 DS到底是什么,但绝大部分情况下,DS是指有线网络(通过它可以接入互联网)。后文将 介绍DS所提供的分布式服务(即DSS)。现在对读者来说,更重要的概念是其中和无线网 络架构相关的BSS和ESS等。这部分内容将在下节介绍。 规范阅读提示 1)上文介绍的AP、STA、DS的定义都来自于802.11的3.1节。该节所列的定义是最精 确的。以DS为例,此节所定义的DS涉及和有线网络的结合。但规范中其他关于DS的说明 均未明示是否一定要和LAN结合。 2)关于STA,其定义只说明它是一个可"singly addressable"的实体,而没有说明其 对应的功能。所以,读者会发现AP也是一个STA。另外还有提供QoS(Quality of Service)的STA。除此之外,从可移动性的角度来看,还有Mobile STA和Portable STA 之分。Portable STA虽然可以移动,但只在固定地点使用(例如AP就是一个典型的 Portable STA)。而Mobile STA表示那些只要在W i-Fi覆盖范围内,都可以使用的 STA(例如手机、平板电脑等设备)。 2.无线网络的构建 [12] 有了上节所述的物理组件,现在就可以搭建由它们构成的无线网络了。802.11规范中, 基本服务集(Basic Service Set,BSS)是整个无线网络的基本构建组件(Basic Building Block)。如图3-10所示,BSS有两种类型。 ·独立型BSS(Independent BSS):这种类型的BSS不需要AP参与。各STA之间可 直接交互。这种网络也叫ad-hoc BSS(一般译为自组网络或对等网络)。 ·基础结构型BSS(Infrastructure BSS):所有STA之间的交互必须经过AP。AP 是基础结构型BSS的中控台。这也是家庭或工作中最常见的网络架构。在这种网络中,一个 STA必须完成诸如关联、授权等步骤后才能加入某个BSS。注意,一个STA一次只能属于 一个BSS。 图3-10 BSS的两种方式 提示 Independent BSS缩写为IBSS。而Infrastructure BSS没有对应的缩写。不 过,一般用BSS代表Infrastructure BSS。根据前文所述,AP也是一个STA,但此处STA 和AP显然是两个不同的设备。 由图3-10中BSS的结构可知,其网络覆盖范围由该BSS中的AP决定。在某些情况下, 需要几个BSS联合工作以构建一个覆盖面更大的网络,这就是一个ESS(Extended Service Set,扩展服务集),如图3-11所示。 图3-11 ESS示意图 ESS在规范中的定义是"A set of one or one interconnected BSSs that appears as asingle BSS to the LLC layer at any STA associated with one of those BSSs"。此 定义包含几个关键点。 一个ESS包含一或多个BSS。如图3-11所示的BSS1和BSS2。 BSS1和BSS2本来各自组成了自己的小网络。但在ESS结构中,它们在逻辑上又构成了 一个更大的BSS。这意味着最初在BSS2中使用的STA4(利用STA3,即BSS2中的AP上 网)能跑到BSS1的范围内,利用它的AP(即STA2)上网而不用做任何无线网络切换之类 的操作。此场景在手机通信领域很常见,例如在移动的汽车上打电话,此时手机就会根据情 况在物理位置不同的基站间切换语音数据传输而不影响通话。 注意 ESS中的BSS拥有相同的SSID(Service Set Identification,详细内容见下 文),并且彼此之间协同工作。这和目前随着W i-Fi技术的推广,家庭和工作环境中存在多 个无线网络(即存在多个ESS)的情况有本质不同。在多个ESS情况下,用户必须手动选择 才能切换到不同的ESS。由于笔者日常工作和生活中,ESS只包含一个BSS,当某个AP停 机时,笔者就得手动切换到其他无线网络中去了。另外,切换相关的知识点属于 Roaming(漫游)范畴,读者可阅读Secure Roaming in 802.11 Networks一书来了解相 关细节。 上述网络都有Identification,分别如下。 ·BSSID(BSS Identification):每一个BSS都有自己的唯一编号。在基础结构型 网络中,BSSID就是AP的MAC地址,该MAC地址是真实的地址。IBSS中,其BSSID也是 一个MAC地址,不过这个MAC地址是随机生成的。 ·SSID(Service Set Identification):一般而言,BSSID会和一个SSID关联。 BSSID是MAC地址,而SSID就是网络名。网络名往往是一个可读字符串,因为网络名比 MAC地址更方便人们记忆。 ESS包括一到多个BSS,而它对外看起来就像一个BSS。所以,对ESS的编号就由 SSID来表达。只要设置其内部BSS的SSID为同一个名称即可。一般情况下,ESS的SSID 就是其网络名(network name)。 规范阅读提示 1)上述网络结构中,并未提及如何与有线网络(LAN)的整合。规范中其实还定义了 一个名为portal的逻辑模块(logical component)用于将W LAN(W ireless LAN)和 LAN结合起来。由于W LAN和LAN使用的MAC帧格式不同,所以portal的功能类似翻译, 它在W LAN和LAN间转换MAC帧数据。目前,portal的功能由AP实现。 2)规范中还定义了QoS BSS。这主要为了在W LAN中支持那些对QoS有要求的程序。 由于无线网络本身固有的特性,W LAN中的QoS实现比较复杂,效果也不如LAN中的 QoS。初学者可先不接触这部分内容。 3.3.4 802.11 Service介绍 [13] 本节对802.11规范定义的和数据传输相关的服务进行介绍。规范在各服务的逻辑联系上 往往一句带过,使得很难把它们之间的关系搞清楚。对数据传输来说,其逻辑关系如下。 ·DSS用于完成数据的传输。 ·由于有线和无线网络的差异性,当数据需要传输到有线网络时候,就通过 Integration Service在二者之间进行转换。 ·由于存在transition,为了保证DSS能找到对应的STA,所以就存在association、 reassociation服务。 ·当STA不再使用DSS时,就通过disassociation服务离开DS。 802.11规范定义了很多Service。Service就是无线网络中对应模块应该具有的功能。 本节内容主要来自802.11规范4.4节到4.8节,集中介绍了802.11无线网络应该提供的 Service。 1.802.11 Service的分类 从模块考虑,802.11中的Service分为两大类别(Category),分别如下。 ·SS(Station Service):它是STA应该具有的功能。 ·DSS(Distribution System Service):它指明DS应具有的功能。 前文也提到过DS,其定义比较模糊。规范中还特别强调说802.11并不指明DS的具体实 现,它只是从逻辑上指明DS应该具有的功能,也就是DSS。 提示 虽然规范未说明DS到底是什么,但目前普遍认为DS就是指以太网。 SS和DSS包含一些相同的服务。这是因为无线网络中,SS和DSS将协同工作。以数据 传输为例,STA和DS都需要支持MAC帧数据的收发。所以二者必然包含类似的服务。另 外,802.11中的Service还可从其所代表的功能出发进行划分以得到如下类别。 ·6种Service用于支持802.11 MAC层的数据传输(规范定义为MAC Service Data Unit Delivery)。 ·3种Service用于控制802.11 LAN的访问控制(Access Control)和数据机密性 (Data Confidentiality)。 ·2种Service用于频谱管理(Spectrum Management)。 ·1种Service用于支持QoS。 ·1种Service用于支持时间同步。 ·1种Service用于无线电测量(Radio Measurement)。 接下来,本章将从功能划分角度出发来介绍其中所涉及的服务。 2.数据传输相关服务 毋庸置疑的是,无线网络最重要的一个功能就是传输数据了。对802.11来说,此处的数 据就是无线MAC帧数据。规范一共定义了6种Service支持数据传输。其中,QoS traffic Scheduling服务和QoS有关,主要目的是满足QoS的要求,本书不对这部分内容进行介 绍。 (1)Distribution Service和Integration Service 本节介绍数据传输服务中的前两位,Distribution Service(DS,分布式服务)和 Integration Service(IS,整合服务)。前文也提到过DSS,其目的其实非常简单。只要 STA传送任何数据都会使用这项服务。当AP接收到数据帧后,就会使用该服务将帧传输到 目的地。任何使用接入点的通信都会通过该服务进行传播。包括关联至同一个AP的两个 STA之间的相互通信。规范还特别绘制了示意图来展示DS,如图3-12所示。 ·BSS1中的STA1想发送数据给BSS2中的STA4。 ·STA1先要把数据传输给BSS1中的AP,即STA2。 ·STA2通过使用DSS将数据传输给DS。 ·DS根据相关的信息找到位于BSS2的AP,即STA3。 ·STA3把数据传递给STA4。 图3-12 DS示意图 在上述过程中,DSS的作用就是把来自STA2的数据传递到正确的STA3。规范并未说 明DS如何实现DSS,它只要求数据发送端传递足够的参数使得STA3能被正确找到。 整合服务的使用也包含在图3-12中。当DSS发现数据的目的端是LAN时,就需要把数 据传给Portal了。这时候,DS就会使用IS将无线数据进行必要的转换,以发送到LAN中 去。 同样,规范并未指明IS的具体实现,不过读者可知家用的无线路由器就实现了该功能。 (2)association、reassociation、disassociation服务 前文曾提到,规范要求使用DSS时,必须提供足够的信息给它以保证数据能传输成功。 这些足够的信息就是由association(关联)、reassociation(重新关联)和 disassociation(取消关联)服务提供的。这些服务是如何帮助DSS的呢?回答这个问题 前,先介绍Transition Type。 Transition Type对STA在无线网络中移动的类型进行了分类,分别如下。 ·No-Transition:即没有移动。它包括固定不动的情况以及在某个AP无线覆盖范围 内移动。 ·BSS-Transition:即从ESS中的一个BSS切换到另一个BSS。根据前面对ESS的介 绍,我们希望这种移动不影响网络的使用。当然,要真正实现无缝切换,需要做一些其他工 作。这部分内容由规范中的"Fast BSS Transition"一节描述。 ·ESS-Transition:从一个ESS中的BSS切换到位于另外一个ESS的BSS。这种情况 极有可能导致网络切换,影响用户使用。 当DS传输数据时,DSS需要知道和哪个AP建立联系。所以,规范要求STA在传输数据 前,必须要和一个AP建立关联关系,这就需要使用association服务。关联服务的目的在于 为AP和STA建立一种映射关系。例如当图3-12中的DS向BSS1发送数据时,它得知道 STA1和STA2通过association服务建立了一种映射,这样数据才能传递给STA1。 在同一时刻,一个STA只能和一个AP建立关联关系。但AP可和多个STA建立关联关 系。关联服务回答了这样一个问题:哪个AP为STA X服务? 当STA进行transition的时候(如BSS Transition),它就需要使用reassociation服 务了。因为之前它和BSS1建立了关联关系,此后它需要和BSS2建立关联关系。这时就可以 使用reassociation服务来完成该功能。reassociation服务只能由STA发起。 当STA不需要使用DSS,或者AP不再为某个STA服务时,就需要调用disassociation 服务。这样STA就不能再使用DSS传输数据了。相比关联和重新关联,STA和AP都可以调 用取消关联服务。 提示 随着W i-Fi安全要求的提高,上述场景在强健安全网络(Robust Security Network)中将有较大不同。 规范阅读提示 1)上述内容在RSN中大有不同。RSN主要为了增强W LAN的数据加密和认证性能,并 且针对W EP加密机制的各种缺陷做了多方面的改进。关于安全方面的内容,我们留待后文 再介绍。 2)介绍Service的时候,规范中还有一段对MAC帧类型进行了非常简单的介绍,即 Service的具体调用是通过发送不同的MAC帧来触发的。规范中MAC帧分为三大类型,分 别是data(数据帧)、management(管理帧)和control(控制帧)。其中和service直 接相关的是management帧,而control帧用于帮助传输data和management帧。关于 MAC帧的详细内容在3.3.5节。 3.访问控制和数据机密性相关服务 访问控制和数据机密性(Access Control and Data Confidentiality)包括三个服 务。其主要目的是解决无线网络中安全防护相关的工作。相比有线网络而言,安全性是无线 网络中非常重要的一部分。以访问控制为例,在有线网络中,例如你去一家公司参观,只有 在经过对方同意的情况下,才能使用有线上网。有线网络控制由网管或相关人员实施。而无 线网络中,只要你在该公司内部无线网络的覆盖范围内,都可以接入此网络。很明显,这时 就需要对无线网络实施访问控制了。 在访问控制的进一步上,数据机密性用于对数据的内容进行加密保护。因为即使实施了 访问控制,由于传输的数据还是通过无线网络,那么理论上无线网络覆盖内的所有人都可以 接收到该数据。如果不加密的话,数据内容就能被不相关的人窥窃了。 规范定义了三个服务用于处理安全性,分别如下。 ·Authentication和Deauthentication:这两个服务用于Access Control,译为身 份验证以及解除身份验证。 ·Confidentiality:原本称为私密性(privacy)服务,后来对这部分内容实施了加 强。目前规范中提到的数据加密方法有W EP、TKIP、CCMP。 4.频谱管理服务 频谱管理服务包括TPC(Transmit Power Control,传输功率控制)服务和 DFS(Dynamic Frequency Selection,动态频率选择)服务。这两个服务的目的在于满 足不同管制机构对无线电资源使用时的一些特定要求。 对TPC而言,当无线设备工作在5GHz频段时,必须限制其各信道的最大发射功率,以 避免干扰卫星服务。其主要特点包括: ·支持STA根据功率要求选择和不同的AP关联。 ·根据管制机构的要求,设定当前信道的最大传输功率。 ·根据传输过程中的损耗等信息来自动调整传输功率。 和TPC类似,DFS也是针对那些工作在5GHz频段的无线设备,使其能够根据情况动态 选择传输信道以避免干扰雷达系统。DFS的主要特点是针对信道(即不同频率),包括: ·根据STA支持的信道情况去选择合适的AP。 ·静默某个信道,以支持雷达的使用该信道。 ·在使用某个信道前,先检查是否有雷达系统已经使用该信道了。如果有,则必须停止 在该信道工作以避免干扰雷达。 5.QoS和时间同步服务 规范对这两个服务的介绍不多,故本书也不展开详细讨论。简单来说,802.11规范支持 使用任何一种合适的QoS机制以预留一些资源,例如RRP(Resource Reservation Protocol)。 时间同步服务目的是支持一些对同步性要求较高的应用(如视音频播放等)。这些应用 使用的同步方式可基于规范中定义的STA之间时间同步(Timing Synchronization Function,TSF)机制之上。 提示 QoS来源于802.11e。 6.无线电测量服务 无线电测量(Radio Measurement)服务所提供的功能如下。 ·为上层应用提供查询无线电相关信息的接口。 ·通过无线电测量来获取周围AP的信息。 ·能够在所支持的信道上进行无线电测量。 提示 无线电测量服务来源于802.11k。 7.802.11 Service相关知识总结 本节对802.11提供的服务进行了基本介绍。服务其实是从无线网络所提供的功能的角度 来考察无线网络技术的。所有服务中最关键的三个如下。 ·数据传输服务:这是无线网络的一个主要功能。 ·安全方面的服务:由于无线网络的特殊性,所以安全性是它必须要考虑的问题。 ·无线电测量服务:无线电测量用于无线网络组建。例如STA必须通过该服务去发现周 围的AP。 提示 笔者认为,上述服务从文字描述上看起来并不复杂。但对软件工程师来说,很难 把上述知识和编程/ 代码等联系起来。不过没有关系,下文的内容将更加具体。尤其是3.3.6 节关于MLME(MAC Layer Management Entity)的介绍,其描述方式就很接近编程中 的API介绍。 3.3.5 802.11 MAC服务和帧 本节将向读者介绍802.11中MAC服务以及MAC帧方面的内容。首先来看MAC服务。 1.MAC服务定义 [14] 根据3.3.1节所示,MAC层定义了一些Service用于为上层LLC提供服务。其 中,802.11中定义的MAC提供三种服务,分别如下。 ·MA-UNITDATA.request:供LLC层发送数据。 ·MA-UNITDATA.indication:通知LLC层进行数据接收。 ·MA-UNITDATA-STATUS.indication:通知LLC层自己(即MAC层)的状态。 规范中这三种服务的定义和编程语言中的函数非常像。根据前文所述,服务在规范中被 称为原语(primitive),每个服务有特定的参数(parameter)。另外,规范对每条原语 都做了非常详细的解释,例如原语使用场景(从编程角度看就是介绍什么时候用这些 API),MAC层如何处理这些原语(从编程角度看即描述应该如何实现这些API)。 (1)MA-UNITDATA.request服务 request用于发送数据,其定义如下所示。 MA-UNITDATA.request( source address // 指定本次数据发送端的MAC地址 destination address // 指定接收端的MAC地址。可以是组播或广播地址 routing information // 路由信息。对于802.11来说,该值为null(表示该值没有作用) data // MSDU,即上层需要发送的数据。对802.11来说,其大小不能超过2304字节 priority // priority和service class的解释见下文 service class ) request原语中,除priority和service class参数外,其他都很容易理解。而priority 和service class参数与QoS有关系。 ·priority的取值为0~15的整数。对于非QoS相关的操作,其取值为Contention和 ContentionFree。802.11中,QoS设置了不同的用户优先级(User Priority,UP)。显 然,UP高的数据将优先得到发送。Priority参数和QoS中的其他参数一起决定发送数据的 优先级。 ·service class的取值也针对是否为QoS而有所不同。对于非QoS,取值可为 ReorderableGroupAddressed或StrictlyOdered。这两个都和数据发送时是否重排 (reorder)发送次序有关。非QoS情况下,STA发送数据时并不会主动去调整发送次序。 而QoS情况下,很明显那些UP较高的数据见得到优先处理。但对于组播数据,发送者可以 设置service class为ReorderableGroupAddressed进行次序调整。 对request原语来说,当LLC需要发送数据时,就会调用request。MAC层需要检查参 数是否正确。如果不正确,将通过其他原语通知LLC层,否则将启动数据发送流程。 (2)MA-UNITDATA.indication服务 下面来看MAC层收到数据后用于通知LLC层的原语indication,其定义如下。 MA-UNITDATA.indication( source address // 代表数据源MAC地址。其值取值MAC帧中的SA(关于MAC帧格式详情见后文) destination address // 代表目标MAC地址,取自MAC帧中的DA,可以是组播地址 routing information // 值为null data // MAC帧数据 reception status // 表示接收状态,例如成功或失败。对802.11来说,该状态永远返回success // MAC层会丢弃那些错误的数据包 priority // 和request的取值略有不同,此处略过 service class ) 802.11中,indication只有在MAC层收到格式完整、安全校验无误及没有其他错误的 数据包时才会被调用以通知LLC层。 (3)MA-UNITDATA-STATUS.indication服务 STATUS.indication用于向LLC层返回对应request原语的处理情况。其原型如下。 MA-UNITDATA-STATUS.indication( // source和destination address和对应request的前两个参数一样 source address destination address transmission status // 返回request的处理情况,详情见下文 provided priority // 只有status返回成功,该参数才有意义。其值和调用request发送数据时的值一致 provided service class // 只有status返回成功,该参数才有意义 ) indication最关键的一个参数是transmission status,可以是以下值。 ·Successful:代表对应request发送数据成功。 ·Undeliverable:数据无法发送。其原因有数据超长(excessive data length)、 在request时指定了routing information(non-null source routing)、不支持的 priority和service class、没有BSS(no BSS available)、没有key进行加密(cannot encrypt with anull key)等。 提示 本节对应于规范的第5节"MAC service definition"。和前面内容相比,本节内 容更贴近于代码实现,当然也就更符合程序员的“审美观”。 接下来介绍和MAC帧相关的内容。 2.MAC帧 [15][16][17] 802.11 MAC帧格式如图3-13所示。 图3-13 802.11 MAC帧格式 由图3-13可知,MAC帧由以下三个基本域组成。 ·MAC Header:包括帧控制(Frame Control)、时长(Duration)、地址 (Address)等。注意,每个方框上面的数字表示该域占据的字节数。例如Frame Control 需要2字节。 ·Frame Body:代表数据域。这部分内容的长度可变,其具体存储的内容由帧类型 (type)和子类型(sub type)决定。 ·FCS:(Frame Check Sequence,帧校验序列)用于保障帧数据完整性。 规范阅读提示 1)关于MAC帧的格式。规范中还指出,如果是QoS数据帧,还需要附加QoS Control 字段。如果是HT(High Throughput,一种用于提高无线网络传输速率的技术)数据帧, 还需要附加HT Control字段。 2)关于Frame body长度。规范中指出其长度是7951字节,它和Aggregate- MPDU(MAC报文聚合功能)以及HT有关。本文不拟讨论相关内容。故此处采用2312字 节。 下面分别介绍MAC帧头中几个重要的域,首先是Frame Control域。 (1)Frame Control域 Frame Control域共2字节16位,其具体字段划分如图3-14所示。 图3-14 Frame Control域的组成 ·Protocol Version:代表802.11 MAC帧的版本号。目前的值是0。 ·Type和Subtype:这两个字段用于指明MAC帧的类型。802.11中MAC帧可划分为 三种类型,分别是control、data和management,每种类型的帧用于完成不同功能。详情 见下文。 ·To DS和From DS:只用在数据类型的帧中。其意义见下文。 ·More Fragments:表明数据是否分片。只支持data和management帧类型。 ·Retry:如果该值为1,表明是重传包。 ·Power Management:表明发送该帧的STA处于活跃模式还是处于省电模式。 ·More Data:和省电模式有关。AP会为那些处于省电模式下的STA缓冲一些数据 帧,而STA会定时查询是否有数据要接收。该参数表示AP中还有缓冲的数据帧。如果该值 为0,表明STA已经接收完数据帧了(下节将介绍省电模式相关的内容)。 ·Protected Frame:表明数据是否加密。 ·Order:指明接收端必须按顺序处理该帧。 Type和Subtype的含义如表3-2所示。其中仅列出了部分Type和Subtype的取值。 ㈠ 本书将在第7章详细介绍Action帧。 From DS和To DS的取值如表3-3所示。 扩展阅读 省电模式 [18] 无线网络的使用者常见于笔记本电脑、智能手机等设备,它们最大的一个特点就是能够 移动(无线技术的一个重要目的就是摆脱各种连接线的缠绕)。无线带来便捷的同时也引入 了另外一个突出问题,即电量消耗。在当前电池技术还没有明显进步的现实情况下,802.11 规范对电源管理也下了一番苦功。 规范为STA定义了两种和电源相关的状态,分别是Active模式和PS(Power Save) 模式。处于PS模式下,无线设备将关闭收发器(transceiver)以节省电力。 STA为了节电而关闭数据收发无可厚非,怎么保证数据传输的连贯性呢?下面讨论基础 结构型网络中省电模式的知识。在这种网络中,规范规定AP为了保证数据传输的连贯性, 其有两个重要工作。 1)AP需要了解和它关联的STA的电源管理状态。当某个STA进入PS状态后,AP就要 做好准备以缓存发给该STA的数据帧。一旦STA醒来并进入Active模式,AP就需要将这些 缓存的数据发送给该STA。注意,AP无须PS模式,因为绝大多数情况下,AP是由外部电 源供电(如无线路由器)。在AP中,每个和其关联的STA都会被分配一个 AID(Association ID)。 2)AP需要定时发送自己的数据缓存状态。因为STA也会定期接收信息(相比发送数据 而言,开启接收器所消耗的电力要小)。一旦STA从AP定时发送的数据缓存状态中了解到 它还有未收的数据,STA则会进入Active模式并通过PS-POLL控制帧来接收它们。 现在来看MAC帧中Power Management的取值情况。 ·对于AP不缓存的管理帧,PM字段无用。 ·对于AP发送的帧,PM字段无用。 ·STA发送给还未与之关联的AP的帧中,PM字段无用。 ·其他情况下,PM为1表示STA将进入PS状态,否则将进入Active状态。 配合PM使用的字段就是More Data。根据前文介绍,STA通过PS-POLL来获取AP端 为其缓存的数据帧。一次PS-POLL只能获取一个缓存帧。STA怎么知道缓存数据都获取完 了呢?原来More Data值为1表示还有缓存帧,否则为0。虽然MAC帧中没有字段说明AP缓 存了多少帧,但通过简单的0/ 1来标示是否还有剩余缓存帧也不失为一种好方法。 提示 规范中的PS处理比较复杂,建议阅读参考资料[18]。 (2)Duration/ ID域 Duration/ ID域占2字节共16位,其具体含义根据Type和Subtype的不同而变化,不过 大体就两种,分别代表ID和Duration。 ·对于PS-POLL帧,该域表示AID的值。其中最后2位必须为1,而前14位取值为1~ 2007。这就是该域取名ID之意。 ·对于其他帧,代表离下一帧到来还有多长时间,单位是微秒。这就是该域取名 Duration之意。 注意 Duration的用法和CSMA/ CA的具体实现有关。本章不对它进行详细讨论,可 阅读参考资料[8]。 (3)Address域 讲解Address域的用法之前,先介绍MAC地址相关的知识。根据IEEE 802.3 [19] 协 议,MAC地址有如下特点。 ·MAC地址可用6字节的十六进制来表示,如笔者网卡的MAC地址为1C-6F-65-8C- 47-D1。 ·MAC地址的组成包括两个部分。0~23位是厂商向IETF等机构申请用来标识厂商的 代码,也称为“组织唯一标识符”(Organizationally Unique Identifier,OUI)。后24 位是各个厂商制造的所有网卡的一个唯一编号。 ·第48位用于表示这个地址是组播地址还是单播地址。如果这一位是0,表示此MAC地 址是单播地址;如果这位是1,表示此MAC地址是组播地址。例如01-XX-XX-XX-XX-XX 为组播地址。另外,如果地址全为1,例如FF-FF-FF-FF-FF-FF,则为MAC广播地址。 ·第47位表示该MAC地址是全球唯一的还是本地唯一。故该位也称为G/ L位。 图3-15所示为MAC地址示意图 [19][20] 。 图3-15 MAC地址格式 注意图3-15中的字节序和比特序。 ·字节序为Big-endian,即最高字节在前。所以图中的first byte实际对应的MAC地 址最左边一组。以Note 2 MAC地址90-18-7C-69-88-E2为例,first byte就 是“90”(如果是Little-endian,则first byte是"E2"),其OUI是SamsungE,代表三 星电子。 ·比特序为Little-endian,即最低位在前。这就是01-XX-XX-XX-XX-XX为组播地 址的原因了。因为“01”对应的二进制是“0000-0001”,其第0位是1,应该放在图中 first byte最左边一格。 提示 上面的数值按从左至右为最高位到最低位。一般情况下,字节序和比特序是一致 的。但是以太网数据传输时,字节序采用Big-endian,比特序为Little-endian。 参考资料[19]中原文是这样描述的。 The first bit(LSB)shall be used in the Destination Address field as an address type designation bit to identify the DA either as an individual or as agroup address.If this bit is 0,it shall be…individual address",“Each octet of each address filed shall be transmitted least significant bit first。 802.11 MAC帧头部分共包含四个Address域,但规范中却有五种地址定义,分别如 下 [15] 。 ·BSSID:在基础型BSS中,它为AP ① 的地址。而在IBSS中则是一个本地唯一MAC 地址。该地址由一个46位的随机数生成,并且U/ M位为0,G/ L位为1。另外对MAC广播地 址来说,其名称为wildcard BSSID。 ·目标地址(Destination Address,DA):用来描述MAC数据包最终接收者(final recipient),可以是单播或组播地址。 ·源地址(Source Address,SA):用来描述最初发出MAC数据包的STA地址。一 般情况下都是单播地址。 ·发送STA地址(Transmitter Address,TA):用于描述将MAC数据包发送到W M 中的STA地址。 ·接收STA地址(Receiver Address,RA):用于描述接收MAC帧数据的。如果某 个MAC帧数据接收者也是STA,那么RA和DA一样。但如果接收者不是无线工作站,而是 比如以太网中的某台PC,那么DA就是该机器的MAC地址,而RA则是AP的MAC地址。这 就表明该帧将先发给AP,然后由AP转发给PC。 上述无线地址中,一般只使用Address 1~Address 3三个字段,故图3-13中它们的位 置排在一起。表3-4展示了Address域的用法。 由表3-4可知,Address 1用作接收端,Address 2用作发送端。Address 3携带其他信 息用于帮助MAC帧的传输,针对不同类型,各个Address域的用法如下。 ·IBSS网络中,由于不存在DS,所以Address 1指明接收者,Address 2代表发送 者。Address 3被设置为BSSID,其作用是:如果Address 1被设置为组播地址,那么只有 位于同一个BSSID的STA才有必要接收数据。 ·基础结构型网络中,如果STA发送数据,Address 1必须是BSSID,代表AP。因为 这种网络中,所有数据都必须通过AP。Address 3代表最终的接收者,一般是DS上的某个 目标地址。 ·基础结构型网络中,如果数据从AP来,那么Address 1指明STA的地址,Address 2 代表AP的地址,Address 3则代表DS上的某个源端地址。 ·Address 4只在无线网络桥接的时候才使用。本书不讨论这种情况。 图3-16描述了基础型结构网络和无线桥接情况下不同地址的使用场景。 图3-16 地址的使用 如图3-16所示: ·数据包发往DS的情况下,SA和TA一致,而RA和BSSID一致。 ·数据包来自DS的情况下,RA和DA一致,而TA和BSSID一致。 ·无线桥接的情况下,SA、TA、RA和DA四种地址都派上了用场。 提示 关于Address域的作用请读者务必清楚下面三个关键点。 1)MAC帧头中包含四个Address域,在不同的情况下,每个域中包含不同的地址。原 则是Address 1代表接收地址,Address 2代表发送端地址,Address 3辅助用,Address 4用于无线桥接或Mesh BSS网络中。 2)规范定义了五种类型的地址,即BSSID、RA、SA、DA和TA。每种地址有不同的 含义。 3)在某些情况下,有些类型地址的值相同,如图3-16所示。 (4)Sequence Control域 Sequence Control域长16位,前4位代表片段编号(Fragment Number),后12位 为帧顺序编号(Sequence Number),域格式如图3-17所示。 图3-17 Sequence Control域格式 ·Sequence Number:STA每次发送数据帧时都会设置一个帧顺序编号。注意,控制 帧没有帧顺序编号。另外,重传帧不使用新的帧顺序编号。 ·Fragment Number:用于控制分片帧。如果数据量太大,则MAC层会将其分片发 送。每个分片帧都有对应的分片编号。 (5)MAC帧相关知识总结 本节对MAC帧格式进行介绍。这部分内容难度并不大,但读起来肯定有些枯燥。笔者 在阅读参考资料[15]时也有同样的感觉。后来笔者利用公司的AirPcap无线网络分析设备截 获无线网络数据并使用wireshark软件进行分析后,感觉MAC帧信息直观多了,如图3-18 所示。 图3-18 AirPcap使用 AirPcap设备比较贵,但该工具对于将来W i-Fi知识的学习、工作中的难题解决相当有 帮助。 注意 本书的资源共享文件中提供几个W i-Fi数据包捕获文件,读者可直接利用它们进 行分析。详情见1.3节。 接下来介绍常见的几种具体的MAC帧。首先从控制帧开始。 3.控制帧 [15][17] 控制帧的作用包括协助数据帧的传递、管理无线媒介的访问等。规范中定义的控制帧有 好几种,本节将介绍其中的四种,它们的帧格式如图3-19所示。由图可知,控制帧不包含 数据,故其长度都不大。 图3-19 控制帧格式 ·RTS(Request To Send):根据3.3.3节关于CSMA/ CA的介绍,RTS用于申请无 线媒介的使用时间。值为Duration,单位为微秒。Duration的计算大致是:要发送的数据 帧或管理帧所需时间+CTS帧所需时间+ACK帧所需时间+3 SIFS ② 时间。 ·CTS(Clear To Send):也和CSMA/ CA有关,用于回复RTS帧。另外它被 802.11g保护机制用来避免干扰旧的STA。 ·ACK:802.11中,MAC以及任何数据的传输都需要得到肯定确认。这些数据包括普 通的数据传输、RTS/ CTS交换之前帧以及分片帧。 ·PS-POLL:该控制帧被STA用于从AP中获取因省电模式而缓存的数据。其中AID的 值是STA和AP关联时,由AP赋给该STA的。 规范阅读提示 1)控制帧还包括CF-End、CF-End+CF-Ack等,这部分内容请读者阅读规范8.3.1 节。 2)上述帧中Duration字段的计算也是一个比较重要的知识点,读者同样可阅读规范 8.3.1节以了解其细节。 4.管理帧 [15][17] 管理帧是802.11中非常重要的一部分。相比有线网络而言,无线网络管理的难度要大很 多。MAC管理帧内容较为丰富,本节将介绍其中重要的几种管理帧,分别是Beacon(信 标)帧、Association Request/ Response(关联请求/ 回复)帧、Probe Request/ Response(探测请求/ 回复)帧、Authentication/ Deauthentication(认证/ 取 消认证)帧。 介绍具体管理帧之前,先来看看管理帧的格式,如图3-20所示。 图3-20 管理帧格式 所有管理帧都包括MAC Header的6个域。不过,无线网络要管理的内容如此之多,这 6个域肯定不能承担如此重任,所以管理帧中的Frame Body将携带具体的管理信息数据。 802.11的管理信息数据大体可分为两种类型。 ·定长字段:指长度固定的信息,规范称为Fixed Field。 ·信息元素:指长度不固定的信息。显然这类信息中一定会有一个参数用于指示最终的 数据长度。 从程序员的角度来看,不同的管理信息数据就好像不同的数据类型或数据结构一样。下 面我们来看看802.11为管理帧定义了哪些数据类型和数据结构。 (1)定长字段 管理帧中固定长度的字段如下。 1)Authentication Algorithm Number:该字段占2字节,代表认证过程中所使用的 认证类型。其取值如下。 ·0:代表开放系统身份认证(Open System Authentication)。 ·1:代表共享密钥身份认证(Shared Key Authentication)。 ·2:代表快速BSS切换(Fast BSS Transition)。 ·3:代表SAE(Simultaneous Authentication of Equals)。用于两个STA互相认 证的方法,常用于Mesh BSS网络。 ·65535:代表厂商自定义算法。 提示 Authentication Algorithm Number的定义是不是可以在代码中用枚举类型来 表示呢? 2)Beacon Interval field:该字段占2字节。每隔一段时间AP就会发出Beacon信号 用来宣布无线网络的存在。该信号包含了BSS参数等重要信息。所以STA必须要监听 Beacon信号。Beacon Interval field字段用来表示Beacon信号之间间隔的时间,其单位 为Time Units(

标签: 隔离变送器ws1521

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台