计算机网络:CSMA/CA协议

简介: 计算机网络:CSMA/CA协议

CSMA/CA概述

讲解CSMA/CA之前,我们回顾一下CSMA/CD的三个特性:

多址接入MA:多个主机连接在一条总线上,竞争使用总线

载波监听CS:每一个站点在发送帧之前,先要检测一下总线上是否有其他站点在发送帧

碰撞检测CD:每一个正在发送帧的同时,一边发送帧一边检测。一旦发现总线上出现碰撞,则立即停止发送,退避一段随机时间后再次重新发送

CSMA/CD 协议已经解决了有线局域网的传输问题,那么同样使用广播信道的无线局域网能不能也使用 CSMA/CD 协议呢?


在无线局域网中仍然可以使用载波监听CS以及多址接入MA,即在发送帧之前先对传输媒体进行载播监听。若发现有其他站在发送帧,就推迟发送,以避免发生碰撞。


但是在无线局域网中不能使用碰撞检测CD,由于无线信道的传输条件特殊,其信号强度的波动范围非常大,无线网卡上接收到的信号强度往往会远远小于发送信号的强度,可能相差百万倍。如果要在无线网卡上实现碰撞检测,对硬件的要求非常高。

另外一个问题,就是隐蔽站问题:

这里有 4 个无线站点,A 的信号范围可以覆盖到 B,但不能覆盖到 C。C 信号范围可以覆盖到 B,但不能覆盖到 A。换句话说, A 和 C 都检测不到对方的无线信号。当 A 和 C 都要给 B 发送帧时,就会产生碰撞,但 A 和 C 无法检测到碰撞,这种未能检测出信道上其他站点信号的问题叫做隐蔽站问题。


当出了自己的检测范围,就无法识别到碰撞,那么在发送时检测碰撞也是没有有意义的。因此 802.11 无线局域网使用 CSMA/CA 协议在保留CS和MA的基础上去掉了CD,也就是实时监测碰撞。增加了一个 CA,CA是一种避免碰撞的功能。


因此CSMA/CA协议的含义如下:

多址接入MA:多个主机在一个局域网中竞争使用信道

载波监听CS:每一个站点在发送帧之前,先要检测一下是否有其他站点在发送帧

避免碰撞CA:主机发送信号时,尽可能地避免发送碰撞


由于不可能避免所有的碰撞,并且无线信道误码率较高, 802.11 标准还使用了停止等待协议来保证数据被正确接收。


帧间间隔

802.11 标准规定所有的站点必须在持续检测到信道空闲一段指定时间后才能发送帧,这段时间称为帧间间隔 IFS

帧间间隔的长短取决于该站点要发送的帧的类型,高优先级帧需要等待的时间较短,因此可优先获得发送权。低优先级帧需要等待的时间较长,若某个站的低优先级帧还没来得及发送,而其他站的高优先级帧已发送到信道上,则信道变为忙状态,因而低优先级帧就只能在推迟发送了,这样就减少了发生碰撞的机会。

常用的两种帧间间隔如下:

  • 短帧间间隔 SIFS:长度为 28 微秒,是最短的帧间间隔,用来分隔开属于一次对话的各个帧,一个站点应当能够在这段时间内从发送方式切换到接收方式。
  • DCF帧间间隔 DIFS:长度为 128 微秒,它比短帧间间隔 SIFS 要长得多。在 DCF 方式中用来发送数据帧和管理帧。

工作原理

接下来我们来举例说明 CSMA/CA 协议的工作原理

如图所示:

以上站点都是无线站点,横坐标为时间假设无线信道是空闲的,源站有数据帧要发送,当源站检测到信道空闲,则在等待帧间间隔 DIFS 后发送该数据帧:

目的站若正确收到该数据帧,则经过帧间间隔 SIFS 后向源站发送确认帧ACK

需要说明的是,若源站在规定时间内没有收到确认帧ACK ,重传计时器超时后,就必须重传该数据帧,直到收到确认为止,或者经过若干次的重传失败后放弃发送。

源站为什么在检测到信道空闲后还要再等待帧间间隔 DIFS 后才发送数据帧呢?

这就是考虑到可能有其他的站有高优先级的帧要发送,若有就让高优先级帧先发送

目的站又是为什么在正确接收数据帧后,还要再等待一段时间 SIFS 才能发送ACK帧?

SIFS 是最短的帧间间隔,用来分隔开属于一次对话的各个帧。在这段时间内,一个目的站会从发送方式切换到接收方式。

如图所示,在源站和目的站的一次对话过程中,无线信道处于忙状态。若无线信道处于忙状态时,其他无线站点要发送数据,则必须退避

当信道从忙状态转换到空闲状态并经过帧间间隔 DIFS 后,其他要发送数据的无线站点需要退避一段随机时间后才能发送

既然信道已经由忙转为空闲,且经过帧间间隔 DIFS 后,为什么还要退避一段随机时间才能使用信道,而不是立即使用信道呢?

这样做的目的在于防止多个站点同时发送数据而产生碰撞。

当站点检测到信道是空闲的,并且没有连续发送数据,则不使用推避算法。

而以下情况必须使用退避算法

1.在发送数据帧之前检测到信道处于忙状态时,必须使用退避算法

  • 因为处于忙状态时,就可能会有多个站点准备发送,为了防止忙状态刚结束结束,多个站点同时发送数据,于是利用退避算法,把多个站点的发送交错开。

2. 在每一次重传一个数据帧时,必须使用退避算法

3. 在每一次成功发送后,要连续发送下一个帧时,必须使用退避算法

  • 这是为了避免一个站点长时间占用信道。

退避算法

在CSMA/CA协议中,采用了截断二进制指数退避算法来进行退避操作,以产生随机的数值进行退避,确保主机碰撞后退避的时间不同。

算法如下:

规定基本退避时间为一个时隙的长度t

定义参数 k = min(重传次数, 6)

从整数区间[0, 2 2^{k} −1]随机选一个数字r,最后的退避时间为r×2τ

接下来我再详细讲解以上算法的执行过程。

首先要设置一个基本的退避时间,该时间被设置为2t。而最后的总退避时间,就等于一个随机数r乘以这个基本退避时间2t,也就是r×2t。

那么现在的问题就是,要如何生成这个随机数r。该随机数r取自一个区间[0, 2 k-2^{k}  −1],而这个k不是一个固定的数值,其与重传次数相关。

  • 如果重传次数小于6,那么 k 就是重传次数
  • 如果重传此处大于6,那么 k = 6

比如说当前是第2次重传,那么k = 2,r的取值范围就是[0, 2 −1],也就是[0, 3]。最后r在这个区间内随机取一个值,最终的退避时间就是r×2t。

再比如当前是第8次重传,由于重传次数超过6,那么k = 6,r的取值范围就是[0,  2^{6}−1],也就是[0, 255]。最后r在这个区间内随机取一个值,最终的退避时间就是r×2t。

我们来举例说明。CSMA/CA协议的退避算法如图所示,ABCDE 是 5 个无线站点,横坐标为时间:

假设 A 正在占用无线信道发送帧,在 A 的发送过程中,B、C、 D 也要发送帧,我们用向上的箭头来表示。于是进行载波监听,发现信道忙,需要退避,根据退避算法选择出一个随机的退避时间,并在每个时期对信道进行一次检测,当检测到信道由盲状态转为空闲状态且经过帧间间隔 DIFS 后,退避计时器开始倒计时

假设 C 退避时间最短,当 C 退避计时器到时候, C 立即开始发送帧,此时信道由空闲状态转换为忙状态,当 B 和 D 检测到信道忙后,就冻结各自剩余的退避时间

假设在 C 占用无线信道发送帧的过程中, E 也要发送帧,于是进行载波监听,发现信道忙,需要退避,当检测到信道由盲状态转为空闲状态,经过帧间间隔 DIFS 后,退避计时器开始倒计时:

B 和 D 退避计时器从上次冻结的退避剩余时间开始。

倒计时 D 的退避计时器会首先到时 D 立即开始发送帧,此时信道由空闲状态转换为忙状态:

当 B 和 E 检测到信道忙后,就冻结各自剩余的退避时间。

当 D 发送完帧后,信道将转为空闲状态。当 B 和 E 检测到信道由忙状态转换为空闲状态,且经过帧间间隔 DIFS 后,退避计时器重新开始,从上次冻结的退避剩余时间开始倒计时:

E 的退避计时器结束, E 立即开始发送帧,此时信道由空闲状态转换为忙状态:

当 B 检测到信道忙后,就冻结自己剩余的退避时间。

当 E 发送完帧后,信道将转为空闲状态。当 B 检测到信道由盲状态转换为空闲状态,且经过帧间间隔 DIFS 后,退避计时器重新开始从上次冻结的退避剩余时间开始倒计时,当 B 的退避计时器到时候, B 立即开始发送帧:

若 B 发送完这一帧后还有帧要发送,则在检测到信道空闲且经过帧间间隔 DIFS 后,因为是相同的站点连续发送,还必须再退避一段随机时间后才能发送:


虚拟载波监听

接下来我们介绍CSMA/CA协议的信道预约和虚拟载波监听。

为了尽可能减少碰撞的概率和降低碰撞的影响, 802.11 标准允许要发送数据的站点对信道进行预约。


源站在发送数据帧之前先发送一个短的控制帧,称为请求发送RTS,它包括源地址、目的地址以及这次通信所需的持续时间。

如图所示,当源站检测到信道空闲且经过帧间间隔 DIFS 后发送 RTS 帧:

若目的站点正确收到源站发来的RTS 帧,在检测到信道空前且经过帧间间隔 SIFS 后就发送一个响应控制帧,称为允许发送CTS。它也包括这次通信所需的持续时间:

源站收到 CTS 帧后再等待一个帧间间隔 SIFS 后,就可发送其数据帧:

若目的站正确收到了源站发来的数据帧,在等待一个帧间间隔 SIFS 后,就向源站发送确认帧ACK

如果 RTS 帧发生碰撞,源站就收不到 CTS帧,需要执行退避算法重传RTS 帧。由于 RTS 帧和 CTS 帧很短,发生碰撞的概率、碰撞产生的开销以及本身的开销都很小。而对于一般的数据帧,其发送时延往往大于传播时延,碰撞的概率很大,且一旦发生碰撞而导致数据帧重发,则浪费的时间就很多,因此用很小的代价对信道进行预约往往是值得的。


由于利用虚拟载波监听机制,其它站点只需要监听到 RTS、 CTS或数据帧中的任何一个,就能知道信道被占用的持续时间,而不需要真正监听到信道上的信号。因此,虚拟载破监听机制能减少隐蔽站带来的碰撞问题。


除源站和目的站以外的其他各站在收到 CTS 帧或数据帧后就推迟接入到无线局域网中。这样就保证了源站和目的站之间的通信不会受到其他站的干扰。


例如,这是 4 个无线站点, A 和 C 互为隐蔽站, A 的信号可以覆盖到 B,但不能覆盖到C。 C 的信号可以覆盖到 B,但不能覆盖到 A:

A 在给 B 发送数据帧前,可以使用 RTS 帧来预约信道。尽管 C 收不到该 RTS 帧,但是 C 可以收到 B 发送给 A 的 CTS 帧:

这样 C 就知道了信道将被占用多长时间。在这段时间内,C 都不会征用信道,也就是说 A 给 B 发送数据不会受到 C 干扰。


相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
5月前
|
数据采集 算法 数据挖掘
模块化控制协议(MCP)在网络中增强智能体执行效率的研究
随着Web3技术的迅速发展,去中心化应用和智能体在各种领域的应用逐渐增多。MCP(Modularized Control Protocol,模块化控制协议)作为一种增强智能体执行能力的关键技术,为Web3场景中的智能体提供了更强的灵活性和可扩展性。本文将探讨如何利用MCP技术提升智能体在Web3场景中的执行能力,并通过实例代码展示其实现路径。
439 22
|
2月前
|
监控 负载均衡 安全
WebSocket网络编程深度实践:从协议原理到生产级应用
蒋星熠Jaxonic,技术宇宙中的星际旅人,以代码为舟、算法为帆,探索实时通信的无限可能。本文深入解析WebSocket协议原理、工程实践与架构设计,涵盖握手机制、心跳保活、集群部署、安全防护等核心内容,结合代码示例与架构图,助你构建稳定高效的实时应用,在二进制星河中谱写极客诗篇。
WebSocket网络编程深度实践:从协议原理到生产级应用
|
3月前
|
运维 架构师 安全
二层协议透明传输:让跨域二层协议“无感穿越”多服务商网络
简介:本文详解二层协议透明传输技术,适用于企业网工、运营商及架构师,解决LLDP/LACP/BPDU跨运营商传输难题,实现端到端协议透传,提升网络韧性与运维效率。
|
7月前
|
安全 网络协议 Linux
Linux网络应用层协议展示:HTTP与HTTPS
此外,必须注意,从HTTP迁移到HTTPS是一项重要且必要的任务,因为这不仅关乎用户信息的安全,也有利于你的网站评级和粉丝的信心。在网络世界中,信息的安全就是一切,选择HTTPS,让您的网站更加安全,使您的用户满意,也使您感到满意。
209 18
|
8月前
|
安全 网络安全 定位技术
网络通讯技术:HTTP POST协议用于发送本地压缩数据到服务器的方案。
总的来说,无论你是一名网络开发者,还是普通的IT工作人员,理解并掌握POST方法的运用是非常有价值的。它就像一艘快速,稳定,安全的大船,始终为我们在网络海洋中的冒险提供了可靠的支持。
254 22
|
8月前
|
网络协议 数据安全/隐私保护 网络架构
|
9月前
|
缓存 网络协议 API
掌握网络通信协议和技术:开发者指南
本文探讨了常见的网络通信协议和技术,如HTTP、SSE、GraphQL、TCP、WebSocket和Socket.IO,分析了它们的功能、优劣势及适用场景。开发者需根据应用需求选择合适的协议,以构建高效、可扩展的应用程序。同时,测试与调试工具(如Apipost)能助力开发者在不同网络环境下优化性能,提升用户体验。掌握这些协议是现代软件开发者的必备技能,对项目成功至关重要。
|
10月前
|
人工智能 自然语言处理 决策智能
智能体竟能自行组建通信网络,还能自创协议提升通信效率
《一种适用于大型语言模型网络的可扩展通信协议》提出创新协议Agora,解决多智能体系统中的“通信三难困境”,即异构性、通用性和成本问题。Agora通过标准协议、结构化数据和自然语言三种通信格式,实现高效协作,支持复杂任务自动化。演示场景显示其在预订服务和天气预报等应用中的优越性能。论文地址:https://arxiv.org/pdf/2410.11905。
331 6
|
12月前
|
前端开发 网络协议 安全
【网络原理】——HTTP协议、fiddler抓包
HTTP超文本传输,HTML,fiddler抓包,URL,urlencode,HTTP首行方法,GET方法,POST方法
|
12月前
|
网络协议 安全 网络安全
探索网络模型与协议:从OSI到HTTPs的原理解析
OSI七层网络模型和TCP/IP四层模型是理解和设计计算机网络的框架。OSI模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而TCP/IP模型则简化为链路层、网络层、传输层和 HTTPS协议基于HTTP并通过TLS/SSL加密数据,确保安全传输。其连接过程涉及TCP三次握手、SSL证书验证、对称密钥交换等步骤,以保障通信的安全性和完整性。数字信封技术使用非对称加密和数字证书确保数据的机密性和身份认证。 浏览器通过Https访问网站的过程包括输入网址、DNS解析、建立TCP连接、发送HTTPS请求、接收响应、验证证书和解析网页内容等步骤,确保用户与服务器之间的安全通信。
696 3