由于早期以太网连接在一根总线上,在同一时间只能有有一台计算机发送数据,所以就采用载波监听多点接入/碰撞检测。

多点接入:总线型网络,许多计算机连入总线。

载波监听:边发送边监听,不管在发送数据前还是发送数据中,每个站都必须不停检测信道是否空闲。若检测已有其他站在发送,则本站暂时不要发送数据。

碰撞检测:适配器边发送边检测信道上信号电压的变化。当电压大于门限值,说明有两个以上的站在同时发送数据,一旦发现碰撞,就要立刻停止发送数据。

由于传播时延的存在,导致即使当时检测出信道空闲,有可能数据正在传播途中,还是有可能发生碰撞。所以最迟要经过二倍总线端到端的传播时延(争用期),才能知道是否发生碰撞。

截断二进制指数退避:由于发送的不确定性,在检测碰撞后不立即重发避免再次碰撞,双方退避[0,1,……,2∧k-1]中随机选一个数乘以争用期的时间再重传,k=min(重传次数,10),若重传16次仍不能成功就丢弃该帧。

规定64字节是帧的最小长度,若收到帧长度小于64,应当立即丢弃。还规定了帧间最小间隔96比特时间,为了使刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的准备。

要点归纳如下

(1)准备发送:适配器从网络层获得一个分组,加上以太网的首部和尾部,组成以太网帧,放入适配器的缓存中。但在发送之前,必须先检测信道。

(2)检测信道:若检测到信道忙,则继续不停地检测,一直等待信道转为空闲。此时若在96比特时间内信道保持空闲(保证了帧间最小间隔),就发送这个帧。

(3)在发送过程中仍不停地检测信道,即网络适配器要边发送边监听。这里只有两种可能性:

①发送成功:如果在争用期内一直未检测到碰撞,就认为发送成功(如果接收方收到 了有差错的帧,就丢弃它,后续的工作由高层来处理)。发送完毕后,其他什么也不做。然后回到(1)。

②发送失败:在争用期内检测到碰撞。这时立即停止发送数据,并按规定发送人为干扰信号。适配器接着就执行指数退避算法,等待r倍512比特时间后,返回到步骤(2),继续检测信道。但若重传达16次仍不能成功,则停止重传而向上报错。

以太网每发送完一帧,一定要把已发送的帧暂时保留一下。如果在争用期内检测出发生了碰撞,那么还要在推迟一段时间后再把这个暂时保留的帧重传一次。

 

原文地址:http://www.cnblogs.com/LCAB/p/16820958.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性