计算机网络-数据链路层多路访问控制

Aki 发布于 2023-08-07 206 次阅读


在标准的以太网电缆(如Cat 5e、Cat 6、Cat 6a等)中,一条网线通常只有两对(也就是四根)不同颜色的线缆用于数据传输。这两对线缆可以用于收发两个不同的信道,其中一个用于发送数据,另一个用于接收数据。这种方式被称为双绞线结构。

具体来说,这两对线缆是:

  • 发送(TX)对:这对线缆用于设备发送数据。其中一根线缆被用作正极性传输(发送数据+),另一根线缆被用作负极性传输(发送数据-)。
  • 接收(RX)对:这对线缆用于设备接收数据。其中一根线缆用作正极性传输(接收数据+),另一根线缆用作负极性传输(接收数据-)。

通过使用双绞线结构,以太网设备能够实现全双工通信,即同时发送和接收数据,从而实现更高的传输效率。在全双工模式下,设备可以独立地发送和接收数据,而不会出现冲突。这使得以太网网络能够高效地进行双向数据传输,提供更好的性能和吞吐量。

当多个主机想通过共享网线发送数据时,需要根据CSMA(Carrier Sense Multiple Access)协议来避免冲突。CSMA是一种多路访问协议,用于协调共享传输介质上的数据发送,特别是在以太网中广泛使用。

CSMA协议的工作原理如下:

  • 载波侦听(Carrier Sense):设备在发送数据之前首先侦听传输介质上是否有其他设备正在发送数据。如果检测到传输介质上存在数据传输,设备将等待一段时间,直到传输介质空闲为止。
  • 冲突检测(Multiple Access with Collision Detection,CD):即使设备检测到传输介质空闲,仍然可能会发生冲突。如果两个或更多设备同时开始发送数据,它们的信号会在传输介质上碰撞,导致数据丢失和干扰。
  • 冲突解决:如果设备发现数据传输发生了冲突,它会立即停止发送,并等待一个随机时间段后再次侦听传输介质,再次尝试发送数据。这个随机等待时间有助于避免多个设备在同一时间重复发生冲突。

通过使用CSMA协议,多个主机可以共享网线并避免数据冲突。然而,对于大型网络,特别是高速网络,CSMA协议的性能可能会受到限制。因此,在现代以太网中,更常见的是使用交换机和全双工模式,它们可以提供更高的性能和更少的冲突。

CSMA、

任何主机都可以在任何时间发送数据,没有优先级之分。产生了一些问题,如冲突。

CDMA是码分多路复用,是多路复用技术的一种。多路复用技术是为了提高物理层通信线路的利用率,因为单一信号往往小于传输介质的带宽。所以我们可以在一个传输介质上进行一个类似分区的操作,传递多个信号。

CSMA是载波监听多路访问协议。用于数据链路层的介质访问控制层。介质访问是指网络结点使用信道进行通信,因此协调各网络结点的行为、决定广播信道使用权的协议就称为介质访问控制协议。 载波监听多路访问协议就是一种介质访问控制协议。

在采用CSMA协议的网络系统中,每个结点在发送数据之前,先监听信道是否为空闲状态,再根据监听的结果决定如何动作。

CSMA主要分为四种协议:

  • 1-坚持 CSMA:当一个结点想要发送数据时,先监听一下信道,如果忙则继续等待,直到信道空闲。如果空闲则立即发送数据。
  • 非坚持CSMA :当一个结点要发送数据,先监听信道,如果空闲则立即发送数据,否则放弃监听,随机等待一段时间后再监听。
  • p-坚持CSMA :当一个结点要发送数据,先监听信道,如果信道忙,则坚持监听到下一个时隙。如果信道空闲,则有p的概率发送数据,1-p的概率继续等待。

CSMA/CD、

CSMA只在发送数据前检查是否冲突,而数据发送过程中是有可能冲突的,这时CSMA会继续将剩下的数据发送完,浪费时间、浪费带宽。

所以出现了带有冲突检测的CSMA协议,即CSMA/CD。是对CSMA的改进,网络结点在发送数据时,边发送边监听,一旦发现有冲突,立即停止发送

这时候大家都不发送了,会产生一个争用时隙, 冲突的各结点在停止发送后,等待一段时间再监听信道,发现空闲信道则发送数据。 而当很多结点彼此都冲突时,则会产生一系列的争用时隙,在经过几轮竞争后,有一个结点发送数据成功。有数据要发送的结点将开始新一轮竞争。

可以看出,其实CSMA/CD的工作周期就是传输周期、争用周期、空闲周期交替出现的一个过程。

CSMA/CA、

CSMA/CA,带有冲突避免的载波多路访问协议,是对CSMA/CD协议的修改,把冲突检测改为冲突避免。主要用于无线局域网。

为什么要冲突避免呢?在无线局域网中,每个移动的站点发送的范围可以看成是一个以本身为圆心的圆。这有可能会出现两个问题:

A站点和C站点都想发送数据给B站点,但是A和C相距较远,都认为到B的信道是空闲的,就都向B发送数据,两个方向来的数据发生碰撞,那就有问题了。

ABCD四个站点,黄色和白色是B的传播范围,白色和蓝色是C的传播范围,B向A发送数据时,C想向D发送数据,这时候C发现信道是冲突的(因为B的传播信号是圆形范围的),于是选择了不向D发送数据,可是我们可以看到B向A发送数据并不影响C向D发送数据。这就造成了信道明明不忙,却也不能发送的问题。

综合上面两个问题,CSMA/CA协议,要求每个发送站点在发送帧数据之前,先监听信道,空闲则发送,但是发送完一帧后,必须等待一个短时间间隔,这个间隔称为帧间间隔,检查接受站点是否发回帧确认。若没有确认,则认为发送失败,重发该帧。

CSMA/CA中需要用到以下三种帧间间隔:

SIFS=用于分隔一次对话的各帧;PIFS=SIFS+一个时隙时间长度;DIFS=PIFS+一个时隙时间长度

时隙时间长度,指的是在某一个站在某一个时隙开始接入到信道时,那么在下一个时隙开始时,其他站能检测出信道变成非空闲的时间。