• 802.11成帧封装实现(三)


          

    1.3   管理帧

    在802.11规格书中,管理所占据的篇幅最多。各式各样的管理帧,为的只是提供对有线网络而言相当简单的服务。对有线网络而言,识别一部工作站并非难事,毕竟控制中心与工作站之间必须通过布线方能建立连接。有时候,集线器的插座面板可加速网络的构建,不过重点还是在于:建立新的连接时,可通过人员进行身份认证。

    无线网络必须建立一些管理机制,方能提供类似的功能。802.11将整个过程分解为三个步骤。寻求连接的移动工作站,首先必须找出可供访问的无线网络。在有线网络中,这个步骤相当于在墙上找出适当的网孔。其次,网络系统必须对移动工作站进行身份认证,才能决定是否让工作站与网络系统关联。在有线网络方面,身份认证是由网络系统本身提供。如果必须通过网线才能够取得信号,那么能够使用网线至少算得上是一种认证过程。最后,移动工作站必须与接入点建立关联,这样才能访问有线网络,这相当于将网线插到有线网络系统。

    1.3.1   管理帧的结构

    802.11管理帧的基本结构如图 1-20 所示。所有管理帧的 MAC标头都一样,这与帧的子类型无关。管理帧会使用信息元素(带有数字标签的数据区块)来与其他系统交换数据。

     

              图1-20:管理帧的基本结构

     1.3.1.1 地址位

    和其他帧一样,第一个地址位是给帧的目的地址使用的。有些管理帧主要用来维护个别 BSS特有的属性。为了限制广播或组播管理帧所造成的副作用,收到管理帧之后,工作站必须加以验证,虽然不是所有实现均会进行这一 BSSID 过滤程序。只有在广播或组播帧来自工作站目前所连接的BSSID ,才会被送至 MAC管理层。惟一的例外是 Beacon帧,毕竟它是用来宣布 802.11网络的存在。BSSID 是以大家所熟悉的方式来指定的。接入点会以本身无线网络接口的MAC地址作为BSSID 。移动工作站会采纳目前所连接的接入点的 BSSID 。位于 IBSS 的工作站则会使用 BSS建立之初随机产生的 BSSID 。惟一的例外是:寻找特定网络的工作站,可以在所发出的帧中指定该特定网络的 BSSID ,或者使用广播型 BSSID 来寻找邻近所有的网络。

     1.3.1.2 计算持续时间

    管理帧使用 Duration (持续时间)位的方式和其他帧没有两样:

    1.  免竞争期间所发送的任何帧,均会将持续时间设为32,768。

    2.  竞争式访问期间,利用DCF 所发送的帧会通过 Duration位防止别人访问介质。确保基本帧交换程序得以完成。

       a.如果是广播或组播帧(目的地地址为群组地址),则持续时间会设定为 0。广播与组播帧无须得到应答,因此 NAV 无须防止别人访问介质。

       b.如果不是最终片段,则持续时间会设为三个 SIFS期间加上下一个片段及其应答所需要的微秒数。

    c.最终帧片段的持续时间会设定为一个应答加上一个 SIFS 所需要的时间。

     1.3.1.3 帧主体

    管理帧十分具有弹性。帧主体中大部份的数据,如果使用长度固定的位,就称为固定式位;如果位长度不定,就称为信息元素(information element )。所谓信息元素,是指长度不定的数据区块。每个数据区块均会标注上类型编号与大小,各种信息元素的数据位都有特定的解释方式。新版的802.11规格书允许定义新的信息元素;根据旧版规格书所实现的产品可忽略这些新元素。实际上,硬件一般采取回溯相容(backward-compatible)原则,因此较旧的产品通常无法加入根据新标准所建立的网络。还好,新功能通常可以予以停用,以便兼容性。

    除了探讨这些作为基本元件的固定式与信息元素,本节还会说明这些基本元件如何构成管理帧。802.11强制规定了这些信息元素的排列次序,不过并非所有元素均属于要。本书将以特定的顺序说明这些基本元件,论及各个次类型时,也会特别标明哪些元素比较少见,哪些元素彼此互不相容。

    1.3.2   长度固定的管理帧元件

    在管理帧中,可能出现的长度固定位有十种。长度固定的位一般简称为位,以便与长度不定的信息元素有所区别。位本身并无标头可与帧主体其他部份区别。因为长度与次序固定,因此不需要以位标头作为界定。

    Authentication Algorithm Number位

    Authentication Algorithm Number (身份认证算法编号)位占用了两个字节,如图 1-21 所示。此位代表连接发生之前 802.11层次(802.11-level)的最初认证程序所使用的认证类型。此位值的允许范围列于表 1-3。目前只定义了两种值。其他值保留给未来版本使用。

     

          图1-21 :Authentication Algorithm Number(身份认证演算法编号)位

    表1-3:Authentication Algorithm Number(身份认证算法编号)位的允许值

     Authentication Transaction Sequence Number 位

    身份认证过程分为好几个步骤,其中包含由接入点所发出的质询口令(challenge),以及试图关联的移动工作站所做出的应答。如图 1-22 所示Authentication Transaction Sequence Number(身份认证交易顺序编号)位是由两个字节所构成,用以追踪身份认证的进度。此位值介于1 到65,535直接,其值不可为 0 。

     

    图1-22:Authentication Transaction Sequence Number(身份认证交易顺序编号)位

    Beacon interval位

    每隔一段时间就会发出的Beacon(信标)信号,用来宣布 802.11网络的存在。Beacon帧中除了包含BSS 参数的信息,也包含接入点暂存帧的信息,因此移动工作站必须仔细聆听Beacons 信号。Beacon interval (信标间隔)位的长度有 16个bit,用来设定 Beacon信号之间相隔多少时间单位。时间单位通常缩写为 TU,代表 1,024 微秒(microseconds),相当于一毫秒。有些文件中会以千一微秒(kilo-microseconds )[注]来表示时间单位。Beacon interval位通常会被设定为 100 个时间单位,相当于每 100 毫秒或0.1 秒发送一次 Beacon信号。

    [注]千一微秒(kilo-microseconds)是相当奇怪的组合, 因为它以2的乘方来计算Kilo,而以较为常见的1/1000来表示micro。

     

          图1-23:Beacon Interval (信标间隔)寺阑位

    Capability information 位

    图1-24 所示为长度 16个bit的Capability Information 性能信息位,发送Beacon信号的时候,它被用来通知各方,该网络具备哪种性能。Capability information 位也可以使用在 Probe Request 与Probe Response 帧。在本位中,每个 bit各自代表一个旗标,对应到网络所具备的某种特殊功能。工作站会使用这些公告数据来判断自己是否支持该 BSS 所有的功能。没有实现性能公告中所有功能的工作站,就无法加入该 BSS 。

     

            图1-24:Capability Information(性能信息)位

    l  ESS/IBSS(扩展服务集/独立型塞本服务集)

    这两个bit旗标彼此互斥(mutually exclusive)。接入点会将 ESS 位设定为 1,而将 IBSS 布位设定为 0,表示接入点属于基础网络的一部分。IBSS 中的工作站则会将 ESS 位设定为 0 ,而将IBSS 位设定为 1 。

    l  Privacy(私密性)

    将Privacy bit 设定认1 ,代表需要使用 WEP以维持机密性。在基础网络中,发送端为接入点。在IBSS 里,Beacon信号必须由 IBSS 当中某部工作站负责。

    l  short Preamble (短同步信号)

    802.11b 规格新增此位的目的,是为了支持高速直接序列扩频物理层( high-rate DSSS PHY)。将之设定为 1 ,代表此网络目前使用短同步信号(short preamble )。0 代表不使用此选项,并且在该 BSS 中禁止使用短同步信号。802.11g 规定使用短同步信号,因此在依循 802.11g 标准所建置的网络中,此位必然设定为 1 。

    l  PBCC (分组二进制卷积编码)

    802.11b 规格新增此位的目的,是为了支持高速直接序列扩频物理层(high-rate DSSS PHY)。将之设定为1 ,代表此网络目前使用的分组二进制卷积编码(packet binary convolution coding)调变机制,或是802.11g PBCC 调变机制。0 代表不使用此选项,并且在该 BSS 中禁止使用分组二进制卷积编码。

    l  Channel Agility(机动信道转换)

    这一位加入802.11b 规格的目的,是为了支持高速直接序列扩频物理层(high-rate DSSS PHY)。将之设定为 1 ,代表此网络使用机动信道转换(Channel Agility)选项。0 代表不使用此选项,并且在该 BSS 中禁止使用机动信道转换。

    l  Short Slot Time (802.llg )

    此bit若设定为 1 ,代表使用 802.11所支持的较短的时槽。

    l  DSSS-OFDM (802.lIg )

    此bit若设定为 1 ,代表使用 802.11g 的DSSS-OFDM 帧构建(frame construction)选项。

    l  Contention-free polling(免竞争轮询)bit

    工作站与接入点使用这两个 bit(CF-Ppllable  与CF-Poll Request) 当作标签。这些标签的意义如表1 一4 所示。

    表1-4:Capability Information(性能信息)位中 polling bit所代表的意义

     Current AP Address 位

    移动工作站可以使用图 1-25 所示的 Current AP Address (目前接入点的地址)位来表明目前所连接的接入点的 MAC地址。这个位的用途是便于连接(association )与重新连接(reassociation )的进行。工作站会借此发送上一次所连接的接入点的地址。当工作站打算与不同的接入点建立连接时,此位可用来转换连接,以及取回所有暂存的帧。

     

          图1-25:Current AP Address (目前接入点的地址)位

    Listen interval 位

    为了节省电池的电力,工作站可以暂时关闭 802.11网络接口的天线。当工作站处于休眠状态,接入点必须为之暂存帧。休眠中的工作站会定期醒来聆听往来信息,以判断是否有帧暂存于基站。当工作站与接入点连接时,会将 Listen Interval(聆听间隔)记录下来。所谓 Listen Interval,其实就是以 Beacon interval(信标间隔)为单位所计算出的休眠时间。图 1-26 所示的Listen Interval ,让移动工作站得以要求接入点必须为它暂存帧多久的时间。聆听间隔越久,接入点就必须使用更多记忆体来暂存帧。接入点可以藉此项功能估计所需资源,以决定是否拒绝资源密集(resource-intensive)的连接。第八章会进一步描述 Listen Interval。

     

            图1-26 :Listen Interval(聆听间隔)位

    Association ID 位

    图1-27 所示为长度 16bit的Association ID(连接识别码)位。当工作站与接入点连接时,就会被赋予一个连接识别码,用以协助控制与管理功能。虽然连接识别码可用 bit数为 14个bit,不过只有1-2007可以使用。为了与 MAC标头的Duration/ID位相容,最高效的两个 bit均被设定为1。

     

            图1-27:Association ID(连接识别码)位

    Timestamp位

    图1-28 所显示的 Timestamp (时戳)位,可用来同步 BSS 中的工作站 BSS 的主计时器会定期发送目前已作用的微秒数。当计数器到达最大值时,便会从头开始计数。(对一个长度 64bit、可计数超过 580,000 年的计数器而言,很难会遇到有从头开始计数的一天。)

     

            图1-28:Timestamp (时戳)位

    Reason Code位

    当对方不适合加入网络时,工作站会送出 Disassociation(解除关联)或 Deauthentication(解除身份认证)帧作为应答。这些帧当中包含一个长度 16bit的Reason Code(原因代码)位,表示对方的做法有误,如图 1-29 所示。表 1-5 列出了产生原因代码的理由。要完全了解原因代码的用法,必须对各种帧以及 802.11工作站的状态有所了解。

     

          图1-29:Reason Code(原因代码)位

     

     

     

     

     

     Status Code 位

    状态代码用来表示某项过程成功或失败。Status Code (状态代码)位,如图 1-30 所示。如果某项过程成功,该位的值就会被设定为0 ,否则设为非零值。表1-6 列出了标准的状态代码。

     

            图1-30:Status Code(状态代码)位

     

    表4-6:状态代码

     

     

     

     

  • 相关阅读:
    python学习笔记3:基础(元组、字符串、列表、字典)
    python学习笔记2:基础(邮件发送)
    pycharm版本控制
    Pycharm版本控制之本地Git用法
    GitHub使用
    qtp简单说明
    查询Activity方便一点的方法
    appium基础框架
    loadrunner基本流程
    python下的unittest框架
  • 原文地址:https://www.cnblogs.com/aixin0813/p/3214197.html
Copyright © 2020-2023  润新知