是否可以在一个0和1的流中看到所有数据?还是有某种方式同时出现多个0和1的流?
例如...假设有两个发送设备和一个接收设备。
设备1和2开始同时将网络数据发送到Device3。
我的假设是,从Device 3的网络适配器的角度来看,所有0和1都在单个数据流中出现。它可以确定来自设备1或设备2的数据是什么,但数据仍然只是数百万/数十亿比特的一个流。
我完全错了吗? :)
#1 楼
这取决于。虽然许多以太网PHY以纯串行方式(例如100BASE-TX,1000BASE-SX,10GBASE-SR)传输数据,但有些将数据流拆分为多个并行传输的通道。
最常见的是1000BASE-T-通用的千兆位铜缆变体-将编码的数据流分成四个通道,并分别通过Cat-5电缆的四个双绞线之一传输。 。从千兆位以上的所有双绞线变体都使用这四个通道。
某些高速(10G +)光纤PHY在多达16根光纤(具有多模光纤和短距离)上也使用多通道,或者波长(使用单模光纤和长距离)。
但是,所有内容都以帧的形式传输,每个帧都从一个源传播到一个目的地。框架通常是原子的,即。它们总是一成不变地传输。每个帧仅传输来自单个特定连接/应用程序的数据。它的标头包含源地址和目标地址,因此可以在网络上查找其路径。
当网络同时从同一目标端口的不同源接收两个帧时,其中一个帧需要要排队等待,直到到达目标的交换机端口完成传输第一帧为止。
假定源和目标以相同的速度运行,而这不一定是正确的。您可能有一个通过1 Gbit / s链接连接的文件服务器,并且有十个客户端,每个客户端在其100 Mbit / s链接上全速发送而没有(大量)排队。这有点接近您的“多流”建议,只是这些流是在帧级别而不是比特级别交错的。
网络端口上的速率可以是数千甚至数百万个帧。一秒钟,因此从人的角度看,不可能区分多个流-所有流似乎都是“同时的”。
评论
请与其他回答者@jonathanjo聚在一起,找出1000Base-T的正确描述。
– davidbak
18-10-18在2:52
jonathanjo的“相同媒介”描述了一个千兆端口以太网(实际上)不存在的多端口冲突域,并且对于10/100 Mbit也已经过时了。
– Zac67
18-10-18在5:11
@davidbak在我看来似乎都是正确的-扎克通常是! -只是重点不同。我在回答中做了一些修改,包括弄清在实际的1000baseT中不会发生冲突。
– jonathanjo
18-10-18在8:59
为此,您还必须添加PAM16和类似的编码,这些编码基本上使多个位变为1。
– PlasmaHH
18-10-18在9:13
@PlasmaHH 1000BASE-T已经使用了四个通道和PAM5,因此每个时钟步长大约有9.3个原始位(当然,L1的8个“用户”位为125 MBd)。
– Zac67
18-10-18在12:56
#2 楼
现在让我们忽略千兆部分,只关注“两个设备正在同时发送”部分。在共享媒体上,这实际上可能会发生并且是一个问题。大多数无线传输都是共享媒体,而以太网在过去曾经是:
10base2(同轴电缆)几乎每根电缆都使用一根电缆一个就可以了。显然,两个(或更多)站能够同时传输;
10baseT和100baseT(基于双绞线),带有集线器(而不是交换机)也意味着两个(或更多)电台可以同时发送,因为从任何已连接设备接收到的信号只是重复发送给所有其他设备。
现在,如果两个设备同时发送,则可能会发生两件事:
,您使用某种形式的多路复用(时分,频分...),该多路复用允许使用单独的“通道”,以便一个通道可以收听特定的通道,而不会被其他通道所打扰。这在无线传输中使用很多,在有线传输中使用较少(光纤上的WDM / DWDM是一个例外)。
或者如果两个或多个设备同时在同一信道上发送,那么您会得到什么称为冲突:就像两个人同时讲话时一样,您听不懂对方说了什么,接收设备无法解码任何设备发送的数据(或更经常地,他们可以解码,但这是没有意义的,并且不会通过CRC检查。)
CSMA-CD(载波侦听多路访问,冲突检测)之类的方案就是在这里出现的:
在尝试传输之前,一台设备会检查其他人是否正在发送信号(载波侦听)
如果信道空闲,它将开始传输。
即使如此,两个设备仍可以启动同时进行,因此您仍然可能发生碰撞。
为了避免浪费过多的时间,设备会检测到冲突(通过比较发送的内容和接收的内容:如果不匹配,则意味着其他人正在同时发送内容),中止传输,并在随机延迟后重试(以尝试避免新的冲突)。
这很有趣,在负载较轻的网络上也能很好地工作,但是一旦流量变得很大,您就会结束大量的冲突,进而增加了共享媒体的使用量,进而导致更多的冲突,因此可能变得非常糟糕。
答案是切换到全双工切换网络。集线器只是不假思索地重复发出信号。另一方面,切换器确实会收到一个帧,然后在目标链接上重新发送它(额外的好处:该帧不会发送给所有人,在大多数情况下只是发送给目标)。
如果两个设备发送到同一目标设备,则交换机将对其中一个帧进行排队,因此,同时发送的两个帧实际上一个接一个地到达目的地。 br />
除此之外,在物理层面上,很有可能通过几对甚至几条并行电缆交换数据。是在位级别完成此操作,还是在每对/电缆上发送整个帧,取决于所使用的确切技术。但我认为这并不是您真正的问题。
评论
这是一个很好的观点-可能是该问题的最合适答案。我可能会补充说,当您达到极高的速度(光纤)时,通常将它们限制为一条线上的单个发送者和单个接收者,以避免冲突。如果需要添加另一个输入,则将其输入另一个通道并与传入流合并,然后发送到传出流。如今,即使是以太网也倾向于“交换”以避免冲突-这些天,您看到冲突的主要地点(问题中有2台设备与一个设备通话)是wifi-其余大多数都是1个发送方对1个接收方
– Bill K
18-10-18在16:21
#3 楼
这种特殊情况很复杂。关于1000baseT。
首先:当我们通常说两个设备正在同时发送时,它们通常实际上并不是在发送位在同一媒体上的同一时刻。如果这样做,则会发生冲突,并且所有的侦听设备都将解决此问题(最终通过各种冲突检测方案进行解决)。因此,两个传输设备将在稍有不同的时刻访问媒体。但是在1000baseT中,给定的一对对上只有两个设备。通常,一个设备是交换机,另一个是主机。
第二,1000baseT一次在一对设备上传输两个数据位,并以五种电压电平以复杂的方式进行编码。因此,它是线路上的一系列以4为基数的数字,而不是一系列以2为基数的数字。
第三,1000baseT可以同时在同一方向上双向传输。它可以通过称为混合电路将输出信号与输入信号分开。
其他介质上的千兆以太网的行为有所不同。较慢的速度(例如10baseT和100baseT)具有更简单的方案。集线器上的10baseT确实确实存在实际冲突; over交换通常由交换器组织,以便将传出的帧排队;如果是全双工,则完全没有冲突。
评论
请与其他答题器@ Zac67一起使用,找出1000Base-T的正确描述。
– davidbak
18-10-18在2:52
@jonathanjo您对3位符号是正确的,但是只有5个PAM级别。大致来说,它是一个8位到4个3位符号以及加扰编码,其中3位符号被映射到(移位的)PAM级别。
– Zac67
18-10-18在5:34
@davidbak感谢您捡起它。我简化了描述,以涵盖要点(复杂而不是二进制),并消除了错误。感谢Zac的澄清。
– jonathanjo
18-10-18在8:49
#4 楼
假定所有有线以太网链接都在这里。当同一网段上的两个设备同时发送时,无论它们发送给谁,都称为冲突。发生碰撞时,任何一条消息都不会通过。幸运的是,发件人能够检测到冲突。发生这种情况时,每个发件人都会随机选择一个时间(一小部分)等待并重试,然后重复该过程,直到最终只有一个发件人处于活动状态。
相反,如今大多数有线连接都是通过交换网络建立的,其中每个设备(发送方和接收方)都连接到交换机上各自的端口。数据被分成数据包(实际上是帧),并且交换机将确保每个端口一次仅激活一个数据包。如果链接繁忙,则当该链接再次可用时,交换机将存储其他帧并将其转发到接收器。
使用此方案,发生冲突的唯一方法是当一个或多个通过未切换的集线器连接到交换机或彼此连接的设备(某些型号的家庭wifi“路由器”的端口仍未切换),或者当交换机和设备之间的链路以半双工模式运行时。
我们要处理的是拥堵。我们可能没有冲突,但是网络上的一个受欢迎的主机可能有想要发送比链接所支持的更多的数据和数据包的设备,以至于缓冲区已满。但这又是另一个问题。
评论
细看,但在以太网级别,它将是帧而不是数据包。
– jcaron
18-10-17在20:40
@jcaron Nit-nit-picking:当然,通常我们使用“数据包”来表示“ IP数据包”,它是按照RFC 791进行组织的,并且是以太网帧的“ MAC客户端数据”。但是,“以太网数据包”被定义为所传输的所有内容,包括前导的开始到扩展位的末尾。 “帧”是从目的地址到帧检查的那一部分。 (802.3-2015第3.1.1节“数据包格式”)。我曾说过,该交换机可确保一次发送一个以太数据包,并存储和转发以太帧。
– jonathanjo
18-10-18在10:21
#5 楼
我认为您需要对以太网的工作原理有一些基本的了解。例如,发送主机将发送交替的1和0的前同步码,以引起接收主机的注意。当接收主机连续看到两个时,它知道下一帧。一旦帧被发送,则在发送另一帧之前,线路上必须保持96位静默。不同的以太网标准将使用不同的编码。例如,100Base-T使用4B5B,它每四位数据发送五位。
#6 楼
(对于这个问题,我假设使用集线器共享的网络。)网络适配器是否读取单个流中的传入位?
是的。无论采用哪种PHY,它都是一个输入流。来自多个设备的通信无法同时成功到达单个NIC(MAC地址)。
我的假设是,从设备3的网络适配器的角度来看,
所有0和1都在单个数据流中出现。“
”单个流“是的,但是在两个设备同时发送的示例中,将没有数据流到达进行进一步处理; 1和0的“帧”将发生冲突。
可以找出来自设备1或设备2的数据,但数据仍然是
不是这样。当信号合并时,会检测到冲突,并丢弃该帧。
我完全错了吗?
您的问题标题是正确的陈述,但是您在Q帖子中的讨论暗示您的理解和假设是错误的。
进一步
无论“网络适配器”的类型如何tor”,它们只接收单个比特流。
用于传输信号的物理装置可以包括多个数据子流,但是这些子流以及这种物理处理不被视为“网络适配器”;这些子流是相互依赖的,需要将它们组合在一起才有意义。并且,这些子流必须源自单一来源。
如果不确定此答案(以及此处的其他答案),则需要学习交换式分组以太网/ IP网络的基础知识。
评论
对于这个问题,我假设使用一个集线器共享网络-称为千兆网卡的OP,而GbE实际上不存在半双工模式。 ;-)
– Zac67
19年8月9日在9:03
@ Zac67我就像一个慷慨而乐于助人的陌生人。我假设OP任意选择了“千兆”,并且他们没有意识到会有矛盾。这最终使我最终直接,简单地回答了问题的标题。 OP可以阅读其他答案以进一步了解矛盾。
–托德
19年8月10日在10:50
评论
您是指半双工连接还是使用全双工?即使1000Base-T仍处于该标准中,也从来没有任何半双工设备。使用全双工连接时,链路上不会有两个设备同时争用第三个设备的帧。全双工。好的,因此,仍然只有一个0和1的流(例如0101010101000101001010100101010000100001101011010),从设备3的角度(接收者)来看,虽然设备1和2可以轮流打开该流,但它们永远不会正好同时发送0和1,对吧?
有什么答案对您有帮助吗?如果是这样,您应该接受答案,这样问题就不会永远弹出来寻找答案。或者,您可以发布并接受自己的答案。