由于节点对 Tx 和 Rx 使用不同的电路,因此电缆中的以太网冲突究竟是如何发生的?

网络工程 以太网 第一层 输出 自动协商 IEEE-802.3x
2021-07-13 15:35:39

我试图了解以太网中如何发生冲突,尤其是当存在双工不匹配或在传统以太网网络上两个节点同时传输时。

每个人都在上层解释了冲突(两帧在发送和接收时发生冲突)。但是,下图显示 Rx 和 Tx 有不同的电路。由于存在用于发送和接收帧的专用电路,如何发生冲突?

不同的电路用于传输和接收

编辑:也许标签“Hub MDI-X”对我的问题的观点造成了一些混淆。我不是在问集线器的功能如何导致冲突。我的重点是具有 MDI 或 MDI-X 接口(集线器和交换机具有 MDI-X 接口)的两个节点之间的通信。在这两种情况中的任何一种情况下,当两个节点具有双工不匹配时,如何在两个节点之间发生冲突,而在双工不匹配中,Rx 和 Tx 仍然有其专用电路?

4个回答

集线器实际上只是一根有源电缆,它将它在一个接口上接收到的每个信号重复到所有其他接口。如果两个设备同时发送到集线器接口的接收端,集线器同时向所有其他集线器接口的发送端重复发送两个信号,接收到的两个信号在其他接口的发送端会发生冲突,因此你有一个冲突,所有其他接口都有垃圾信号,因为它同时是两个信号。同时发送并听到另一个信号的主机将意识到一次有多个发送,并且它们将确定存在冲突。

这样想,每个集线器接口的接收都连接到每个其他接口的发送。在集线器内部,发送和接收是连接的,即使它们在接口处是分开的。

与交换机相比,其中每条链路都终止于交换机接口,并且交换机没有将接口连接在一起。相反,交换机具有逻辑(通常嵌入在硬件中)来确定将它在一个接口上接收到的帧发送到哪里,并防止交换机内部发生冲突。

交换机是一个高密度的桥。最初的桥接器就像具有多个接口的 PC。如果具有多个接口的 PC 在多个接口上同时接收到帧,则您不会期望它发生冲突。


编辑:

你的评论让我相信你仍然不明白我上面写的关于集线器的内容。

使用 UTP 和集线器时检测冲突的方式是发送设备在发送时听到另一个信号。如果使用 UTP 的设备配置为半双工,那么它会在发送时听到信号时认为存在冲突。

当双工不匹配时,配置为全双工的设备将愉快地发送,同时从配置为半双工的设备接收。另一方面,配置为半双工的设备在发送和听到来自配置为全双工的设备的信号时会认为存在冲突。这将导致所有类型的问题,因为配置为半双工的设备将停止发送帧(导致残帧),并且它将发送配置为全双工的设备不期望的干扰信号。配置为全双工的设备将停止发送其帧。

要理解这一点,您需要了解历史背景。

最初以太网使用共享同轴电缆。一次只有一台设备可以成功传输。如果两个设备同时传输,则视为冲突。

然后中继器出现了,以延长距离并增加节点数量。中继器会检测哪个端口正在传输,然后它会在其他端口上重复该信号。为了保持碰撞检测正常工作,中继器必须具有确保所有节点检测到碰撞的功能。第一个中继器只有两个端口,但后来的中继器可以有多个端口,这些端口被称为集线器,尤其是与双绞线结合使用时。中继器是非常愚蠢的设备,它们会再生电信号,但仅此而已。

然后 10BASE-T 出现了,正如您所注意到的,它在每个方向都有专用的数据通道。尽管如此,它仍然需要适应现有模型,因此默认情况下它在“半双工”模式下运行,模拟同轴电缆。信号实际上并未在线路上发生冲突,但收发器的行为就像发生了冲突,中继器将采取与以前相同的步骤,以确保在整个网络中都能看到这种情况。

双绞线以太网也可以支持“全双工”模式。在这种模式下,所有与碰撞相关的硬件都被禁用,两端可以随时传输。然而,这种模式带来了几个主要的缺点。

  • 它与中继器集线器不兼容。如果没有冲突检测机制,集线器将无法处理同时传输的两个设备。
  • 一条链路的两端要设置为相同的双工模式,如果不是那么糟糕的事情就会发生。

这些问题意味着实际上 10BASE-T 系统几乎总是在半双工模式下运行。

对于 100BASE-TX,情况有了显着改善。以太网交换机(技术上快速的多端口桥接器)价格下降到可以消除哑中继器集线器的地步。自动协商允许网卡建立全双工连接,而无需容易出错的手动配置。如果您使用交叉电缆将两个 100BASE-TX NIC 连接在一起,或者将 100BASE-TX NIC 连接到交换机并且不采取措施手动覆盖某些内容,他们几乎肯定会协商全双工模式。

1000BASE-T 理论上有一种半双工模式,一些 NIC 声称支持这种模式,并且有千兆位多端口中继器的规范,但我从未见过任何人出售过的任何证据。实际上,千兆链路几乎肯定会以全双工模式运行。

更快的速度完全放弃了半双工模式。

很好的问题。

在全双工中,从“左到右”的流量有一个专用通道,从“右到左”的流量有一个专用通道:

专用频道

因此,在全双工中,冲突是不可能的——即使两个 NIC 同时传输。

半双工,然而,在任一方向的流量是指只使用线,在一次一个的方向。因此,尽管在物理上仍然有专用通道,但从逻辑上讲,如果一个 NIC 在传输时接收到某些内容,它会将其记录为冲突。位/信号实际上并没有在线上“碰撞” ——当 NIC 同时接收和发送时,碰撞计数器只会增加。

使用双绞线和中继器集线器,集线器只不过是一个数字放大器。为此,它从一个端口上的输入信号中检测载波并将所有其他端口切换到输出模式。在这种输出模式下,任何额外的输入载波都是冲突。这会触发阻塞信号以传播冲突并使发送方停止传输。

这种重复方法模仿了以前的共享媒体以太网变体(10BASE5 和 10BASE2)的行为,其中中继器仅用作物理段接头或线路扩展器。当然,您是对的:双绞线是线路级别的全双工介质,其中冲突仅发生在上层物理层而不是线路本身。

一个转发器不能同时允许多个发件人。多个同时传输会在输出端口上混合并产生难以理解的噪音。同样,处于半双工模式的任何节点都采用共享介质,不能进行全双工传输。传输时检测到的任何载波都是冲突,导致发送方后退。介质是否支持全双工(光纤、双绞线)或不支持(同轴电缆)并不重要。

对于双工失配,一个链路端处于半双工模式,另一个处于全双工模式。现在,当半双工 (HDX) 端进行传输时,其接收器上的任何载波都会导致检测到冲突。然而,全双工 (FDX) 端在从 HDX 端接收时可能会很高兴地发送出去,并且完全没有注意到它在远端产生的冲突。HDX 端需要中止传输并发送阻塞信号。由于 FDX 端无法检测到所谓的冲突,因此它检测到部分并因此损坏的帧。

低频和小帧有合理的机会通过这种双工不匹配,因此ping实际上可以工作。然而,一旦任何严重的传输尝试开始,更高的帧频率和更大的尺寸将使传输非常可靠地失败。

对于非托管交换机,双工不匹配可能很难检测到,尤其是当甚至主机 NIC 都没有正确报告其双工模式时。

对于托管交换机,您通常有端口错误计数器。在一侧 (HDX) 上增加的冲突和在另一侧 (FDX) 上增加的短帧和 FCS 错误是双工不匹配的非常强烈的迹象。

基本上,依靠自动协商是避免双工不匹配的非常好的做法。手动配置速度和双工模式通常容易造成不匹配,尤其是在几年后更换设备时。幸运的是,整个半双工方案随着千兆以太网和更快的速度消失了。