手机(station)与路由器(AP)连接过程

你这有WiFi吗?


随着科技发展越来越快速,WiFi变成了生活中不可或缺,或者说是人尽皆知的角色。但是从发现WiFi到连接之后上网,这中间发生了什么呢?以手机为例,从打开设置界面,选择账号,输入密码,连接成功。本文简单聊一下这中间发生的事情。

打开无线局域网开关

如果我们打算连接到一个WiFi网络,那么第一步就是打开手机的“无线局域网”开关,打开之后我们可以看到界面开始loading,然后等了一会之后,会出现一个待连接的WiFi列表。当然,这个前提是你周围确实有WiFi,就像前言说的,“你这有WiFi吗”,并且你得到了正面的回答,“有”。

那么问题就来了,这个loading的时候,手机在做什么事情?那就是scan(扫描)。假如你去跳舞,那么第一件事情是不是要找到舞伴,那么扫描就是找舞伴的过程,扫描分为被动扫描和主动扫描两种。

扫描

  • 被动扫描

image.png

以上就是被动扫描的示意图,手机(Client)处于接收状态,接收AP发出的beacon帧。被动扫描比较节省电量,因为不涉及发送,只是在不同的channel切换,侦听空中的beacon帧。beacon中包含加入某个AP需要的各项参数,手机接收之后,显示在待连接的列表中。

  • 主动扫描

image.png

在主动扫描模式,手机扮演比较主动的角色,在每个channel上都会发送Probe request帧,请求对应的AP回应,从而得知是否有AP存在。当AP收到Probe request时,会以Probe response作为回应。另外,在Probe request帧中,可以使用广播SSID,这样收到的所有AP都会对这个帧做回复。

点击某个AP连接

打开无线开关,等待loading结束之后,除非你在偏远的地方或者在户外,那么相信你的列表中已经有很多待连接的AP了吧。那么接下来的步骤就是点击之后->输入密码->加入。这个操作手机又在做什么事情呢?那就是authentication(身份认证)association(连接)。经过第一个阶段,相信你已经找到了舞伴,那么接下来就是确认一个舞伴,开始跳舞了。

身份认证

  • 开放系统身份认证

上面提到,加入AP的步骤是点击->输入密码,其实生活中也会遇到不加密的AP,直接点击就可以加入,这就是开放系统身份认证,具体流程如下图:

image.png

首先手机端会主动发出一个帧,暂时叫做authentication request。这个帧里面有算法编号和认证帧的顺序编号,因为是开放系统身份认证,所以算法为0,顺序编号为1。然后AP收到这个帧之后,会处理然后做一个回复,回复帧包含算法编号、认证帧的顺序编号和状态码。算法编号同样为0,顺序编号为2,如果认证成功,状态码为0。如果出现问题,会有不同的状态码回复,具体状态码对应的问题,参考附录。

  • 共享密钥身份认证

大多数的AP都是加密的,毕竟不希望蹭网的人数过多,影响自己的上网体验。加密AP的身份认证就是共享密钥身份验证,具体流程如下图:

image.png

第一帧依旧是由手机发出,叫做authentication request。这个帧里面也包含了算法编号和帧的顺序编号,只是这里的算法编号为1,代表使用共享密钥身份认证,顺序编号为1。在AP收到第一帧之后,会做处理然后有一个回复,回复帧包含算法编号,顺序编号为2、状态码,只有当状态码为0时,交互才能继续下去,而且会有第四个信息元素,挑战指令。挑战指令是128个位元组,由WEP生成,具体生成流程不做赘述了。

第三帧就是手机对于携带挑战指令的第二帧做出的回复,该帧包含了算法编号、顺序编号为3、挑战指令,除去标头之外,会把信息做一个WEP加密处理,然后发出。在AP收到第三帧之后,会做一个解密处理,然后校验完整性,解出挑战口令,并且通过完整性的校验。通过校验之后,证明手机已经设置好加入网络需要的WEP密钥,然后回复第四帧,包含算法编号、顺序编号为4、状态码,状态码为0。如果出现任何问题,都会以不同状态码返回。

连接

完成身份认证之后,手机就可以和AP做一个连接的操作了,从而可以获取网络的访问权,连接之后,传输系统会记录该手机,从而可以把发给手机的数据传送过去。具体连接的流程如下:

image.png

首先第一帧依旧是手机发出,叫做Association request。当AP收到这个帧之后,会做一个判断。关于是否返回成功,没有做一个完整的规范,不同的AP厂家都有不同的处理办法如果连接成功。如果连接失败,就会返回状态码,并中止整个交互流程。AP会发出第二帧。第二帧叫做Association response,包含成功状态码为0和Association ID简称AID。至此,连接成功了。


以上流程,是手机加入WiFi网络不可缺少的步骤,当然这其中的变化和场景多种多样,这里只是简单介绍扫描、认证、连接。不同的身份认证方式和重新连接,以及事先身份认证都没有提及,以后会慢慢写出。

附录

status codeExplanation
0成功
1未指定失败原因
2-9保留,未使用
10所要求的能力范围过广无法支持
11拒绝重新连接;之前的连接无法辨识与转移
12拒绝重新连接,原因不在 802.11 标准指定范围内
13不支持所使用的身份认证算法
14超乎预期的身份认证序号
15身份认证被拒绝;回应信息有误
16身份认证被拒绝;下一个帧并未出现在预定的期间
17连接被拒绝;基站资源有限
18连接被拒绝;工作站并未支持BSS要求的所有数据传输速率
19连接被拒绝;工作站并未支持 Short Preamble 功能
20连接被拒绝;工作站并未支持 PBCC 调制技术
21连接被拒绝;工作站并未支持 Channel Agility 功能
22连接被拒绝;需要 Spectrum Management 功能
23连接被拒绝;Power Capability不支持
24连接被拒绝;Supported Channels不支持
25连接被拒绝;工作站并未支持 Short slot Time 功能

 

  • 5
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值