Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 1
Técnicas de Detecção e Correção de Erros
Gil Pinheiro
UERJ-FEN-DETEL
Redes de Comunicação - Notas de Aula
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 2
Situações que Requerem Detecção ou Correção de Erros
• Operação não assistida de sistemas com mínimo de equipamentos redundantes (em stand-by)
• Sistemas extremamente grandes e complexos, onde uma falha simples incapacita uma instalação inteira
• Sinalização (mensagem) com presença de ruído, onde éimpossível ou anti econômico reduzir o efeito do ruído no sinalAs duas primeiras ocorrem em computadores e a terceira em sistemas de comunicação (redes, rádios digitais, etc...)
• A correção de erros é aplicada quando o custo do enlace é mais caro ou quando possui elevado tempo de resposta (Ex. enlaces via satélite)
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 3
Quadro com Campo de Verificação
• A quantidade total de bits será: n = m + r
Mensagem (m bits) Verificação (r bits)
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 4
Redundância de um Código
• A redundância de um código, R, é a proporção de informação redundante, necessária para a detecção e/ou correção de erros
• A partir dos valores de m, n e r, define-se R [1] como: – R = n / m = (m + r) / m = 1 + (r/m)
• R mede a eficiência de um código, do ponto de vista de consumo de banda de um canal de transmissão.
• Desse modo, ocupando um canal com maior quantidade de bits de verificação (r), reduz-se a quantidade de bits de informação (m) que podem ser transmitidos.
• Como um canal possui sempre uma capacidade limitada de transmissão de informação (n), deve existir um balanço entre a quantidade de informação (m) e de bits de verificação (r)
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 5
Redundância de um Código
• Então, como um canal possui sempre uma capacidade limitada de transmissão de informação, que limita a quantidade total (n) bits por segundo
• Deve existir um compromisso entre a quantidade de informação (m) e de bits de verificação (r), onde n=m+r
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 6
Distância de Hamming
• Seja um código binário com m bits, então existem 2m mensagens válidas
• São agregados r bits para a verificação ou correção de erros
• Resultando uma mensagem com: n = m + r bits
• A Distância de Hamming é quantidade de bits 1, resultante do cálculo do XOR entre duas palavras de código binárias
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 7
Distância de Hamming
• Pode-se provar que:
– Para detectar d erros é necessário um código com distância mínima igual a dmín = d+1
– Para corrigir d erros é necessário um código com distância mínima igual a dmín = 2d+1
• A Distância Mínima (dmín) de um código é a menor Distância de Hamming encontrada, considerando todas as combinações válidas de palavras do código
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 8
Verificação de Erros Simples (Bit de Paridade)
• Paridade impar: – Para quantidade ímpar de bits de dados, a Paridade é 1
• Paridade par: – Para quantidade par de bits de dados, a Paridade é 1
• Exemplos:– Paridade Impar: se M=0100101, Paridade=1
– Paridade Par: se M=01001010010100, Paridade=0
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 9
Verificação de Erros Simples (Bit de Paridade)
• Seja um código binário de 8 bits, que pode gerar 28
(=256) caracteres. Usando um bit de paridade impar, teremos:– Distância de Hamming = 000000000 XOR 000000011 =
00000011 => Distância Mínima = dmín = 2
– Sendo: m = 8, r = 1, n = 8 + 1 = 9
– É possível detectar 1 erro, ou 1 bit errado apenas
– Redundância: R = n / m = 9 / 8 = 1,125
– Um bit de paridade não permite recuperar erros (Mesmo com um erro, é impossível saber se erro é na paridade ou no bit errado)
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 10
Verificação de Erros Simples (Bit de Paridade)
• Sendo R = n / m = n / (n -1) = 1 + 1 / (n-1)
• Buscando maior economia de canal de transmissão, para termos uma redundância R pequena, n deve ser muito grande
• Porém, a probabilidade de termos pelo menos um bit errado não detectado aumenta
• Se a probabilidade de um bit errado for p << 1:– Para n tão grande quanto 1/p, a probabilidade de termos
um bit correto é de 1/e = 0,3679
– A probabilidade de dois bits corretos é de 1/2e = 0,1839 ...
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 11
Distância de Hamming
– Exemplo 2• Desenvolva um código para transmitir um bit (0 ou 1) com
correção de erro simples
• Solução:
– Temos que determinar um código m+r
– Parte-se de um código simples (m) de 1 bit (0 ou 1), onde d=1
– Para correção de um erro simples são necessários (2d+1) bits = 3 bits. E a distância de Hamming mínima: dmin = 3
– Então: n = m + r, sendo n = 3 bits
– Num conjunto de 3 bits, entre todas as combinações possíveis, podemos associar as mensagens mais distantes tal como: 000 com onível 0 e 111 como o nível 1
– Desenhando um diagrama de símbolos do código
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 12
Distância de Hamming
– Exemplo 2000
100010001
Todas as conexões:
d = 1
011 110 101
111
Nível 0
Nível 1
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 13
Distância de Hamming
– Exemplo 2• Podemos perceber que os símbolos adjacentes a 000 e 111,
possuem distância de Hamming 1, respectivamente 001 / 010 / 100 e 011 / 110 / 101
• Assim, na correção de um bit errado apenas, podemos associar esses estados adjacentes aos mesmos níveis lógicos dos estados 000 (0) ou 111 (1)
• Por outro lado, com 2 bits errados, o código apresenta ambigüidades, não sendo válido nesse caso
• Para a correção de 1 bit, podemos desenhar o gráfico a seguir:
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 14
Distância de Hamming
– Exemplo 2000
100010001
Todas as conexões:
d = 1
011 110 101
111
Nível 0
Nível 1
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 15
Distância de Hamming
– Exemplo 2
000
Todas as conexões:
distância d = 1
011
110
101 111
Diagrama de estados (Cubo)
001
010
100
b0
b1
b3
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 16
Distância de Hamming
– Exemplo 2• Resumindo:
– Tamanho do quadro: n = m + r = 1 + 2 = 3 bits
– Havendo 2n = 8 mensagens possíveis, onde:• Mensagens válidas: 2m = 2
• Mensagens inválidas: 2n - 2m = 8 – 2 = 6
• Temos 3 mensagens inválidas com distância 1 de cada mensagem válida
• As mensagens inválidas podem ser aproximadas para a mensagem válida de menor distância de Hamming (dmín=1)
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 17
Algoritmo de Hamming
• Hamming [1] criou um código com m bits de mensagem e r bits de verificação, de modo que:– Possibilite a correção de todos os erros simples. Cada uma
das 2m mensagens válidas tem n palavras de código inválidas a uma distância igual a 1 da mensagem válida.
– Essas palavras inválidas são formadas pela inversão sistemática de cada um dos n bits da palavra de código de n bits formada a partir dela.
– Portanto, cada uma das 2m mensagens válidas exige n + 1 padrões de bits dedicados a ela.
– Como o número total de padrões de bits é 2n e utilizando n = m + r, devemos ter um código que atenda a: (n + 1)2m ≤2n
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 18
Código de Correção de 1 Erro
• Considerando um quadro com n bits, onde há m bits de informação e r bits de verificação, tal que: n = m + r ... (1)
• O objetivo é determinar uma combinação de valores para os r bits de verificação, formando um código de verificação
• Iremos impor a condição de que cada um dos códigos de verificação (os r bits) indique a posição errada em qualquer um dos n bits, com o valor zero indicando que não há erro
• Desse modo, o código de verificação (de r bits) deverádescrever n + 1 = m + r + 1 condições, de modo que: 2r ≥ m + r + 1 ... (2)
• De (1) e (2), temos: 2m ≤ 2r / (n+1) .... (3)
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 19
Código de Correção de 1 Erro
2m ≤ 2r / (n+1)
• Da equação (3) podemos calcular a Tabela I, que fornece os valor máximo de m para um dado n. Ou então o valor mínimo de n para um dado m
• A Tabela I também fornece a quantidade de bits em r (=n-m)
n m r1 0 12 0 23 1 24 1 35 2 36 3 37 4 38 4 49 5 4
10 6 411 7 412 8 413 9 414 10 415 11 416 11 517 12 518 13 5... ... ...
TABELA - I
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 20
Código de Correção de 1 Erro
• Geração dos Bits de Verificação e posições verificadas, entre parênteses:– Bit de verificação de ordem 1:
• 1 (1), 11(3), 101(5), 111(7), 10011(9), ...
– Bit de verificação de ordem 2: • 10 (2), 11(3), 110(6), 111(7), 1010(10), ...
– Bit de verificação de ordem 4: • 100 (4), 101(5), 110(6), 111(7), 1100(12), ...
– Bit de verificação de ordem 8: • 1000 (8), 1001(9), 1010(10), 1011(11), 1100(12), ...
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 21
Código de Correção de 1 Erro
• Tabulando-se os valores de bit de verificação (Check Bit), a partir dos bits de m, geramos a Tabela II
• Na Tabela II também estão as posições verificadas
• O Check Bit é um para uma quantidade ímpar de posições verificadas
Bit de Dados (m)
Posição do Check Bit
Posições Verificadas
1 1 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, ...2 2 2, 3, 6, 7, 10, 11, 14, 15, 18, ...3 4 4, 5, 6, 7, 12, 13, 14, 15, 20, ...4 8 8, 9, 10, 11, 12, 11, 12, 13, 14, 15, 24, ...5 16 16, 17, 18, 19, 20, 21, 22, 23, 24, ...6 32 32, 33, 34, 35, 36, 37, 38, 39, 40, ...7 64 64, 65, 66, 67, 68, 69, 70, 71, ...... ... ...
TABELA - II
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 22
Código de Correção de 1 Erro
• Na montagem do código:– Cria-se uma tabela com n (=m+r) colunas, para conter os códigos, As
colunas são numeradas da esquerda para a direita
– Os bits de verificação (r), determinados pela Tabela-II, são colocados nas colunas correspondentes (1,2,4,8,16,...)
– Os bits de dados (m) são colocados da direita para a esquerda, nas posições restantes da tabela
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 23
Código de Correção de 1 Erro
• Tabela de código do exemplo 3:
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 24
• Seja um código com 16 mensagens (M), com codificação binária (m = 4 bits), conforme a seguir, gerar uma seqüência de código conforme algoritmo de Hamming:
M m M m M m M m
0 0000 4 0100 8 1000 12 1100
1 0001 5 0101 9 1001 13 1101
2 0010 6 0110 10 1010 14 1110
3 0011 7 0111 11 1011 15 1111
Exemplo 3 - Enunciado
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 25
• Gerando um novo código, com 3 bits de verificação, conforme o algoritmo de Hamming, teremos:
M m+r M m+r M m+r M m+r
0 0000000 4 1001100 8 111000 12 0111100
1 1101001 5 0100101 9 0011001 13 1010101
2 0101010 6 1100110 10 1011010 14 0010110
3 1000011 7 0001111 11 0110011 15 1111111
Exemplo 3 - Resposta
Bits 1 2 3 4 5 6 7
Valor 1 0 0 0 0 1 1
Check bits: 1, 2, 4
Data bits: 3, 5, 6, 7
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 26
Exemplo – 3
Código de Correção de Erros (Hamming)
• Vamos supor que o quadro enviado tenha 1 erro na recepção, conforme a seguir:– Quadro enviado: 0111100 (= código 12)
– Quadro recebido: 0111000 (1 bit com erro)
– Onde:• Bits de Verificação Recebidos: 011
• Bits de Dados Recebidos: 1000
• Bits de Verificação Determinados pela Tab. II: 110
– Calculando o bit errado:• XOR dos Bits de Verificação: 011 XOR 110 = 101 = 5
• Então: O bit 5 do quadro está trocado
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 27
Código de Hamming em Grupos
• Quando os erros ocorrem em bits isolados, o Código de Hamming, mostrado anteriormente, é suficiente para detectar ou corrigir erros
• Porém, a situação mais freqüente é a ocorrência de rajadas de erros, onde vários bits são afetados.
• A solução é o envio de grupos de k quadros arrumados matricialmente, enviando bits em colunas
• Se ocorrer um erro de rajada de largura (ou duração) k
bits, apenas 1 bit de cada quadro será danificado, e o código de Hamming poderá ajudar a recuperar os bits perdidos
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 28
Código de Hamming em Grupos
• Quadros são subdivididos em k linhas
• Bits são enviados em colunas, para compensar erros de rajada
• Rajadas com menos de k bits afetam apenas 1 bit
Bits 1 2 3 4 5 6 7 8 9 10 11
Valor 1 0 1 1 1 0 0 1 0 0 1
Check bits: 1, 2, 4, 8
Data bits: 3, 5, 6, 7, 9, 10, 11
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 29
Problemas com o uso da Paridade (de 1 Bit)
• Paridade de 1 Bit:
– Consegue detectar apenar 1 erro
– Aplicável apenas em seqüências pequena de bits, pouco eficiente
– Erros duplos, ou em pares, não são detectados
– A maioria dos erros ocorrem em rajadas, afetando mais de um bit de um quadro
– Sob a condição de rajadas, a probabilidade de detecção se aproxima de 50% [3]
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 30
Paridade Bidimensional [3]
• Foi desenvolvida para melhorar a detecção de erros de rajadas
• Também possibilita a correção de erros
• Procedimento:
– Arruma-se os bits de um quadro em linhas e colunas
– Calcula-se a paridade em linhas e em colunas
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 31
Paridade Uni e Bidimensional
Paridade com bit único:
Detecta erro de um único bit
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 32
Códigos CRC
• Na verificação de erros, também são largamente empregados os códigos CRC (Cyclic Redundancy
Check), conhecidos também como códigos polinomiais
• São utilizados polinômios geradores – G(x)
• Os polinômios são representados por seqüências de 0´s e 1´s (binárias), exemplo:
– G(x) = x5 + x3 + x0 = 1 0 1 0 0 1 = 41 decimal
• Os polinômios primitivos são “candidatos” a polinômios geradores G(x), geralmente G(x) é um número primo
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 33
• Consiste num polinômio de grau n, da forma: p(x)=1 + c1.x + c2.x2 + c3.x3 +... + xn
• Onde:
– Os termos 1 e xn estão sempre presentes
– Os coeficientes c1, c2 , c3 , ... , cn-1 podem ser 0 ou 1
– Os polinômios devem ser irredutíveis (não divisíveis por outro de menor ordem)
Polinômio Primitivo
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 34
Polinômios Primitivos
5
4
3
2
1
n
1+x2+x3, 1+x+x3
1+x+x4, 1+x3+x4
1+x2+x5, 1+x+x2+x3+x5, 1+x3+x5, 1+x+x3+x4+x5, 1+x2+x3+x4+x5, 1+x+x2+x4+x5
1+x+x2
1+x
Exemplos de Polinômios Primitivos
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 35
Códigos CRC
• Algoritmo para calcular os bits de verificação (CRC)1. Seja r o grau de G(x). Acrescentar r bits zero à extremidade de
baixa ordem do quadro, de modo que ele passe a conter m + r bits e corresponda ao polinômio xrM(x)
2. Divida o string de bits correspondente a xrM(x) pelo string de bits G(x), utilizando a divisão de módulo 2
3. Subtraia o resto do string de bits correspondente a xrM(x) utilizando a subtração de módulo 2
• O resultado é o quadro completo (com CRC) que deverá ser transmitido. Chamando-o de polinômio de T(x), temos:– T(x) = xrM(x) - R(x)– Sendo: xrM(x) = M(x) * 2r
– E também: R(x) = resto da divisão de xrM(x) / G(x)
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 36
Códigos CRC
• Tarefas do Transmissor:– A partir de M(x) e G(x), calcular T(x)
– Enviar T(x)
• Tarefas do Receptor:– Dividir Tr(x) por G(x), se o resto for:
• Nulo: quadro recebido sem erros, ou com erro não detectado
• Não nulo: quadro com erro
Nota: G(x) deve ser conhecido por todas as estações da rede
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 37
Códigos CRC - Exemplo
• Quadro M(x) = 1010001101
• G(x) = x5+x4+x2+1 = 110101, polinômio grau 5
• Calculando :
– xrM(x) = M(x) * 25 = 101000110100000
– R(x) = resto(xrM(x)/G(x)) = 01110
– T(x) = xrM(x) - R(x) = 101000110010010
• O transmissor enviará T(x)
• Conferindo: Resto[ T(x) / G(x) ] = 0, Ok!!!
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 38
Desempenho dos Códigos CRC
• Ao receber um quadro T´(x), o nó receptor o divide por G(x)
– O pacote recebido, T´(x), eventualmente será diferente do transmitido, T(x), de modo que: T´(x)=T(x) + E(x)
– Onde E(x) é o vetor erro, resultado de erros no percurso do pacote entre o nó transmissor e receptor
– O nó receptor então calcula T´(x)/G(x) = [T(x) + E(x)] /G(x) = 0 + E(x)/G(x), sabendo que T(x)/G(x) = 0
– Portanto, o resultado do cálculo é simplesmente E(x)/G(x)
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 39
Desempenho dos Códigos CRC• Como G(x) é um polinômio irredutível, E(x)/G(x) somente será
zero se E(x) for divisível por G(x), o que deverá ser pouco provável, conforme mostrado a seguir:– Se houver apenas um bit errado:
• E(x) = xi
• xi não é divisível por G(x), para qualquer i
• Todos os erros de um bit são detectados
– Se houverem dois bits isolados errados:• E(x) = xi + xj , onde i > j
• E(x) pode ser representado como: E(x) = xj ( xi-j + 1)
• Uma condição suficiente para todos os erros duplos serem detectados éG(x) não dividir xk + 1, para qualquer k, até o valor máximo de i – j. Isto ocorre para k < Tamanho do Quadro
• Todos os erros de dois bits são detectados
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 40
Desempenho dos Códigos CRC– Se houver um numero ímpar de bits com erros:
• E(x) conterá um numero ímpar de termos, por exemplo x5 + x2 + 1, mas não x2 + 1
• É interessante observar que nenhum polinômio com um número ímpar de termos terá x + 1 como fator
• Ao tornar x + 1 um fator de G(x), podemos detectar todos os erros que consistem num número impar de bits invertidos
• Para confirmar que nenhum polinômio com um número ímpar de termos será divisível por x + 1, suponha que E(x) tenha um número ímpar de termos e seja divisível por x + 1. Fatore E(x) em (x + 1) Q(x). Agora, avalie E(1) = (1 + 1) Q(1). Como 1 + 1 = 0 (em módulo 2), E(1) deve ser igual a zero. Se E(x) tiver um número ímpar de termos, a utilização de 1 no lugar de x sempre produzirá 1 como resultado
• Portanto, nenhum polinômio com um número ímpar de termos será divisível por x + 1
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 41
Desempenho dos Códigos CRC– Por último, e mais importante, um código polinomial com r bits de
verificação detectará todos os erros em rajada que tiverem um tamanho ≤ r
• Um erro em rajada de tamanho k pode ser representado por E(x) = xi(xk – 1
+ ... + 1), onde i determina a distância entre a rajada e a extremidade direita do quadro recebido
• Se E(x) contiver um termo x0, E(x) não terá xi como fator; portanto, se o grau da expressão entre parênteses for menor que o grau de G(x), o resto nunca poderá ser igual a zero
• Se o tamanho da rajada for r + 1, o restante da divisão por G(x) será zero se e somente se a rajada for idêntica a G(x). Por definição de rajada, o primeiro e o ultimo bits de uma rajada devem ser iguais a 1; assim, a correspondência entre os valores dependera dos r - 1 bits intermediários. Se todas as combinações forem consideradas igualmente prováveis, a probabilidade desse quadro incorreto ser aceito como válido será de 1/[2(r – 1)]
• Também podemos mostrar que, ao ocorrer um erro em rajada com mais de r + 1 bits ou com várias rajadas mais curtas, a probabilidade de um quadro defeituoso passar sem ser percebido será igual a 1/(2r), supondo-se que todos os padrões de bits sejam igualmente prováveis.
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 42
Desempenho dos Códigos CRC
• Certos polinômios se tornaram padrões internacionais. Por exemplo, o polinômio utilizado em redes no padrão IEEE 802.3 (Ethernet) é:
G(x) = x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x1 + 1
• Entre outras características interessantes, ele tem a propriedade de detectar todas as rajadas de comprimento 32 bits ou menor e todos os erros de rajada que afetam um número ímpar de bits.
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 43
Cálculo de CRC por Software
Programa em C para cálculo do CRC-32
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 44
Cálculo de CRC por Hardware
• Apesar do cálculo necessário para determinar o CRC parecer complicado, Peterson e Brown (1961) mostraram que é possível criar circuitos divisores simples usando shift registers (registradores de deslocamento) para calcular e conferir os CRC
• Na prática, esse hardware quase sempre é utilizado. Virtualmente todas as LANs o empregam, como também os enlaces ponto a ponto o utilizam em alguns casos
• O cálculo por hardware é bem mais veloz que o equivalente em software
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 45
Cálculo de CRC por Hardware –Exemplo 1
• Polinômio gerador: G(x) = x5+x4+x2+1
• Simbologia:
Registrador de deslocamento (1 bit) – FF D
Porta OU Exclusivo
A
A B C D E
x5 x4 x2 1
Bits a serem transmitidos
M(x) = 1010001101
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 46
Cálculo de CRC por Hardware –Exemplo 1
• Outra maneira de implementar o cálculo do CRC
Bits a serem transmitidos
1x5
A B C D E
x4 x2
M(x) = 1010001101
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 47
Cálculo de CRC por Hardware –Exemplo 1
Mensagem a ser enviada
0´s adicionados
Resto da divisão M/G, a ser acrescentado à mensagem
Nota: Comparar com exemplo do Slide 37
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 48
Cálculo de CRC por Hardware –Exemplo 2
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 49
Exemplos de Polinômios CRC
• CRC-32 é usado em redes Ethernet, ATM, FDDI
• CRC-CCITT é usado nos protocolos XMODEM, X.25, SDLC e HDLC
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 50
Algoritmo de Checksum
• Objetivo: detectar “erros” (ex.: bits trocados) num segmento transmitido (nota: usado apenas na camada de transporte)
• Transmissor:– Trata o conteúdo da mensagem como seqüências de números
inteiros de 16 bits– Checksum: adição (soma em complemento de um) do conteúdo
da mensagem– Transmissor coloca o valor do checksum no campo checksum do
datagrama (UDP)
• Receptor:– Calcula o checksum da mensagem recebida– Verifica se o checksum calculado é igual ao valor do campo
checksum:• NÃO - erro detectado• SIM - não detectou erro. Mas podem haver erros não detectados
Rev. 18/04/2010 GIL PINHEIRO - Redes de Comunicação 51
Referências
[1] Hamming, R. W. Error Detecting and Error
Correcting Codes, The Bell Systems Technical Journal, Vol. XXIX, no. 2, April 1950
[2] Kurose, James F.; Ross, Keith W. Redes de
Computadores e a Internet, Editora Pearson
[3] Stallings, W. Data and Computer Communications, Third Edition, Maxwell MacMillan
[4] Tanenbaum, A. S. Redes de Computadores, 4ª. Edição, 2003, Editora Campus