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? :)
ethernet
layer1
networking
shihku7
fonte
fonte
Respostas:
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".
fonte
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:
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):
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.
fonte
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.
fonte
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.
fonte
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.
fonte
(Para esta pergunta, presumo que uma rede compartilhada do Hub.)
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.
"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.
Não, não pode. Quando os sinais combinam, uma colisão é detectada e o quadro é descartado.
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
fonte