CSMA/CD协议

CSMA/CD

  • 1. CSMA/CD协议概念和由来
  • 2. CSMA/CD的工作流程
  • 3. 争用期(碰撞窗口)
  • 4. 截断二进制指数退避算法
  • 5. 为什么以太网有一个最小和最大帧长度

1. CSMA/CD协议概念和由来

CSMA/CD:带碰撞检测的载波侦听多路访问协议,它是在局域网中用的最多的介质访问控制协议,即MAC协议。该协议解决了如何在共享信道上提高结点发送数据的效率问题。

为什么会有这个协议呢?
因为在早期的局域网中,网络拓扑是总线结构的,那时候还没有交换机,多台主机通过一个集线器相连,当一个结点发送数据时,其他的结点都会收到数据,即使不是发给它的,而接收方会根据帧中的目的MAC地址判断是丢弃还是接收。除此之外,因为每台主机都有发送数据的权利,所以当有一台主机发送数据时,另外一台主机恰好也在发送数据,这时就会产生碰撞,导致数据都是无效的,因为碰撞会损坏数据,这时就需要一种协议去协调结点发送数据,以便以最高效率利用信道。

这种协议就叫MAC协议,多路访问控制协议或者介质访问控制协议。历史上出现过很多MAC协议(可以去了解下,总的来说可以分为三类),只不过CSMA/CD以其简单高效、实现成本低而得到广泛应用。

另外在现在的交换局域网中,集线器已被交换机替换了,主机可以以全双工的方式进行通信,即可以同时发送和接收数据,因为有两根线,一根发送,一根接收,所以其实是不需要CSMA/CD协议了,但是为了兼容以前的技术,在半双工的情况下还是需要CSMA/CD的。

2. CSMA/CD的工作流程

每一台主机在发送数据之前先要检查一下总线上有没有其他主机在发送数据,如果有,则暂时不发送数据,以免发送冲突,如果没有,则发送数据。主机在发送数据的同时也要检查信道上是否有冲突发生(即有没有其他结点也在发送数据),因为有可能多台主机同时发送数据的,如果没有,就一直发生完,如果有,则停止发送,然后等待一段随机时间再次重发。

一句话概括CSMA/CD的工作流程就是:先听后发,边听边发,冲突停发,随机重发

3. 争用期(碰撞窗口)

争用期:以太网端到端的往返时延,又称为冲突窗口或碰撞窗口。只有经过争用期这段时间还没检测到冲突,发送方才能肯定这次发送不会发生冲突。

以太网规定这个争用期为51.2微秒

那么为什么取往返时延为一个争用期?
因为这是检测到冲突需要的最长时间,考虑这样一个临界点情况,当发送方A发出的第一个比特即将达到接收方B时,这时接收方B发现信道还是空闲的,正好自己也有数据发送给对方A,如果接受方B发送了,那么必定发生碰撞。发送方A继续发送数据,突然发现接收到来自B的数据,发送方A知道这次发送数据肯定发送碰撞了,而B在A之前就知道了(来自A的第一个比特快到B的时候,B才发的数据,B发完肯定就知道发生碰撞了)。
所以要让发送方A在经过一个往返时延后知道发生碰撞,意味着此时A还在发送数据,即A发送的帧的长度至少等于发送速率*往返时延。

对于10Mbps来说,在51.2微秒内,能发送512bit,即64B。
100Mbps,争用期就是5.12微秒,1000Mbps,争用期就是0.512微秒

换句话说,如果发生碰撞,就一定在发送前64B的时间内,由于一检测到碰撞就停止发送数据,这时发送出去的数据一定小于64B,因此,以太网规定最短帧长度为64B,凡是长度小于64B的帧都是由于碰撞产生无效帧

4. 截断二进制指数退避算法

首先,这个算法就是解决在发生冲突之后,发送方如何选择时间再次发送的问题。

等待一个随机时间(不是固定的)的需求是明确的。
1.那么为什么是随机的呢?
如果两个主机同时发送帧,然后碰撞,再一起等一个固定的时间,那么这个碰撞会一直持续下去。

2.但选择的随机时间该怎么确定呢?
首先已经明确了是随机的,但是也不能太随机了,这里的太随机了,意思是不能太小和太大,太小的话,如果主机很多的话,发送碰撞之后重发再碰撞的概率还是会高,如果太大的话,传输效率就会降低,这是显而易见的。

计算机的先驱们:“我真的太难了”

那么我们该怎么让这个时间随机的有原则呢?,这个原则就是当产生碰撞的次数越多时,就说明信道很忙,应该让发送方越有可能等待更长的时间再重发。这个就是二进制指数退避算法的核心思想。

3.随机选择时间的过程
1)确定基本的退避时间,一般取争用期
2)当产生n次碰撞之后,主机会从{0,1,2,…,2^n-1}中随机选择一个K值出来,让主机等待K个争用期时间后重发。这里的n<=10。
3)当n>10时,从{0,1,2…,1023}中随机选择K值
4)当重传次数大于16时,说明网络太拥挤了,直接丢弃该帧,并向高层报告

二进制指数退避算法可以使重传等待的随机时间随重传的次数增加而以更大概率的增大。这符合现实规律

5. 为什么以太网有一个最小和最大帧长度

以太网帧最小长度64B,最大长度1500B
设置最小帧长度是为了区分因噪声或碰撞而产生的无效帧。(64B的由来见3.争用期)
设置最大帧长度是为了保证每个发送结点能够公平竞争的使用信道。因为如果一个结点发送的帧太长,那么其他的结点就会等的太久,这就不公平了。

你可能感兴趣的:(计算机网络面试题)