前提条件:10Mbps的传输速率;载波多路复用/冲突检测(CSMA/CD)
(1)、CSMA/CD
(Carrier Sense Multiple Access with Collision Detection)带冲突检测的载波监听多路访问技术(载波监听多点接入/碰撞检测)。在传统的共享以太网中,所有的节点共享传输介质。如何保证传输介质有序、高效地为许多节点提供传输服务,就是以太网的介质访问控制协议要解决的问题。
载波监听(carrier sense):以太网上的各个工作站在发送数据时,都要监听总线上有没有数据正在传输。
若有数据传输(称总线为忙),则不发送数据
若无数据传输(称总线为空),可以立即发送准备好的数据
多路访问:
以太网上的各个工作站在发送数据时,共用一条总线,且发送数据是广播式的
冲突(碰撞):以太网上有两个或两个以上的工作站同时发送数据,在总线上就会产生信号的冲突;哪个工作站接收到的数据都辨别不出真正的信息。
(2)、以太网的探测帧
冲突产生:
总线处于空的状态,而且工作站是依次监听到空的状态,那么各个工作站就会陆续向总线发送数据。
A工作站发送的数据还未传递到另一个要发送数据B工作站。那么B工作站就会认为总线为空的状态,就会向总线发送数据。造成冲突。
这仅仅是两个工作站,实际上可能有更多的工作站。
冲突解决方法:
问题:必须采取一种办法;否则,则会导致工作站一直向总线注入数据,而又会检测到冲突。既浪费工作站和总线的资源,又会导致数据迟迟发不出去。
原理:假设某个工作站检测到冲突发生,就发送碰撞信号,使冲突更加明显,使得所有工作站都能检测到总线发生冲突。然后每个想要发送数据的工作站,检测到总线为空,在发送数据之前,先发送一个数据帧(探测帧)。探测帧的长度既要求最快速的到达目的地(尽量小),又要保证探测帧的传递时间足够(发送时间大于所有工作站监测到冲突并发送碰撞的时间)使得其他工作站能够监听到。这个探测帧的长度就是以太网规定的最小帧长。
结果就是,如果没有工作站发出碰撞信号打断探测帧的传输,那么就代表总线确实为空,并且没有工作站和“我”争抢总线资源。然后就可以正式发送数据。
例:重新上述内容,A工作站发送向总线数据,B工作站在未检测到A工作站发送的数据时,以为总线为空,开始发送数据。冲突产生;假设B工作站监测到冲突,然后发送一个碰撞信号(01010101或者10101010)。如果A工作站未发送完毕,则会重新发送。(因为冲突已经导致之前发送的数据无法辨认了)
(3)、如何计算最小帧长?
10Mbps以太网中规定,最大连接距离是2500米。
一帧的传输时间等于 传输时延 + 工作站发送时间(有快有慢);
所以10Mbps以太网直接规定一帧的最小发送时间为51.2μs
最小帧长度 = 10Mbps * 51.2μs =512bit = 64字节
这是对于10Mbps以太网
100Mbps以太网的时隙仍为512位时,以太网规定一帧的最小发送时间必须为5.12μs。
1000Mbps以太网的时隙增至512字节,即4096位时,4.096μs。
结论:以太网的最小帧长,是因为使用CSMA/CD的原因;对于1000Mb/s的吉比特以太网,MAC层有两种选择,要么保留CSMA/CD,要么不用它。若保留CSMA/CD协议,必须面临碰撞检测问题,这就要再一次减小网络的最大有效传输距离到25米。当然您可以不缩短网络的距离,而是增加一个帧的程度,就如我们开始分析100Mb/s以太网那样,让一个帧持续足够长的时间。但因为上层来的数据没有这么多,所以就需要在MAC层进行一些无用数据的填充来满足这个要求。
最后:
最小帧长/传输速率 正比于 网络最大传输距离/光速
光速是恒定的,最大传输距离根据信号衰减人为规定的。传输速率也是设计好的。
IP的首部中的IP数据报总长度有16位,代表可以传送65535字节,加上以太网头,应该最大为65553字节。
但是在10Mbps以太网上,将会占用共享链路长达50ms,这将严重影响其它主机的通信,特别是对延迟敏感的应用是无法接受的。
而如果采用小包传送,那么每个帧上都有以太网头,IP头,可能有TCP头或者UDP头。这样导致,越小的帧,传输效率越低。
最后以太网规定,最大帧长的数据长度为1500个字节(只是规定)
如有错误,请大家批评指正