Como a camada de enlace de dados tenta corrigir erros de transmissão

Existem alguns protocolos da camada de enlace de dados que têm a capacidade de identificar quando um quadro recebido não chegou corretamente e, além disso, tentam corrigir o erro (e às vezes até conseguem). Para ver como isso funciona, vamos partir para uma metáfora simples.

Pense que um aluno esteja escrevendo palavras em pedaços de cartolina, entregando para uma professora, que então cola as palavras na parede, para formar uma frase no mural. A professora, ao ler a palavra escrita no pedaço de cartolina, é capaz de identificar se ela foi escrita errada.

Como ela identifica que uma palavra foi escrita da forma errada? Simples: ela consegue identificar o erro pois existe um número limitado de palavras válidas. Qualquer coisa que não faça parte deste vocabulário denuncia a falha.

Fácil, não? Pois bem, na camada de enlace de dados a coisa funciona do mesmo jeito: primeiramente, assim como nós, a camada de enlace de dados usa um conjunto limitado de palavras. E partindo deste princípio, para que ela detecte um erro de transmissão basta que receba uma palavra que não faça parte do seu vocabulário.

***


Voltando à metáfora, ao detectar um erro, como a professora faria para descobrir a palavra certa? Também é simples: ele descobriria a palavra certa com base no seu vocabulário, bastando saber qual palavra correta se pode obter mudando o mínimo de letras possível do que está errado, ou seja, descobrindo uma palavra que esteja o mais "perto" possível do que foi recebido. Por exemplo, se ao ler a cartolina a professora se depare com inteligende, ela vai saber que a palavra certa é inteligente, pois ela está apenas a uma letra de distância.

O mesmo acontece na camada de enlace de dados: para corrigir o erro, ela procura uma palavra correta que esteja o mais próximo possível da palavra errada recebida. (E é aqui que entra o conceito da Distância de Hamming)

***


Mas há casos que isso não é tão fácil. Imagine agora que na cartolina esteja escrito hente ao invés de gente. Como é que a professora vai saber a palavra original? Seria pente? Gente? Rente? Lente? Difícil saber. Para nós, humanos, só o contexto é capaz de responder.

Entretanto, quando este tipo de coisa acontece na camada de enlace de dados, ainda assim ela faz uma tentativa de corrigir o erro, trocando a palavra errada pela primeira palavra correta que ela conseguir gerar. Claro que ela pode acertar (ufa) ou não (corrigindo o erro gerando outro). Quando esta segunda alternativa acontece, o erro gerado só será detectado nas camadas superiores, o que é equivalente ao nosso "descobrir o erro pelo contexto".

***

De volta à metáfora, pior ainda seria se, onde devesse estar escrito mala, o aluno escrevesse cala. Se nos dois primeiros exemplos o erro gerava uma palavra inválida, este aqui gerou uma palavra que também é correta. Neste caso, a professora não veria que houve um erro. (Sim, eu sei que o contexto faria com que ela identificasse o erro, mas isso não vem ao caso, lembre-se que ela está lendo palavra por palavra, isoladamente).

Assim acontece na camada de enlace de dados: se uma palavra foi transmitida e no meio do caminho um erro a transformou em outra, também válida, a camada de enlace de dados vai deixá-la passar sem reclamar. Novamente, o erro só será detectado nas camadas superiores.

***


Enfim, o tratamento de erros na camada de enlace de dados pode não ser perfeito, mas ajuda a reduzir um pouco o tempo das transmissões, pois descobre erros a cada parada no caminho entre o transmissor e o receptor.

Novamente usando a metáfora, se não houvesse este controle de erros de transmissão, é como se a professora não reparasse se as palavras escritas nos pedaços de cartolina estão erradas ou certas, o que faria com que o mural fosse feito errado. Só depois de o mural estar pronto é que os erros seriam detectados, e ele teria que ser refeito do zero.

Do mesmo modo, se a camada de enlace de dados não fizesse este trabalho e houvesse um erro de transmissão, ele só seria detectado quando todos os pacotes fossem recebidos e repassados para uma das camadas superiores. E aí, ao detectar um erro, as camadas superiores pediriam toda a informação de novo, gerando mais tráfego.

***


Links interessantes:
  • Veja aqui o que já foi publicado no Vovó Viu a Rede sobre a camada de enlace de dados.

  • Nenhum comentário: