千兆位网络适配器正在接收数据时,它如何接收这些位?是否可以在0和1的流中看到全部内容?还是以某种方式同时出现多个0和1的流?
例如...假设有两个发送设备和一个接收设备。
设备1和2开始同时将网络数据发送到设备3。
我的假设是,从设备3的网络适配器的角度来看,所有0和1都出现在单个数据流中。它可以确定来自设备1或设备2的数据,但该数据仍然只是数百万/十亿比特的一个流。
我完全错了吗?:)
千兆位网络适配器正在接收数据时,它如何接收这些位?是否可以在0和1的流中看到全部内容?还是以某种方式同时出现多个0和1的流?
例如...假设有两个发送设备和一个接收设备。
设备1和2开始同时将网络数据发送到设备3。
我的假设是,从设备3的网络适配器的角度来看,所有0和1都出现在单个数据流中。它可以确定来自设备1或设备2的数据,但该数据仍然只是数百万/十亿比特的一个流。
我完全错了吗?:)
Answers:
这取决于。
虽然许多以太网PHY以纯串行方式(例如100BASE-TX,1000BASE-SX,10GBASE-SR)传输数据,但有些以太网PHY却将数据流分成并行传输的多个通道。
最常见的是,1000BASE-T(铜缆上的千兆位通用变体)将编码的数据流分成四个通道,并分别通过Cat-5电缆的四对双绞线之一进行传输。从千兆位以上的所有双绞线变体都使用这四个通道。
某些高速(10G +)光纤PHY还使用多达16条光纤(使用多模光纤和短距离)或波长(使用单模光纤和长距离)的多条通道。
但是,所有内容都以帧的形式传输,每个帧都从一个源运行到一个目标。框架通常是原子的,即。它们总是一成不变地传输。每个帧仅传输来自单个特定连接/应用程序的数据。它的标头包含源地址和目标地址,因此可以通过网络找到其方式。
当网络同时从同一来源的不同端口接收到来自不同源的两个帧时,其中一个帧需要排队,直到到达目的地的交换机端口已完成传输第一帧为止。
假设源和目标以相同的速度运行,而这不一定是正确的。您可能有一个通过1 Gbit / s链接连接的文件服务器,并且有十个客户端,每个客户端在其100 Mbit / s链接上全速发送而没有(大量)排队。这有点接近您的“多流”建议,只是这些流是在帧级别而不是比特级别交错的。
网络端口的速率在一秒钟内可以达到数千甚至数百万个帧,因此从人类的角度来看,不可能区分多个流-所有这些看起来都是“同时的”。
现在让我们忽略“千兆位”部分,只关注“ 2个设备正在同时发送”部分。
在共享媒体上,这实际上可能发生并且是一个问题。大多数无线传输都是共享媒体,而以太网在过去曾经是:
现在,如果两个设备同时发送,则可能会发生两件事:
您使用某种形式的多路复用(时分,频分...),该方式允许使用单独的“通道”,这样一个通道就可以收听特定的通道,而不会被其他通道所困扰。这在无线传输中使用很多,而在有线传输中使用更少(光纤上的WDM / DWDM是一个例外)。
或如果两个或多个设备在同一频道上同时发送,那么您会得到所谓的冲突:就像两个人同时讲话时一样,您听不懂对方说了什么,接收设备却不是能够解码任何设备发送的数据(或更经常地,他们可以解码它,但是没有意义,并且不会通过CRC检查)。
这是CSMA-CD(载波侦听多路访问,冲突检测)之类的方案出现的地方:
这很有趣,在负载较轻的网络上也能很好地工作,但是一旦流量变得巨大,您将面临大量的冲突,进而增加了共享媒体的使用率,进而导致了更多的冲突,因此可能会变得很糟糕。
答案是切换到全双工交换网络。集线器只是重复发出信号而没有考虑。另一方面,交换机确实会收到一个帧,然后在目标链接上重新发送它(额外的好处:该帧不会发送给所有人,在大多数情况下只是发送给目标)。
如果两个设备发送到同一目标设备,则交换机将对其中一个帧进行排队,因此,同时发送的两个帧实际上一个接一个地到达目的地。
除此之外,在物理层面上,很有可能通过几对甚至几条并行电缆交换数据。是在位级别完成此操作,还是在每对/电缆上发送整个帧,取决于所使用的确切技术。但是我认为这不是您真正的问题。
这一特殊情况很复杂。
关于1000baseT。
首先:一般来说,两个设备正在同时传输时,通常它们实际上并没有在同一介质上的同一时刻发送比特。如果这样做,则会发生冲突,并且所有的侦听设备都可以解决此问题(最终通过各种冲突检测方案来解决)。因此,两个传输设备将在稍有不同的时刻访问媒体。但是在1000baseT中,给定的一对对上只有两个设备。通常,一台设备是交换机,另一台是主机。
其次,1000baseT一次在一对上传输两个数据位,并以五种电压电平的复杂方式进行编码。因此,它是线路上的一系列以4为底的数字,而不是一系列以2为底的数字。
第三,1000baseT可以在同一对上同时在两个方向上进行传输。它可以通过称为混合电路的电路将输出信号与输入信号分离。
在其他媒体上的千兆以太网的行为有所不同。较慢的速度(例如10baseT和100baseT)具有更简单的方案。集线器上的10baseT确实确实存在实际冲突;over交换通常由交换器组织,以便将传出的帧排队;如果是全双工,则完全没有冲突。
假设所有有线以太网链接都在这里。
当同一网段上的两个设备同时发送时,无论它们发送给谁,这都称为冲突。发生碰撞时,任何一条消息都不会通过。幸运的是,发件人能够检测到冲突。发生这种情况时,每个发件人将随机选择一个时间量(一秒钟的很小一部分)以等待重试,然后重复该过程,直到最终只有一个发件人处于活动状态。
但这几乎不再发生。
取而代之的是,如今大多数有线连接都是通过交换网络进行的,每个设备(发送者和接收者)都连接到交换机上各自的端口。数据被分成数据包(实际上是:frames),并且交换机将确保一次每个端口上只有一个数据包处于活动状态。如果链路繁忙,则当链路再次可用时,交换机将存储其他帧并将其转发到接收器。
使用此方案,发生冲突的唯一方法是:有多个设备通过未切换的集线器连接到交换机或彼此连接(某些家庭wifi“路由器”型号的端口仍未切换),或者当交换机和设备之间的链路以半双工模式运行。
相反,我们要处理的是拥堵。我们可能没有冲突,但是网络上的一个受欢迎的主机可能有一些设备想要发送比链接所能支持的更多的数据和数据包,以至于缓冲区已满。但这是另一个问题。
(对于这个问题,我假设使用集线器共享网络。)
网络适配器是否读取单个流中的输入位?
是。无论采用哪种PHY,它都是单个输入流。来自多个设备的通信无法同时成功到达单个NIC(MAC地址)。
我的假设是,从设备3的网络适配器的角度来看,所有0和1都出现在单个数据流中”
“单数据流”是的,但是在您的两个设备同时发送的示例中,将没有数据流到达以进行进一步处理。1和0的“帧”将发生冲突。
它可以确定来自设备1或设备2的数据,但该数据仍然只是数百万/十亿比特的一个流。
不,它不能。当信号合并时,将检测到冲突,并丢弃该帧。
我完全错了吗?
您的问题标题是正确的陈述,但是您在Q帖子中的讨论暗示您的理解和假设是错误的。
进一步