WiFi研究分册二正常操作全流程信令交互分析.docx
《WiFi研究分册二正常操作全流程信令交互分析.docx》由会员分享,可在线阅读,更多相关《WiFi研究分册二正常操作全流程信令交互分析.docx(79页珍藏版)》请在冰豆网上搜索。
WiFi研究分册二正常操作全流程信令交互分析
Wi-Fi研究分册二
正常操作全流程信令交互分析
Version1.0
江苏电信无线网络优化中心
目录
1.1扫描6
1.1.1相关参数6
1.1.2被动扫描7
1.Beacon的帧结构7
1.1.3主动扫描7
1.PorbeRequest的帧结构8
2.Proberesponse的帧结构8
1.1.4实际扫描过程8
1.2关联9
1.2.1身份验证(Authentication)9
1.AuthenticationRequest的帧结构10
2.Authenticationresponse的帧结构10
1.2.2关联(association)11
1.Associationrequest的帧结构11
2.Associationresponse的帧结构12
1.2.3DHCP的封装13
1.LLCheader的结构13
2.IPHeader的结构14
3.UDP的结构17
4.Bootp的结构17
5.DHCP的结构18
1.2.4DHCP的交互18
1.DHCPDiscover19
2.DHCPOffer21
3.DHCPRequest23
4.DHCPACK23
1.2.5ARP24
1.2.6NullDataFrame25
1.2.7关联总结26
1.2.8去关联26
1.Disassociation&Disauthenticaion27
1.3PPPoE认证27
1.3.1PPPoEDiscovery28
1.PPPoEActiveDiscoveryinitiation(PADI)31
2.PPPoEActiveDiscoveryOffer(PADO)31
3.PPPoEActiveDiscoveryRequest(PADR)32
4.PPPoEActiveDiscoverySession-confirmation(PADS)32
1.3.2PPPoESession--LinkControlProtocol(LCP)33
1.LCPConfigurationoptions35
Maximum-receive-unit(2bytes)35
Async-Control-Character-Map35
Authentication-Type(>=4bytes)35
MagicNumber36
Link-Quality-Monitoring36
Protocol-Field-Compression(2bits)36
Address-and-Control-Field-Compression(2bits)37
Additionaloptions:
FCS-Alternatives37
Additionaloptions:
Self-Describing-Padding37
Additionaloptions:
Callback37
Additionaloptions:
Compound-Frames37
2.Configurerequest37
BRSSTA37
STABras38
3.ConfigurateACK39
4.ConfigureReject39
5.Identification39
6.CompressionControlProtocol40
1.3.3PPPoEsession—ChallengeHandshakeAuthenticationProtocol(CHAP)41
1.Callenge&Response42
BRASTA42
STABRA42
2.Success&Failure43
1.3.4PPPoEsession—Radius43
RequestAuthenticator44
ResponseAuthenticator44
1.Accessrequest44
2.AccessAccept44
3.AccessReject45
4.AccessChallenge45
5.AccountingRequest45
6.AccountingResponse46
1.3.5PPPoEsession—InternetProtocolControlProtocol(IPCP)46
1.Configurerequest47
BrasSTA47
STABras47
2.ConfigureReject48
BrasSTA48
3.ConfigureNak48
BrasSTA48
4.ConfigureACK49
STABras49
BrasSTA49
1.3.6PPPoE下线50
1.Terminaterequest51
2.Terminateresponse51
3.PADT51
STABras51
BrasSTA52
4.Accountingrequest52
5.Accoutingresponse52
1.4Portal(WEB)认证53
1.4.1重定向53
1.DNS54
STANameServer54
NameServerSTA55
2.TCP56
STABras57
BrasSTA57
STABras58
STABras59
STABras59
BrasSTA59
3.HTTP60
STABras请求格式60
BrasSTA响应格式61
1.4.2打开Portal页面62
1.ClientHello63
2.Serverhello64
3.Servercertificate&serverhellodone64
4.ClientKeyexchange&ChangeCipherSpec&Clientfinish65
5.ChangeCipherSpec&Serverfinish65
6.Applicationdata66
1.4.3认证阶段67
STAPortal67
PortalBrasChallengeRequest68
BrasPortalChallengeResponse68
PortalBras认证请求68
BrasRadius68
RadiusBras69
BrasRadius69
RadiusBras69
BrasPortal认证响应70
PortalSTA70
1.4.4Portal下线70
STAPortal71
PortalBras71
BrasRadius71
RadiusBras72
BrasPortal72
PortalSTA72
1.5漫游切换73
漫游切换对于无线局域网来说是支持用户可以在无感知的情况下实现从一个接入点到另一个接入点的移动。
这一节我们就来研究一下wifi切换的实现的机制。
当STA由一个AP的BSS向另一个AP的BBS时,原AP的信号强度和信噪比都会下降,使他丢失连接并初始化一个切换,这个时候STA是不能和AP发生通信的,所以STA需要重新关联一个新的AP,这个过程和之前的扫描过程是一样的,在接受beacon帧的同时会根据信号强度产生一个AP列表,并根据这个列表进行reauthentication过程,reauthentication包括了authenticaiton和reassociation的两个过程。
73
1.5.1与目标AP的身份验证73
1.5.2于目标AP重关联73
Figure2.46重关联请求消息73
Figure2.47重关联请求响应74
1.5.3去身份鉴权消息75
和新的AP建立了连接以后,旧的AP会给sta发送deauthentication消息取消这两之间的连接75
中国电信的WiFi网络ChinaNet目前支持Portal接入,PPPoE接入和UIM卡接入三种方式,本文主要讨论的是前两种方式的接入过程,包括:
扫描,关联,认证,去关联,去认证,切换漫游等相关过程。
目前全国对于wifi的全信令流程仍然是一块空白。
江苏电信为摸清相关流程的具体涉及的信令及其相关参数的使用方法,模拟了一套从AP到BRAS的实验环境,并从空口,BRAS上行口和下行口分别进行报文抓取,下面让我们一起研究下相关的业务流程。
Figure1:
测试示意图
1.1扫描
1.1.1相关参数
在无线区域中,STA要加入任何一个网络之前需要进行一番识别的工作,也就是扫描。
在扫描的过程中需要用到几个参数,这些参数或者是用户指定的,有些是STA网卡的驱动程序里为这些参数提供默认值。
BSSType:
可以指定要搜索的网络属于independentadhoc、infrastructure或者同时搜寻
BSSID:
(individual或broadcast)
STA可以针对所要加入的特定网络进行扫描,或者扫描允许该工作站加入的所有网络。
在移动时将BSSID设为broadcast
SSID:
网络名称,如果STA打算找出所有的网络,应该将之设置为broadcastSSID
Scantype:
(active或passive)
主动是发送ProbeRequest
被动是聆听Beacon
Channellist:
802.11允许STA指定所要尝试的信道列表
Probedelay:
主动扫描时,为了避免工作站一直等不到ProbeRequest帧而设定的延时定时器。
MinChannelTime与MAXChannelTime
以TU为单位,指定扫描某个信道的最大和最小时间量。
Figure1.1:
设定首选网络
可以通过设定将中国电信的ChinaNet设定为首选网络,STA打开网络后就可以首先扫描ChinaNet网络。
1.1.2被动扫描
在被动扫描中,STA会根据ChannelList在所列的各个信道间切换,聆听Beacon帧。
收到的任何帧都会被暂时存储起来,并从这些帧中取出相关BSS的信息。
Beacon里带有为了让STA加入相应BSS的所需要的参数。
1.Beacon的帧结构
Figure1.2Beacon结构
Beacon帧帧主体里应该包含18个字段,包含了fixfield字段和informationelement。
图1.2里标绿的是我们中国电信WiFi网络的Beacon帧里实际带有的字段,红色是字段模型里没有而实际有的字段。
1.1.3主动扫描
在主动扫描中,STA在每个信道上发送ProbeRequest来请求特定网络的响应。
大概过程为
1)跳到某个信道,然后等帧指示或者等到ProbeDelay定时器的超时。
如果在这个信道收的到帧,说明有人使用,可以加以探测。
而ProbeDelay可以防止闲置的信道造成整个过程的停止。
2)利用DCF访问过程取得媒介使用权,送出ProbeRequest
3)至少等候MinChannelTime,如果medium不忙碌,表示没有网络存在,跳到下一个信道;如果在MinChannelTime很忙碌,就继续等待一段时间直到MaxChannelTime超时,然后处理任何的ProbeResponse。
ProbeRequest采用的BroadcastSSID,让该区域的所有WiFi网络加以回应。
所以单一的ProbeRequest导致多个ProbeResponse的现象很普遍。
1.PorbeRequest的帧结构
Figure1.3proberequest
标绿的是我们中国电信WiFi网络的ProbeRequest帧里实际带有的字段。
SSID设置为Broadcast表示允许网卡加入任意一个网络。
2.Proberesponse的帧结构
Figure1.4proberesponse
和Beacon里带的信息基本相同,Beacon里会多带一个TIM字段,用于节电模式
1.1.4实际扫描过程
在中国电信现网的WiFi网络中,主动扫描和被动扫描的过程是同时存在的。
在802.11网络中,广播和组播帧是不需要Acknowledgement的。
所以Beacon和ProbeRequest是不需要ACK的,但ProbeResponse是需要的,如图figure1.5所示。
具体选择加入哪一个BSS和现实有关,有时候甚至需要用户的接入。
属于同一个ESS的BSS允许采用本身所决定的方式。
通常网络用来决定加入那个网络的标准时功率电平(powerlevel)和信号强度(signalstrength)。
其实我们无法判断STA何时加入某一个BSS,因为这个过程是网卡的内部操作,还牵涉到调整内部参数配合所选的BSS要求的参数。
很重要的是定时同步过程。
不过扫描会产生一个扫描
Figure1.5主动和被动扫描过程
报告,STA可以利用这份报告来加入所发现的任何网络。
除了BSSID,SSID,BSSTYPE外,还有以下一些参数:
Beaconinterval,DTIMperiod,Timingparameter(Timestamp、offset),PHY\CF\IBSS参数,BSSBasicRateSet。
1.2关联
STA完成扫描后,根据获取的信息,经STA的网卡的内部机制判定后会选定一个BSS,之后便进入了关联阶段。
1.2.1身份验证(Authentication)
关联的第一步是进行身份验证。
不过,这种身份验证并不能提供真正的网络安全,因为既没有传递或验证任何加密密钥,也并未进行相互认证过程。
其实802.11的身份验证是一个单行道,网络要求STA必须通过身份验证,而网络无义务对STA提供自己的身份证明。
目前的身份验证有两种,开放式身份验证(open-systemauthentication)和共享密钥身份验证(shared-keyauthentication)。
目前中国电信在WiFi热点普遍使用的是第一种OPEN-SYSTEM的身份验证方式,下面我们就来介绍一下这个身份验证的过程。
Figure2.1:
开放式身份验证过程
如图2.1所示,开放式身份验证实际上是一个两次握手的过程,在我们实际抓包中,交互如下:
具体Authenticationrequest和Authenticationresponse里带有哪些信息,具有哪些作用我们来详细看一下:
1.AuthenticationRequest的帧结构
Figure2.2authenticaiton帧结构
由于是开放式身份验证,AuthenticationalgorithmNumber为0,sequencenumber=1表示request,而在这里由于是请求消息,这里的status位为保留位,而在ElementID为221的value里带着我们的challengetext信息。
2.Authenticationresponse的帧结构
Authenticationresponse的帧结构和Authenticationrequest的帧结构是一样的,都如图2.8所示。
而在这个帧里的statuscode反应了身份验证成功与否的结构。
到这里我们的身份验证阶段就完成了,接下来是我们的关联过程。
1.2.2关联(association)
和AP关联是为了得到完全的访问权,关联是一种记录保持过程,它让分布式系统能够记录每个STA的位置。
一旦完成了此过程,STA就可以通过分布式系统和整个网络相连,当然在运营商运营的网络里,还需要经过认证,计费等过程。
下面我们来看一下具体的关联过程是怎样的,如图2.1
Figure2.3关联过程
1.Associationrequest的帧结构
Figure2.4associationrequest的帧结构
从Capabilityinfo里我们可以看出,这个帧使用了shorttimeslot和shortpreamble。
ListenInterval定义了节电模式下,AP必须为STA缓存的时间。
Powercapability是STA告诉了网络它最大和最低传输功率。
2.Associationresponse的帧结构
Figure2.5associationresponse帧结构
在关联回应里,StatusCode反馈了关联是否成功,并反馈了网络支持的速率。
而AssociationID指示了它和AP的标识码。
1.2.3DHCP的封装
当Association的过程完成以后,STA会从DHCPServer的DHCP地址池中申请一个IP地址。
DHCP消息和之前的纯空口的Beacon,Probe以及Authentication和Association消息不同,它涉及到了城域网的设备,因此从DHCP的帧消息内除了802.11MACheader外,我们可以明显观察到LLCHeader,IPHeader,UDP以及DHCP信息的存在。
之前我们介绍过IEEE802的协议模型,我们根据抓包信息来看一下DHCP的整个封装过程。
802.11header之前已经介绍过了,下面我们从LLCheader开始介绍。
Figure2.6DHCP的封装结构
1.LLCheader的结构
中国电信WiFi的LLC封装采用的是RFC1042的IEFT封装,简称SNAP(Sub-networkaccessprotocol)结构如下:
Figure2.7
DSAP,SSAP:
标识的目的和源的接入点,默认值为0xAA
Control(command):
和高层数据链路协议及其衍生协议一样,此字段会被设定为0x03,代表未编号信息,是映射到IPDatagram所谓的尽力传递的范畴。
RCF1042的封装:
用0x000000标识,0x00F8表示的802.1H封装,有的时候称为隧道封装。
Typecode(Protocolcode):
在IP领域里,此字段不是代表IP本身的0x0800,就是代表ARP的0x0806。
2.IPHeader的结构
Figure2.8IPheader结构
Version:
版本字段指示的网络包头的形式(format),我们大部分运用到的IP包里的version为4.
version
description
0
reserved
1
2
3
4
InternetProtocol
5
STDatagramMode
6
SimpleInternetProtocol
SimpleInternetProtocolPlus
IPv6
7
thenextinternet
8
ThePInternetProtocol
9
TUBA
10~14
15
reserved
Table2.1
IHL:
Internetheaderlength,指出了数据的开头(beginningofthedata).需要注意一个正确的internetheader的最小长度为5.
Typeofservice(differentiatedservice):
这个字段是QoS想要的抽象参数指示,在一个网络里传输数据包的时候,这些参数用于导向真实服务参数的选择,实际上就是当一个数据包在一个网络系统传输的时候,去明确如何处理这个数据包。
有的网络提供服务优先权,为高优先权的传输提供优先服务。
这个优先权是通过三个参数的选择:
low-delay、high-reliability、high-throughput。
Figure2.9
Precedence优先级
description
000
Routine
001
Priority
010
Immediate
011
Flash
100
Flashoverride
101
Critic/ECP
110
Internetworkcontrol
111
Networkcontrol
Table2.2
value
description
low-delay
0
normaldelay
1
highdelay
high-throughput
0
normalthroughput
1
highthroughput
high-reliability
0
normalreliability
1
highreliability
last2bits
00
futureuse
Table2.3
这三个参数的设置会增加服务的开销,一个好表现的传输会导致几个坏的传输。
Totallength
Totallength是包含了internetheader和data在内的数据包(datagram)的长度。
他的最大长度是65535octets,这对大部分主机和网络都是不切实际的,所有的主机准备接受的是最大576octets的数据包。
Identification
是由发送者分配,用于聚合被分段的数据包。
FragmentFlag
Figure2.10分段指示
Bit0
保留,必须为0
DF
0=Mayfragment
1=Don’tfragment
MF
0=Lastfragment
1=Morefragment
Table2.4
FragmentOffset
该字段指示分段属于数据包的那一部分,用于重新组合。
单位8octets,第一个分段的fragmentoffset为0
TimetoLive
代表在网络系统里最大的逗留时间。
如果此位为0,则这个数据包必须被摧毁。
此位在进程中不断变化,以秒为单位。
Protocol
表示在网络数据包的数据部分用的下一个协议
HeaderChecksum
在包头内,网络包头进程中在被重计算和变化。
SourceAddress/DestinationAddress
目的和源IP地址
3.UDP的结构
Figure2.11UDP结构
Port68代表用户端口(bootpc),port69代表服务器端口(bootps)。
可以判断帧的传输方向。
4.Bootp的结构
Figure2.12bootp的结构
Option:
Optioncode或者messagetype,1代表bootprequest,2代表bootpresponse
HardwareAddressType:
1=10MbEthernet
HardwareAddressLength:
6for1