以太网如何在 CSMA/CD 方法中检测冲突?

网络工程 以太网
2021-08-02 01:04:04

我知道载波侦听本质上是 NIC“侦听”任何传输的介质,多路访问意味着网络上的多个设备可以“侦听”介质,并且冲突检测是它在有帧时要经过的过程碰撞。我的问题是 NIC 如何实际确定是否发生冲突?电压有差异还是什么?

3个回答

假设您有以下情况...

  • 带有硬编码为 100Mbps 的 NIC 的 PC,全双工
  • RJ45 电缆,带针脚的 EIA-568B(不是针脚中的颜色很重要)
  • Cisco Catalyst 交换机,使用自动协商(100Mbps)

由于 PC 的 NIC 锁定在 100/full,Cisco 的以太网自动协商失败并回落到 100/half。现在线路上存在双工不匹配。Cisco 交换机使用 CSMA/CD 来访问链路。

让我们假设 PC 和 Cisco 都在完全相同的时刻进行传输;逻辑图和物理层图从两个不同的角度显示了相同的行为,但物理层图与您的问题最相关。

  LOGICAL DIAGRAM
  ===============

                   Tx                     Tx
  100/full       ----->                 <-----   100/half
  PC        -----------------------------------  Cisco Catalyst Switch


  PHYSICAL LAYER PIN DIAGRAM
  ==========================

      PC                                         Cisco Catalyst Switch
      100/full                                   100/half

                    Tx D1             
                    ----->
      568B                                       568B
      Pin Signal                                 Pin Signal
      1   TX+ D1    ---------------------------  3   RX+ D2
      2   TX- D1    ---------------------------  6   RX- D2
      3   RX+ D2    ---------------------------  1   TX+ D1
      6   RX- D2    ---------------------------  2   TX- D1

                                         <------
                                           Tx D1

在上图中,PC(全双工)在左侧,Cisco 交换机(半双工)在右侧。双方同时在引脚 1 和 2 上传输 (Tx),这对引脚称为 D1。

当交换机上的 NIC 在 D2 对上接收 PC 的帧而交换机同时在 D1 对上进行传输时,交换机将记录冲突(答案参考)。冲突仅在交换机上注册,因为它处于半双工模式。

关于千兆以太网的注意事项:

  • 标准注 1 中称为半双工然而,实际上没有人使用半双工 GigE。这意味着 GE 不会使用 CSMA/CD
  • GE使用RJ45模块插头中的全部8个引脚,具体的TX/RX引脚是动态分配的。

尾注

注 1引用 IEEE 802.3-2012 4.1(斜体强调我的):

4.1.2.1.2 无争用接收

在半双工模式下,在 1000 Mb/s 的运行速度下,发送站可以在 4.2.3.4 中描述的条件下扩展帧。扩展被接收站的 MAC 子层丢弃,如 4.2.9 中的过程模型所定义。

在过去(10base-2),通过电流传感检测到碰撞——当两个发射器相互踩踏时,它需要更多的功率(电流)。对于 10/100/1000-baseT 规格,就像在 TX 对上传输时查看 RX 对一样简单。(或在 1000 的情况下成对,但 gig-e 从不进行半双工。)

现代(用于 10base-X 技术)收发器使用回声消除从电线中减去它们的信号以侦听其他信号。

PHY 通知 MAC 或中继器(集线器)发生冲突

当 MAC 收到冲突通知时,它会通过冲突检测程序(随机退避)。

当中继器(集线器)收到冲突通知时,它会在所有端口上生成“JAM 信号”,以确保发送冲突帧的 MAC 检测到冲突,并且其他主机正确地检测到线路忙。

phy 如何检测冲突是特定于媒体类型的。对于同轴以太网,它基于同轴电缆上的直流电压https://books.google.co.uk/books?id=MRChaUQr0Q0C&pg=PA54&lpg=PA54&dq=coaxial+ethernet+collision+detection&source=bl&ots=oGaQGcNnkN&sig=OayCiWhphd =en&sa=X&redir_esc=y#v=onepage&q=coaxial%20ethernet%20collision%20detection&f=false

双绞线和光纤以太网的常见变体在电气层面是全双工的,但出于兼容性原因并允许在带有中继器(集线器)的网络中运行,它们需要能够在半双工模式下运行。这是通过将发送和接收数据路径上的同时活动视为冲突来实现的。

请注意,在全双工模式下运行的链接不使用 CSMA/CD,在那里根本不会发生冲突。10Mbps CSMA/CD 是常态。在 100Mbps 的早期,CSMA/CD 仍然用于支持集线器(中继器),但随着交换机(网桥)的接管和自动协商的成熟,全双工成为常态。标准中存在 1Gbps 的半双工模式,但事实上没有人出售过集线器,这使它变得毫无意义。在更高的速度下,根本不支持半双工。

现在的 CSMA/CD 是与传统设备兼容的功能。