网络适​​配器是否读取单个流中的输入位?


9

千兆位网络适配器正在接收数据时,它如何接收这些位?是否可以在0和1的流中看到全部内容?还是以某种方式同时出现多个0和1的流?

例如...假设有两个发送设备和一个接收设备。

设备1和2开始同时将网络数据发送到设备3。

我的假设是,从设备3的网络适配器的角度来看,所有0和1都出现在单个数据流中。它可以确定来自设备1或设备2的数据,但该数据仍然只是数百万/十亿比特的一个流。

我完全错了吗?:)


1
您是指半双工连接还是使用全双工?即使1000Base-T仍处于该标准中,也从来没有任何半双工设备。使用全双工连接时,链路上不会有两个设备同时争用第三个设备的帧。
罗恩·莫平

全双工。好了,因此,仍然只有一个0和1的流(例如:0101010101000101001010100101010000100001101011010),从设备3的角度(接收者)来看,虽然设备1和2可以轮流打开该流,但它们永远不会正好同时发送0和1,对吧?
shihku7 '18 -10-17

有什么答案对您有帮助吗?如果是这样,您应该接受答案,这样问题就不会永远弹出来寻找答案。或者,您可以提供并接受自己的答案。
罗恩·莫平

Answers:


14

这取决于。

虽然许多以太网PHY以纯串行方式(例如100BASE-TX,1000BASE-SX,10GBASE-SR)传输数据,但有些以太网PHY却将数据流分成并行传输的多个通道。

最常见的是,1000BASE-T(铜缆上的千兆位通用变体)将编码的数据流分成四个通道,并分别通过Cat-5电缆的四对双绞线之一进行传输。从千兆位以上的所有双绞线变体都使用这四个通道。

某些高速(10G +)光纤PHY还使用多达16条光纤(使用多模光纤和短距离)或波长(使用单模光纤和长距离)的多条通道。

但是,所有内容都以帧的形式传输,每个都从一个源运行到一个目标。框架通常是原子的,即。它们总是一成不变地传输。每个帧仅传输来自单个特定连接/应用程序的数据。它的标头包含源地址和目标地址,因此可以通过网络找到其方式。

当网络同时从同一来源的不同端口接收到来自不同源的两个帧时,其中一个帧需要排队,直到到达目的地的交换机端口已完成传输第一帧为止。

假设源和目标以相同的速度运行,而这不一定是正确的。您可能有一个通过1 Gbit / s链接连接的文件服务器,并且有十个客户端,每个客户端在其100 Mbit / s链接上全速发送而没有(大量)排队。这有点接近您的“多流”建议,只是这些流是在帧级别而不是比特级别交错的。

网络端口的速率在一秒钟内可以达到数千甚至数百万个帧,因此从人类的角度来看,不可能区分多个流-所有这些看起来都是“同时的”。


请与其他答复者@jonathanjo聚在一起,找出1000Base-T的正确描述。
davidbak

1
jonathanjo的“相同媒介”描述了一个千兆端口以太网(实际上)不存在的多端口冲突域,并且对于10/100 Mbit也已经过时了。
Zac67 '18 -10-18

2
@davidbak在我看来似乎完全正确-扎克通常是!-只是重点不同。我在回答中做了一些修改,包括弄清在实际的1000baseT中不会发生冲突。
jonathanjo

2
为此,您还必须添加PAM16和类似的编码,这些编码基本上使多个位变为1。
PlasmaHH

1
@PlasmaHH 1000BASE-T已经使用了四个通道和PAM5,因此每个时钟步长大约有9.3个原始位(当然,L1的8个“用户”位为125 MBd)。
Zac67 '18 -10-18

13

现在让我们忽略“千兆位”部分,只关注“ 2个设备正在同时发送”部分。

共享媒体上,这实际上可能发生并且是一个问题。大多数无线传输都是共享媒体,而以太网在过去曾经是:

  • 10base2(同轴电缆)使用的几乎是一根电缆,每根电缆上都有一根电缆。显然,两个(或更多)站能够同时发送;
  • 具有集线器(而不是交换机)的10baseT100baseT(基于双绞线)还意味着两个(或多个)站可以同时传输,因为从任何连接的设备接收到的信号只是重复到所有其他设备。

现在,如果两个设备同时发送,则可能会发生两件事:

  • 您使用某种形式的多路复用(时分,频分...),该方式允许使用单独的“通道”,这样一个通道就可以收听特定的通道,而不会被其他通道所困扰。这在无线传输中使用很多,而在有线传输中使用更少(光纤上的WDM / DWDM是一个例外)。

  • 或如果两个或多个设备在同一频道上同时发送,那么您会得到所谓的冲突:就像两个人同时讲话时一样,您听不懂对方说了什么,接收设备却不是能够解码任何设备发送的数据(或更经常地,他们可以解码它,但是没有意义,并且不会通过CRC检查)。

这是CSMA-CD(载波侦听多路访问,冲突检测)之类的方案出现的地方:

  • 在尝试传输之前,设备会检查其他人是否正在发送(载波侦听)
  • 如果频道空闲,则开始传输。
  • 但是即使这样,两个设备也可以完全同时启动,因此仍然会发生冲突。
  • 为避免浪费过多的时间,设备会检测到冲突(通过比较发送的内容和接收的内容:如果不匹配,则意味着其他人正在同时发送内容),中止传输,并在随机延迟后重试(以免发生新的碰撞)。

这很有趣,在负载较轻的网络上也能很好地工作,但是一旦流量变得巨大,您将面临大量的冲突,进而增加了共享媒体的使用率,进而导致了更多的冲突,因此可能会变得很糟糕。

答案是切换到全双工交换网络。集线器只是重复发出信号而没有考虑。另一方面,交换机确实会收到一个帧,然后在目标链接上重新发送它(额外的好处:该帧不会发送给所有人,在大多数情况下只是发送给目标)。

如果两个设备发送到同一目标设备,则交换机将对其中一个帧进行排队,因此,同时发送的两个帧实际上一个接一个地到达目的地。

除此之外,在物理层面上,很有可能通过几对甚至几条并行电缆交换数据。是在位级别完成此操作,还是在每对/电缆上发送整个帧,取决于所使用的确切技术。但是我认为这不是您真正的问题。


1
这是一个很好的观点-可能是该问题的最合适答案。我可能会补充说,当您达到极高的速度(光纤)时,通常将它们限制为一条线上的单个发送者和单个接收者,以避免冲突。如果需要添加另一个输入,则将其输入另一个通道并与传入流合并,然后发送到传出流。这些天,甚至以太网都倾向于“交换”式以避免冲突-这些天,您看到冲突的主要地点(问题中有2台设备与一个设备通话)是wifi-其他大多数情况是1个发送方对1个接收方
Bill K

12

这一特殊情况很复杂。

关于1000baseT。

首先:一般来说,两个设备正在同时传输时,通常它们实际上并没有在同一介质上的同一时刻发送比特。如果这样做,则会发生冲突,并且所有的侦听设备都可以解决此问题(最终通过各种冲突检测方案来解决)。因此,两个传输设备将在稍有不同的时刻访问媒体。但是在1000baseT中,给定的一对对上只有两个设备。通常,一台设备是交换机,另一台是主机。

其次,1000baseT一次在一对上传输两个数据位,并以五种电压电平的复杂方式进行编码。因此,它是线路上的一系列以4为底的数字,而不是一系列以2为底的数字。

第三,1000baseT可以在同一对上同时在两个方向上进行传输。它可以通过称为混合电路的电路将输出信号与输入信号分离。

在其他媒体上的千兆以太网的行为有所不同。较慢的速度(例如10baseT和100baseT)具有更简单的方案。集线器上的10baseT确实确实存在实际冲突;over交换通常由交换器组织,以便将传出的帧排队;如果是全双工,则完全没有冲突。


请与其他回答者@ Zac67一起使用,找出1000Base-T的正确描述。
davidbak

@jonathanjo您对3位符号是正确的,但是只有5个PAM级别。大致来说,它是一个8位到4个3位符号以及加扰编码,其中3位符号被映射到(移位的)PAM级别。
Zac67 '18 -10-18

@davidbak感谢您捡起它。我简化了描述,以涵盖要点(复杂而不是二进制),并消除了错误。感谢Zac的澄清。
jonathanjo

7

假设所有有线以太网链接都在这里。

当同一网段上的两个设备同时发送时,无论它们发送给谁,这都称为冲突。发生碰撞时,任何一条消息都不会通过。幸运的是,发件人能够检测到冲突。发生这种情况时,每个发件人将随机选择一个时间量(一秒钟的很小一部分)以等待重试,然后重复该过程,直到最终只有一个发件人处于活动状态。

但这几乎不再发生。

取而代之的是,如今大多数有线连接都是通过交换网络进行的,每个设备(发送者和接收者)都连接到交换机上各自的端口。数据被分成数据包(实际上是:frames),并且交换机将确保一次每个端口上只有一个数据包处于活动状态。如果链路繁忙,则当链路再次可用时,交换机将存储其他帧并将其转发到接收器。

使用此方案,发生冲突的唯一方法是:有多个设备通过未切换的集线器连接到交换机或彼此连接(某些家庭wifi“路由器”型号的端口仍未切换),或者当交换机和设备之间的链路以半双工模式运行

相反,我们要处理的是拥堵。我们可能没有冲突,但是网络上的一个受欢迎的主机可能有一些设备想要发送比链接所能支持的更多的数据和数据包,以至于缓冲区已满。但这是另一个问题。


1
细看,但在以太网级别上,它将是而不是数据包
jcaron

1
@jcaron Nit-nit-picking:当然,通常我们使用“数据包”来表示“ IP数据包”,它是按照RFC 791进行组织的,是以太网帧的“ MAC客户端数据”。但是,“以太网数据包”被定义为所有传输的内容,包括前导的开始到扩展位的末尾。“帧”是从目的地址到帧检查的那一部分。(802.3-2015第3.1.1节“数据包格式”)。我曾说过,该交换机可确保一次发送一个以太数据包,并存储和转发以太
jonathanjo

5

我认为您需要对以太网的工作原理有一些基本的了解。例如,发送主机将发送交替的“ 1”和“ 0”的前同步码,以引起接收主机的注意。当接收主机连续看到两个时,它知道下一帧。一旦帧被发送,则在发送另一帧之前,线上必须存在96位的静默。

不同的以太网标准将使用不同的编码。例如,100Base-T使用4B5B,它每四位数据发送五位。


1

(对于这个问题,我假设使用集线器共享网络。)

网络适​​配器是否读取单个流中的输入位?

是。无论采用哪种PHY,它都是单个输入流。来自多个设备的通信无法同时成功到达单个NIC(MAC地址)。

我的假设是,从设备3的网络适配器的角度来看,所有0和1都出现在单个数据流中”

“单数据流”是的,但是在您的两个设备同时发送的示例中,将没有数据流到达以进行进一步处理。1和0的“帧”将发生冲突。

它可以确定来自设备1或设备2的数据,但该数据仍然只是数百万/十亿比特的一个流。

不,它不能。当信号合并时,将检测到冲突,并丢弃该帧。

我完全错了吗?

您的问题标题是正确的陈述,但是您在Q帖子中的讨论暗示您的理解和假设是错误的。

进一步

  • 不管“网络适配器”的类型如何,它们仅接收单个比特流。
  • 用于发送信号的物理装置可以包括数据的多个子流,但是这些子流和这种物理处理不被认为是“网络适配器”;这些子流是相互依赖的,需要将它们组合在一起才有意义。并且,这些子流必须源自单一来源。
  • 如果不确定该答案(以及此处的其他答案),则需要学习交换式分组以太网/ IP网络的基础知识。

对于这个问题,我假设使用集线器共享网络 -称为千兆网卡的OP,而GbE实际上不存在半双工模式。;-)
Zac67 '19

@ Zac67我就像一个慷慨而乐于助人的陌生人。我假设OP任意选择了“千兆”,并且他们没有意识到会有矛盾。这最终使我最终直接,简单地回答了问题的标题。OP可以阅读其他答案以进一步了解矛盾。
托德
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.