无线网络安全--链路层协议

2022-04-27

之前无线网络安全基础大致讲了设备连接的流程,现在我们具体分析无线网络链路层的协议

为什么我们要特定分析链路层协议呢,因为在这一层开始,协议和正常的计算机网络(有线网络)传授的内容上,发生了重大意义上的变化

在链路层之前的层次协议,例如(应用层,运输层,网络层的协议都是可以复用的,没有太大变化)

产生这一点的根本原因在于传播介质的改变(有线线缆变成了空气介质)

802.11的 MAC 层协议 CSMA/CA

我们知道,正常情况下的链路层协议(有线连接)是

CSMA/CD(Carrier Sense Multiple Access with Collision Detection,载波监听多路访问碰撞检测) 协议

但是在无线网络介质中,我们不能使用这个协议(主要是CD不行)

原因如下

1.碰撞检测”要求一个站点在发送本站数据的同时,还必须不间断地检测信道。一旦检测到碰撞,就立即停止发送。但由于无线信道的传输条件特殊,其信号强度的动态范围非常大,因此在802.11适配器上接收到的信号强度往往会远远小于发送信号的强度(信号强度可能相差百万倍)。如要在无线局域网的适配器上实现检测到碰撞,在硬件上需要的花费就会过大。

2.即使我们能够在硬件上实现无线局域网的碰撞检测功能,我们仍然无法避免碰撞的发生。在无线局域网中,并非所有的站点都能听见对方,而“所有站点都能听见 对方”正是实现CSMA/CD 协议必须具备的基础。

关于原因2,一个是隐蔽站问题,另一个是暴露站问题

隐蔽站问题:

暴露站问题:

站点B向A发送数据。而C又想和D通信。但C检测到信道忙,于是就不敢向D发送数据,其实B向A发送数据并不影响C向D发送数据(如果这时不是B向A发送数据而是A向B发送数据,则当C向D发送数据时就会干扰B接收A发来的数据)。这就是暴露站问题((exposed station problem)。在无线局域网中,在不发生干扰的情况下,可允许同时多个移动站进行通信。这点与有线局域网有很大的差别。

因此

无线局域网可能出现检测错误的情况:检测到信道空闲,其实并不空闲;而检测到信道忙,其实并不忙

所以

WLAN无法检测到碰撞。既然检测不到碰撞,就让它尽量避免碰撞(这是个很不错的想法,有个笑话,解决不了问题,就解决提出问题的人,哈哈)

这时候引入了新的链路层协议

CSMA/CA(Carrier Sense Multiple Access with Collision Avoid,载波监听多路访问/碰撞避免)

CSMA/CA设计的思路:尽量减少碰撞发生的概率

使用 CSMA/CA 的同时,还增加使用停止等待协议,这是为什么呢?

因为无线信道的通信质量远不如有线信道,因此无线站点每通过无线局域网发送完一帧,要等到收到对方的确认后才能继续发送下一帧,这叫做链路层确认

CSMA/CA原理

可以参考CSMA/CA协议详解【计算机网络】

整个流程如下图所示。

这个流程图画的真的很好。

数据帧的地址

在无线局域网中,A要向B发送数据,必须经过AP转发

这时候A向B发数据 变成了 A–>AP–>B

所以发送数据帧时,2个MAC地址是不够的,起码要3个(A,AP,B的mac地址)

所以引入了 To DS 和 From DS(用来表示此时是哪个送往哪个)