CSMA/CD(Carrier Sense Multiple Access/Collision Detection)是一种媒体访问控制方法,在早期的以太网技术/局域网中被广泛使用,当曾经有共享
总线拓扑和每个节点(计算机)通过同轴电缆连接。现在以太网是全双工的,不使用 CSMA/CD,因为拓扑是星形(通过交换机或路由器连接)
或点对点(直接连接),但它们仍然受支持。
考虑这样一种情况,其中一条链路上有“n”个站点,并且所有站点都在等待通过该信道传输数据。在这种情况下,所有“n”个站都希望访问链路/信道以传输它们自己的数据。当此刻有多个站传输数据时,就会出现问题。在这种情况下,来自不同站点的数据会发生冲突。
CSMA/CD 是一种这样的技术,其中遵循该协议的不同站就有效传输的一些条款和冲突检测措施达成一致。该协议决定哪个站将在何时传输,以便数据到达目的地而不会损坏。
CSMA/CD 如何工作?
- 步骤1:检查发送方是否准备好发送数据包。
- 第二步:检查传输链路是否空闲?
发送方必须不断检查传输链路/媒体是否空闲。为此,它不断地检测来自其他节点的传输。发送方在链路上发送哑数据。如果没有收到任何碰撞信号,则表示该链路此时处于空闲状态。如果检测到载波空闲且没有碰撞,则发送数据。否则它不会发送数据。 - 第 3 步:传输数据并检查冲突。
发送方在链路上传输其数据。 CSMA/CD 不使用“确认”系统。它通过冲突信号检查成功和不成功的传输。在传输过程中,如果节点收到冲突信号,则停止传输。然后,该站将阻塞信号发送到链路上,并在重新发送帧之前等待随机时间间隔。一段时间后,它再次尝试传输数据并重复上述过程。 - 第 4 步:如果在传播过程中没有检测到冲突,则发送方完成其帧传输并重置计数器。
站点如何知道其数据是否发生冲突?
考虑上述情况。两个站,A 和 B。
传播时间:Tp = 1 小时(信号从 A 到 B 需要 1 小时)
At time t=0, A transmits its data.
t= 30 mins : Collision occurs.
冲突发生后,产生一个冲突信号并发送给 A 和 B 以通知站点发生冲突。由于碰撞发生在中途,碰撞信号也需要 30 分钟才能到达 A 和 B。
Therefore, t=1 hr: A & B receive collision signals.
该冲突信号被该链路上的所有站接收。然后,
怎么保证是我站的数据冲突了?
为此,传输时间 (Tt) > 传播时间 (Tp) [Rough bound]
这是因为,我们希望在从我们的站点传输最后一位数据之前,我们至少应该确保某些位已经到达目的地。这确保了链路不忙并且不会发生冲突。
但是,上面是一个松散的界限。我们还没有利用碰撞信号所花费的时间回到我们身边。为此,请考虑最坏的情况。
再次考虑上述系统。
At time t=0, A transmits its data.
t= 59:59 mins : Collision occurs
这种碰撞发生在数据到达 B 之前。现在碰撞信号再次到达 A 需要 59:59 分钟。因此,A 大约在 2 小时后,即 2 * Tp 后收到碰撞信息。
Hence, to ensure tighter bound, to detect the collision completely,
Tt > >= 2 * Tp
这是系统可以用来检测碰撞是否来自其自身数据的最大碰撞时间。
要传输的数据包的最小长度应该是多少?
传输时间 = Tt = 数据包长度/链路带宽
[发送方每秒传输的比特数]
代入以上,我们得到,
数据包长度/链路带宽>= 2 * Tp
Length of the packet >= 2 * Tp * Bandwidth of the link
在我们没有这么长的数据包的情况下,填充会有所帮助。我们可以在数据的末尾填充额外的字符以满足上述条件。
阅读下一篇 – CSMA/CD 的效率