1、WiFi研究分册二正常操作全流程信令交互分析 Wi-Fi研究分册二 正常操作全流程信令交互分析 Version 1.0江苏电信无线网络优化中心目录1.1 扫描 61.1.1 相关参数 61.1.2 被动扫描 71. Beacon的帧结构 71.1.3 主动扫描 71. Porbe Request的帧结构 82. Probe response的帧结构 81.1.4 实际扫描过程 81.2 关联 91.2.1 身份验证(Authentication) 91. Authentication Request的帧结构 102. Authentication response的帧结构 101.2.2 关联
2、(association) 111. Association request的帧结构 112. Association response的帧结构 121.2.3 DHCP的封装 131. LLC header的结构 132. IP Header的结构 143. UDP的结构 174. Bootp的结构 175. DHCP的结构 181.2.4 DHCP的交互 181. DHCP Discover 192. DHCP Offer 213. DHCP Request 234. DHCP ACK 231.2.5 ARP 241.2.6 Null Data Frame 251.2.7 关联总结 261
3、.2.8 去关联 261. Disassociation&Disauthenticaion 271.3 PPPoE认证 271.3.1 PPPoE Discovery 281. PPPoE Active Discovery initiation(PADI) 312. PPPoE Active Discovery Offer(PADO) 313. PPPoE Active Discovery Request(PADR) 324. PPPoE Active Discovery Session-confirmation(PADS) 321.3.2 PPPoE Session-Link Control
4、 Protocol(LCP) 331. LCP Configuration options 35Maximum-receive-unit(2bytes) 35Async-Control-Character-Map 35Authentication-Type(=4bytes) 35Magic Number 36Link-Quality-Monitoring 36Protocol-Field-Compression(2bits) 36Address-and-Control-Field-Compression(2bits) 37Additional options:FCS-Alternatives
5、37Additional options:Self-Describing-Padding 37Additional options:Call back 37Additional options:Compound-Frames 372. Configure request 37BRSSTA 37STABras 383. Configurate ACK 394. Configure Reject 395. Identification 396. Compression Control Protocol 401.3.3 PPPoE sessionChallenge Handshake Authent
6、ication Protocol(CHAP) 411. Callenge&Response 42BRASTA 42STABRA 422. Success&Failure 431.3.4 PPPoE sessionRadius 43Request Authenticator 44Response Authenticator 441. Access request 442. Access Accept 443. Access Reject 454. Access Challenge 455. Accounting Request 456. Accounting Response 461.3.5 P
7、PPoE sessionInternet Protocol Control Protocol(IPCP) 461. Configure request 47BrasSTA 47STA Bras 472. Configure Reject 48BrasSTA 483. Configure Nak 48BrasSTA 484. Configure ACK 49STA Bras 49BrasSTA 491.3.6 PPPoE下线 501. Terminate request 512. Terminate response 513. PADT 51STA Bras 51BrasSTA 524. Acc
8、ounting request 525. Accouting response 521.4 Portal(WEB)认证 531.4.1 重定向 531. DNS 54STAName Server 54Name Server STA 552. TCP 56STABras 57Bras STA 57STABras 58STABras 59STABras 59Bras STA 593. HTTP 60STABras 请求格式 60Bras STA 响应格式 611.4.2 打开Portal页面 621. Client Hello 632. Server hello 643. Server certi
9、ficate & server hello done 644. Client Key exchange & Change Cipher Spec & Client finish 655. Change Cipher Spec &Server finish 656. Application data 661.4.3 认证阶段 67STAPortal 67PortalBras Challenge Request 68Bras Portal Challenge Response 68PortalBras 认证请求 68BrasRadius 68RadiusBras 69BrasRadius 69Ra
10、diusBras 69Bras Portal认证响应 70PortalSTA 701.4.4 Portal下线 70STAPortal 71PortalBras 71BrasRadius 71RadiusBras 72BrasPortal 72PortalSTA 721.5 漫游切换 73漫游切换对于无线局域网来说是支持用户可以在无感知的情况下实现从一个接入点到另一个接入点的移动。这一节我们就来研究一下wifi切换的实现的机制。当STA由一个AP的BSS向另一个AP的BBS时,原AP的信号强度和信噪比都会下降,使他丢失连接并初始化一个切换,这个时候STA是不能和AP发生通信的,所以STA需要重
11、新关联一个新的AP,这个过程和之前的扫描过程是一样的,在接受beacon帧的同时会根据信号强度产生一个AP列表,并根据这个列表进行reauthentication 过程,reauthentication包括了authenticaiton和reassociation的两个过程。 731.5.1 与目标AP的身份验证 731.5.2 于目标AP重关联 73Figure2.46 重关联请求消息 73Figure2.47重关联请求响应 741.5.3 去身份鉴权消息 75和新的AP建立了连接以后,旧的AP会给sta发送deauthentication消息取消这两之间的连接 75中国电信的WiFi网络C
12、hinaNet目前支持Portal接入,PPPoE接入和UIM卡接入三种方式,本文主要讨论的是前两种方式的接入过程,包括:扫描,关联,认证,去关联,去认证,切换漫游等相关过程。目前全国对于wifi的全信令流程仍然是一块空白。江苏电信为摸清相关流程的具体涉及的信令及其相关参数的使用方法,模拟了一套从AP到BRAS的实验环境,并从空口,BRAS上行口和下行口分别进行报文抓取,下面让我们一起研究下相关的业务流程。Figure 1:测试示意图1.1 扫描1.1.1 相关参数在无线区域中,STA要加入任何一个网络之前需要进行一番识别的工作,也就是扫描。在扫描的过程中需要用到几个参数,这些参数或者是用户指
13、定的, 有些是STA网卡的驱动程序里为这些参数提供默认值。BSSType:可以指定要搜索的网络属于independent ad hoc、infrastructure或者同时搜寻BSSID: (individual或broadcast)STA可以针对所要加入的特定网络进行扫描,或者扫描允许该工作站加入的所有网络。在移动时将BSSID设为broadcastSSID: 网络名称,如果STA打算找出所有的网络,应该将之设置为broadcast SSIDScantype:(active或passive)主动是发送Probe Request被动是聆听BeaconChannel list: 802.11允许
14、STA指定所要尝试的信道列表Probe delay: 主动扫描时,为了避免工作站一直等不到Probe Request帧而设定的延时定时器。MinChannelTime与MAXChannelTime 以TU为单位,指定扫描某个信道的最大和最小时间量。Figure1.1:设定首选网络可以通过设定将中国电信的ChinaNet设定为首选网络,STA打开网络后就可以首先扫描ChinaNet网络。1.1.2 被动扫描在被动扫描中,STA会根据Channel List在所列的各个信道间切换,聆听Beacon帧。收到的任何帧都会被暂时存储起来,并从这些帧中取出相关BSS的信息。Beacon里带有为了让STA加
15、入相应BSS的所需要的参数。1. Beacon的帧结构Figure 1.2 Beacon结构Beacon帧帧主体里应该包含18个字段,包含了fix field字段和information element。图1.2里标绿的是我们中国电信WiFi网络的Beacon帧里实际带有的字段,红色是字段模型里没有而实际有的字段。1.1.3 主动扫描在主动扫描中,STA在每个信道上发送Probe Request来请求特定网络的响应。大概过程为1) 跳到某个信道,然后等帧指示或者等到Probe Delay定时器的超时。如果在这个信道收的到帧,说明有人使用,可以加以探测。而Probe Delay可以防止闲置的信道
16、造成整个过程的停止。2) 利用DCF访问过程取得媒介使用权,送出Probe Request3) 至少等候MinChannelTime,如果medium不忙碌,表示没有网络存在,跳到下一个信道;如果在MinChannelTime很忙碌,就继续等待一段时间直到MaxChannelTime超时,然后处理任何的Probe Response。Probe Request采用的Broadcast SSID,让该区域的所有WiFi网络加以回应。所以单一的Probe Request导致多个Probe Response的现象很普遍。1. Porbe Request的帧结构Figure 1.3 probe requ
17、est标绿的是我们中国电信WiFi网络的Probe Request帧里实际带有的字段。SSID设置为Broadcast表示允许网卡加入任意一个网络。2. Probe response的帧结构Figure 1.4 probe response和Beacon里带的信息基本相同,Beacon里会多带一个TIM字段,用于节电模式1.1.4 实际扫描过程在中国电信现网的WiFi网络中,主动扫描和被动扫描的过程是同时存在的。在802.11网络中,广播和组播帧是不需要Acknowledgement的。所以Beacon和Probe Request是不需要ACK的,但Probe Response是需要的,如图f
18、igure1.5所示。具体选择加入哪一个BSS和现实有关,有时候甚至需要用户的接入。属于同一个ESS的BSS允许采用本身所决定的方式。通常网络用来决定加入那个网络的标准时功率电平(power level)和信号强度(signal strength)。其实我们无法判断STA何时加入某一个BSS,因为这个过程是网卡的内部操作,还牵涉到调整内部参数配合所选的BSS要求的参数。很重要的是定时同步过程。不过扫描会产生一个扫描Figure1.5 主动和被动扫描过程报告,STA可以利用这份报告来加入所发现的任何网络。除了BSSID,SSID,BSSTYPE外,还有以下一些参数:Beacon interval
19、,DTIM period,Timing parameter(Timestamp、offset),PHYCFIBSS参数,BSSBasicRateSet。1.2 关联STA完成扫描后,根据获取的信息,经STA的网卡的内部机制判定后会选定一个BSS,之后便进入了关联阶段。1.2.1 身份验证(Authentication)关联的第一步是进行身份验证。不过,这种身份验证并不能提供真正的网络安全,因为既没有传递或验证任何加密密钥,也并未进行相互认证过程。其实802.11的身份验证是一个单行道,网络要求STA必须通过身份验证,而网络无义务对STA提供自己的身份证明。目前的身份验证有两种,开放式身份验证(
20、open-system authentication)和共享密钥身份验证(shared-key authentication)。目前中国电信在WiFi热点普遍使用的是第一种OPEN-SYSTEM的身份验证方式,下面我们就来介绍一下这个身份验证的过程。Figure 2.1:开放式身份验证过程如图2.1所示,开放式身份验证实际上是一个两次握手的过程,在我们实际抓包中,交互如下:具体Authentication request和Authentication response里带有哪些信息,具有哪些作用我们来详细看一下:1. Authentication Request的帧结构Figure2.2 au
21、thenticaiton 帧结构由于是开放式身份验证,Authentication algorithm Number 为0,sequence number=1表示request,而在这里由于是请求消息,这里的status位为保留位,而在Element ID为221的value里带着我们的challenge text信息。 2. Authentication response的帧结构Authentication response的帧结构和Authentication request的帧结构是一样的,都如图2.8所示。而在这个帧里的status code 反应了身份验证成功与否的结构。到这里我们的
22、身份验证阶段就完成了,接下来是我们的关联过程。1.2.2 关联(association)和AP关联是为了得到完全的访问权,关联是一种记录保持过程,它让分布式系统能够记录每个STA的位置。一旦完成了此过程,STA就可以通过分布式系统和整个网络相连,当然在运营商运营的网络里,还需要经过认证,计费等过程。下面我们来看一下具体的关联过程是怎样的,如图2.1Figure2.3关联过程1. Association request的帧结构Figure2.4 association request的帧结构从Capability info里我们可以看出,这个帧使用了short time slot 和short
23、preamble。Listen Interval定义了节电模式下,AP必须为STA缓存的时间。Power capability是STA告诉了网络它最大和最低传输功率。 2. Association response的帧结构Figure2.5 association response帧结构在关联回应里,Status Code反馈了关联是否成功,并反馈了网络支持的速率。而Association ID指示了它和AP的标识码。1.2.3 DHCP的封装当Association的过程完成以后,STA会从DHCP Server的DHCP地址池中申请一个IP地址。DHCP消息和之前的纯空口的Beacon,P
24、robe以及Authentication和Association消息不同,它涉及到了城域网的设备,因此从DHCP的帧消息内除了802.11 MAC header外,我们可以明显观察到LLC Header,IP Header,UDP以及DHCP信息的存在。之前我们介绍过IEEE802的协议模型,我们根据抓包信息来看一下DHCP的整个封装过程。802.11header之前已经介绍过了,下面我们从LLC header开始介绍。Figure2.6 DHCP的封装结构1. LLC header的结构中国电信WiFi的LLC封装采用的是RFC1042的IEFT封装,简称SNAP(Sub-network a
25、ccess protocol)结构如下:Figure2.7DSAP,SSAP:标识的目的和源的接入点,默认值为0xAAControl(command):和高层数据链路协议及其衍生协议一样,此字段会被设定为0x03,代表未编号信息,是映射到IP Datagram所谓的尽力传递的范畴。RCF1042的封装:用0x000000标识,0x00F8表示的802.1H封装,有的时候称为隧道封装。Type code(Protocol code):在IP领域里,此字段不是代表IP本身的0x0800,就是代表ARP的0x0806。2. IP Header的结构Figure2.8 IP header 结构 Ver
26、sion:版本字段指示的网络包头的形式(format),我们大部分运用到的IP包里的version为4.versiondescription0reserved1234Internet Protocol5ST Datagram Mode6Simple Internet ProtocolSimple Internet Protocol PlusIPv67the next internet8The P Internet Protocol9TUBA 10 1415reservedTable2.1IHL:Internet header length,指出了数据的开头(beginning of the d
27、ata).需要注意一个正确的internet header的最小长度为5.Type of service(differentiated service):这个字段是QoS想要的抽象参数指示,在一个网络里传输数据包的时候,这些参数用于导向真实服务参数的选择,实际上就是当一个数据包在一个网络系统传输的时候,去明确如何处理这个数据包。有的网络提供服务优先权,为高优先权的传输提供优先服务。这个优先权是通过三个参数的选择:low-delay、high-reliability、high-throughput。Figure2.9Precedence优先级description000Routine001Pri
28、ority010Immediate011Flash100Flash override101Critic/ECP110Internetwork control111Network controlTable2.2valuedescriptionlow-delay0normal delay1high delayhigh-throughput0normal throughput1high throughputhigh-reliability0normal reliability1high reliabilitylast 2 bits00future use Table2.3这三个参数的设置会增加服务的
29、开销,一个好表现的传输会导致几个坏的传输。Total lengthTotal length是包含了internet header和data在内的数据包(datagram)的长度。他的最大长度是65535 octets,这对大部分主机和网络都是不切实际的,所有的主机准备接受的是最大576 octets的数据包。Identification是由发送者分配,用于聚合被分段的数据包。Fragment FlagFigure2.10 分段指示Bit0保留,必须为0DF0=May fragment1=Dont fragmentMF0=Last fragment1=More fragment Table2.4
30、Fragment Offset该字段指示分段属于数据包的那一部分,用于重新组合。单位8octets,第一个分段的fragment offset为0Time to Live代表在网络系统里最大的逗留时间。如果此位为0,则这个数据包必须被摧毁。此位在进程中不断变化,以秒为单位。Protocol表示在网络数据包的数据部分用的下一个协议Header Checksum在包头内,网络包头进程中在被重计算和变化。Source Address/Destination Address目的和源IP地址3. UDP的结构Figure2.11 UDP结构Port68代表用户端口(bootpc),port69代表服务器端口(bootps)。可以判断帧的传输方向。4. Bootp的结构Figure2.12 bootp的结构Option:Option code或者message type,1代表bootp request,2代表bootp responseHardware Address Type:1=10Mb EthernetHardware Address Length:6 for 1
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1