Os adaptadores de rede leem os bits recebidos em um único fluxo?

9

Quando um adaptador de rede Gigabit está recebendo dados, como está recebendo os bits? Está vendo tudo em um fluxo de zeros e zeros? Ou, de alguma forma, existem vários fluxos de 0 e 1 chegando ao mesmo tempo?

Por exemplo ... digamos que haja dois dispositivos de envio e um dispositivo de recebimento.

Os dispositivos 1 e 2 começam a enviar dados de rede para o dispositivo 3 ao mesmo tempo.

Suponho que, do ponto de vista do adaptador de rede do dispositivo 3, todos os zeros e zeros estejam aparecendo em um único fluxo de dados. Ele pode descobrir quais dados são do dispositivo 1 ou 2, mas os dados ainda são apenas um fluxo de milhões / bilhões de bits.

Estou totalmente errado? :)

shihku7
fonte
11
Você quer dizer uma conexão half-duplex ou usando full-duplex? Nunca houve dispositivos half-duplex para o 1000Base-T, embora ainda esteja nesse padrão. Com uma conexão full-duplex, não haveria quadros de dois dispositivos disputando o terceiro dispositivo ao mesmo tempo no link.
Ron Maupin
full-duplex. OK, então ainda haveria um único fluxo de zeros e zeros (ex: 01010101010001010010101001010100001101011010) e do ponto de vista do dispositivo 3 (o receptor), enquanto os dispositivos 1 e 2 poderiam se alternar nesse fluxo, eles nunca estar enviando 0 e 1 ao mesmo tempo, certo?
shihku7
Alguma resposta o ajudou? Nesse caso, você deve aceitar a resposta para que a pergunta não apareça para sempre, procurando uma resposta. Como alternativa, você pode fornecer e aceitar sua própria resposta.
Ron Maupin

Respostas:

14

Depende.

Enquanto muitos PHYs Ethernet transmitem dados de maneira puramente serial (por exemplo, 100BASE-TX, 1000BASE-SX, 10GBASE-SR), alguns dividem o fluxo de dados em várias faixas que são transmitidas em paralelo.

Mais comumente, o 1000BASE-T - a variante comum de gigabit sobre cobre - divide o fluxo de dados codificado em quatro faixas e transmite cada um separadamente em um dos quatro pares trançados em um cabo Cat-5. Todas as variantes de par trançado de gigabit para cima usam essas quatro pistas.

Alguns PHYs de fibra de alta velocidade (10G +) também usam várias faixas com até dezesseis fibras (com fibra multimodo e curto alcance) ou comprimentos de onda (com fibra monomodo e longo alcance).

No entanto, tudo é transmitido em quadros que cada um executa de uma única fonte para um único destino. Os quadros são geralmente atômicos, ie. eles são sempre transmitidos em uma peça. Cada quadro transporta apenas dados de uma única conexão / aplicativo específico. Seu cabeçalho contém endereços de origem e destino, para que você possa encontrar o caminho pela rede.

Quando a rede recebe dois quadros de fontes diferentes para a mesma porta de destino ao mesmo tempo, um dos quadros precisa ser enfileirado até que a porta do switch em direção ao destino termine de transmitir o primeiro quadro.

Isso pressupõe que as fontes e o destino sejam executados na mesma velocidade que não é necessariamente verdadeira. Você pode ter um servidor de arquivos conectado por um link de 1 Gbit / s e dez clientes, cada um enviando velocidade máxima em seus links de 100 Mbit / s sem fila (significativa). Isso se aproxima um pouco da sua sugestão de "múltiplos fluxos", apenas que esses fluxos são intercalados no nível do quadro, não no nível do bit.

A taxa em uma porta de rede pode ser de milhares ou até milhões de quadros em um único segundo; portanto, da perspectiva humana, é impossível diferenciar múltiplos fluxos - tudo parece "simultâneo".

Zac67
fonte
Por favor, reúna-se com outro respondente @jonathanjo e descubra qual descrição do 1000Base-T está correta.
Davidbak 18/10/19
11
O "mesmo meio" de jonathanjo está descrevendo um domínio de colisão multiportas que não existe (praticamente) com Gigabit Ethernet e é obsoleto por 10/100 Mbit também.
Zac67 18/10
2
@davidbak parece tudo correto aqui para mim - Zac geralmente é! - apenas ênfase diferente. Corrigi algumas coisas na minha resposta, incluindo colisões de esclarecimentos que não ocorrem na prática 1000baseT.
Jonathanjo
2
Para isso, você também precisa adicionar o PAM16 e codificações semelhantes que fazem basicamente vários bits chegarem a um.
PlasmaHH
11
O @PlasmaHH 1000BASE-T já usa quatro pistas e o PAM5; portanto, existem aproximadamente 9,3 bits brutos em cada etapa do relógio (e, é claro, 8 bits de "usuário" a 125 MBd para L1).
Zac67 # 18/18
13

Vamos ignorar a parte Gigabit por enquanto e focar um pouco na parte "2 dispositivos estão enviando ao mesmo tempo".

Em mídia compartilhada , isso pode realmente acontecer e ser um problema. A maioria das transmissões sem fio são mídias compartilhadas, e a Ethernet, antigamente, costumava ser:

  • O 10base2 ( cabo coaxial) usou o que era mais ou menos um único cabo com todos os cabos. Obviamente, duas (ou mais) estações foram capazes de transmitir ao mesmo tempo;
  • 10baseT e 100baseT (com base em par trançado), com hubs (em vez de comutadores) também significava que duas (ou mais) estações podiam transmitir ao mesmo tempo, pois o sinal recebido de qualquer dispositivo conectado era apenas repetido para todos os outros.

Agora, se dois dispositivos estiverem enviando ao mesmo tempo, duas coisas podem acontecer:

  • você usa alguma forma de multiplexação (divisão do tempo, divisão da frequência ...) que permite "canais" separados para que um possa ouvir um canal específico e não se incomode com os outros. Isso é muito usado para transmissões sem fio, muito menos para transmissões com fio (WDM / DWDM em fibras sendo uma exceção).

  • ou se dois ou mais dispositivos estão enviando ao mesmo tempo no mesmo canal, você recebe o que é chamado de colisão : como quando duas pessoas estão falando ao mesmo tempo, você não consegue entender o que dizem, os dispositivos receptores não são capaz de decodificar os dados enviados por qualquer um dos dispositivos (ou mais frequentemente, eles podem decodificá-los, mas não faz sentido e não serão aprovados nas verificações de CRC).

Foi aqui que surgiram esquemas como o CSMA-CD (acesso múltiplo à portadora, detecção de colisão):

  • Antes de tentar transmitir, um dispositivo verifica se outra pessoa está enviando (sentido da operadora)
  • Se o canal estiver livre, ele começará a transmitir.
  • Mas mesmo com isso, dois dispositivos podem iniciar exatamente ao mesmo tempo, para que você ainda possa ter uma colisão.
  • Para evitar desperdiçar muito tempo no canal, os dispositivos detectariam colisões (comparando o que enviam com o que recebem: se não corresponder, significa que alguém está enviando ao mesmo tempo), abortar a transmissão, e tente novamente após um atraso aleatório (para tentar evitar uma nova colisão).

Isso foi muito divertido e, em redes pouco carregadas, funcionou muito bem, mas, assim que o tráfego se tornasse significativo, você acabaria com várias colisões, o que por sua vez aumentaria o uso da mídia compartilhada, o que, por sua vez, resultaria em mais colisões, para que pudesse ficar muito ruim.

A resposta para isso foi mudar para redes comutadas full-duplex . Hubs apenas repetiram o sinal sem pensar. Os comutadores, por outro lado, realmente recebem um quadro e reenviam-no no link de destino (bônus adicional: o quadro não é enviado a todos, apenas ao destino na maioria dos casos).

Se dois dispositivos enviarem para o mesmo dispositivo de destino, o comutador enfileirará um dos quadros, para que os dois quadros enviados ao mesmo tempo cheguem um após o outro ao destino.

Além disso, no nível físico, é bem possível a troca de dados através de vários pares ou mesmo de vários cabos em paralelo. Se isso é feito no nível de bit ou se são enviados quadros inteiros em cada par / cabo, depende da tecnologia exata usada. Mas acho que essa não foi realmente a sua pergunta.

jcaron
fonte
11
Esse é um ponto excelente - provavelmente a resposta mais apropriada para a pergunta. Devo acrescentar que, à medida que você alcança velocidades realmente altas (fibra), elas geralmente são restritas a um único remetente e único receptor em uma linha para evitar colisões. Se outra entrada precisar ser adicionada, ela é capturada em outro canal e combinada com o fluxo de entrada e enviada para um fluxo de saída. Hoje em dia, até a Ethernet tende a ser "comutada", o que evita colisões - o local principal em que você vê colisões (2 dispositivos conversando com um como na pergunta) atualmente é wifi - quase todo o resto é de 1 remetente a 1 destinatário
Bill K
12

Este caso em particular é complexo.

Em relação ao 1000baseT.

Primeiro: quando dizemos em geral que dois dispositivos estão transmitindo ao mesmo tempo, normalmente eles não estão realmente enviando bits no mesmo instante no mesmo meio. Se o fizerem, haverá uma colisão e todos os dispositivos de escuta resolverão isso (eventualmente, através de vários esquemas de detecção de colisão). Portanto, dois dispositivos de transmissão terão acesso ao meio em momentos ligeiramente diferentes. Mas no 1000baseT existem apenas dois dispositivos em um determinado conjunto de pares; normalmente um dispositivo é um comutador e o outro é um host.

Segundo, o 1000baseT transmite dois bits de dados por vez em um par, codificados de maneira complexa em cinco níveis de tensão. Portanto, é uma série de dígitos de base 4 no fio, não uma série de dígitos de base 2.

Terceiro, o 1000baseT pode transmitir nas duas direções ao mesmo tempo, no mesmo par. Ele pode separar o sinal de saída do sinal de entrada por um circuito chamado híbrido.

A Ethernet Gigabit sobre outras mídias se comporta de maneira diferente. Velocidades mais baixas, por exemplo, 10baseT e 100baseT possuem esquemas mais simples. O 10baseT em um hub realmente tem colisões reais; over switches é normalmente organizado pelo switch para que os quadros de saída sejam enfileirados; se for full duplex, não haverá colisões.

jonathanjo
fonte
Por favor, reúna-se com outro respondente @ Zac67 e descubra qual descrição do 1000Base-T está correta.
Davidbak 18/10/19
@jonathanjo Você está certo quanto aos símbolos de três bits, mas existem apenas cinco níveis de PAM. Aproximadamente, trata-se de símbolos de 8 a 4 bits, além de codificação codificada em que os símbolos de 3 bits são mapeados para os níveis (alternantes) do PAM.
Zac67 # 18/18
@davidbak obrigado por buscá-lo. Simplifiquei a descrição para cobrir o ponto principal (complexo e não binário) e me livrar do erro. Obrigado Zac por esclarecer.
jonathanjo
7

Assumindo todos os links Ethernet com fio aqui.

Quando dois dispositivos no mesmo segmento de rede enviam ao mesmo tempo, não importa para quem eles enviam, isso é chamado de colisão . Nenhuma mensagem é transmitida quando ocorre uma colisão. Felizmente, os remetentes têm a capacidade de detectar colisões. Quando isso acontece, cada remetente escolhe uma quantidade aleatória de tempo (pequenas frações de segundo) para aguardar e tentar novamente e repita o processo até que apenas um remetente esteja ativo.

Mas isso quase nunca acontece mais.

Hoje, em vez disso, a maioria das conexões com fio é feita através de redes comutadas , onde cada dispositivo (remetentes e receptores) está conectado à sua própria porta separada em um comutador. Os dados são divididos em pacotes (na verdade: quadros ), e o comutador garantirá que apenas um pacote esteja ativo em cada porta por vez. Se um link estiver ocupado, o switch armazenará e encaminhará outros quadros para o receptor quando o link estiver disponível novamente.

Com esse esquema, a única maneira de ter colisões é quando há mais de um dispositivo conectado ao comutador ou outro através de um hub não comutado (as portas em alguns modelos de "roteador" wifi doméstico ainda não são comutados) ou quando um O link entre um switch e um dispositivo opera no modo half-duplex .

Em vez disso, lidamos com o congestionamento . Podemos não ter colisões, mas um host popular na rede pode ter dispositivos que desejam enviar mais dados e pacotes do que o link suportará, de modo que o buffer seja preenchido. Mas isso é outra questão.

Joel Coehoorn
fonte
11
Nitpicking, mas no nível Ethernet, seriam quadros em vez de pacotes .
jcaron
11
@ jcaron Nit-nit-picking: é claro que normalmente usamos 'pacote' para significar 'pacote IP', organizado pela RFC 791, e é o 'MAC Client Data' de um quadro Ethernet. Mas um 'pacote Ethernet' é definido como tudo transmitido, incluindo o início do preâmbulo até o final dos bits de extensão; e 'quadro' é a parte do endereço do destino até a verificação do quadro. (Seção 3.1.1 "Formato de pacote" do 802.3-2015). Eu diria que o switch garante que um pacote Ether seja enviado por vez e armazena e encaminha os quadros Ether .
jonathanjo
5

Eu acho que você precisa ter um entendimento básico de como a Ethernet funciona. Por exemplo, o host de envio enviará um preâmbulo de zeros e uns alternados para chamar a atenção do host de recebimento. Quando o host receptor vê dois em uma linha, ele sabe que o quadro é o próximo. Depois que o quadro é transmitido, deve haver um silêncio na linha por 96 bits antes que outro quadro seja enviado.

Diferentes padrões de Ethernet usarão codificação diferente. Por exemplo, 100Base-T usa 4B5B que envia cinco bits para cada quatro bits de dados.

Ron Maupin
fonte
1

(Para esta pergunta, presumo que uma rede compartilhada do Hub.)

Os adaptadores de rede leem os bits recebidos em um único fluxo?

Sim. Independentemente da implementação do PHY, é um único fluxo de entrada. As comunicações de vários dispositivos não podem chegar com êxito a uma única NIC (endereço MAC) ao mesmo tempo.

Suponho que, do ponto de vista do adaptador de rede do dispositivo 3, todos os zeros e zeros estejam aparecendo em um único fluxo de dados "

"fluxo único" sim, mas no seu exemplo de dois dispositivos enviando simultaneamente, não haverá fluxo de dados chegando para processamento adicional; os "quadros" de 1s e 0s colidirão.

Ele pode descobrir quais dados são do dispositivo 1 ou 2, mas os dados ainda são apenas um fluxo de milhões / bilhões de bits.

Não, não pode. Quando os sinais combinam, uma colisão é detectada e o quadro é descartado.

Estou totalmente errado?

O título da sua pergunta é uma afirmação correta, mas sua discussão no seu Q post sugere que sua compreensão e hipótese estavam erradas.

Mais longe

  • Independentemente do tipo de "adaptador de rede", eles recebem apenas um único fluxo de bits.
  • Os meios físicos para a transmissão de um sinal podem incluir vários sub-fluxos de dados, mas esses sub-fluxos e esse processamento físico não são considerados o "Adaptador de Rede"; esses substreams são co-dependentes, precisam ser combinados para fazer sentido; e, esses substreams devem se originar de uma única fonte.
  • Se você não tiver certeza sobre esta resposta (e outras respostas aqui), precisará aprender os fundamentos das redes de Ethernet / IP de pacotes comutados.
Todd
fonte
Para esta pergunta, suponho que uma rede compartilhada do Hub - o OP referido a uma NIC de Gigabit e o modo half-duplex (praticamente) não exista para o GbE. ;-)
Zac67 9/08/19
@ Zac67 Eu sou como um stanger generoso e prestativo. Eu assumi que o OP escolheu "Gigabit" arbitrariamente e que eles não perceberam que haveria uma contradição. Isso permite que eu responda direta e simplesmente ao título da pergunta. O OP pode ler as outras respostas para aprender mais sobre a contradição.
Todd