介质 = 传输介质(网线、无线信号)
访问控制 = 多台设备(如电脑、路由等)如何有序地使用同一根线/同一片空间来发数据,避免碰撞和混乱。
一下均已电脑作比。
一、CSMA/CD(带冲突检测的载波侦听多路访问)
适用场景:总线型以太网(用一根同轴电缆串起所有电脑)
核心口诀:先听后说,边听边说,冲突即停,随机再听。
工作原理(分四步走)
-
第一步:先听(载波侦听)
任何电脑在"说话"(发数据)之前,必须先"听"一下线路上有没有其他电脑正在发信号。
-
如果线路忙(有载波),就耐心等待,持续侦听,直到线路空闲。
-
如果线路闲,立刻开始发送数据。
-
-
第二步:边说边听(冲突检测)
发送数据的过程中,电脑不是只顾着自己说,而是**同时也在"听"**线路上自己发出的信号。
-
因为信号在电缆上传播有微小的延迟,存在一种可能:两台电脑几乎同时觉得线路空闲,进而同时开始发送。这就会在线上产生信号叠加,造成冲突。
-
电脑将自己收到的信号与发出的信号对比,一旦发现波形不同、电平不对,就判断为"发生冲突"。
-
-
第三步:冲突即停(强化冲突)
一旦检测到冲突,立即停止发送有用的数据。紧接着,发送一个简短的"人为干扰信号",目的是通知所有电脑,确保大家都知道发生了冲突,不要留下不完整的坏帧。
-
第四步:随机再听(退避重传)
发送完干扰信号后,发生冲突的这两台电脑不会立即重发,否则会再次撞上。它们会各自运行一个**"截断二进制指数退避算法"**:
-
从离散的整数集合中随机选一个值 rr,等待 rr 倍的基本时间片后,再回到第一步去"听"。
-
关键规律 :碰撞的次数越多,随机选择的等待范围就越大。越撞越等,自动适配网络拥挤程度。如果重传16次都失败,就彻底放弃并报错。
-
二、CSMA/CA(带冲突避免的载波侦听多路访问)
适用场景:无线局域网(Wi-Fi)
核心口诀:先听后说,信道预约,确认到达。为什么不用 CD?因为无线环境下冲突检测(CD)极其困难。
1. 为什么无线网不一样?
-
隐蔽站问题:电脑A和C相距很远,互相收不到对方信号,但它们都能和中间的接入点(无线路由器)通信。A向接入点发数据时,C在侦听,发现信道是空闲的(因为它听不到A),于是也开始发,在接入点处就会发生冲突。A和C都无法直接检测到这个冲突。
-
信号强度问题:自己发出的强信号会淹没远方来的弱冲突信号,很难像有线那样做边发边听。
所以无线网的目标从**"检测冲突"** 变为**"千方百计避免冲突"**,加上确认机制来保证可靠。
2. 工作原理(核心机制)
-
首先侦听(物理载波侦听) :想发数据前,先听信道。如果空闲,它并不会立刻发,而是先维持一段特定的等待时间(叫 DIFS,分布式帧间间隔)。
-
随机回退(虚拟载波侦听) :即使信道是空闲的,它还要启动一个随机回退计时器。倒计时结束后才能发送。
- 为什么这样设计? 如果好几台电脑都在等,大家随机选倒计时,谁的数先走完谁就先发,这就把潜在的冲突概率大大降低了。
-
信道预约(RTS/CTS 握手,可选但很典型):为了彻底解决"隐蔽站"问题,发送方和接收方会用简短的控制帧来预先"预订"周围的无线信道。
-
发送方 发出 RTS(请求发送) 帧,内容:"我要向接入点发数据,需要占用多少时间。"
-
接收方(接入点) 收到后,广播一个 CTS(允许发送) 帧,内容:"好的,我为发送方预留这段时间的信道,周围其他电脑禁止在这段时间内发送!"
-
所有收到 CTS 的电脑都会更新自己的"网络分配向量",相当于虚拟地标记这段信道为"忙",从而避免碰撞。
-
-
确认到达(ACK 机制) :这是保证可靠性的关键一步。接收方正确收到数据帧后,过一小段时间间隔(SIFS,短帧间间隔),会立刻回复一个 ACK(确认) 帧。
- 如果发送方没在规定时间内收到 ACK,就认为发送失败(发生了冲突或干扰),会启动重传机制。
令牌方式是和CSMA家族 思路完全不同的另一大类,它追求的是完全无冲突。
它不靠"先听后说",而是靠一个在网络上循环流动的"令牌 "(Token,一个特殊的小数据帧)来给予发送权,就像古时候的"传国玉玺"------只有拿到玉玺的人才能发号施令。
三、令牌环网(Token Ring,IEEE 802.5)
物理拓扑 :逻辑上是一个环形 ,所有电脑首尾相连。
核心思想:一个叫做"令牌"的3字节短帧,在环上单向循环流动。谁拿到空令牌,谁就能发数据。
工作过程(三步走)
第一步:截获令牌,改头换面
电脑想发数据时,就等着空令牌转到自己这儿。一旦收到,就把这个令牌"吞掉"(不转发它了),然后立刻把自己的数据帧发到环上。相当于把通行证换成了自己的车。
第二步:数据帧环游一圈,由发送方回收
数据帧沿着环一站一站往下传。每一站的电脑都看这个帧的目的地址:
-
不是给自己的:原样转发到下一站。
-
是给自己的 :把数据拷贝下来,同时在帧里做一个标记"已收到",然后继续转发(不改动原帧,让它继续往前走)。
数据帧就这样绕环一圈,最终回到发送方手里。发送方检查这个帧:
-
如果发现"已收到"的标记,就知道发送成功。
-
然后它负责把这个数据帧从环上清除掉,不再让它循环。
第三步:释放新令牌
发送方清掉自己发的那圈数据后,会立刻生成一个新的空令牌,交给下一站,让其他人有机会发送。
关键特性:
-
无冲突:同一时刻环上只有一台电脑能发数据,效率很高,特别是在负载很重时,没有CSMA/CD那种碰撞开销。
-
公平性:令牌按顺序传递,每站都有机会,不会出现某站一直抢不到线的情况。
-
故障敏感:有一个致命弱点。环上任何一台电脑或一段线路坏了,整个环就断了,令牌传不下去,全网瘫痪。需要复杂的容错机制。
二、令牌总线网(Token Bus,IEEE 802.4)
物理拓扑 :实实在在的总线型 (一根网线串起来),或者是树形。
逻辑拓扑 :在逻辑上,强行规定出一个顺序的环。
为什么搞这么别扭的混合体?
是为了结合两者的优点:既有令牌环的无冲突、公平性,又利用总线这种最普及的物理结构,且能设置优先级。
它的核心机制:
1. 逻辑环的建立
虽然大家物理上都挂在同一根总线上(发消息所有人都能听到),但只有拿到令牌的站才能发数据。令牌传递时,不按物理位置顺序,而是按每一位站点的网络地址(MAC地址)大小,从小到大、首尾相连,形成一个虚拟的逻辑环路。
就像教室里全班同学按学号顺序传课本,和谁坐哪儿无关。
2. 极其复杂的环维护
这几乎是局域网协议里最复杂的部分了,需要处理各种状况:
-
环的初始化:网络刚启动时,谁先当老大?所有站通过一个基于地址竞选的算法,最终推举出地址最大的站来产生第一枚令牌。
-
新站入环:持有令牌的站定期开个"窗口期",邀请新站加入,让逻辑环自动更新。
-
老站离环:某站不想玩了,拿到令牌后发个"我要退出"的帧,把它前、后站"缝合"起来。
-
故障管理 :如果持有令牌的站突然死机,令牌就丢了。网络必须能自动发现令牌丢失 ,并在超时后通过重组逻辑环来重新生成一枚新令牌。如果有站发现自己的前驱站没响应,也能主动去修复环路。
结一下它们的核心区别:
| 访问控制方式 | 核心思想 | 典型应用 | 是否有冲突 |
|---|---|---|---|
| CSMA/CD | 随机争用,冲突后检测中止 | 传统以太网 | 有,且会随负载加重 |
| CSMA/CA | 随机争用,主动避免冲突 | 无线局域网 | 有,但尽量避免了 |
| 令牌传递 | 持有令牌才能发,确定性无冲突 | 令牌环、令牌总线 | 无 |