Colisões nas comunicações? Saiba como funciona o CSMA/CD
Num meio de acesso partilhado por vários dispositivos, como é que se evitam as colisões de dados e como é que cada máquina tem acesso ao meio para transmitir dados? O segredo está num protocolo designado de CSMA/CD (Carrier Sense Multiple Access With Collision Detection).
A Ethernet (IEEE 802.3x) foi originalmente concebida para que várias máquinas possam comunicar num mesmo meio de comunicação (meio de comunicação partilhado), isto é, duas ou mais máquinas podem comunicar no mesmo meio de comunicação físico.
Existem dois métodos de comunicação:
- Half-Duplex: As máquinas não podem comunicar (enviar e receber dados) simultaneamente
- Full-Duplex: As máquinas podem enviar e receber dados simultaneamente
Usando o método de comunicação Full-Duplex, e ao contrário do que acontece em comunicações Half-Duplex, não é necessário recorrer ao protocolo CSMA/CD, pois as comunicações são bidirecionais e podem acontecer em simultâneo. Colisões nunca acontecem num cenário deste tipo. De referir anda que comunicações Full-Duplex apenas podem ocorrer entre máquinas, entre máquinas ligadas a um switch, etc. Num cenário onde temos vários PCs ligados a um Hub, aí as comunicações são Half-Duplex.
Esquecer o Half-Duplex?
Com os avanços da tecnologia e baixa de preços em equipamentos, hoje já não se usa muito comunicações Half-Duplex (podemos dizer que está obsoleto). Este tipo de comunicação faz uso do protocolo CSMA/CD que, na prática, faz o controlo do acesso ao meio de comunicação por parte das máquinas que pretendem comunicar.
CSMA/CD como funciona?
Quando o tipo de comunicação é Half-Duplex, na realidade só um dispositivo pode usar o meio de comunicação para comunicar… se houvesse comunicação em simultâneo, entre 2 ou mais máquinas ligadas a um Hub, estaríamos a presenciar uma colisão (acontece quando 2 equipamentos transmitem em simultâneo num meio partilhado, aumentando a amplitude do sinal elétrico transmitido).
Como os hubs não suportam comunicações Full Duplex, a transmissão simultânea de dados é tecnicamente impossível.
- (CS) Carrier Sense: refere-se ao dispositivo que está prestes a transmitir. Sense alude ao facto de antes de transmitir algo para o meio partilhado, o equipamento deve verificar (sense) o meio para o qual vai injetar pulsos elétricos.
- (MA) Multiple Access: refere-se ao meio partilhado, que é de acesso múltiplo, mas não simultâneo.
- (CD) Collision Detection: é uma variante do CSMA que consiste na deteção de colisões no meio através da análise do sinal elétrico.
- Esta variante também discrimina o comportamento a ter por parte de cada dispositivo quando uma colisão acontece (o chamado algoritmo backoff e JAM Signal)
Se um dispositivo tiver de comunicar numa rede Ethernet, em Half-Duplex, deve:
- Escutar o meio físico de comunicação antes de transmitir;
- Se não houver sinal de transmissões, o dispositivo pode começar a transmitir. Caso sejam detetadas comunicações, deve esperar até que fique livre;
- Sempre que uma colisão é detetada, a máquina para a transmissão e emite um sinal de aviso (sinal JAM) no meio de comunicação física para que todas as máquinas ali ligadas possam saber que aconteceu uma colisão. Estas frames enviadas são posteriormente descartadas pelas máquinas;
- Após receberem o sinal de aviso, todas as máquinas param de transmitir e esperam um tempo aleatório antes de iniciarem de novo as transmissões (algoritmo backoff);
Em resumo
Falar em Half-Duplex nos dias de hoje é já quase por questões históricas e evolução. Como referido, os equipamentos de comunicações suportam na generalidade Full-Duplex, sendo que o Half-Duplex é apenas usado quando temos Hubs na rede, algo que também já não é muito comum em redes modernas.