Redes de comunicação: códigos de detecção e correção de erros
1. REDES DE
COMUNICAÇÃO
MÓDULO 1
CURSO PROFISSIONAL DE TÉCNICO DE GESTÃO E
PROGAMAÇÃO DE SISTEMAS INFORMÁTICOS
AGRUPAMENTO DE ESCOLAS DA BATALHA
160301
Professor: @ffaísca RC: M6 2015/2016
2. Nas transmissões de dados, fenómenos como o ruído e as
interferências que ocorrem podendo deturpar a mensagem
original.
Devido a este problema são aplicados códigos de deteção e
correção de transmissões.
2
3. Características dos Erros
Possíveis Abordagens
Códigos de Detecção de Erros:
Paridade,Checksum, CRC (Cyclic Redundancy Check)
Códigos de Detecção eCorrecçãode Erros
Correção de erros isolados: Código deHamming
Correção de erros em “rajada”(burst): BCH,Reed-Solomon,Reed-
Muller,Golay
3
4. 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, como por exemplo gravação no disco ou comunicação entre
computadores.
Está sujeito a diversos erros, como os causados por interferências
eletromagnéticas, envelhecimento de componentes, curto-circuitos,
...
4
5. Características dos erros
1. São inevitáveis em qualquer sistema de comunicação real;
2. A distribuição dos erros não é homogénea: bits isolados ou em
“rajadas”(bursts) de erros, com 8 ou mais bits sucessivos errados;
3. 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.
5
6. Possíveis abordagens no tratamento de erros:
1. Ignorar o erro;
2. Eco (transmissão à origem de reflexos dos dados recebidos);
3. Sinalizar o erro;
4. Detetar e solicitar a retransmissão em caso de erro;
5. Detetar e corrigir os erros na receção de forma automática.
6
7. Códigos de Deteção de Erros
1. Detetar um erro é uma tarefa mais simples do que detetar e
corrigir;
2. Nem sempre é possível solicitar uma retransmissão;
3. Todos os métodos utilizam a inserção de bits extras;
4. (Esses bits podem ser obtidos a partir da informação original e o
recetor recalcula os bits extras)
5. Um método ineficiente mas muito utilizado para detetar erros é a
Paridade;
6. Um método mais eficiente éo uso de um código polinomial ou CRC
(Cyclic Redundancy Check);
7
8. PARIDADE
Consiste basicamente no ato do transmissor adicionar um bit de
redundância após um determinado número de bits (normalmente
um byte):
N.º par de 1’s paridade par
N.º impar de 1’s paridade impar
000, 011, 101, 110 são mensagens transmitidas sem erro, tendo
em conta que o último bit é o de paridade
8
9. PARIDADE
Exemplo1:
O caracter A no código ASCII é representado por 1000001
O bit P de paridade é calculado e transmitido:
1000001P n.º par de 1’s P =0 (paridade par ), logo transmite-se
10000010
O recetor calcula a paridade da mensagem e compara-a com o bit P
recebido: P = paridade transmissão correta
9
10. PARIDADE
Este processo pode ser vulnerável se houver mais do que
um erro, permitindo assim que este passe até ao destino
sem ser identificado.
Exemplo: 11010010 –devolve valor 0 mas existe erro
Usada em muitas aplicações de hardware (onde uma
operação pode ser repetida em caso de dificuldade, ou onde
é útil a simples deteção de erros). Exemplo: Bus PCI e
SCSI.
10
11. CHECKSUM
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.
11
A B SOMA TRANSPORTE
0 0 0
0 1 1
1 0 1
1 1 0 1
12. CHECKSUM
12
Exemplo: checksum de 2 palavras de 8 bits
Dados iniciais: 00111101 00001101
Checksum é:
01001010
Checksum invertido:
10110101
13. CHECKSUM
Dados enviados:
00111101
00001101
10110101 (checksum –invertido)
No recetor, 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 palavras iniciais recebidas)
1 0 1 1 0 1 0 1 checksum enviado
1 1 1 1 1 1 1 1 sem erro
13
14. CHECKSUM
Exemplo com erro:
0 0 1 1 0 0 0 1
0 0 0 0 1 1 0 1
0 0 1 1 0 1 1 0 novo checksum
1 0 1 1 0 1 0 1 checksum enviado
1 1 1 01 01 1≠1 1 1 1 1 1 1 1
valor recebido incorretamente, com erro no 3ºou 5ºbit (de qualquer
uma das palavras enviadas, incluindo o checksum)
14
15. CHECKSUM - FALHAS
Poderão não ser detetados erros se:
os bits não estiverem ordenados;
tiverem sido inseridos bits nulos;
ocorram múltiplos erros que se anulem entre si.
15
16. CRC (CYCLIC
REDUNDANCY CHECK)
16
É uma técnica usada para deteção de erros na transmissão de dados
digitais. No método CRC são adicionados check bits (FCS –Frame
Check Sequence) à mensagem que irá ser transmitida.
Os bits FCS são calculados através da seguinte expressão:
FCS(x) é igual ao resto da divisão inteira entre duas funções
polinomiais M(x) e G(x) onde M(x) é a nossa mensagem original sem
código de erros e G(x) o polinómio gerado pré-definido (chave da
nossa codificação).
17. CRC (CYCLIC
REDUNDANCY CHECK)
Esquema mais eficiente
Emissor/recetor concordam num polinómio gerador G(x), em que
quanto maior for o seu grau maior será a capacidade de deteção de
erros
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 M(x) = 1𝑥7+0𝑥6+1𝑥5+1𝑥4+0𝑥3+0𝑥2+0𝑥1+1𝑥0
polinómio M(x) = x7+x5+x4+1
17
18. CRC (CYCLIC
REDUNDANCY CHECK)
Execução:
o polinómio M(x) é representado pela palavra inicial somada aos bits
de paridade e deve ser divisível por G(x);
O recetor tenta dividir M(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).
18
19. CRC (CYCLIC
REDUNDANCY CHECK)
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
Quando 1º bit do resultado da divisão for 1, volta-se a dividir pelo
polinómio gerador, se for 0 (zero) divide-se por zero (todos os bits do
polinómio gerador a 0 (zero))
A divisão de dois polinómios (na sua forma binária) é feita
recorrendo à operação XOR (⊕) 19
A B XOR (⊕)
0 0 0
0 1 1
1 0 1
1 1 0
23. 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 detetam
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.
23
24. HAMMING
24
A distância de Hamming é calculada entre a diferença entre
a mensagem enviada e recebida.
Exemplo:
10001110 e 00111000 a distância é 5, visto que existem 5
bits diferentes entre as duas sequências.
25. HAMMING
25
Dependendo desta distância (m) o código de Hamming
permite:
Detetar até m-1 bits errados;
Corrigir até
𝑚−1
2
(arredondado para baixo) bits errados.
Assim, se a distância de Hamming for 5 detetam-se até 4
bits errados e corrigem-se até 2 bits errados.
26. HAMMING
26
Qual a sequência de Hamming para 1101001 ?
Calcular o menor n que satisfaz: 2 𝑛 − 1 ≥ 𝑛 + 𝑐𝑜𝑚𝑝
Neste caso n=4 (24 − 1 ≥ 4 + 7) 15 ≥11)
As posições correspondentes às 4 primeiras potências de 2𝑛
vão ser utilizados com os bits de Hamming 1, 2, 4 e 8 e as
restantes com os valores da sequência dada.
27. HAMMING
27
Efetuar o XOR (em binário) da posição correspondente aos
bits com 1.
Efetuando todos os xor, obtemos: 1010.
Trocando a ordem dos bits, colocamos: 0101
28. HAMMING
28
Erros isolados
Códigos de Hamming -Codificação:
1. Os bits da palavra de código são numerados a partir da esquerda, começando
por 1;
2. É 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 controlo (2n);
3. Os restantes são preenchidos com k bits de dados conhecidos, isto é, com a
mensagem a transmitir;
Mensagem: 1001
1=20 2=21 3 4=22 5 6 7
1º Passo 1 0 0 1
2º Passo ? ? ?
3º Passo ? ? 1 ? 0 0 1
29. HAMMING
29
4. Cálculo dos bits de controlo, isto é, conversão para binário das posições ≠ 2n e
valor = 1;
3 – 011
7 – 111
5. Aplicação do OR Exculsivo (XOR - ⊕) aos valores obtido no ponto anterior
0 1 1
1 1 1
1 0 0
3ª 2ª 1ª inversão do número calculado: 0 0 1 (bits de controlo)
31. HAMMING
31
Códigos de Hamming -Descodificação: Correção de erros:
1. Calculamos o XOR correspondente à posição de todos os bits 1.
2. Se todos estiverem corretos obtemos todos os bits zero e não é
detetado erro.
3. Caso contrário o bit equivalente à soma (XOR) está errado.
32. HAMMING
32
Códigos de Hamming -Descodificação:
1. Conversão para binário das posições = 1;
2. Aplicação do OR Exculsivo (XOR - ⊕) aos valores obtido no ponto
anterior:
Se o resultado for = 0, não houve erros na transmissão
Se for ≠0, o resultado obtido convertido para decimal é igual à posição do erro