A tecnologia ethernet
Conectar um computador à Internet é fácil hoje. A camada de enlace é quem possibilita essa conexão. Uma tecnologia que nasceu nos anos 1970, tornou-se sinônimo de conexão à rede: a Ethernet. Você já parou para pensar o que é a ethernet? Como ela funciona? Quais serviços a rede ethernet oferece para que nossa Internet funcione tão bem e de maneira tão simples?
Neste texto, que trata sobre a tecnologia ethernet, você aprenderá a estrutura que permite o envio de informações: o quadro de dados. Entenderá que a ethernet pode fazer a identificação e a correção de erros nos dados transmitidos. Conhecerá o endereço físico, um número que identifica o seu computador na rede. Entenderá o que é colisão de dados e como a ethernet identifica tais colisões para descartar dados inúteis. Aprenderá por que um switch é mais inteligente que um HUB.
A ethernet
Atualmente a Ethernet (IEEE 802.3) é a tecnologia de redes de computadores mais difundida no mercado de redes de computadores.
A ethernet clássica foi criada na década de 1973 pela Xerox. Ela trabalhava com velocidades de no máximo até 3Mbps utilizando principalmente cabos coaxial. Em 1985 a tecnologia foi padronizada (IEEE 802.3a) e chagava a velocidades de 10Mbps utilizando cabos coaxiais. Em 1990, a ethernet clássica (IEEE 802.3i) podia utilizar cabos de par trançado e concentradores (hubs).
A ethernet evoluiu para a ethernet comutada que depende da utilização de comutadores (switches) e cabos de par trançado ou fibras óticaspara a comunicação. Desde 1999 é comum encontrarmos ethernet comutada em velocidades de 1Gbps (IEEE 802.3ab), mas já existem soluções de 100Gbps e 400Gbps.
O quadro ethernet
Como vimos, para durante a transmissão de dados, os bits são agrupados em um quadro de dados para a transmissão das informações. Nesta sessão vamos entender qual a estrutura de um quadro de dados ethernet.
A figura 1, representa um quadro de dados ethernet.
Os campos “preâmbulo” e “delimitador de quadro” são utilizados unicamente para identificar o início de uma transmissão de dados. São informações constantes e invariáveis. O preâmbulo é uma sequência de 7 bytes composta pelos bits “10101010” em sequência. O delimitador de quadro é um byte composto pelos bits “10101011”.
Todo computador conectado a uma rede ethernet precisa possuir um número de identificação. Chamamos essa identificação de endereço físico. O endereço é uma sequência de 48bits (6 bytes). No quadro ethernet temos o “endereço de destino”, que indica o endereço do dispositivo receptor e o “endereço de origem” que indica o endereço do dispositivo transmissor.
O campo “tipo” é um campo de 2 bytes utilizado para indicar o tipo de informação que o quadro está transportando, ou seja, qual o protocolo da camada superior o quadro transporta. Para compatibilidade com versões anteriores da ethernet, se o valor for valor for menor que o número hexadecimal 0x600 (1536 em decimal) este campo indica o tamanho do quadro.
O campo “dados” é utilizado para enviar a carga útil do frame. É neste campo que vão as informações das camadas de rede (IP), transporte (TCP ou UDP) e aplicação. Via de regra, este campo possui até 1500 bytes de informação.
Para o correto funcionamento da rede, o quadro ethernet (endereço de destino, endereço de origem, tipo, dados e soma de verificação) deve possuir ao menos 64 bytes de comprimento. Assim, o campo “preenchimento” pode não existir e possuirá de 0 a 46 bytes e é utilizado apenas quando o campo “dados” for pequeno. Desta forma, todo o quadro fica com no mínimo 64 bytes.
Por fim, o campo “soma de verificação” possui 4 bytes. Ela é calculada a partir dos outros campos e inserida ao final da mensagem transmitida. No destino, o a soma de verificação é utilizada para detectar os erros de transmissão. Caso existam erros, o quadro é sumariamente descartado.
Endereços ethernet
Como vimos na sessão anterior, os endereços na ethernet são campos de 48 bits (6 bytes) que indicam o endereço do transmissor ou do receptor da informação. Esse endereço é representado em números hexadecimal, sendo comum o formato “aa:bb:cc:dd:ee:ff” (em sistemas Windows) ou “aab.bcc.dde.eff” (em sistemas Cisco).
Os endereços ethernet não podem ser repetidos. Eles são gravados nas interfaces de rede dos dispositivos. Os 3 primeiros bytes são utilizados para identificar um fabricante e os 3 últimos bytes são utilizados para identificar o número de série da interface.
Toda vez que um transmissor envia uma informação, ele deve preencher o campo “endereço de origem” com o endereço da interface que está enviando a informação e o “endereço de destino” o endereço da interface que deverá receber a informação. Caso uma informação deva ser enviada para todos os dispositivos de uma rede, o endereço de destino será preenchido com “ff:ff:ff:ff:ff:ff”.
Um ponto importante
Por padrão os computadores recebem todos os quadros encaminhados na rede. Por padrão, eles leem o conteúdo apenas se o endereço físico de destino for seu próprio endereço físico ou o endereço “FF:FF:FF:FF:FF:FF”.
Ocorre que todos computadores contemporâneos suportam o modo promíscuo. Com ela, todos os pacotes são lidos pelo sistema operacional, independentemente do endereço de destino.
Isso é útil para administradores de redes que precisam encontrar problemas durante a comunicação. O modo promíscuo é especialmente útil para que crackers possam escutar todo o tráfego de uma rede, podendo assim capturar senhas e fazer tantas outras coisas…
Um programa que utiliza o modo promíscuo é o Wireshark, que utilizamos em nossas atividades práticas.
Controle de acesso ao meio na Ethernet
Em sua concepção, a ethernet clássica, utilizava um meio compartilhado para a transmissão de informações. Tudo isso acontecida com cabos coaxiais ou hubs com cabeamento de par-trançado.
Um hub é um dispositivo que faz apenas a retransmissão de cada um dos bits que chegam à sua porta para as demais portas do hub. Desta forma, apesar de um cabo de par-trançado ligar o concentrador aos computadores da rede, todo o meio de transmissão é compartilhado.
Assim, para realizar o controle de fluxo das informações, a ethernet utiliza um algoritmo conhecido como CSMA/CD com backoff exponencial binário.
CSMA/CD (Carrier Sense Media Access with Colision Detection) é um acrônimo para controle de acesso ao meio com detecção de colisão. Basicamente ele propõe transmitir informações apenas quando nenhum outro dispositivo esteja transmitindo.
Ele funciona da seguinte forma: antes de enviar um quadro, o transmissor deve sempre escutar o meio de transmissão. Se não houver ninguém transmitindo ele pode começar a enviar um quadro. Mesmo durante a transmissão, o transmissor continua escutando o meio. Se durante a transmissão, outro dispositivo enviar informações, uma colisão é detectada. Se uma colisão ocorre, ambos transmissores abortam a transmissão.
Então, ambos transmissores irão efetuar a retransmissão de seus quadro após um tempo aleatório de segundos. Caso exista nova colisão, este tempo irá aumentar de forma exponencial, evitando o risco de que as retransmissões causem novas colisões. Isso é chamado de backoff exponencial binário.
Devemos observar que os hubs não são utilizados hoje em dia. No entanto o funcionamento do CSMA/CD em redes Ethernet ainda continuam válidos até hoje.
A ethernet comutada
A ethernet clássica evoluiu para a ethernet comutada. Isso foi possível com a evolução do hub para o switch (concentrador). O switch é um dispositivo mais inteligente que o hub. Dizemos isso, porque ele possui a capacidade de aprender endereços físicos.
A primeira diferença entre o switch e o hub é que o switch utiliza o mecanismo de store-and-forward. Isso significa que o switch recebe o quadro inteiro e armazena em sua memória antes de fazer o encaminhamento. Desta forma, um switch pode verificar os erros de um quadro e, se necessário, descartá-lo. Esse fator já torna o switch mais eficiente que um hub, uma vez que quadros incorretos não são encaminhados.
Em um switch as interfaces são identificadas. No mundo Cisco, por exemplo, as interfaces recebem nome de acordo com a tecnologia e a velocidade. Assim, as interfaces mais comuns são “Ethernet” de 10 Mbps, “FastEthernet” de 100 Mbps e “GigabitEthernet” de 1Gbps. As interfaces também possuem um número sequencial, que nos permite diferenciá-las umas das outras.
Isso é útil uma vez que sempre que o switch recebe um quadro, ele aprende o endereço MAC do transmissor e associa ao número da interface em que o quadro foi recebido, criando uma tabela em sua memória, conhecida como tabela cam (content addressable memory).
Para encaminhar o quadro ao destino, o switch verifica se o endereço de destino existe na tabela cam. Caso exista, ele envia o quadro para a porta associada ao endereço de destino. Apenas se o endereço de destino não for encontrado na tabela cam, o switch irá encaminhar o quadro para todas as outras portas.
Se um quadro com endereço de destino “ff:ff:ff:ff:ff:ff” for recebido, o switch irá encaminhar o quadro para todas as outras portas. Com isso, a comunicação broadcast continua funcionando nos swicthes.
Um ponto importante
Já que os quadros são encaminhados somente para a porta associada, o número de colisões cai consideravelmente. Dizemos então que um switch possui um domínio de colisão por porta enquanto o hub é um único domínio de colisão. Observe: mais domínios de colisão implica em menos colisões.
Isto ocorre com o switch porque existem menos quadros transmitidos para toda a rede. Com menos quadros transmitidos, temos menos colisões, tornando-a mais eficiente. Além disso, os quadros são encaminhados apenas para o seu destino, evitando que crackers utilizem o modo promíscuo para monitorar dados encaminhados em outros computadores.
É comum que os switches também sejam considerados mais seguros que os hubs. Afinal de contas, switches encaminham pacotes apenas para o destino, enquanto hubs enviam os quadros para toda a rede.
Leia o artigo Cam Table Overflow (Estouro da tabela CAM) e responda à seguinte questão: Switches são mais seguros do que hubs?
Questão difícil de responder. A priori a resposta é sim. Switches são mais seguros. No entanto, atacantes descobriram que se a tabela CAM estiver cheia, o switch funciona da mesma forma que um HUB, encaminhando pacotes para todos os dispositivos em uma rede. Um atacante então poderia utilizar o modo promíscuo e monitorar todo o tráfego da rede.
Uma solução para isso é limitar a a quantidade de endereços MAC aprendidos em cada uma das portas do switch. Desta forma, a tabela CAM não enche, evitando o problema.
Considerações finais
Como você pode observar, a ethernet é uma tecnologia que permite a conexão de diversos computadores em uma rede. Ela funciona com vários meios de transmissão e dela surgiu diversas outras tecnologias, como por exemplo o Wi-Fi. Você viu que ela oferece serviços de datagramas à rede IP e que por isso se ajusta tão bem ao protocolo IP, fundamental em nosso acesso à Internet.
Neste texto, você estudou a estrutura do quadro ethernet. Entendeu que a ethernet fazer a identificação nos dados transmitidos. Descobriu que seu computador possui um endereço físico único, que identifica inclusive o fabricante de seu computador. Entendeu colisão de dados e que a ethernet elimina seus efeitos através do protocolo CSMA/CD. Aprendeu que o switch é mais inteligente que um HUB, porque switches tem memória e aprendem endereços físicos, enquanto HUBs não aprendem nada: apenas copiam informações para todas suas portas de conexão.