文章目录
- 常用方法
- 静态方法
- 信道划分MAC
- 特点
- 动态方法
- 随机访问MAC
- CSMA协议
- CSMA/CD
- 多点接入(或多点访问):
- 载波监听
- Note:🎈
- 碰撞检测
- 碰撞:
- 碰撞冲突过程@传播时延对载波侦听的影响🎈
- 争用期@发现碰撞的最迟情况
- 电磁波的速率是有限
- 最短帧长🎈
- 小结🎈
- 最短帧长计算公式
- 单程传输时延和单程传播时延的关系
- 以太网最短帧长
- 例
- 最小帧长变换问题
- 例
- 其他相关问题
- CSMA/CD 协议的要点🎈
- 二进制指数退避算法
- 退避时间
- 重传次数(退避次数)上限
- 例
- CSMA/CA
- 确认机制
- 帧间间隔IFS
- 处理隐蔽站问题:RTS和CTS
- CSMA/CD与CSMA/CA区别
- 轮询访问MAC
- 令牌换传递过程
常用方法
静态方法
信道划分MAC
- 通过
- 分时
- 分频
- 分波
- 分码
- …等方法
- 将一条广播信道,逻辑上划分几条用于两个结点之间通信的互不干扰的子信道
- 实际上就是把广播信道转变为点对点信道
- FDM
- TDM
- STDM
- WDM
- CDM
特点
- 不会发生碰撞
动态方法
随机访问MAC
-
ALOHA协议
-
时隙ALOHA协议
CSMA协议
-
CSMA:(载波 侦听多路访问协议)
-
1-检查CSMA
- 1-persistent CSMA
- 传播延迟对1-坚持CSMA协议的性能影响较大。
- 结点A开始发送数据时,结点B也正好有数据要发送,
- 但这时结点A发出数据的信号还未到达结点B,结点B侦听到信道空闲,于是立即发送数据,结果必然导致冲突。
- 即使不考虑延迟,1-坚持CSMA协议也可能产生冲突。
- 例如,结点A正在发送数据时,结点B和C也准备发送数据,侦听到信道忙,于是坚持侦听,结果当结点A一发送完毕,结点B和C就会立即发送数据,同样导致冲突。
-
非坚持CSMA
- no-persistent CSMA
-
p-坚持CSMA
- p-Persistent CSMA
-
比较
-
倌道状态 1-坚持 非坚持 p-坚持 空闲 立即发送数据 立即发送数据 以概半p发送数据,以概率1-p推迟到下一个时隙 忙 继续坚持侦听 暂时性放弃帧听(不是完全放弃),还在等待一个随机的时间后再侦听 持续侦听,直至信道空闲
(适用于TDM信道,持续指的是下一次时隙继续侦测)
-
CSMA/CD
- CSMA/CD 含义:载波监听多点接入/ 碰撞检测 (Carrier Sense Multiple Access with Collision Detection)
多点接入(或多点访问):
- 表示许多计算机以多点接入的方式连接在一根总线上。
载波监听
- 是指每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据
- 如果有,则暂时不要发送数据,以免发生碰撞。
- 总线上并没有什么“载波”
- 因此, “载波监听”就是用电子技术检测总线上有没有其他计算机发送的数据信号。
Note:🎈
-
为了描述方便,通信系统中的两个站A,B,C,D相互都有可能发送数据
-
总线(或者说信道)上,有A,B,C,D三个占,AB距离AB,BC,CD相距100km
-
-
某个时刻 0 0 0,A成功抢占总线,发送数据给C(假设到达需要 τ \tau τ的时间)
- 在
1
2
τ
\frac{1}{2}\tau
21τ的时刻,站点C想要发送数据给A,
- 于是C检查总线是否
空闲
,由于数据才刚刚到达B位置,C检测不到A要发来的数据帧 - 于是C认为总线此时空闲,开始向A发送数据
- 这就会造成碰撞,而且本例中,碰撞点发生在B,C之间
- 于是C检查总线是否
- 主要是向说明,载波侦听和碰撞检测是不完全一样的
- 每次载波侦听是瞬间可以完成,但是检测碰撞冲突这需要耗费较多时间,信道越长,需要的时间也就越长!
- 载波侦听的结果:
- 如果结果表示信道忙,那么反馈的结果是正确而且有意义的,可以防止其他站的工作被自己破坏
- 如果侦听结果表示信道空闲,则不一定靠谱,因此需要边传边检测,
- 在
1
2
τ
\frac{1}{2}\tau
21τ的时刻,站点C想要发送数据给A,
碰撞检测
- 就是计算机边发送数据边检测信道上的信号电压大小。
- 当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加)。
- 当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞。
碰撞:
-
就是发生了冲突;因此“碰撞检测”也称为“冲突检测”。
-
每一个正在发送数据的站,一旦发现总线上出现了碰撞,就要立即停止发送,
- 免得继续浪费网络资源,然后等待一段随机时间后再次发送
-
碰撞冲突过程@传播时延对载波侦听的影响🎈
-
- 横坐标表示结点A,B之间的距离(s轴)
- 纵坐标表示信号传输的时间(t轴)
- A,B发送的数据在信道中的传播速率相等
- 从图像上看,它们的直线方程和t轴的夹角一样大
- 其中,点C是结点B收到碰撞信号的坐标
- 点F是结点A收到碰撞信号是的坐标
- 若从结点A发送数据帧的时刻作为时间线的起点,(发送到数据到结点B,距离为s)
- 在顺利的情况下,经过 τ \tau τ的时间,就可以将数据送达到结点B(也就是时刻 τ \tau τ处)
- 而如果结点B在时刻 τ \tau τ之前也发出一个数据帧(比如在时刻 θ , θ < τ \theta,\theta<\tau θ,θ<τ)
- 那么这势必引起碰撞
- 信号碰撞点E
- t E = 1 2 ( θ + τ ) = τ − 1 2 δ t_E=\frac{1}{2}(\theta+\tau)=\tau-\frac{1}{2}\delta tE=21(θ+τ)=τ−21δ
- 虽然信号在 t E t_E tE时刻发生碰撞,但是接受到碰撞反馈需要一定的时间
- 现在分析结点A,B各自收到碰撞的时刻,分别记为
t
A
,
t
B
t_A,t_B
tA,tB
- 按照习惯令 ∣ D C ∣ = δ |DC|=\delta ∣DC∣=δ,那么 θ = τ − δ \theta=\tau-\delta θ=τ−δ
- ∣ H F ∣ = ∣ B C ∣ = τ |HF|=|BC|=\tau ∣HF∣=∣BC∣=τ
- t A = ∣ A H ∣ + ∣ H F ∣ = θ + τ = 2 τ − δ t_A=|AH|+|HF|=\theta+\tau=2\tau-\delta tA=∣AH∣+∣HF∣=θ+τ=2τ−δ
- t B = ∣ B C ∣ = τ t_B=|BC|=\tau tB=∣BC∣=τ
- 结点停止发送动作:
- 当结点接收到碰撞发生警告信号时,需要停止发送
争用期@发现碰撞的最迟情况
-
根据上面的分析,结点A发送信息经过 t = 2 τ − δ t=2\tau-\delta t=2τ−δ的时间就可以发现碰撞.
- 如果, δ → 0 \delta\to0 δ→0,那么 t → 2 τ t\to{2\tau} t→2τ
- 也就是说,从发送出某个帧开始,记流逝的时间为t,
- 如果有碰撞发生,那么最迟在 2 τ 2\tau 2τ时刻前也能发现碰撞的发生
- 如果 t > 2 τ t>2\tau t>2τ依然没有接受到碰撞信号,那么说明此次的A发送的帧顺利送达目的地
- 否则,理论表明,此次发送行为没有被碰撞
-
因此以太网将端到端往返时间 T = 2 τ \Tau=2\tau T=2τ称为争用期(contention period)
- 也叫冲突窗口/碰撞窗口collision window
-
现在,我们考虑发送端发送的数据的帧长问题:
- 一个站在发送完数据后,只有通过争用期的“考验”,即经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。(其他站都知道信道被占用)
- 这时,就可以放心把这一帧数据顺利发送完毕。
电磁波的速率是有限
- 既然每一个站在发送数据之前已经监听到信道为“空闲”,那么为什么还会出现数据在总线上的碰撞呢?
- 这是因为电磁波在总线上总是以有限的速率传播的。
- 这和我们开讨论会时相似。
- 一听见会场安静,我们就立即发言,但偶尔也会发生几个人同时抢着发言而产生冲突的情况。
- 设局域网两端的站 A 和 B 相距 1km,用同轴电缆相连
- 电磁波在 1 km 电缆的传播时延约为 5 µs(这个数字应当记住)。
- 因此,A 向 B 发出的数据,在约 5 µs 后才能传送到 B。
- 换言之,B 若在 A 发送的数据到达 B之前发送自己的帧(因为这时 B 的载波监听检测不到 A 所发送的信息),则必然要在某个时间和 A 发送的帧发生碰撞。
- 碰撞的结果是两个帧都变得无用。
- 因此,当某个时刻发送站检测到信道空闲时,此时信道并不定就是空闲的
- 但是发送前的检测还是有意义的,如果检测信号返回的结果表示信道忙,那么可以阻止发送站发送数据,避免破坏对方的通信
最短帧长🎈
- 现在考虑某个站发送了一个很短的帧,但在发送完毕之前并没有检测出碰撞
- 假定这个帧在继续向前传播到达目的站之前和别的站发送的帧发生了碰撞,因而目的站将收到有差错的帧(当然会把它丢弃)。
- 可是发送站却不知道这个帧发生了碰撞,因而不会重传这个帧。
- 这种情况显然是我们所不希望的。
- 只有当发送方在发送完某个帧之前的时间段才能收到碰撞信号
小结🎈
-
为了确保发送站在发送数据的同时能检测到可能存在的碰撞
- 需要在发送完帧之前就能收到可能返回的碰撞信号,即帧的传输时延
T
s
T_s
Ts至少要2倍于信号在总线中的传播时延
T
s
p
r
e
a
d
T_{spread}
Tspread,将这个数据量称为最短帧长;
- 这里的传输时延是指:
- 默认情况下,在信道中没有经过中间设备(比如集线器hub)
- 但是,如果经过了集线器,需要从传输时延中扣除
- 包含信道中间设备造成的时延记为中转时延或者叫处理时延
- 这类时延和介质传播时延共同影响最短帧长(影响碰撞检测)
- 包含信道中间设备造成的时延记为中转时延或者叫处理时延
- 这里的传输时延是指:
- 所以CSMA/CD总线网中的所有数据帧都必须要大于一个最小帧长。
- 任何站点收到帧长小于最小帧长的帧时,就把它当作无效帧立即丢弃。
- 需要在发送完帧之前就能收到可能返回的碰撞信号,即帧的传输时延
T
s
T_s
Ts至少要2倍于信号在总线中的传播时延
T
s
p
r
e
a
d
T_{spread}
Tspread,将这个数据量称为最短帧长;
最短帧长计算公式
- 最小帧长
F
m
i
n
F_{min}
Fmin的计算公式
-
F
m
i
n
=
2
T
s
p
r
e
a
d
C
=
T
C
=
R
T
T
×
C
=
2
τ
C
F_{min}=2T_{spread}C=\Tau C=RTT\times{C}=2\huge\tau\large C
Fmin=2TspreadC=TC=RTT×C=2τC
- C表示信道数据传输速率
- T = 2 τ \Tau=2\tau T=2τ表示争用期
- T s p r e d T_{spred} Tspred表示传播时延
- 例:我们重新用这个公式计算一下以太网的64B最短帧长
- 以太网规定窗口争用期 T = 51.2 μ s \Tau=51.2\mu{s} T=51.2μs
- 所以 F m i n = T × C = 51.2 μ s × 10 M b / s = 512 b i t = 64 B F_{min}=\Tau\times{C}=51.2\mu{s}\times{10Mb/s}=512bit=64B Fmin=T×C=51.2μs×10Mb/s=512bit=64B
-
F
m
i
n
=
2
T
s
p
r
e
a
d
C
=
T
C
=
R
T
T
×
C
=
2
τ
C
F_{min}=2T_{spread}C=\Tau C=RTT\times{C}=2\huge\tau\large C
Fmin=2TspreadC=TC=RTT×C=2τC
- 以太网还规定了帧间最小间隔为 9.6 µs,相当于 96 比特时间。
- 这样做是为了使刚刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的准备。
单程传输时延和单程传播时延的关系
- 在CSMA协议中,传输最短帧长的帧到达接受端的时间和单程传播时延是一致的,都为 τ \tau τ
- 这是根据最短帧长的定义容易得出的
以太网最短帧长
-
为了避免发生这种情况,以太网规定了一个最短帧长 64 字节,即 512 bit。
- 如果要发送的数据非常少,那么必须加入一些填充字节,使帧长不小于 64 字节。
-
对于 10 Mbit/s 以太网,发送 512 bit 的时间需要 51.2 µs,也就是上面提到的争用期。
-
以太网在发送数据时,如果在争用期(共发送了 64 字节)没有发生碰撞,那么后续发送的数据就一定不会发生冲突。
-
换句话说,如果发生碰撞,就一定是在发送的前64 字节之内。
-
由于一检测到冲突就立即中止发送,这时已经发送出去的数据一定小于 64 字节,因此凡长度小于 64 字节的帧都是由于冲突而异常中止的无效帧。只要收到了这种无效帧,就应当立即将其丢弃。
例
-
在Hub再生比特流的过程中会产生1.535μs延时(Switch 和Hub均为100Base-T设备),
-
信号传播速率为200m/s,不考虑以太网帧的前导码,
-
-
则H3和H4之间理论上可以相距的最远距离是(205m)。
- A.200m
B.205m
C.359m
D.512m
- A.200m
-
因为要解决“理论上可以相距的最远距离”,所以最远肯定要保证能检测到碰撞
- 而以太网规定最短帧长为64B,
- F m i n = 64 B F_{min}=64B Fmin=64B
- 其中Hub为100Base-T集线器,可知线路的传输速率为C=100Mbps,
- 则单程传输时延为$T_s=$64B/100Mbps/2=2.56μs,
- 也就是说,允许的传播时延2.56us
- 但是本题中,信道中经过会产生而外延迟的设备中继器/集线器Hub,
- 由中继器引起的这部分时延(时间段内)信号无法在继续向前推进(而在中继器中进行加工处理)
- 所以,真正向目标靠近(传播一定距离的时间就没有2.56us,而是要从中扣除掉集线器停滞加工的时间)
- 对于Hub再产生比特流的过程中会导致延时1.535μs,
- 则单程的传播时延为$\tau=$2.56μs-1.535μs=1.025μs,
- 从而H3与H4之间理论上可以相距的最远距离为$S=v\tau{}=$200m/μs×1.025us=205m。
- 而以太网规定最短帧长为64B,
最小帧长变换问题
-
T s > R T T = 2 τ T_s>RTT=2\tau Ts>RTT=2τ
-
T s = F m i n / C T_s=F_{min}/C Ts=Fmin/C
-
F m i n C > R T T = 2 τ = 2 L v \frac{F_{min}}{C}>{RTT}=2\tau=2\frac{L}{v} CFmin>RTT=2τ=2vL
- 其中,信道长度为 L L L
- 信号在信道介质的中的传播速率为 v v v
-
传输速率不变的情况下,需要增大 F m i n F_{min} Fmin的情况:
- 信道带宽(数据传输速率)增加( T s = F m i n C ↑ ↓ T_s=\frac{F_{min}}{C\uparrow}\downarrow Ts=C↑Fmin↓)
- 冲突域间的最大距离增加( R T T ↑ RTT\uparrow RTT↑)
-
可减小 F m i n F_{min} Fmin的情况
-
R
T
T
↓
RTT\downarrow
RTT↓
- 这意味着碰撞/冲突信号可以更快到达发送站点,
- 例如
- 信道长度缩短(冲突域间距离减小)
- 冲突域不变的情况下,减少线路中的中继器数量(可以节约信号再生整形放大)的时间
-
R
T
T
↓
RTT\downarrow
RTT↓
例
-
一个采用CSMA/CD协议的网络中,传输介质是一根完整电缆
- 传输速率为C=1Gb/s= 1 0 9 b / s 10^9b/s 109b/s
- 电缆中的信号传播速率为 v = 2 × 1 0 5 k m / s = 2 × 1 0 8 m / s v=2\times{10^5}km/s=2\times{10^8}m/s v=2×105km/s=2×108m/s
- 如果最小数据帧长减小800bit,那么最远的两个站点之间的距离至少减少多少m?
-
分析
-
若最短帧长减少,而数据传输速率不变,则需要使冲突域的最大距离变短来实现碰撞窗口的少。
-
设信道长度原来为L(m);
-
原最短帧长为 F m i n F_{min} Fmin(bit)
-
F m i n ↓ > 2 L ↓ v C F_{min}\downarrow>2\frac{L\downarrow}{v}C Fmin↓>2vL↓C
-
k = C v = 1 0 9 b / s 2 × 1 0 8 m / s = 5 b / m k=\frac{C}{v}=\frac{10^9b/s}{2\times{10^8m/s}}=5b/m k=vC=2×108m/s109b/s=5b/m
- 2 C v = 2 k = 10 b / m F m i n > 10 L ( b i t ) 2\frac{C}{v}=2k=10b/m \\F_{min}>10L(bit) 2vC=2k=10b/mFmin>10L(bit)
-
-
思路1:
-
碰撞窗口是指网络中收发结点间的往返时延,因此假设需要减少的最小距离为x,则可得到如下公式(注意单位的转换):
-
减少的往返时延大等于减少的发送时延
- 减少的往返时延为 t 1 = 2 x v t_1=2\frac{x}{v} t1=2vx
- 减少的发送时延为 t 2 = 800 b i t C t_2=\frac{800bit}{C} t2=C800bit
- t 1 ⩾ t 2 t_1\geqslant{t_2} t1⩾t2
- 解得 x ⩾ 80 m x\geqslant{80}m x⩾80m
- 即由于顿长减少而缩短的发送时延,应等于由于距离减少而缩短的传播时延的2倍。
可得s=80,即最远的两个站点之间的距离最少需要减少80m.
-
F m i n − 800 > 2 L − x v C ; ( x > 0 ) x > L − 1 10 ( F m i n − 800 ) = L − 1 10 F m i n + 80 F_{min}-800 >2\frac{L-x}{v}C;(x>0) \\ x>L-\frac{1}{10}(F_{min}-800)=L-\frac{1}{10}F_{min}+80 Fmin−800>2vL−xC;(x>0)x>L−101(Fmin−800)=L−101Fmin+80
-
-
思路2:不知道为什么结果是这种形式,有空在看(TODO)
- 1 10 F m i n > L L − 1 10 F m i n < 0 所 以 : L − 1 10 F m i n + 80 < 80 L − 1 10 F m i n + 80 < x \frac{1}{10}F_{min}>L \\L-\frac{1}{10}F_{min}<0 \\所以: \\L-\frac{1}{10}F_{min}+80<80 \\ L-\frac{1}{10}F_{min}+80<x 101Fmin>LL−101Fmin<0所以:L−101Fmin+80<80L−101Fmin+80<x
-
其他相关问题
- 一般上层协议的变换和数据链路层无关,最帧长不会因为上层协议的变动而发生改变
- 例如上层使用TCP或UDP,也不影响MAC子层
CSMA/CD 协议的要点🎈
- 根据以上所讨论的,可以把 CSMA/CD 协议的要点归纳如下:
- (1) 准备发送:适配器从网络层获得一个分组,加上以太网的首部和尾部 ,组成以太网帧,放入适配器的缓存中。但在发送之前,必须先检测信道。
- (2) 检测信道:
- 若检测到信道忙,则应不停地检测,一直等待信道转为空闲。
- 若检测到信道空闲,并在 96 比特时间内信道保持空闲(保证了帧间最小间隔),就发送这个帧。
- (3) 在发送过程中仍不停地检测信道,即网络适配器要边发送边监听。这里只有两种可
能性:- ①发送成功:在争用期内一直未检测到碰撞。
- 这个帧肯定能够发送成功。
- 发送完毕后,其他什么也不做。然后回到
- ②发送失败:在争用期内检测到碰撞。
- 这时立即停止发送数据,并按规定发送人为干扰信号。
- 适配器接着就执行指数退避算法,等待 r 倍 512 比特时间后,返回到步骤(2),继
续检测信道。 - 但若重传达 16 次仍不能成功,则停止重传而向上报错。
- 以太网每发送完一帧,一定要把已发送的帧暂时保留一下。
- 如果在争用期内检测出发生了碰撞,那么还要在推迟一段时间后再把这个暂时保留的帧重传一次
- ①发送成功:在争用期内一直未检测到碰撞。
二进制指数退避算法
-
截断二进制指数退避(truncated binary exponential backoff),简称,二进制指数退避算法
-
除检测冲突外,CSMA/CD还能从冲突中恢复。
-
一旦发生了冲突,参与冲突的两个站点紧接着再次发送是没有意义的,如果它们这样做,那么将会导致无休止的冲突。
-
二进制指数退避算法考虑了网络负载,把后退延时的平均值和负载大小联系起来
-
CSMA/CD采用二进制指数退避算法来解决碰撞问题
-
步骤
- 1)确定基本退避时间(基准时间元),一般取两倍的总线端到端传播时延 T = 2 τ \Tau=2\tau T=2τ(即争用期)
- 2)确定退避延迟指数上限
m
m
m
- 设冲突次数为 k k k
-
m
m
m表示延迟指数(上限)
- 延迟指数上限是决定了某次冲突后延迟倍数因子r的取值上限
-
m
=
M
i
n
(
k
,
10
)
m=Min(k,10)
m=Min(k,10)🎈
- 当 k 不 超 过 10 时 , m = k 当k不超过10时,m=k 当k不超过10时,m=k
- 当k大于10时,m就不再增大而一直等于10🎈
- 将指数m控制在10以内可以保证延迟不过过分的大
退避时间
- 3)从离散的整数集合
{
0
,
1
,
⋯
,
2
m
−
1
}
\{0,1,\cdots,2^m-1\}
{0,1,⋯,2m−1}中随机取出一个数作为倍数因子
r
r
r
- 也就是倍数因子 r ∈ [ 0 , 2 m − 1 ] r\in[0,2^{m}-1] r∈[0,2m−1]
- 重传所需要退避的时间即 t r = 2 r τ = r × R T T t_r=2r\tau=r\times RTT tr=2rτ=r×RTT
- 最大退避时间: t m a x = r m a x × R T T = ( 2 10 − 1 ) R T T t_{max}=r_{max}\times{RTT}=(2^{10}-1)RTT tmax=rmax×RTT=(210−1)RTT
重传次数(退避次数)上限
- 当重传达16次仍不能成功时,说明网络太拥挤,认为此帧永远无法正确发出,抛弃此帧并向高层报告出错
- 一般的冲突发生的次数越大,帧重传时再发生冲突的概率越低
- 从概率的角度容易发现,m的增大过程是
1
,
2
,
⋯
10
1,2,\cdots{10}
1,2,⋯10;
- 那么某一次传送需要进行第n+1次重传的机会比仅需要n次的事件的概率来的小
- 尽管每次重传延迟(退避)的时间是不一定递增的,但是重传次数是逐次增加且不超过16
- 从概率的角度容易发现,m的增大过程是
1
,
2
,
⋯
10
1,2,\cdots{10}
1,2,⋯10;
例
- 假设一个适配器首次试图传输一帧,当传输时,它检测到碰撞。
- 第1次重传时,k=1,随机数r从整数{0,1}中选择,因此适配器可选的重传推迟时间是0或 2 τ 2\tau 2τ。
- 若再次发送碰撞,则在第2次重传时,随机数从整数{0,1,2,3}中选择,因此重传推迟时间是在
- { 0 , 1 R T T , 2 R T T , 3 R T T } = { 0 , 2 τ , 4 τ , 6 τ } \{0,1RTT,2RTT,3RTT\}=\{0,2\tau,4\tau,6\tau\} {0,1RTT,2RTT,3RTT}={0,2τ,4τ,6τ}这4个时间中随机地选取一个
- 使用截断二进制指数退避算法可使重传需要推迟的平均时间随重传次数的增大而增大(这也称动态退避),因而能降低发生碰撞的概率,有利于整个系统的稳定。
CSMA/CA
- CSMA/CD协议已成功应用于使用有线连接的局域网,但在无线局域网环境下,却不能简单地搬用CSMA/CD协议,特别是碰撞检测部分。主要有两个原因:
- 1)接收信号的强度往往会远小于发送信号的强度,且在无线介质上信号强度的动态变化范围很大,因此若要实现碰撞检测,则硬件上的花费就会过大。
2)在无线通信中,并非所有的站点都能够听见对方,即存在“隐蔽站”问题。 - 为此,802.11标准定义了广泛应用于无线局域网的CSMA/CA协议,它对CSMA/CD协议进行了修改,把碰撞检测改为碰撞避免(Collision Avoidance,CA)。
- “碰撞避免”并不是指协议可以完全避免碰撞,而是指协议的设计要尽量降低碰撞发生的概率。
- 由于802.11无线局域网不使用碰撞检测,一旦站点开始发送一个帧,就会完全地发送该帧,但碰撞存在时仍然发送整个数据顿(尤其是长数据顿)会严重降低网络的效率,因此要采用碰撞避免技术降低碰撞的可能性。
确认机制
- 由于无线信道的通信质量远不如有线信道,802.11使用链路层确认/重传(ARQ)方案,即站点每通过无线局域网发送完一帧,就要在收到对方的确认帧后才能继续发送下一帧。🎈
帧间间隔IFS
- 为了尽量避免碰撞,80211规定,
- 所有的站完成发送后,必须再等待一段很短的时间(继续监听)才能发送下一帧。
- 这段时间称为帧间间隔(InterFrame Space,IFS)。
- 帧间间隔的长短取决于该站要发送的帧的类型。
- 802.11使用了3种IFS:
- 1)SIFS(短IFS):
- 最短的FS,用来分隔属于一次对话的各帧,使用SIFS的帧类型有ACK帧、CTS帧、分片后的数据帧,以及所有回答AP探询的帧等。
- 2)PIFS(点协调IFS):
- 中等长度的IFS,在PCF操作中使用。
- 3)DIFS(分布式协调IFS):
- 最长的IFS,用于异步帧竞争访问的时延
- CSMA/CA的退避算法和CSMA/CD的稍有不同
- 信道从忙态变为空闲态时,任何一个站要发送数据顿,不仪都要等待一个时间间隔,而且要进入争用窗口,
- 计算随机退避时间以便再次试图接入信道,因此降低了碰撞发生的概率。
- 当且仅当检测到信道空闲且这个数据帧是要发送的第一个数据帧时,才不使用退避算法。
- 其他所有情况都必须使用退避算法,具体为:
- ①在发送第一个帧前检测到信道忙:
- ②每次重传:
- ③每次成功发送后要发送下一帧。
- 1)SIFS(短IFS):
- CSMA/CA算法归纳如下:
- 1)若站点最初有数据要发送(而不是发送不成功再进行重传),且检测到信道空闲,在等待时间DIFS后,就发送整个数据帧。
- 2)否则,站点执行CSMA/CA退避算法,选取一个随机回退值。
- 一旦检测到信道忙,退避计时器就保持不变。
- 只要信道空闲,退避计时器就进行倒计时。
- 3)当退避计时器减到0时(这时信道只可能是空闲的),站点就发送整个帧并等待确认。
- 4)发送站若收到确认,就知道已发送的顿被目的站正确接收。
- 这时如果要发送第二帧,就要从步骤2)开始。
- 若发送站在规定时间内没有收到确认顿ACK(由重传计时器控制),就必须重传该帧,
- 再次使用CSMA/CA协议争用该信道,直到收到确认,或经过若干次重传失败后放弃发送。
- Note:
- csma/ca网络中控制帧以及对所有接受数据的确认帧都采用SIFS作为发送之前的等待时延
- 当站点要发送数据帧时,若干载波监听到信道空闲,需要等待DIFS后发送RTS预约信道
处理隐蔽站问题:RTS和CTS
- 设站A和B都在AP的覆盖范围内,但A和B相距较远,彼此都听不见对方。
- 当A和B检测到信道空闲时,都向AP发送数据,导致碰撞的发生,这就是隐蔽站问题。
- 为了避免该问题,802.11允许发送站对信道进行预约。
- 源站要发送数据帧之前先广播一个很短的请求发送RTS(Request To Send)控制帧,
- 它包括源地址、目的地址和这次通信(含相应的确认帧)所持续的时间,
- 该帧能被其范围内包括AP在内的所有站点听到。
- 源站要发送数据帧之前先广播一个很短的请求发送RTS(Request To Send)控制帧,
- 若信道空闲,则AP广播一个允许发送CTS(Clear To Send)控制帧,
- 它包括这次通信所需的持续时间(从RTS帧复制)
- 该顿也能被其范围内包括A和B在内的所有站点听到,B和其他站听到CTS后,在CTS帧中指明的时间内将会抑制发送
- CTS帧有两个目的:
- 给源站明确的发送许可;
- 指示其他站点在预约期内不要发送
- 使用RTS和CTS帧会使网络的通信效率有所下降,但这两种帧都很短,与数据帧相比开销不算大。相反,若不使用这种控制帧,一旦发生碰撞而导致数据帧重发,则浪费的时间更多。
- 信道预约不是强制性规定,各站可以自己决定使用或不使用信道预约。只有当数据帧长度超过某一数值时,使用RTS和CTS帧才比较有利。
CSMA/CD与CSMA/CA区别
-
CSMA/CD可以检测冲突,但无法避免:
-
CSMA/CA发送数据的同时不能检测信道上有无冲突,本结点处没有冲突并不意味着在接收结点处就没有冲突,只能尽量避免。
-
传输介质不同。CSMA/CD用于总线形以太网,CSMA/CA用于无线局域网802.IIa/b/gh等。
-
检测方式不同。CSMA/CD通过电缆中的电压变化来检测:而CSMA/CA采用能量检测、载波检测和能量载波混合检测三种检测信道空闲的方式。
-
总结:
- CSMA/CA协议的基本思想是在发送数据时先广播告知其他结点,让其他结点在某段时间内不要发送数据,以免出现碰撞。
- CSMA/CD协议的基本思想是发送前侦听,边发送边侦听,一旦出现碰撞马上停止发送。
轮询访问MAC
- 在轮询访问中,用户不能随机地发送信息,而要通过一个集中控制的监控站,以循环方式轮询每个结点,再决定信道的分配。
- 当某结点使用信道时,其他结点都不能使用信道。
- 典型的轮询访问介质访问控制协议是令牌传递协议,它主要用在令牌环局域网中。
- 在令牌传递协议中,一个令牌(Tokn)沿着环形总线在各结点计算机间依次传递。
- 令牌是一个特殊的MAC控制帧,它本身并不包含信息,仅控制信道的使用,确保同一时刻只有一个站点独占信道。
- 当环上的一个站点希望传送帧时,必须等待令牌。
- 一旦收到令牌,站点便可启动发送帧。
- 帧中包括目的站点地址,以标识哪个站点应接收此帧。
- 站点只有取得令牌后才能发送数据帧,因此令牌环网不会发生碰撞。🎈
- 静态方法中的信道划分MAC的几类协议也不会发生碰撞
- 站点在发送完一帧后,应释放令牌,以便让其他站使用。
- 令牌环网使用令牌在各个结点之间传递来分配信道的使用权
- 每个结点都可在一定的间内令牌持有时间)获得发送数据的权利,而并非无限制地持有令牌
- 令牌环网在逻辑上采用环状控制结构。
- 由于令牌总沿着逻辑环单向逐站传送,结点总沿着逻辑环单向逐站传送,结点总可以在确定的时间内获得令牌并发送数据。
- 在最坏情况下,即所有结点都要发送数据:
- 一个结点获得令牌的等待时间等于逻辑环上所有其他结点依次获得令牌,并在令牌持有时间内发送数据的时间总和
- 一个结点在最坏情况下等待获得令牌和发送数据帧的时间等于:所有站点传送令牌和发送帧的时间总合
- 由于令牌在网环上是按顺序依次传递的,因此对所有入网计算机而言,访问权是公平的。
- 当计算机都不需要发送数据时,令牌就在环形网上游荡,而需要发送数据的计算机只有在拿到该令牌后才能发送数据帧,因此不会发送冲突(因为令牌只有一个)
- 网上所有结点共享网络带宽
令牌换传递过程
- 令牌环网中令牌和数据的传递过程如下:
- 1)网络空闲时,环路中只有令牌帧在循环传递。
- 2)令牌传递到有数据要发送的站点时,该站点就修改令牌中的一个标志位,并在令牌中附加自己需要传输的数据,将令牌变成一个数据帧,然后将这个数据帧发送出去。
- 3)数据帧沿着环路传输,接收到的站点一边转发数据,一边查看帧的目的地址。
- 如果目的地址和自己的地址相同,那么接收站就复制该数据帧以便进一步处理。
- 4)数据帧沿着环路传输,直到到达该帧的源站点,源站点收到自己发出去的帧后便不再转发。
- 同时,通过检验返回的帧来查看数据传输过程中是否出错,若有错则重传。
- 5)源站点传送完数据后,重新产生一个令牌,并传递给下一站点,以交出信道控制权。
- 在令牌传递网络中,传输介质的物理拓扑不必是一个环,但是为了把对介质访问的许可从一
个设备传递到另一个设备,令牌在设备间的传递通路逻辑上必须是一个环。
- 在令牌传递网络中,传输介质的物理拓扑不必是一个环,但是为了把对介质访问的许可从一
- 轮询介质访问控制非常适合负载很高的广播信道。
- 所谓负载很高的信道,是指多个结点在同一时刻发送数据概率很大的信道。
- 可以想象,如果这样的广播信道采用随机介质访问控制,那么发生冲突的概率将会很大,而采用轮询介质访问控制侧可以很好地满足各结点间的通信需求。
- 轮询介质访问控制既不共享时间,也不共享空间,它实际上是在随机介质访问控制的基础上,限定了有权力发送数据的结点只能有一个。
- 即使是广播信道也可通过介质访问控制机制使广播信道逻辑上变为点对点的信道,所以说数据链路层研究的是“点到点”之间的通信。