目录
前言
本博客是博主用于复习计算机网络的博客,如果疏忽出现错误,还望各位指正。
引言
最早的以太网,许多计算机都连接在一根总线上工作——广播通信方式。
总线的特点想必不用多说,当一台计算机发送数据时,总线上所有的计算机都能检测到这个数据。
But当两台计算机同时发送数据时候,就可能产生信号上的叠加,导致出现差错。
为了在总线上实现一对一通信,可以使每个适配器都拥有一个独一无二的地址,在发送数据帧时,在帧的首部写明接收站的地址。
仅当数据帧中的目的地址与适配器ROM中存放的硬件地址一致时候,才接收,其余的丢了。
这样具有广播性质的总线上就实现了一对一通信。But也会发生冲突。
然后之后为简化通讯,以太网采取两种措施:
一种是以太网发送的数据都使用曼彻斯特编码——解决二进制基带数字信号出现连续1或0无法提取比特同步信号的问题,不过自身也有弊端,占频带宽度比原始的基带信号增加一倍。
另一种就是采用较为灵活的无连接工作方式,即不必先建立连接就可以直接发送数据。
怎么个事儿呢?
就是适配器对发送的数据帧不进行编号,也不要求对方发回确认。
以太网提供的服务是尽最大努力地交付,不可靠交付,对有差错帧是否要重传由高层决定。
比如CRC出错,直接扔了,TCP发现丢失数据,就会要求重传,但是以太网并不知道这是重传的,认为是新的帧。
然后我们知道,总线上只要有一台计算机在发送数据,总线的传输资源就被占用,在同一时间只允许一台计算机发送数据。
于是,如何协调总线上计算机的工作就成了以太网要解决的一个重要问题。
以太网采取最简单的随机接入
(“随机接入”是指在无线通信中,用户可以在任意时刻,任意地点,以任意的方式进行接入,而不受时间、地点、方式的限制。)。
但是有很好的协议用来减少冲突发生的概率——引出我们的CSMA/CD协议!
CSMA/CD协议
全名(Carrier Sense Multiple Access/collision detection,载波监听多点接入/冲突检测)
CSMA与CSMA/CD的区别
CSMA和CSMA/CD的主要区别在于冲突处理机制,具体如下:
- CSMA。是一种基本的载波侦听多路访问协议,它要求节点在发送数据前先监听信道,如果信道空闲,则立即发送数据;如果信道忙碌,则等待直到信道空闲后再发送。当多个节点同时检测到信道为空闲并尝试发送数据时,可能会发生冲突,CSMA协议在这种情况下不会采取任何措施来避免或检测冲突。听我们老师上课讲的是使用CSMA协议的需要返回确认帧确认,而CSMA/CD协议就不会。
- CSMA/CD。是CSMA的一种改进版本,特别适用于总线型局域网拓扑结构。在CSMA/CD中,节点在发送数据的同时监测信道上是否发生冲突,如果检测到冲突(例如,通过监测信号电压的变化),节点会立即停止发送数据,并等待一段时间后再次尝试发送。这种机制可以有效减少或避免数据碰撞,提高网络效率。
说白了,载波监听就是在发送数据之前,需要检测信道,加上冲突检测(边发送边监听,不发送不监听),就构成了CSMA/CD协议。
CSMA/CD流程
- 准备发送。网卡从网络层获得一个分组,加上头尾,组成以太帧,放入网卡缓存。
- 检测信道。在帧间最小间隔(以太网规定是96比特时间)内信道保持空闲就发送该帧。
- 冲突检测。边发送边监听。然后看成功与否
- 如果成功,两种情况,要么没事,要么CRC错了,返回第一步重传去。
- 如果失败,先发送人为干扰信号,一般是32或者48比特,发完之后,阶段二进制指数退避算法咔咔一算,然后回到第二步。
先了解了流程,别慌,后面还会介绍一些以太网的规定。我们先来看两道题。3-24和3-25题。
看到这个题。明确一点,以太网,为了避免某种情况,规定一个最短帧长64字节,凡是长度小于64字节的帧,都是由于冲突而异常终止的无效帧。
某种情况:比如某个站发送了一个很短的帧,但在发送完毕之前并没有检测到碰撞,而这个帧继续传播和别的发生了碰撞,但是发送站这时候就不知道了,因为边发送边监听,不发送不监听,所以不会重传这个帧。
所以要保证,极限情况,到头发生碰撞,一来一回的时间(以太网端到端往返时间2——争用期)要小于传输时间,才能保证这个数据顺利发送完毕。
争用期按理来说应该和传输往返时间相关。
但是10Mbit/s以太网规定规定,注意是规定51.2μs为争用期!!
如果是100Mbit/s,争用期就该5.12μs。
一般往返时间比这个小就没问题,要是超了的话我们老师说可能会出问题。具体啥问题我也不知道。
然后发现了一个博主讲的不错:
里面的内容很简要但是一点就透!
我觉得中间那句话是最重要的,前64B之内出问题,不出后面的也不会出,就相当于来回建立了“连接”,后面都是我自己一个人站着这个道。
好啦,我们来做题,读题:
同一个10Mbit/s的以太网
好!以太网什么规定,争用期51.2μs,检测信道96比特时间(就是1bit的发送时间)。
所以一开始假设都检测信道没问题,AB就发。
假设B在225比特时间发
(因为题目是单向传播是225比特时间,所以我们统一一下)
那么225比特时间,B刚发就碰撞,碰撞信号B立马收到,B随即发送人为干扰信号,32或者48bit,因为下一个题是48bit,所以统一一下,发完干扰信号之后,退避算法,然后检测信道。
然后碰撞信号往回传225比特时间,在450比特时间到A,A也发送人为干扰信号,退避算法,然后检测信道。
OK,题目问A发送完数据之前会不会检测到碰撞,我这多写了,不过下一题你可以按这个流程画。
肯定会碰撞,因为A是最短帧长64字节,即512bit,10Mbit/s要用512比特时间才传完,450<512,所以会碰撞。
(其实更长,因为题目说MAC还有什么同步码和帧定界,那个是8字节,512+64=576,书上有)
然后要是没检测到,说明可以认为后面安全,看前面,我说的那个中间重要那句,那就是解释。
下一题不讲啦,直接贴个答案链接吧,不过可能有所出入,理解了就行。