O documento descreve três técnicas de deteção e correção de erros em transmissões digitais: verificação da paridade, checksum e CRC (cycle redundancy check). A verificação da paridade usa um bit extra para indicar se o número total de bits 1 é par ou ímpar. O checksum calcula a soma dos bits transmitidos e compara ao valor recebido. O CRC gera um código cíclico de verificação com base na divisão do polinómio da mensagem por um polinómio gerador pré-definido.
Redes de Comunicação - Técnicas de deteção e correção de erros em transmissões digitais - 10º ano
1. Técnicas de deteção e correção de
erros em transmissões digitais
REDES DE
COMUNICAÇÃO
Docente: Raquel Saraiva
Realizado por: Alberto Filipe Sá Martins, nº1 e Pavel Chekurkov Alekseevitch, nº10 – 1G > Gestão e Programação de Sistemas Informáticos
Ano letivo 2014/2015
3. Quando estamos em ambientes ruidosos, é natural termos dificuldade
em ouvir alguém que está a falar connosco.
Nas transmissões de dados, fenómenos como o ruido e as interferências
também ocorrem, podendo deturpar a mensagem original. Devido a
este problema, são aplicados códigos de deteção e correção de erros às
transmissões.
Nesta apresentação, vamos descrever três desses códigos,
nomeadamente a Verificação da Paridade, CheckSum e CRC.
Introdução
3
5. Este é um dos métodos mais utilizados para a deteção de erros. O bit de
paridade indica o número de bits 1 presentes num carácter (Byte).
Assim, diz-se que a paridade é par se tiver um número par de 1's e
ímpar caso tenha número ímpar de 1's. Este assume o bit 0 quando se
trata de paridade par e 1 quando se trata de paridade ímpar.
Verificação da Paridade (1/2)
Vejamos os exemplos:
1100110 - a mensagem está correta. O último bit é zero indicando que o
número de 1's que o precede é par (4 uns).
10101011 - a mensagem está errada. O byte teria assim de ser
retransmitido visto o bit de paridade dizer que o número de 1's é ímpar e
no entanto é par (4 uns).
5
6. Exercícios:
Verificação da Paridade (2/2)
Das sequências de bits que se seguem, assinale em qual/quais ocorreram
erro, sabendo que o último bit é um bit de paridade.
a) 11100111110101011
R: A mensagem não foi enviada por ocorrência de um erro.
b) 10101011110001001
R: A mensagem não foi enviada por ocorrência de um erro.
c) 10101000000001000
R: A mensagem foi enviada correctamente sem erro.
d) 1110000
R: A mensagem não foi enviada por ocorrência de um erro.
6
8. Trata-se de técnicas utilizadas para detetar erros sobretudo na internet e
designam-se somas de verificação. Se da soma de checksums resultarem
apenas 1's, podemos inferir que "não" houve erros na transmissão, caso
contrário, existiu erro na transmissão.
CheckSum (1/2)
Exemplo de procedimento:
1º Temos dois números binários aleatórios (ex: 00111101 e 00001101);
2º Fazer a respetiva soma de binários:
00111101
+00001101
01001010
8
9. 3º Como a soma tem de ser em complemento para um terá de inverter a
sequência decorrente da soma normal (zeros passam a 1's e vice-versa):
Checksum invertido: 10110101
Os dados enviados serão então: 00111101 00001101 10110101, ou seja, os
dois bytes iniciais mais a sequência de checksum invertido.
CheckSum (2/2)
4º Para verificar se ocorreram erros durante a transmissão, no recetor,
teremos de voltar a somar os 2 bytes de dados enviados e, por sua vez, somar
também ao checksum invertido.
10110101 (checksum invertido)
01001010 (checksum do receptor)
+
11111111
Como a soma resultou em 1's, concluímos que não houve erro na transmissão.
9
11. Está é a técnica mais eficiente que as anteriores. Muitas vezes, é
também denominada por método de detecção polimonimal. O método
consiste em adicionar um conjunto de bits (FCS- Frame Check Sequence)
à mensagem original a transmitir. Os bits FCS são calculados através da
seguinte expressão:
FCS(x)=resto M(x)*xm / G(x)
CRC - Cycle Redudancy Check (1/3)
11
12. FCS(x) é igual ao resto da divisão inteira entre duas funções polimoniais
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).
Para facilitar a compreensão deste tema resolve se de seguida um
exercício.
CRC - Cycle Redudancy Check (2/3)
M(x)=x6+x5+x3+x+1
M(x)=1101011
G(x)=x1+x3+1
G(x)=11001
M(x)binXnbin=11010110000
1101011 = M(x)
0000=Xn
A B A XOR
0 0 0
0 1 1
1 0 1
1 1 0
12
13. M(x)*Xn
11010110000 |11001 G(x)bin
11001 1001010
000111
00000
001111
00000
011110
11001
001110
00000
011100
11001
001010
00000
01010
M(x)bin+FCS(x)bin=11010111010
1101011 M(x)bin
1010 FCS(x)bin
CRC - Cycle Redudancy Check (3/3)
Mas como é que o receptor verifica se
houve erro na transmissão ou não?
Faz a divisão do M(x) e o FCS
Se o resto for zero, diz-se que não
houve erro e o contrário se o resto for
diferente de zero.
13
14. Webgrafia
http://en.wikipedia.org/wiki/Checksum (consultado a 14-10-2014)
http://redes-108005.webnode.pt/modulo-1/tecnicas-de-dete%C3%A7%C3%A3o-e-
corre%C3%A7%C3%A3o-de-erros-em-transmiss%C3%B5es-digitais/ (consultado a 14-10-2014)
http://pt.wikipedia.org/wiki/Paridade_(telecomunica%C3%A7%C3%B5es) (consultado a 14-10-2014)
15