REDES DE COMPUTADORES Prof. Rafael Gil Ferques
DETECÇÃO E CORREÇÃO DE ERROS Características dos Erros Abordagens Possíveis Códigos de Detecção e Correção de Erros
Correção de erros isolados: Código de Hamming
Códigos de Detecção de Erros:
Checksum e CRC (Cyclic Redundancy Check)
2
DETECÇÃO E CORREÇÃO DE ERROS Características dos Erros Abordagens Possíveis Códigos de Detecção e Correção de Erros
Correção de erros isolados: Código de Hamming
Códigos de Detecção de Erros:
Checksum e CRC (Cyclic Redundancy Check)
2
ERRO
Um sistema de computação funciona em função da transferência de informação desde o nível de circuito integrados até aos níveis mais altos.
Ex: Gravação no disco ou comunicação entre computadores.
Está sujeito a diversos erros, tais como:
Interferências eletromagnéticas, componentes, curto-circuito, etc...
envelhecimento
de
3
C ARACTERÍSTICAS DOS ERROS 1. 2.
3.
São inevitáveis em qualquer sistema de comunicação real; A distribuição dos erros não é homogénea: bits isolados ou em “rajadas”(bursts) de erros, com 8 ou mais bits sucessivos errados; Deve-se levar em conta o meio físico de transmissão de dados, para incluir maior ou menor redundância na transmissão, a fim de garantir que a informação recebida seja confiável. 4
TRATAMENTO DE ERROS
Possíveis Abordagens: 1. 2. 3. 4.
5.
Ignorar o erro; Eco (transmissão à origem de reflexos dos dados recebidos); Sinalizar o erro; 4.Detectar e solicitar a retransmissão em caso de erro; Detectar e corrigir os erros na recepção de forma automática.
5
DETECÇÃO E CORREÇÃO DE ERROS
Códigos de Correção de Erros
Códigos de correção podem recuperar o dado original a partir do código com erros; Consistem na criação de códigos extras que detectam situações inválidas mas que mantém a identidade do dado original; O conceito mais básico e mais importante desses códigos é a distância de Hamming, utilizada para a criação de códigos de correção.
6
DETECÇÃO E CORREÇÃO DE ERROS
Código de Hamming
Desenvolvido em 1950, por Richard Hamming. Basicamente emprega Bit Stuffing
Bits de Controle de dados estão nas posições 2n. Bits 1,2,4,8,16,32,etc.... Os outros são utilizados para a mensagens original Bits 3,5,6,7,9,10,11,12,13,14,15,17,etc....
7
DETECÇÃO E CORREÇÃO DE ERROS - H AMMING
Passo-a-Passo da Codificação: 1. 2.
3.
Os bits da palavra de código são numerados a partir da esquerda, começando por 1; É acrescentada informação redundante em posições prédefinidas, ou seja, os bits que são potência de 2 vão ser bits de controle (2n); Os restantes são preenchidos com bits de dados conhecidos, isto é, com a mensagem a transmitir;
8
DETECÇÃO E CORREÇÃO DE ERROS - H AMMING
Passo-a-Passo da Codificação - Continuação:
Mensagem a transmitir: 1100
Passos
1º 2º 3º
1º 1 H H
2º 1 H H
3º 0 1
Posições 4º 0 H H
5º
6º
7º
1
0
0
9
DETECÇÃO E CORREÇÃO DE ERROS - H AMMING
Passo-a-Passo da Codificação - Continuação: Calcular os Bits Hamming (bits de controle), ou seja, verificar as posições setadas em “1” e converter para o binário da posição:
4.
5.
3 – 011 5 – 101
Aplicar XOR entre os valores anteriores: 0 xor 1 1 4º
1 0 1 2º
1 1 0 1º 10
Posições
DETECÇÃO E CORREÇÃO DE ERROS - H AMMING
Passo-a-Passo da Codificação - Continuação: 6.
Compor mensagem, inserindo os valores obtidos nas respectivas posições do bit de paridade:
Passos
1º 2º 3º 6º 7.
1º 1 H H 0
2º 1 H H 1
3º 0 1 1
Posições 4º 0 H H 1
5º
6º
7º
1 1
0 0
0 0
Mensagem a transmitir: 0111100 11
DETECÇÃO E CORREÇÃO DE ERROS - H AMMING
Passo-a-Passo da Decodificação: 1. 2.
Converter para binário as posições setadas em “1”; Aplicar XOR aos valores obtidos anteriormente;
Se o valor for diferente de 0 houve erros na transmissão. Caso contrário não houve erros na transmissão.
12
DETECÇÃO E CORREÇÃO DE ERROS - H AMMING
Passo-a-Passo da Decodificação - Continuação: 4.
Sem erro: 0111100
5.
2 – 010 3 – 011 4 – 100 5 – 101
xor xor
0 1 1 1 0
1 0 1 0 1
0 0 0 1 1
Erro no bit 3
Com erro: 0101100
2 – 010 4 – 100 5 – 101
13
EXERCÍCIOS 1.
Codifique os seguintes códigos para envio: a) b) c) d)
2.
1011 10011010 11101111 01001101
Decodifique os seguintes códigos, caso haja erro na mensagem indique qual o bit errôneo e a mensagem correta: a) b) c)
011100001010 001100101010 0011110 14
CÓDIGOS DE DETECÇÃO DE ERROS 15
CRC (C YCLIC REDUNDANCY C HECK ) A verificação de redundância cíclica é um código detector de erros que gera um valor expresso em poucos bits em função de um bloco maior de dados, como um pacote de dados com intuito de detectar erros de transmissão ou armazenamento.
16
CRC (C YCLIC REDUNDANCY C HECK )
O CRC é calculado e anexado à informação a transmitir /armazenar e verificada após a recepção ou acesso, para confirmar se não ocorreram alterações.
Implementação simples; Analise matemática simples; Eficiência na detecção de erros típicos causados por ruído em canais de transmissão.
17
CRC (C YCLIC REDUNDANCY C HECK )
Emissor/receptor concordam num polinómio gerador G(x), em que quanto maior for o seu grau maior será a capacidade de detecção de erros.
CRC-16
Checagem de soma de 16 bits utilizada por diversos protocolos de transferência de arquivos. x16+x15+x2+1.
CRC-CCITT
Padrão internacional de 16 bits. x16+x12+x5+1.
CRC-32
Padrão de 32 bits, utilizado na maioria dos protocolos de redes locais. x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x.
18
CRC (C YCLIC REDUNDANCY C HECK ) Neste polinómio tanto o bit de maior ordem quanto o de menor ordem devem ser iguais a 1. Palavra inicial de k bits é representado por um polinómio de X de ordem k-1.
Palavra inicial = 10110001 Polinómio = X7+X5+x4+1
19
CRC (C YCLIC REDUNDANCY C HECK )
Execução:
O polinómio p(x) é representado pela palavra inicial somada aos bits de paridade e deve ser divisível por G(x); O receptor tenta dividir p(x) por G(x). Se houver resto ≠0, houve um erro de transmissão; Se houver um erro, em vez de se receber o polinómio T(x), recebe-se T(x)+E(x); Cada bit 1 em E(x) corresponde a um bit invertido; T(x)/G(x) é sempre zero, logo o resultado é E(x)/G(x).
20
CRC (C YCLIC REDUNDANCY C HECK )
Exemplo:
Mensagem a transmitir:10111011 Polinómio gerador G(X) = x4+x+1 => 10011 Acrescenta-se à mensagem inicial, a quantidade de zeros equivalentes ao grau de G(x), ficando: 10111011 0000 Seguidamente divide-se a mensagem (ponto anterior) pelo polinómio gerador. A divisão de dois polinómios (na sua forma binária) é feita recorrendo à operação XOR ( ⊕)
21
CRC (C YCLIC REDUNDANCY C HECK )
O resto que da divisão é finalmente adicionado à mensagem original, pelo que a mensagem transmitida será: 22 101110111111
CRC (C YCLIC REDUNDANCY C HECK )
Para descodificar a mensagem, o procedimento deve ser repetido.
23
<=≠ 0, mensagem recebida com erro.
CRC (C YCLIC REDUNDANCY C HECK )
24
EXERCÍCIOS 1.
2.
3.
4.
Verifique se houveram erros, através do CRC de polinômio gerador x4+1, no seguinte quadro recebido:11010110111110 Utilizando o CRC com polinômio gerador = x4+x3x+x, gere o quadro a ser transmitido, com o seguinte original: 1000100100 Utilizando o quadro anterior, gere o quadro a ser transmitido utilizando os polinômios CRC-16, CRCCCITT e CRC-32 Qual é o resto obtido pela divisão de x7 + x5 + 1 pelo polinômio gerador x3 + 1?
25
EXERCÍCIOS 5.
Um fluxo de bits 10011101 é transmitido com a utilização do método de CRC padrão descrito no texto. O polinômio gerador é x3 + 1. Mostre o string de bit a ser transmitido. Suponha que o terceiro bit a partir da esquerda seja invertido durante a transmissão. Mostre que esse erro é detectado na extremidade receptora
26
C HECKSUM
Consiste na transmissão de todas as palavras juntamente com o resultado da sua soma binária. Inclui o bit de transporte.
Inversão do valor dos bits do Checksum.
27
C HECKSUM
Exemplo:
Checksum de 2 palavras de 8 bits
Dados iniciais: 00111101 00001101
Checksum
Checksum invertido:
é: 01001010
10110101
28
C HECKSUM
Dados enviados: 00111101 00001101 10110101 (checksum – invertido)
No receptor, as palavras são novamente somadas e comparadas com o checksum enviado: Se qualquer um dos dados transmitidos, incluindo o checksum, sofrerem algum erro então, a soma do novo checksum com o checksum enviado, será diferente de 1. 0 1 0 0 1 0 1 0 →novo checksum (das
1 0 1 1 0 1 0 1 → checksum enviado 1 1 1 1 1 1 1 1 → sem erro
palavras iniciais recebidas) 29
C HECKSUM
Exemplo com erro: 00110001 00001101 0 0 1 1 0 1 1 0 → novo checksum 1 0 1 1 0 1 0 1 → checksum enviado 11101011 ≠ 11111111 Valor recebido incorretamente, com erro no 3ºou 5ºbit (de qualquer uma das palavras enviadas, incluindo o checksum). 30