关于CSMA/CA和CSMA/CD的区别

article/2025/8/25 18:14:21

转载自:https://www.cnblogs.com/aixin0813/p/3289183.html

 

1.1  载波侦听多路访问

根据具体的监听/发送策略,可将CSMA分为:

非持续CSMA(英语:non-persistent CSMA) 

当要发送帧的设备侦听到线路忙或发生冲突时,会随机等待一段时间再进行侦听;若发现不忙则立即发送;此策略可以减少冲突,但会导致信道利用率降低,以及较长的延迟。

1-持续CSMA(英语:1-persistent CSMA) 

当要发送帧的设备侦听到线路忙或发生冲突时,会持续侦听;若发现不忙则立即发送。当传播延迟较长或多个设备同时发送帧的可能性较大时,此策略会导致较多的冲突,导致性能降低。

p-持续CSMA(英语:p-persistent CSMA) 

当要发送帧的设备侦听到线路忙或发生冲突时,会持续侦听;若发现不忙,则根据一个事先指定的概率p来决定是发送帧还是继续侦听(以p的概率发送,1-p的概率继续侦听);此种策略可以达到一定的平衡,但对于参数p的配置会涉及比较复杂的考量。

正确使用以上策略可以在一定程度上减少冲突的发生,但无法彻底解决冲突问题。

1.2  CSMA/CD

载波监听多路访问/冲突检测,此方案要求设备在发送帧的同时要对信道进行侦听,以确定是否发生冲突,若在发送数据过程中检测到冲突,则进行如下冲突处理操作:

发送特殊阻塞信息并立即停止发送数据:特殊阻塞信息是连续几个字节的全1信号,此举意在强化冲突,以使得其它设备能尽快检测到冲突发生。

在固定时间內等待随机的时间,再次发送。

此方案应用于以太网(DIX Ethernet V2)标准,IEEE 802.3标准

1.3   CSMA/CA

载波监听多路访问/冲突避免,此种方案采用主动避免碰撞而非被动监测的方式来解决冲突问题。可以满足那些不易准确监测是否有冲突发生的需求,如无线局域网。

CSMA/CA协议主要使用两种方法来避免碰撞:

设备欲发送帧,且监听到信道空闲时,维持一段时间后,再等待一段随机的时间依然空闲时,才送出信息。由于各个设备的等待时间是分别随机产生的,因此很大可能有所区别,由此可以減少冲突的可能性。

RTS-CTS握手(英语:handshake):设备欲发送帧前,先发送一个很小的RTS(Request to Send)帧给目标端,等待目标端回应CTS(Clear to Send)帧后,才开始传送。此方式可以确保接下来传送信息時,不会发生冲突。同时由于RTS帧与CTS帧都很小,让传送的无效开销变小。

此方案应用于无线局域网的IEEE 802.11标准。

 

2.1 协议简介

无线局域网标准802.11的MAC和802.3协议的MAC非常相似,都是在一个共享媒体之上支持多个用户共享资源,由发送者在发送数据前先进行网络的可用性检测。在802.3协议中,是由一种称为CSMA/CD(Carrier Sense Multiple Access with Collision Detection)的协议来完成调节,这个协议解决了在Ethernet上的各个工作站如何在线缆上进行传输的问题,利用它检测和避免当两个或两个以上的网络设备需要进行数据传送时网络上的冲突。

 

CSMA/CA的过程

在802.11无线局域网协议中,冲突的检测存在一定的问题,这个问题称为"Near/Far"现象,这是由于要检测冲突,设备必须能够一边接受数据信号一边传送数据信号,而这在无线系统中是无法办到的。但由于无线产品的适配器不易检测信道是否存在冲突,因此802.11全新定义了一种新的协议,即载波侦听多点接入/避免冲撞CSMA/CA(with Collision Avoidance)。一方面,载波监听----查看介质是否空闲;另一方面,避免冲撞----通过随机的时间等待,使信号冲突发生的概率减到最小,当介质被侦听到空闲时,优先发送。不仅如此,为了系统更加稳固,802.11还提供了带确认帧ACK的CSMA/CA。在一旦遭受其他噪声干扰,或者由于监听失败时,信号冲突就有可能发生,而这种工作于MAC层的ACK此时能够提供快速的恢复能力。

鉴于这个差异,在802.11中对CSMA/CD进行了一些调整,采用了新的协议CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance)或者DCF(Distributed Coordination Function)。 CSMA/CA利用ACK信号来避免冲突的发生,也就是说,只有当客户端收到网络上返回的ACK信号后才确认送出的数据已经正确到达目的地址。

CSMA/CA协议的工作流程是:一个工作站希望在无线网络中传送数据,如果没有探测到网络中正在传送数据,则附加等待一段时间,再随机选择一个时间片继续探测,如果无线网路中仍旧没有活动的话,就将数据发送出去。接受端的工作站如果受到发送端送出的完整的数据则回发一个ACK数据报,如果这个ACK数据报被接收端收到,则这个数据发送过程完成,如果发送端没有收到ACK数据报,则或者发送的数据没有被完整地收到,或者ACK信号的发送失败,不管是哪种现象发生,数据报都在发送端等待一段时间后被重传。

2.2  工作原理

这种协议实际上就是在发送数据帧之前先对信道进行预约。下面为了方便解释这种技术的主要原理请大家先看下图。

 

CSMA/CA协议中的RTS和CTS帧

① 在图中,展示了各个工作站部署位置及其覆盖范围。

● 站B、站C、站E在站A 的无线信号覆盖的范围内。而站D不在其内。

● 站A、站E、站D在站B 的无线信号覆盖的范围内,但站C不在其内。

② 如果站A要向站B发送数据,那么,站A在发送数据帧之前,要先向站B发送一个请求发送帧RTS(Request To Send)。在RTS帧中已说明将要发送的数据帧的长度。站B收到RTS帧后就向站A回应一个允许发送帧CTS(Clear To Send)。在CTS帧中也附上A欲发送的数据帧的长度(从RTS帧中将此数据复制到CTS帧中)。站A收到CTS帧后就可发送其数据帧了。现在讨论在A和B两个站附近的一些站将做出什么反应。

● 对于站C,站C处于站A的无线传输范围内,但不在站B的无线传输范围内。因此站C能够收听到站A发送的RTS帧,但经过一小段时间后,站C收听不到站B发送的CTS帧。这样,在站A向站B发送数据的同时,站C也可以发送自己的数据而不会干扰站B接收数据(注意:站C收听不到站B的信号表明,站B也收不听到站C的信号)。

● 对于站D,站D收听不到站A发送的RTS帧,但能收听到站B发送的CTS帧。因此,站D在收到站B发送的CTS帧后,应在站B随后接收数据帧的时间内关闭数据发送操作,以避免干扰站B接收自A站发来的数据。

● 对于站E,它能收到RTS帧和CTS帧,因此,站E在站A发送数据帧的整个过程中不能发送数据。

③ 虽然使用RTS和CTS帧会使整个网络的效率有所下降。但这两种控制帧都很短,它们的长度分别为20和14字节。而数据帧则最长可达2346字节,相比之下的开销并不算大。相反,若不使用这种控制帧,则一旦发生冲突而导致数据帧重发,则浪费的时间就更大。虽然如此,但协议还是设有三种情况供用户选择:

● 使用RTS和CTS帧;

● 当数据帧的长度超过某一数值时才使用RTS和CTS帧;

● 不使用RTS和CTS帧。

④ 尽管协议经过了精心设计,但冲突仍然会发生。

例如:站B和站C同时向站A发送RTS帧。这两个RTS帧发生冲突后,使得站A收不到正确的RTS帧因而站A就不会发送后续的CTS帧。这时,站B和站C像以太网发生冲突那样,各自随机地推迟一段时间后重新发送其RTS帧。推迟时间的算法也是使用二进制指数退避。

⑤ 为了尽量减少冲突,802.11标准设计了独特的MAC子层。

2.3 工作流程

CSMA/CA协议的工作流程分为两个分别是:

1.送出数据前,监听媒体状态,等没有人使用媒体,维持一段时间后,再等待一段随机的时间后依然没有人使用,才送出数据。由于每个设备采用的随机时间不同,所以可以减少冲突的机会。

2.送出数据前,先送一段小小的请求传送报文(RTS: Request to Send)给目标端,等待目标端回应 允许传送报文(CTS:Clear to Send )后,才开始传送。 利用RTS-CTS握手(handshake)程序,确保接下来传送资料时,不会被碰撞。 同时由于RTS-CTS封包都很小,让传送的无效开销变小。

CSMA/CA通过这两种方式来提供无线的共享访问,这种显式的ACK机制在处理无线问题时非常有效。然而不管是对于802.11还是802.3来说,这种方式都增加了额外的负担,所以802.11网络和类似的Ethernet网比较总是在性能上稍逊一筹。

2.4 主要差别

CSMA/CD:带有冲突检测的载波监听多路访问,可以检测冲突,但无法“避免”

CSMA/CA:带有冲突避免的载波侦听多路访问,发送包的同时不能检测到信道上有无冲突,只能尽量“避免”;

1.两者的传输介质不同,CSMA/CD用于总线式以太网,而CSMA/CA则用于无线局域网802.11a/b/g/n等等;

2.检测方式不同,CSMA/CD通过电缆中电压的变化来检测,当数据发生碰撞时,电缆中的电压就会随着发生变化;而CSMA/CA采用能量检测(ED)、载波检测(CS)和能量载波混合检测三种检测信道空闲的方式;

3.WLAN中,对某个节点来说,其刚刚发出的信号强度要远高于来自其他节点的信号强度,也就是说它自己的信号会把其他的信号给覆盖掉;

4.本节点处有冲突并不意味着在接收节点处就有冲突。

综上,在WLAN中实现CSMA/CD是比较困难的。

 

 

 


http://chatgpt.dhexx.cn/article/Cu62V0AV.shtml

相关文章

计算机网络:随机访问介质访问控制之CSMA/CA协议

CSMA/CD协议已成功应用于使用有线连接的局域网,但在无线局域网环境下,却不能简单地搬用CSMA/CD协议,特别是碰撞检测部分。主要有两个原因: 1)接收信号的强度往往会远小于发送信号的强度,且在无线介质上信号强度的动态…

CSMA/CD协议详解

一、协议背景 最早的以太网是总线网络,当一台计算机发送数据时,总线上所有计算机都能检测到这个数据(广 播通讯方式)。为了通讯的简便,传统总线型以太网采取了以下措施: 1.提供的服务为不可靠的交付: (1.采用较为灵活…

CSMA/CD

carrier sense multi-access/collision detect,载波监听多路访问/冲突检测 工作原理: 发送数据前进行载波监听判断信道是否空闲,若信道忙则等待一段随机时间;若信道空闲则立即发送数据,发送数据过程中同时检测是否产…

CSMA/CD和拥塞控制AIMD其实是一回事!

今天下班的班车上,撸论文,找到一篇关于CSMA/CD性能分析的,然而下载需要钱,作罢。我讨厌知识付费,因为我崇尚知识免费共享。 正好我上周末也写了一篇与此相关的: 谈谈CSMA/CD,TCP中的二进制指数…

CSMA/CD和CSMA/CA的区别(最全知识点总结)

在最后有总结,中间对CSMA/CD和CSMA/CA的描述也很详尽 一.CSMA/CD(载波监听多点接入/碰撞检测) 为什么要使用CSMA/CD: 因为总线上只要有数据,传输资源时就会被占用,又因为传统总线型以太网采用半双工的通讯…

CSMA/CA精辟总结

1. CSMA/CA https://blog.csdn.net/qq894040717/article/details/82426965 https://blog.csdn.net/LMM_5201/article/details/81673371 参考了以上链接的内容,然后进行了整理补充 CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance)协议只能用于有明确目标地…

CSMA/CD协议

CSMA/CD协议 CSMA/CD(Carrier Sense Multiple Access with Collision Detection) CSMA/CD用于以太网中, 以太网是最常见的有线局域网,那么有哪些类型以太网使用呢? 经典以太网(3~10Mbps)&…

CSMA/CD-CSMA/CA

1.CSMA(载波侦听多路访问协议) CSMA 当其他节点检测到信道被占用时不发送数据。但是当数据发送完后其他节点同时检测到信道为空闲,之后又在同一时刻发送数据,可能再次产生冲突。 2.CSMA/CD(带冲突检测的载波侦听多路访…

计算机网络:随机访问介质访问控制之CSMA协议

文章目录 CSMA协议1-坚持CSMA非坚持CSMAp-坚持CSMA比较 CSMA协议 时隙ALOHA系统的效率虽然是纯ALOHA系统的两倍,但每个站点都是随心所欲地发送数据的,即使其他站点正在发送也照发不误,因此发送碰撞的概率很大。 若每个站点在发送前都先侦听…

CSMA介绍

转载自: http://www.cnblogs.com/cherishui/p/4046360.html 以下是转载内容: 本文主要介绍通讯领域中CSMA相关机制,本文全部资料来自于网络。 网络通讯,必须依靠介质来传递数据,将数据调制到模拟信号上,…

计算机网络(十)CSMA详解

随机访问截止访问控制(所有用户可随机发送信息,发送信息时占全部带宽) 分类: CSMA:先听再说 CSMA/CD:先听再说,边听边说 CSMA/CA: CSMA协议(载波监听多路访问协议) CS:载波监听…

CSMA协议简述

CSMA协议 载波监听多路访问协议CSMA(carrier sense multiple access) CS:载波侦听/监听,每一个站在发送数据之前要检测一下总线上是否有其他计算机在发送数据。 当几个站同时在总线上发送数据时,总线上的信号电压摆动…

计算机网络:CSMA协议

载波监听多路访问协议CSMA协议 CS:载波监听/帧听,每一个站再发数据之前都要检测链路上是否有其他站在发送数据。(检测电压摆动值,当几个站同时发送数据时,总线上的电压摆动值就会增大。)MA:多点接入&#…

以太网 CSMA-CD与CSMA-CA的区别与工作方式

2.0.0 以太网 CSMA-CD与CSMA-CA的区别与工作方式 一、冲突域、冲突检测、冲突避免 独木桥上人可以来回走动,但如果两边都有人,如果没有人做出避让,注定是两败俱伤 冲突域概念 冲突域指的是两台及以上终端通信时会发送冲突的区域。 冲突域的…

Windows网络编程 c语言 报错:[Error] ‘bzero‘ was not declared in this scope

阅读前请看一下:我是一个热衷于记录的人,每次写博客会反复研读,尽量不断提升博客质量。文章设置为仅粉丝可见,是因为写博客确实花了不少精力。希望互相进步谢谢!! 文章目录 阅读前请看一下:我是…

C:bzero与memset

目录 1、bzero 2、memset 3、实例 1、bzero bzero函数声明如下: /* Set N bytes of S to 0. */ extern void bzero (void *__s, size_t __n) __THROW __nonnull ((1)); 意思在注释里也写的很清晰,设置s的前n个字节为0。 2、memset memset函数声…

解决No module named numpy问题

目录 前沿 解决 解决方法1: 方法2:(强行安装更新更高的版本) 前沿 最近开始学习python了,由于要简单处理一下图片,奈何能C力太差,openCV上手有点难,想学习一下py简单的处理一下图…

Python中 No module named pygame

有时候运行Python程序,会出现如下错误 No module named pygame这个报错的意思是 没有安装pygame,有的时候你可能会出现No module named XXXX 这就是在说明你没有安装XXXX模块 解决: 1.进入cmd 2. 输入 pip install xxxx 表示安装这个模块 …

ModuleNotFoundError: No module named ‘transformers_modules.chatglm2-6b‘解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

ModuleNotFoundError: No module named ‘selenium

下面是我学习时的错误,在此文章记录一下,方便日后查找,以下解决方案都来源于网络。 问题:当jupyter出现ModuleNotFoundError: No module named selenium问题时的解决方案: 解决方案: 1、在cmd运行pip ins…