Capítulo 10 detecção e correção de erros

7,656 views
7,468 views

Published on

0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
7,656
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
203
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Capítulo 10 detecção e correção de erros

  1. 1. 10.1 Capítulo 10 Detecção e Correção de erros Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
  2. 2. 10.2 Os dados podem ser corrompidos durante uma transmissão. Algumas aplicações exigem que os erros sejam dectados e corrigidos. Note
  3. 3. 10.3 10-1 Introdução Iremos discutir, inicialmente, as questões relacionadas, direta ou indiretamente, à detecção e à correção de erros. Tipos de Erros Redundância Detecção versus Correção Correção Antecipada de Erros versus Retransmissão Códigos de Erros Aritmética Modular (Não será vista) Topicos discutidos nesta seção:
  4. 4. 10.4 10-1 Tipos de Erros • Toda vez que uma cadeia de bits flui de um ponto a outro de uma rede de computadores, eles estão sujeitos a alterações imprevisíveis por causa das interferências. • Essas interferências podem modificar as características do sinal. • Em um erro de bit, um 0 passa a ser 1 e um 1 passa a ser 0. • Em um erro em rajada, vários bits são corrompidos. • Por exemplo, uma rajada de 1/100 s de ruídos impulsivos em uma transmissão com taxa de dados de 1.200bps poderia alterar todos os 12 bits de informação ou parte deles.
  5. 5. 10.5 10-1 Tipos de Erros (Erro de Bit) • O termo erro de bit significa dizer que apenas 1 bit de determinada unidade de dados (por exemplo, um byte, caractere ou pacote) foi alterado de 1 para 0 ou de 0 para 1. • A próxima figura mostra efeito do erro de bit sobre uma unidade de dados, para compreender o impacto desse problema, imagine que cada grupo de 8 bits seja caractere ASCII com um bit 0 adicionado à esquerda. • Na figura 10.1, o caractere 00000010 (ASCII STX) foi enviado, significando início do texto (start of text), mas foi recebido 00001010 (ASCII LF), significando avanço de linha (line feed). • Os erros de bit são do tipo de erro de menor probabilidade de ocorrência em uma transmissão de dados serial, imagine que dados são enviados a 1Mbps. Isso significa que a duração de cada bit é de apenas 1/1.000.00 s, ou seja, 1 µs, o que é muito raro na prática; normalmente os ruídos duram muito mais que isso.
  6. 6. 10.6 Figure 10.1 Single-bit error
  7. 7. 10.7 10-1 Tipos de Erros (Erro em Rajada) • O termo erro de rajada significa dizer que 2 ou mais bits na unidade de dados foram corrompidos. • A figura 10.2 ilustra o efeitos de um erro em rajada sobre uma unidade de dados, observe que um erro em rajada não significa, necessáriamente, que os erros ocorrem em bits consecutivos. O comprimento da rajada é medido do primeiro bit corrompido até último. Pode ser que alguns bits entre eles não tenham sido corrompidos.
  8. 8. 10.8 10-1 Redundância • O conceito mais importante na detecção e correção de erros é a redundância. • Para sermos capazes de detectar ou ccorrigir erros, precisamos enviar alguns bits extras redundantes junto com os dados. • Esses bits redundantes são acrescentados pelo emissor e posteriomente retirados pelo receptor. • Sua presença possibilita que o receptor detecte ou corrija bits corrompidos.
  9. 9. 10.9 10-1 Detecção versus Correção • Corrigir erros em uma transmissão de dados é muito mais difícil que a detecção. • Na detecção de erros, estamos apenas verificando se ocorreu algum erro. A responta é simples sim ou não. • Na correção de erros, precisamos saber o número exato de bits que foram corrompidos e, mas importante, sua localização na mensagem. • O número de erros e o tamanho da mensagem são fatores essenciais. • Se precisamos corrigir um único erro em uma unidade de dados de 8 bits, podemos considerar oito localizações possíveis de erro. • Se precisarmos corrigir dois erros em uma unidade de dados de mesmo tamanho, teremos de considerar 28 possibilidades. Pode-se imaginar a dificuldade do receptor para corrigir dez erros em uma unidade de dados de 1.000 bits?
  10. 10. 10.10 10-1 Correção antecipada de Erros versus Retransmissão • Existem dois métodos principais de correção de erros; • Na correção antecipada de erros (FEC - Forward Error Correction), o receptor tenta adivinhar a mensagem pelo uso de bits redundantes; • Na correção de erros por retransmissão o receptor detecta a ocorrência de um erro e solicita ao emissor para reenviar a mensagem. O reenvio é repetido até mensagem chegar no receptor livre de erros.
  11. 11. 10.11 10-1 Código de Erros • A redundância pode ser implementada por meio de vários métodos de codificação. • O emissor adiciona bits redundantes por meio de um processo que crie uma relação entre os bits redundantes e os bits de dados reais. • O receptor verifica essas relações entre os dois conjuntos de bits para detectar ou corrigir os erros. A razão entre os bits redundantes e os bits reais, bem como a eficiência do processo, são fatores determinantes em qualquer esquema de codificação. • Podemos dividir os códigos de erros em duas categorias amplas: códigos de blocos e códigos convolucionais.
  12. 12. 10.12 Figure 10.3 The structure of encoder and decoder
  13. 13. 10.13 10-1 Aritmédica Modular • Módulo Aritmédico 2. Operação XOR em dois bits simples e em duas palavras Ou exclusivo chamada também disjunção exclusiva, conhecido geralmente por XOR ou por EOR (também XOU ou EOU), é uma operação lógica em dois operandos que resulta em um valor lógico verdadeiro se e somente se exactamente um dos operandos tem um valor verdadeiro.
  14. 14. 10.14 10-2 Códigos de Blocos Na codificação de bloco, dividimos a nossa mensagem em blocos, cada um dos k bits, chamado datawords. Nós adicionar bits R redundantes para cada bloco para tornar o comprimento n = k + r. O resultado n bits blocos são chamados palavras-código. Detecção de Erros Correção de Erros Distância de Hamming Minimum Hamming Distance Topics discussed in this section:
  15. 15. 10.15 Figure 10.5 Palavras de dados e palavras de código no código de blocos
  16. 16. 10.16 10-2 Códigos de Blocos  A codificação de blocos 4B/5B discutidos no capítulo 4 é um bom exemplo de codificação. Na codificação 4B/5B, k=4 e n=5.  Conforme vimos, temos 2k = 16 palavras de dados e 2n = 32 palavras de código. Vimos que 16 das 32 palavras de códigos são usadas para a transmissão de mensagens e o restante, para outros fins ou então não são usadas. Exemplo 10.1
  17. 17. 10.17 10-2 Códigos de Blocos  Como os erros podem ser detectados usando-se os códigos de blocos?  Se as duas condições a seguir forem atendidas, o receptor poderá detectar uma mudança na palavra de código original.  1. O receptor tem (ou pode encontrar) uma lista de palavras de código válida.  2. A palavra de código original mudou para uma palavra inválida. Detecção de Erros
  18. 18. 10.18 Figure 10.6 Processo de detecção de erros na codificação de blocos
  19. 19. 10.19 Vamos supor que k = 2 e n = 3. Tabela 10.1 mostra a lista de datawords e palavras-código. Exemplo 10.2 Table 10.1 Exemplo de codificação para detecção de erros (Exemplo 10.2)
  20. 20. 10.20 Suponha que o remetente codifica os 01 dataword como 011 e a envie para o receptor. Considere os seguintes casos: 1.O receptor recebe 011. É uma palavra de código válida. O receptor extrai então dataword 01 a partir dele; 2. A palavra de código é corrompida durante a transmissão, e é recebido como 111 (o bit mais esquerda foi corrompido). Esta não é uma palavra de código válido, portanto a palavra de dados será descartada; 3. A palavra de código é corrompida durante a transmissão e 000 é recebido. Esta é uma palavra de código válida. O receptor incorretamente extrai dataword 00. Os dois bits corrompidos tornaram o erro indetectável. Example 10.2 (continued)
  21. 21. 10.21 Um código de detecção de erros é capaz de detectar apenas os tipos de erros para os quais ele foi projetado; outros tipos de erros podem permanecer indetectáveis. Note
  22. 22. 10.22 10-2 Códigos de Blocos  A correção de erros é muito mais fácil que a detecção de erros;  Na detecção de erros, o receptor precisa saber apenas se a palavra de código recebida é correta ou inválida;  Na correção de erros, o receptor precisa encontrar (ou adivinhar) a palavra de código que foi originalmente transmitida;  Podemos dizer que precisamos de mais bits redundantes para a correção de erros que para detecção de erros. Correção de Erros
  23. 23. 10.23 Figure 10.7 Structure of encoder and decoder in error correction
  24. 24. 10.24 Acrescentamos mais bits redundantes ao Exemplo 10.2 para ver se o receptor pode corrigir um erro sem saber o que foi realmente enviada. Adicionamos 3 bits redundantes para a dataword 2 bit para fazer palavras-código 5 bit. Tabela 10.2 mostra os datawords e palavras-código. Supondo que o dataword é 01. O remetente cria a palavra-código 01011. A palavra de código é corrompida durante a transmissão, e 01001 é recebido. • Primeiro, o receptor verifica que a palavra de código recebida não está na tabela. • Isto significa que ocorreu um erro. (A detecção deve vir antes da correção) • O receptor, assumindo que existe apenas 1 bit corrompido, usa a seguinte estratégia para adivinhar a dataword correta. Example 10.3
  25. 25. 10.25 Table 10.2 A code for error correction (Example 10.3)
  26. 26. 10.26 1.Comparando a palavra de código recebida com a primeira palavra de código da tabela (01001 contra 00000), o receptor decide que a palavra de código primeiro não é aquela que foi enviado, pois existem dois bits diferentes. 2. Seguindo o mesmo raciocínio, a palavra de código original não pode ser o terceiro ou quarto na tabela. 3. A palavra de código original deve ser a segunda da tabela, porque esta é a única que difere da palavra de código recebida em um bit. O receptor substitui 01001 por 01011 e consulta a tabela para encontrar a dataword 01. Exemplo 10.3 (continuação)
  27. 27. 10.27 10-2 Códigos de Blocos  Um dos mais importantes conceitos associados à codificação para controle de erros é a idéia da distância de Hamming.  A distância de Hamming entre duas palavras do mesmo tamanho é o número de diferenças entre os bits alinhados correspondentes.  A distância de Hamming entre duas palavras x e y será descrita como d(x,y).  A distância de Hamming pode ser facilmente encontrada se aplicarmos a operação XOR entre duas palavras e contarmos o número de 1s resultado.  Note que a distância de Hamming é um valor maior que zero. Distância de Hamming
  28. 28. 10.28 Encontremos a distância de Hamming entre dois pares de palavras. 1. A distânica de Hamming d(000, 011) é 2 porque Exemplo 10.4 2. A distânica de Hamming d(10101, 11110) é 3 porque
  29. 29. Técnicas de Detecção de Erros Redes de Computadores e Comunicação de Dados - Tradução da 6ª Edição Norte-Americana CURT M. WHITE - Editora Cengage Learning Prof. Rodrigo Ronner Capítulo 6
  30. 30. 30 Prevenção de Erros Para evitar que erros aconteçam, várias técnicas podem ser aplicadas:  Blindagem adequada de cabos para reduzir interferência;  Condicionamento de linha telefônica ou equalização;  Substituição de meios antigos e equipamentos com componentes novos, possivelmente digitais;  O uso adequado de repetidores digitais e amplificadores analógicos para aumentar intensidade do sinal, reduzindo, assim, a probabilidades de erros.  Observe as capacidades indicadas de cada meio.
  31. 31. 31 Detecção de Erros  Apesar das melhores técnicas de prevenção, os erros ainda podem acontecer;  Para detectar um erro, algo extra tem de ser adicionado aos dados/sinal;  Este extra é um código de detecção de erro;  Duas técnicas básicas para a detecção de erros:  verificação de paridade, e soma de verificação de redundância cíclica (cyclic redundancy checksum).
  32. 32. 32 Verificação de Paridade  Paridade Simples  Com paridade par, o 0 ou 1 adicionado à cadeia resulta em um número par de “1s” binários.  Com paridade ímpar, o 0 ou 1 adicionado à cadeia resulta em um número ímpar de “1s” binários.  Por exemplo, enviando 1101011 usando paridade par, seria igual 11010111. Agora, há um número par de (6) de “1s”.  Por exemplo, enviando 1101011 usando paridade ímpar, seria igual 11010110.
  33. 33. 33 Verificação de Paridade (Continuação)  Paridade Simples  O que acontece se utilizando paridade par e fossem enviado caractere 11010111 e os dois primeiros 1s acidentalmente, fossem dois 0s? Assim, o carácter seguinte é recebido : 00010111 Será que vai haver um erro de paridade?  Problema: a paridade simples detecta apenas os números ímpares de bits em erro
  34. 34. 34  Paridade longitudinal  Adiciona um bit de paridade para cada caractere, em seguida, adiciona uma linha de bits de paridade após um bloco de caracteres;  A linha de bits de paridade é realmente um bit de paridade para cada "coluna" de caracteres;  A fila de bits de paridade, mais os bits de paridade de coluna adicionar uma grande quantidade de redundância para um bloco de caracteres. Verificação de Paridade (Continuação)
  35. 35. 35 Verificação de Paridade (Continuação)
  36. 36. 36 Verificação de Paridade (Continuação)
  37. 37. 37  Tanto a paridade simples e paridade longitudinal não pega todos os erros;  Paridade simples só pega os números ímpares de erros de bits;  Paridade longitudinal é melhor na captura de erros, mas requer bits de verificação de muitas adicionados a um bloco de dados;  Precisamos de um método melhor detecção de erros  E quanto a soma aritmética? Verificação de Paridade (Continuação)
  38. 38. 38 Checksum aritmético  Usado em TCP e IP na Internet;  Caracteres a serem transmitidos são convertidos para a forma numérica e somados;  Soma é colocado em alguma forma, no final da transmissão.
  39. 39. 39  Receptor executa a conversão mesmo e somando e compara com nova soma soma enviado;  TCP e IP processos um pouco mais complexo,mas idéia é a mesma;  Mas, mesmo soma aritmética pode deixar escapar por entre os erros.  Existe algo mais poderoso ainda? Checksum aritmético
  40. 40. 40 Checksum de redundância cíclica  CRC método de detecção de erro trata o pacote de dados a serem transmitidos como um polinómio grande;  Transmissor leva o polinômio mensagem e usando a aritmética polinomial, divide-o por um polinômio gerador dado;  Quociente é descartada, mas o restante é "ligado" para o fim da mensagem.
  41. 41. 41  A mensagem (com o restante) é transmitida para o receptor;  O receptor divide a mensagem eo resto pelo polinômio gerador mesmo;  Se um resto não é igual a zero resultados, houve um erro durante a transmissão;  Se um resto de zero resultados, não houve erro durante a transmissão. Checksum de redundância cíclica
  42. 42. 43 Controle de erros  Uma vez detectado um erro no fluxo de dados recebido, o que o receptor deve fazer?  Não fazer nada(simplesmente enviar o frame ou pacote);  Retornar uma mensagem ao transmissor solicitando reenvio do pacote de dados com erro;  Corrigir o erro sem retransmissão.
  43. 43. 44 Não Fazer Nada  Parece uma maneira estranha para controlar erros, mas alguns protocolos de camada inferior, como frame relay realizar esse tipo de controle de erro;  Por exemplo, se o frame relay detecta um erro, ele simplesmente descarta o frame;  Nenhuma mensagem é retornada;  Frame relay assume que outro protocolo (como TCP / IP) irá detectar erro no frame e pedir retransmissão
  44. 44. 45 Retornar uma mensagem  Uma vez que é detectado um erro, uma mensagem de erro é retornado para o transmissor  Existem duas formas básicas:  Stop-and-wait error control  Sliding window error control (Janela Deslizante)
  45. 45. 46 Stop-and-Wait Error Control  Stop-and-wait é o mais simples dos protocolos de controle de erro;  Um transmissor envia um frame, em seguida, para e espera por uma confirmação  Se uma confirmação positiva acknowledgment (ACK) e recebido, o próximo frame é enviado;  se um confirmação negativa acknowledgment (NAK) e recebida, o mesmo frame é transmitido novamente.
  46. 46. 47 Stop-and-Wait Error Control (Continuação)
  47. 47. 48 Controle de erros de janela deslizante  Estas técnicas assumir que vários quadros estão em transmissão de uma só vez;  Um protocolo de janela deslizante permite que o transmissor para enviar um certo número de pacotes de dados de uma só vez antes de receber quaisquer reconhecimentos;  Depende do tamanho da janela;  Quando um receptor não acusar a recepção, o ACK retornado contém o número do quadro esperado seguinte.
  48. 48. 49 Controle de erros de janela deslizante
  49. 49. 50  Mais velhos protocolos de janela deslizante numeradas cada quadro ou pacote que foi transmitido;  Mais moderno janela deslizante número protocolos cada byte dentro de um quadro;  Um exemplo em que os pacotes são numerados, seguido por um exemplo em que os bytes são numerados: Controle de erros de janela deslizante
  50. 50. 51 Controle de erros de janela deslizante
  51. 51. 52 Controle de erros de janela deslizante
  52. 52. 53  Observe que um ACK não é sempre enviado após cada frame é recebido  É mais eficiente que esperar por alguns quadros recebidos antes de retornar um ACK  Quanto tempo você deve esperar até você voltar um ACK? Controle de erros de janela deslizante
  53. 53. 54  Usando TCP/IP, existem algumas regras básicas sobre ACKs:  Regra 1: Se um receptor acabou de receber alguns dados e deseja enviar dados de volta ao emissor, o receptor deve incluir ACK com dados que está para enviar. Isso de chama piggybacking e poupa o receptor de enviar uma mensagem separada de ACK. (Figura 6-12);  Regra 2: Se um receptor não estiver com dados para retornar ao emissor e tiver acabado de confirmar o recebimento do pacote enviado anteriormente, o receptor aguarda 500 ms para que outro pacote chegue. Porém, se um segundo pacote chegue antes do final dos 500ms, o receptor deve enviar imediatamente um ACK;  Regra 3: Se um receptor estiver esperando a chegada de um segundo pacote e os 500ms acabem, ele encerra a espera por esse segundo pacote e emite imediatamente um ACK. Controle de erros de janela deslizante
  54. 54. 55 Controle de erros de janela deslizante
  55. 55. 56  O que acontece se o pacote for perdido?  Como mostrado no slide seguinte, se um frame é perdido, o quadro seguinte será "fora de sequência“  O receptor manterá a sequência de bytes em um buffer e pedir ao remetente para retransmitir o quadro faltando. Controle de erros de janela deslizante
  56. 56. 57 Controle de erros de janela deslizante
  57. 57. 58  O que acontece quando um ACK é perdido?  Como mostrado no slide seguinte, se um ACK é perdido, o remetente vai esperar o ACK chegar e, eventualmente, tempo limite.  Quando o tempo limite ocorre, o remetente reenvia o último quadro. Controle de erros de janela deslizante
  58. 58. 59 Controle de erros de janela deslizante
  59. 59. 60 Correção de Erros  Para um receptor corrigir erros sem ajuda, ainda mais a partir do transmissor, requer uma grande quantidade de informação redundante para acompanhar os dados originais;  Esta informação redundante permite que o receptor determine o erro e efetue as correções. Este tipo de controle de erro é muitas vezes chamado de correção antecipada de erro e envolve códigos chamados códigos de Hamming.
  60. 60. 61 Correção de Erros (continuação)  Adicionar códigos de Hamming bits de verificação adicionais a um caractere.  Estes bits de verificação executar verificações de paridade em várias partes. Exemplo: Pode-se criar um código de Hamming no qual 4 bits de verificação são adicionados a um caractere de 8 bits.  Podemos enumerar os bits de verificação c8, c4, c2 and c1  Vamos numerar os bits de dados b12, b11, b10, b9, b7, b6, b5, and b3  Colocar os bits na seguinte ordem: b12, b11, b10, b9, c8, b7, b6, b5, c4, b3, c2, c1
  61. 61. 62  Exemplo (continued):  c8 irá executar uma verificação de paridade em bits b12, b11, b10, and b9  c4 irá executar uma verificação de paridade em bits b12, b7, b6 and b5  c2 irá executar uma verificação de paridade em bits b11, b10, b7, b6 and b3  c1 irá executar uma verificação de paridade em bits b11, b9, b7, b5, and b3 Correção de Erros (continuação)
  62. 62. 63 Correção de Erros (continuação)
  63. 63. 64  O remetente levará o caractere de 8 bits e gerará os 4 bits de verificação, como descrito  Os 4 bits de verificação são então adicionados para os 8 bits de dados na sequência imediata e depois transmitida  O receptor irá executar as verificações de 4 paridade usando os 4 bits de verificação  Se nenhum bit foi alterado durante a transmissão, então não deve haver nenhum erro de paridade. O que acontece se um dos bits seja alterado durante a transmissão? Correção de Erros (continuação)
  64. 64. 65  Por exemplo, se o bit b9 for corrompido?  O bit c8 checa os bits b12, b11, b10, b9 and c8 (01000)  Podemos perceber que houve um erro de paridade.  O bit c4 checa os bits b12, b7, b6, b5 and c4 (00101)  Isso não causaria um erro de paridade (mesmo número de 1s)  O bit c2 checa os bits b11, b10, b7, b6, b3 and c2 (100111)  Isso não causaria um erro de paridade. Correção de Erros (continuação)
  65. 65. 66 Correção de Erros (continuação)  Por exemplo, se o bit b9 for corrompido?  O bit c1 checa os b11, b9, b7, b5, b3 and c1 (100011)  Isso não causaria um erro de paridade.  Escrever os erros de paridade em sequência nos dá 1001, que é o valor binário para 9.  Assim, o erro de bit ocorreu na posição 9.
  66. 66. 67 Detecção de erro em ação  Asynchronous transfer mode (ATM) incorpora muitos tipos de detecção de erro e controle de erro;  ATM insere um CRC para o quadro de dados, que verifica apenas o cabeçalho e não os dados;  Este CRC também é poderoso o suficiente para realizar a correção de erros simples no cabeçalho  Uma segunda camada de ATM se aplica uma CRC para os dados, com graus variáveis ​​de controlo de erro.
  67. 67. 68 Resumo  Ruído está sempre presente em redes de computadores, e se o nível de ruído é demasiado elevado, os erros serão introduzido durante a transmissão dos dados.  Entre as técnicas para reduzir o ruído são próprias da blindagem de cabos, o condicionamento de linha telefônica ou equalização, usando equipamentos digitais modernos, usando repetidores digitais e amplificadores analógicos, e observando as capacidades indicadas da mídia.
  68. 68. 69 Resumo (continuação)  Três formas básicas de detecção de erro são paridade, checksum aritmética e soma de verificação de redundância cíclica;  Verificação de redundância cíclica é um esquema de detecção de erros superior com quase 100 por cento a capacidade de reconhecer os pacotes de dados corrompidos;  Uma vez que um erro foi detectado, há três opções possíveis: não fazer nada, retornar uma mensagem de erro e corrigir o erro
  69. 69. 70  Stop-and-wait protocol permite que apenas um pacote para ser enviado em um tempo;  A técnica de janelamento é um protocolo que permite múltiplos pacotes para serem enviados de uma só vez;  Correção de erro é uma possibilidade, se os dados transmitidos contém informações suficientes redundante para que o receptor pode corretamente corrigir o erro sem pedir o transmissor para obter informações adicionais. Resumo (continuação)

×