DCN - Detecção e correção de erros
Existem muitos motivos, como ruído, diafonia, etc., que podem ajudar a corromper os dados durante a transmissão. As camadas superiores funcionam em alguma visão generalizada da arquitetura de rede e não estão cientes do processamento real de dados de hardware. Portanto, as camadas superiores esperam uma transmissão sem erros entre os sistemas. A maioria dos aplicativos não funcionaria como esperado se receberem dados incorretos. Aplicativos como voz e vídeo podem não ser afetados e, com alguns erros, podem funcionar bem.
A camada de enlace de dados usa algum mecanismo de controle de erros para garantir que os quadros (fluxos de bits de dados) sejam transmitidos com certo nível de precisão. Mas para entender como os erros são controlados, é essencial saber quais tipos de erros podem ocorrer.
Tipos de Erros
Pode haver três tipos de erros:
Single bit error
Em um quadro, há apenas um bit, em qualquer lugar, que está corrompido.
Multiple bits error
O quadro é recebido com mais de um bit em estado corrompido.
Burst error
O quadro contém mais de 1 bits consecutivos corrompidos.
O mecanismo de controle de erros pode envolver duas maneiras possíveis:
Detecção de erro
Correção de erros
Detecção de erro
Erros nos frames recebidos são detectados por meio de Verificação de Paridade e Verificação de Redundância Cíclica (CRC). Em ambos os casos, alguns bits extras são enviados junto com os dados reais para confirmar se os bits recebidos na outra extremidade são os mesmos que foram enviados. Se a contra-verificação na extremidade do receptor falhar, os bits serão considerados corrompidos.
Verificação de paridade
Um bit extra é enviado junto com os bits originais para perfazer o número de 1s par no caso de paridade par, ou ímpar no caso de paridade ímpar.
O remetente, ao criar um quadro, conta o número de 1s nele. Por exemplo, se a paridade par for usada e o número de 1s for par, um bit com valor 0 será adicionado. Desta forma, o número de 1s permanece par. Se o número de 1s for ímpar, para torná-lo par, um bit com valor 1 é adicionado.
O receptor simplesmente conta o número de 1s em um quadro. Se a contagem de 1s for par e paridade par for usada, o quadro é considerado não corrompido e é aceito. Se a contagem de 1s for ímpar e a paridade ímpar for usada, o quadro ainda não está corrompido.
Se um único bit virar em trânsito, o receptor pode detectá-lo contando o número de 1s. Mas quando mais de um bits estão errados, é muito difícil para o receptor detectar o erro.
Verificação de redundância cíclica (CRC)
O CRC é uma abordagem diferente para detectar se o quadro recebido contém dados válidos. Essa técnica envolve a divisão binária dos bits de dados enviados. O divisor é gerado usando polinômios. O remetente realiza uma operação de divisão nos bits enviados e calcula o restante. Antes de enviar os bits reais, o remetente adiciona o restante no final dos bits reais. Os bits de dados reais mais o restante são chamados de palavra-código. O remetente transmite bits de dados como palavras-código.
Na outra extremidade, o receptor executa a operação de divisão em palavras de código usando o mesmo divisor CRC. Se o restante contiver apenas zeros, os bits de dados serão aceitos, caso contrário, será considerado que ocorreu alguma corrupção de dados em trânsito.
Correção de erros
No mundo digital, a correção de erros pode ser feita de duas maneiras:
Backward Error Correction Quando o receptor detecta um erro nos dados recebidos, ele pede de volta ao remetente para retransmitir a unidade de dados.
Forward Error Correction Quando o receptor detecta algum erro nos dados recebidos, ele executa um código de correção de erros, que o ajuda a se recuperar automaticamente e a corrigir alguns tipos de erros.
O primeiro, a correção de erros reversos, é simples e só pode ser usado com eficiência onde a retransmissão não é cara. Por exemplo, fibra óptica. Mas no caso de retransmissão de transmissão sem fio pode custar muito caro. No último caso, a Correção de Erro Forward é usada.
Para corrigir o erro no quadro de dados, o receptor deve saber exatamente qual bit do quadro está corrompido. Para localizar o bit com erro, bits redundantes são usados como bits de paridade para detecção de erro. Por exemplo, pegamos palavras ASCII (dados de 7 bits), então pode haver 8 tipos de informação de que precisamos: primeiros sete bits para nos dizer qual bit é erro e mais um bit para dizer que não há erro.
Para m bits de dados, r bits redundantes são usados. r bits podem fornecer 2 combinações de informações. Na palavra-código do bit m + r, existe a possibilidade de que os próprios bits r sejam corrompidos. Portanto, o número de bits r usados deve informar sobre as localizações dos bits m + r mais as informações sem erros, ou seja, m + r + 1.