题目
3-24 假定站点A和B在同一个10Mb/s以太网网段上。这两个站点之间的传播时延为225比特时间。现假定A开始发送一帧,并且在A发送结束之前B也发送一帧。如果A发送的是以太网所容许的最短的帧,那么A在检测到和B发生碰撞之前能否把自己的数据发送完毕?换言之,如果A在发送完毕之前并没有检测到碰撞,那么能否肯定A所发送的帧不会和B发送的帧发生碰撞?(提示:在计算时应当考虑到每一个以太网帧在发送到信道上时,在MAC帧前面还要增加若干字节的前同步码和帧定界符。)
3-25 在上题中的站点A和B在t=0时同时发送了数据帧。当t=255比特时间,A和B同时检测到发生了碰撞,并且在t=255+48=273比特时间完成了干扰信号的传输。A和B在CSMA/CD算法中选择不同的r值退避。假定A和B选择的随机数分别是rA=0和rB=1。试问A和B各在什么时间开始重传其数据帧?A重传的数据帧在什么时间到达B?A重传的数据会不会和B重传的数据再次发生碰撞?B会不会在预定的重传时间停止发送数据?
分析
3-25题考查的是CSMA/CD协议的工作过程,其详细流程如下:
- (1)准备发送:适配器从网络层获得一个分组,加上以太网的首部和尾部,组成以太网帧,放入网卡的缓存中,但在发送之前,必须先检测信道。
- (2)检测信道:不停地检测信道,一直等待信道空闲,并在96比特时间内信道保持空闲(保证了帧间最小时间间隔),就发送这个帧。
- (3)在发送过程中仍不停地检测信道,即网络适配器要边发送边监听。这里只有两种可能性:
- 发送成功:在争用期内一直未检测到碰撞,这个帧发送成功,回到(1)
- 发送失败:在争用期内检测到碰撞,这是立即停止发送数据,并按规定发送人为干扰信号。适配器接着就执行指数退避算法,等待r倍512比特时间后,返回到步骤(2),继续检测信道。若重传16次仍不能成功,则停止重传向上报错。
关于载波监听(CS)和碰撞检测(CD):
- 载波监听:每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞, “载波监听”就是用电子技术检测总线上有没有其他计算机发送的数据信号。
- 碰撞检测:计算机边发送数据边检测信道上的信号电压大小,当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加),当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞。所谓“碰撞”就是发生了冲突,因此“碰撞检测”也称为“冲突检测”。
以太网每发完一帧,一定要把已经发送的帧暂时保留一下。如果在争用期内检测出发生了碰撞,那么还要在推迟一段时间后再把这个帧重传一次。
解答
3-24
- t=0时,A开始发送数据,t=225时,B开始收到A发送的数据,为了避免碰撞,B不会再发送数据。
- 若B在t’<225时刻发送一帧数据,则A在t=t’+225时刻检测到碰撞,并立即停止发送数据
- 当t>450,A还没有检测到碰撞时,则说明以后再也不会发生碰撞了
- t=576时,此时A发送完毕
所以A在发送完毕之前如果没有检测到碰撞,能肯定以后不会发生碰撞
3-25
值得注意的是 2 ∗ τ 2*\tau2∗τ 是定值512,这是协议规定的
- t=0时,A、B同时发送了数据帧
- t=225 2 \frac{225}{2}2225时,A、B发送的数据发生碰撞
- t=225时,A、B同时检测到发生了碰撞
- t=225+48=273时,A、B完成(48比特的)干扰信号的传输,适配器执行指数退避算法,r A = 0 r_A=0rA=0,r B = 1 r_B=1rB=1,等待r倍512比特时间后,A、B将再次检测信道是否空闲
- t=273+r A ∗ 2 τ r_A*2\taurA∗2τ=273时,A检测到信道正忙,原因是信道内干扰信号仍在传输,但A还在不停检测信道
- t=273+225=498时,干扰信号占用信道时间结束,A发现信道空闲,但它还得等个帧间最小时间间隔96比特时间(用于收到数据帧的站点清理接收缓存,见教材P90)后才会发送数据,信道必须在这96比特时间内保持空闲
- t=498+96=594时,A终于如愿以偿开始发送数据,数据将在t=594+225=819时开始到达B,B开始接收数据
- t=273+r B r_BrB*512=785时,B检测到信道正忙,若信道空闲,它原计划于785+96=881时刻发送数据,此计划不得不推迟
- t=594+(64+8)*8=1170,A发送完所有数据
- t=1170+225=1395,B接收完所有数据,同时检测到信道空闲
- t=1395+96=1491,B处理完缓存后开始发送数据
- t=1491+576=2067,B发送完所有的数据(当然B发的可能不是最小帧,这里假设是和A大小一样的帧)
- t=2067+225=2292,A接收完B发送的数据
至此整个传输完成
版权声明:本文为HYL51740740原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。