• TCP/IP 详解(第 2 版) 笔记 / 3 链路层 / 3.5 无线局域网 - IEEE 802.11 (Wi-Fi) / 3.5.1 802.11 帧


    目录、参考文献


    3.5 无线局域网 - IEEE 802.11 (Wi-Fi)

    如今用于访问互联网的最流行的技术之一就是无线保真wireless fidelity (Wi-Fi)),其 IEEE 标准名称为 802.11,实际上就是以太网的无线版本
    Wi-Fi 已经发展成为了一种廉价且非常方便的方式,为大多数的应用程序提供可以接受的连接性和性能水平
    Wi-Fi 网络易于设置,大多数便携式计算机和智能手机现在都包含访问 Wi-Fi 基础设施所需的硬件
    许多咖啡店、机场、酒店等设施都有 Wi-Fi “ 热点 ”
    图 3-17 展示了 IEEE 802.11 网络的架构

    Figure 3-17
    图 3-17
    无线局域网的 IEEE 802.11 术语
    接入点(Access points (APs))可以使用分布式服务(Distribution Service (DS))(无线或有线骨干网)进行连接
    以形成扩展的无线局域网(Extended Service Set ESS)
    一个接入点(Access Point (AP))和与其一起通信的移动设备(都属于站点stations (STAs)))组成了一个基本服务集(Basic Service Set (BSS))
    通常会为 ESS 分配一个 ESSID,用作网络的名称

    图 3-17 中的网络包括多个站点stations (STAs))
    通常,站点会被组织成一个个的子集,一个子集对应一个接入点access points (APs))
    一个 AP 及其关联的站点被称为基本服务集basic service set (BSS))
    AP 通常通过有线分布式服务distribution service)(被称为 DS,基本上就是一个 “ 骨干网(backbone)”)相互连接,形成扩展服务集(extended service set (ESS))
    这种设置通常被称为基础设施模式infrastructure mode
    802.11 标准还提供了临时模式ad hoc mode
    在这种配置中没有 AP 或 DS,取而代之的是直接的站对站(station-to-station)(点对点(peer-to-peer))通信
    在 IEEE 术语中,参与 ad hoc 网络的站点stations (STAs))形成了一个独立基本服务集independent basic service set (IBSS))
    由一个 BSS 和/或 IBSS 的集合形成的无线局域网被称为服务集service set),由服务集标识符service set identifier (SSID))标识
    扩展服务集标识符extended service set identifier (ESSID))是一个用于命名由多个连接在一起的 BSS 组成的集合的 SSID
    ESSID 本质上是局域网的名称,最长可包含 32 个字符,通常在首次构建无线局域网时分配给 Wi-Fi AP

    基础设施模式infrastructure mode)表示站点作为基础设施一直不停的工作
    临时模式ad hoc mode)表示只有在建立点对点连接时才工作
    ad hoc 源自拉丁语,表示:特别的,只在特别情况下会 … 的,在其它情况都不会 … 的
    引申为:临时的,即只在临时的这种特别情况下会 … 的,在其它大多数时候是不会 … 的

    3.5.1 802.11 帧

    802.11 网络有一种通用的帧格式,同时有多种帧类型,并非所有类型的帧都具备所有的帧字段
    图 3-18 展示了通用帧的格式和一个(最大尺寸)数据帧

    Figure 3-18
    图 3-18
    802.11 基本数据帧格式(从 [802.11n-2009] 开始)
    MPDU 格式类似于以太网格式,但根据下边的场景具有不同的额外字段:

    • 接入点之间使用的分布式服务distribution service (DS))的类型
    • 帧是 ” 发往 “ 还是 “ 来自 “ 分布式服务distribution service (DS))
    • 帧是否正在被聚合

    QoS 控制QoS Control)字段用于特殊性能特性,HT 控制(HT Control)字段用于控制 802.11n 的 “ 高吞吐量 ” 特性

    图 3-18 所示的帧包括一个用于同步的前导码(preamble),其值取决于所使用的 802.11 的特定变体
    紧接着是物理层收敛过程Physical Layer Convergence Procedure (PLCP))报头
    PLCP 以某种物理层无关的(PHY-independent)方式提供有关特定物理层的信息
    帧的 PLCP 部分通常比其余部分的传输速率低,这样做有两个目的:

    1. 提高正确交付的可能性(较低的速度往往具有更好的抗错能力)
    2. 提供与可能在同一区域以较慢速率运行的老设备的兼容性以及避免受其信号的干扰

    MAC PDU (MPDU) 类似以太网的帧,但具有一些额外的字段

    MPDU 的头部是帧控制字Frame Control Word),它包含一个 2 比特位的类型Type)字段,用于标识帧类型
    共有 3 种类型的帧:管理帧management frames)、控制帧control frames)和数据帧data frames
    根据类型的不同,它们中的每一个都可以具有各种子类型
    [802.11n-2009,表 7-1] 中给出了类型和子类型的完整表格
    剩余字段的内容(如果存在)由帧类型确定

    3.5.1.1 管理帧(Management Frames)

    管理帧用于创建、维护和结束站点和接入点之间的关联
    它们还用于确定是否正在使用加密、网络的名称(SSID 或 ESSID)是什么、支持的传输速率以及通用时间基准
    当 Wi-Fi 接口 “ 扫描 ” 附近的接入点时,这些帧用于提供必要的信息

    扫描是站点发现可用网络和相关配置信息的过程,包括切换到每个可用的频率以及被动地监听流量以识别可用的接入点
    站点也可以通过在扫描时发送特殊的管理帧(“ 探测请求(probe request)”)来主动探测网络
    为了避免在用于非 802.11 目的(如:医疗服务)的频率上传输 802.11 流量,对这些探测请求(probe request)做了一些限制
    下边是一个在 Linux 系统上手动启动扫描的示例:

    Linux# iwlist wlan0 scan
    wlan0 Scan completed : 
                 Cell 01 - Address: 00:02:6F:20:B5:84 
                         ESSID:"Grizzly-5354-Aries-802.11b/g" 
                         Mode:Master 
                         Channel:4 
                            Frequency:2.427 GHz (Channel 4) 
                         Quality=5/100 Signal level=47/100 
                         Encryption key:on 
                         IE: WPA Version 1 
                             Group Cipher : TKIP 
                             Pairwise Ciphers (2) : CCMP TKIP 
                             Authentication Suites (1) : PSK 
                         Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 
                                 6 Mb/s; 12 Mb/s; 24 Mb/s; 36 Mb/s; 9 Mb/s; 
                                 18 Mb/s; 48 Mb/s; 54 Mb/s
                         Extra:tsf=0000009d832ff037
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    这是使用无线接口 wlan0 进行手动扫描的结果
    MAC 地址为 00:02:6F:20:B5:84 的 AP 充当 Master(即:在基础设施模式下充当 AP)
    它正在频道 4(2.427GHz)上广播 ESSID Grizzly-5354-Aries-802.11b/g(有关频道选择的详细信息见第 3.5.4 节)
    质量(Quality)和信号级别(Signal level)表明进行扫描的站点接收来自 AP 的信号的效果如何,尽管这些值的含义因制造商而异
    该链路使用了 WPA 加密(见第 3.5.5 节),比特率从 1Mb/s 到 54Mb/s 可用
    tsf(时间同步功能(time sync function))值表示 AP 的时间概念,用于同步各种特性,如省电模式(见第 3.5.2 节)

    当一个 AP 广播它的 SSID 时,任何站点都可以尝试与该 AP 建立连接
    如今的大多数 Wi-Fi 网络在建立了站点到 AP 的连接之后,还会设置必要的配置信息让该站点可以访问互联网(见第 6 章)
    然而,AP 的操作者可能希望控制哪些站点能够使用网络
    作为安全措施,一些操作者故意通过让 AP 不广播其 SSID 的方式让这一过程变得更加困难
    但这种方法提供的安全性并不高,因为 SSID 可能会被猜到
    将在 3.5.5 节中讨论的链路加密和密码可以提供更加强大的安全性

    3.5.1.2 控制帧: RTS/CTS and ACKs

    控制帧用于处理流量控制的一种形式以及对帧的确认
    流量控制可以帮助接收者通知过快的发送者放慢速度,确认可以帮助发送者知道哪些帧已经被正确接收
    这些概念也适用于传输层的传输控制协议(见第 15 章)
    802.11 网络支持可选的用于流量控制的请求发送request-to-send (RTS))/允许发送clear-to-send (CTS))传输节制
    启用这些功能后,在发送数据帧之前,站点会先发送 RTS 帧,当接收者愿意接收额外流量时会用 CTS 进行响应
    在 RTS/CTS 交换完成之后,站点有一个时间窗口(在 CTS 帧中标识)来传输在成功接收时确认的数据帧
    这种传输协调的方案在无线网络中很常见,模拟了多年来在有线串行链路上使用的流量控制信令(有时被称为硬件流量控制)

    RTS/CTS 交换会指示每个站点何时可以传输
    这有助于避免隐藏终端问题hidden terminal problem),避免彼此听不见的站点同时进行传输
    因为 RTS 和 CTS 帧很短,所以它们不会长时间占用频道
    AP 通常会在数据包足够大时选择为数据包启动 RTS/CTS 交换
    通常,AP 有一个叫做数据包大小阈值packet size threshold)(或类似的)的配置选项
    超过阈值的帧会在传输数据前先发送 RTS
    大多数供应商使用约 500 字节的默认阈值设置,在 Linux 中设置 RTS/CTS 阈值:

    Linux# iwconfig wlan0 rts 250
    wlan0 IEEE 802.11g ESSID:"Grizzly-5354-Aries-802.11b/g" 
                Mode:Managed
                Frequency:2.427 GH
                Access Point: 00:02:6F:20:B5:84 
                Bit Rate=24 Mb/s Tx-Power=0 dBm 
                Retry min limit:7 RTS thr=250 B Fragment thr=2346 B 
                Encryption key:xxxx- ... -xxxx [3] 
                Link Quality=100/100 Signal level=46/100 
                Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 
                Tx excessive retries:0 Invalid misc:0 Missed beacon:0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    iwconfig 命令可用于设置许多变量,包括 RTS 阈值和分段(fragmentation)阈值(见第 3.5.1.3 节)
    它还可用于确定统计信息,如由错误的网络 ID(ESSID)或错误的加密密钥导致的帧错误数
    它还给出了过度重试的次数(即重传尝试的次数),这是一个粗略的链路可靠性指标,链路可靠性指标常被用于指导无线网络中的路由决策 [ETX]
    在覆盖范围有限的无线局域网中,隐藏终端问题(hidden terminal problems)不太可能发生
    这种情况下最好通过将站点的 RTS 阈值调整为较高值(1500 或更大)来禁用 RTS/CTS,这避免了为每个数据包都要求 RTS/CTS 交换所带来的开销

    在有线以太网中,没有冲突表明帧被正确接收的概率很高,在无线网络中,无法正确传送帧的原因更多,如信号强度不够或受到干扰
    为了解决这个潜在的问题,802.11 使用重传(retransmission)/确认(acknowledgment (ACK))方案扩展了 802.3 的重传方案
    对于发送的每个单播帧(802.11a/b/g)或发送的每组帧(带有 “ block ACKs ” 的 802.11n 或 802.11e),期望在一定时间内收到确认
    组播和广播帧没有关联的 ACK 以避免 “ ACK 内爆(implosion)”(见第 9 章)
    未能在指定时间内接收到 ACK 会导致重新传输帧

    因为重传,网络中可能会形成重复的帧
    当某个帧是之前已传输过的帧的重传时,这个帧的帧控制字Frame Control Word)中的重试Retry)比特位字段会被设置
    接收站点可以用它来帮助消除重复的帧
    站点会保留少量的条目缓存,用于指示最近看到的地址和序列/片段号,当接收到的帧与条目匹配时,该帧将被丢弃

    发送帧和接收 ACK 所需的时间与链路的距离和时隙时间slot time)(与 802.11 MAC 协议相关的基本时间单位,见第 3.5.3 节)有关
    大多数的系统都可以配置等待 ACK 的时间(以及时隙时间),尽管配置方法各不相同
    在大多数情况下,如家庭或办公室,默认值就足够了
    在长距离使用 Wi-Fi 时,这些值可能需要调整(见 [MWLD])

    3.5.1.3 数据帧,分片,聚合

    在繁忙的网络上看到的大多数帧都是用于携带数据的数据帧
    通常,802.11 帧和链路层(LLC)的帧之间存在一对一的关系,链路层的帧可被用于更高层的协议,如 IP 协议
    但 802.11 支持帧分片fragmentation),可以将帧分成多个分片
    配合 802.11n 规范,它还支持帧聚合aggregation),可用于同时发送多个帧,开销更少

    使用分片时,每个分片都有自己的 MAC 标头和后面的 CRC,每个分片都会独立于其它分片进行处理
    例如,到不同目的地的片段可以被交错排列
    当信道受到严重干扰时,分段有助于提高性能
    除非使用块 ACK(block ACK),否则每个分片都会被单独发送,接收方会为每个分片生成一个 ACK
    因为片段比全尺寸的帧要小,所以如果需要重传,需要修复的数据量会更少

    分片仅适用于具有单播(非广播或组播)目标地址的帧
    为了启用这种能力,序列控制Sequence Control)字段包含一个片段号fragment number)(4 位)和一个序列号sequence number)(12 位)
    当一个帧被分片时,所有的分片都包含一个共同的序列号,并且每个分片都有一个与相邻分片相差 1 的分片号
    给定 4 比特位宽的字段,一个帧可能被分为共 15 个片段
    帧控制字Frame Control Word)中的更多分片More Frag)字段表示还有更多的片段,终端分片的这个比特位被设置为 0
    目的地通过根据帧序列号内的分片号顺序按顺序组装分片,将原始帧从它收到的分片中进行碎片整理
    目的地站点将收到的拥有同一个帧序列号的分片按照分片号顺序组装回原来的帧
    如果构成序列号的所有分片都已被接收,并且最后一个分片的 More Frag 字段为 0,则该帧被重构并传递给更高层协议进行处理

    人们不经常使用分片,因为它通常需要一些调节,如果在没有调节的情况下使用,可能会使性能略微下降
    当使用较小的帧时,可以减少出现误码的机会(见下一段落)
    分片大小的阈值通常可以设置为 256 字节到 2K 字节(只有那些大小超过阈值的帧才会被分片)
    许多 AP 默认通过将阈值设置得很高的方式来禁用分片(如 Linksys-brand 的 AP 默认阈值为 2437 字节)

    分片为什么有用可以通过一个简单的概率运算得知
    如果比特错误率(bit error rate (BER))为 P,那么成功发送一个比特被的概率为 (1 - P)
    成功发送 N 个比特的概率为 (1 - P)^N,随着 N 的增加,这个值会缩小
    因此,缩短一个帧理论上可以提高它的无差错传输概率
    当然,如果将一个大小为 N 比特的帧分成 K 比特的分片,则至少要发送 ⎡N/K⎤ 个分片
    具体的,要发送一个 1500 字节(12,000 比特)的帧,假设 P = 10^-4(相对较高的比特错误率(bit error rate (BER)))
    在不使用分片的情况下,成功发送该帧的概率为 (1 - 10^-4)^12,000 = 0.301
    也就是说有 30% 的机会在没有错误比特的情况下发送该帧,为了成功发送这样的帧,平均需要发送 3 到 4 次

    如果使用分片,假设分片阈值为 500 字节,可以将帧分为 3 个约 4000 比特的分片
    成功发送一个分片的概率为 (1 - 10^-4)^4000 = 0.670,每个分片有 67% 的机会被成功发送
    需要成功发送 3 个这样的分片才算成功发送了一个帧
    成功发送 3、2、1、0 个分片的概率分别是:(.67)^3 = 0.303(.67)^2(.33) = 0.443(0.67)(.33)^2 = 0.22(.33)^3 = 0.04
    虽然 3 个分片都成功的概率和未分片时差不多,但 2 个或 3 个分片发送成功的概率比较高
    如果 2 个或 3 分片发送成功的情况发生,最多一个分片需要被重传,这会比未分片时重传原始的 1500 字节大小的帧花费少得多的时间
    每个分片会有一些额外的开销,如果比特错误率(bit error rate (BER))为 0,则分片只会因为同样数据量要处理更多次而降低性能

    802.11n 带来的增强功能之一是帧聚合,有两种形式:

    1. 称为聚合 MAC 服务数据单元aggregated MAC service data unit (A-MSDU)),允许在一个 802.11 帧中聚合多个完整的 802.3(以太网)帧
    2. 称为聚合 MAC 协议数据单元aggregated MAC protocol data unit (A-MPDU)),允许通过短时间连续发送来聚合具有相同源、目的地和 QoS 设置的多个 MPDU

    Figure 3-19
    图 3-19
    802.11n 中的帧聚合包括 A-MSDU 和 A-MPDU
    A-MSDU 使用一个帧校验序列Frame Check Sequence (FCS))来聚合帧
    A-MPDU 聚合在每个聚合的 802.11 帧之间使用一个 4 字节的分隔符
    每个 A-MPDU 子帧都有自己的帧校验序列Frame Check Sequence (FCS))
    并且可以使用块 ACK(block ACK)进行独立的确认并在必要时独立地进行重传

    对于单个的聚合,A-MSDU 方法技术上来说更有效
    802.3 报头通常为 14 字节,与可能长达 36 字节的 802.11 MAC 报头相比,相对较小
    因此,对于多个 802.3 帧只需一个 802.11 MAC 报头,每个额外的聚合帧最多可节省 22 个字节
    一个 A-MSDU 最多可达 7935 个字节,它可以容纳 100 多个小(如 50 字节)数据包,但只能容纳几个较大的数据包(如 5 个 1500 字节)
    A-MSDU 使用一个帧校验序列Frame Check Sequence (FCS))来聚合帧
    较大尺寸的 A-MSDU 帧在传送时出错的机会会增加,并且因为整个聚合只有一个 FCS,所以出错时整个帧都必须重传

    A-MPDU 聚合是另一种不同形式的聚合,多个(最多 64 个)802.11 帧一起发送,每个帧都有自己的 802.11 MAC 报头和 FCS,每个帧最多 4095 个字节
    A-MPDU 最多可携带 64KB 的数据,足以容纳 1000 多个小数据包和大约 40 个更大的数据包(1.5KB)
    因为每个子帧都带有自己的 FCS,所以可以有选择地只重传那些接收到误码的子帧
    802.11n(起源于 802.11e)中的块确认block acknowledgment)设施让其成为可能
    这是一种扩展 ACK 形式,向传输者提供反馈,指出哪些特定的 A-MPDU 子帧已成功传送
    这种能力与我们将在 TCP 中看到的选择性确认(见第 14 章)有着相似的目的,但在细节上有所不同
    虽然 A-MSDU 提供的聚合类型对于携带大量小数据包的无差错网络可能更有效,但实际上它可能不如 A-MPDU 聚合 [S08] 表现得好


    目录、参考文献

  • 相关阅读:
    现代密码学-国密算法
    MyBatis Plus实现动态字段排序
    C/S架构学习之基于UDP的本地通信(服务器)
    前端AJAX入门到实战,学习前端框架前必会的(ajax+node.js+webpack+git)(二)
    uniAPP小程序 子组件使用watch不生效,H5正常,小程序不正常(其实是子组件model选项的问题)
    前端学成在线项目详细解析一
    HTML静态网页成品作业(HTML+CSS)——电影网首页网页设计制作(1个页面)
    最大人工岛[如何让一个连通分量的所有节点都记录总节点数?+给连通分量编号]
    连锁门店如何利用共享门店模式实现转型升级
    selenium上传文件时打开指定本地文件路径
  • 原文地址:https://blog.csdn.net/wdhlzd/article/details/125631027