Detecção e Correção de Erros - ufba.brromildo/downloads/ifba/redes/aula04a.pdf · Tipos de...

33
REDES DE COMPUTADORES Detecção e Correção de Erros

Transcript of Detecção e Correção de Erros - ufba.brromildo/downloads/ifba/redes/aula04a.pdf · Tipos de...

REDES DE COMPUTADORES

Detecção e Correção de Erros

A Camada de Enlace

� Serviços prestados

Serviços da camada

de Enlacede Enlace

Encapsulamento EndereçamentoControle de

erros

Controle de

fluxo

Controle de

acesso

Objetivo da Aula de Hoje

� Detecção e Correção de Erros

� Tipos de erros

� Detecção de erros

� Correção de erros

Tipos de Erros

� Entendendo a importância do tratamento de erros

� Se ocorre um erro de 0,1s em uma transmissão de

56Kbps isso implica em 5,6K bits afetados

� Como evitar erros?

� Impossível, nosso objetivo é detectá-lo e tratá-lo

Tipos de Erros

� Erros Simples

� Corresponde a um erro isolado

� Rajada de erros

� Quando uma sequência de bits são corrompidos� Quando uma sequência de bits são corrompidos

� Se numa transmissão de uma seqüência de 8bits e um deles chega corrompido, como descobrir?

Detecção de Erros

� Redundância

Receptor Transmissor

Meio

simDados

rejeitados

não

Dados &

Redundância

Dados &

Redundância

DadosDados

Detecção de Erros

� Técnicas

Métodos de detecção

Teste de paridadeTeste de redundância

cíclica (CRC)Checksum

Detecção de Erros

� Paridade

Dados

Remove o bit de

paridade e aceita os

dadossim

TransmissorNó receptor

Meio de transmissão

Bits

Contagem de

bits

Cálculo do bit de

paridade

Paridade OK?

sim

não

Rejeita

dados

Detecção de Erros

� Paridade

� Como fazer um verificador de paridade?

� Que porta lógica faz isso?

Detecção de Erros

� Paridade

� O que acontece se a quantidade de erros for par?

� 10010011 (transmitido)

� 10010101 (recebido)

� Como resolver isso?� Como resolver isso?

Detecção de Erros

� Paridade Combinada

Dados originais

Lin

ha

s d

e p

ari

da

de

Dados e bits de paridade

Colunas de paridade

Lin

ha

s d

e p

ari

da

de

Detecção de Erros

� Paridade Combinada resolve tudo?

Detecção de Erros

� Paridade Combinada resolve tudo?

?

Detecção de Erros

� Paridade Combinada resolve tudo?

Dados originais

Lin

ha

s d

e p

ari

da

de

0 0

Dados e bits de paridade

Colunas de paridade

Lin

ha

s d

e p

ari

da

de

10

Detecção de Erros

� Paridade Combinada resolve tudo?

Dados originais

Lin

ha

s d

e p

ari

da

de

0 0

Dados e bits de paridade

Colunas de paridade

Lin

ha

s d

e p

ari

da

de

10

Detecção de Erros

� CRC

Dados Dados

Dados

Resto CRC

Divisor Divisor

Receptor Transmissor

zero, aceito

diferente de zero, rejeitado

Detecção de Erros

� Gerador de CRC (Transmissor)

Divisor

Dados mais zeros extras

Quociente

Resto

Quando o bit mais à esquerda for

zero, devemos usar 0000 no lugar do

divisor original.

Detecção de Erros

� Verificador de CRC (Receptor)

DivisorDados + CRC

Quociente

Se Resto = 0, OK!

Quando o bit mais à esquerda for

zero, devemos usar 0000 no lugar do

divisor original.

Detecção de Erros

� Verificador de CRC (Receptor)

DivisorDados + CRC

Quociente

Se Resto = 0, OK!

Quando o bit mais à esquerda for

zero, devemos usar 0000 no lugar do

divisor original.

Detecção de Erros

� Exemplo de descarte

Detecção de Erros

� CRC

� Polinômio gerador de CRC é o nome dado para a

representação polinomial do divisor, por exemplo...

� 1101

� X3 + X2 + 1

� Porque isso é importante� Porque isso é importante

� Não deve ser dividido por x

� Garante que são detectaras rajadas de erros de comprimento

igual a do polinômio

� Deve ser dividido pelo binômio x+1

� A segunda condição assegura que o CRC encontrará erros em

rajadas de comprimento ímpar

Detecção de Erros

� CRC

Polinômio

Divisor

Detecção de Erros

� CRC

Detecção de Erros

� Checksum

� Também se baseia em redundância

� Conceito é simples

� Transmissor

� Segmenta o bloco de dados em k blocos de n bits

Soma os K segmentos� Soma os K segmentos

� Soma é complementada para gerar o checksum

� Checksum é enviado com os dados

Detecção de Erros

� Funcionamento do Transmissor

� 1010100100111001

� 10101001 00111001

� 10101001+00111001

� 11100010 (sum)

� 00011101 (checksum a ser enviado)� 00011101 (checksum a ser enviado)

� 10101001 00111001 00011101

Detecção de Erros

� Receptor

� Divide o bloco em k segmentos de dados de n bits

� Faz a soma dos segmentos

� Gera o checksum

� Se dados forem iguais a zero, dados aceitos!

Detecção de Erros

� Funcionamento do Receptor

� 101010010011100100011101

� 10101001 00111001 00011101

� 10101001+0111001+00011101

� 11111111 (sum)

� 00000000 (checksum)� 00000000 (checksum)

Correção de Erros

� Mas como corrigir erros?

� Correção por Retransmissão

� Correção Antecipada

� Quando os dados são recebidos e é verificado que existiu

um erro na transmissão, seria necessário corrigi-lo!

Correção de Erros

� Código de Hamming

� Escalar bits de redundância segundo seu código

� Para 7 bits seria necessário escalar 4 bits

Número de

bits de dadosNumero de bits de redundância Total de bits

bits de dados

m

Numero de bits de redundância

r

Total de bits

m + r

11 2 3

22 3 5

33 3 6

44 3 7

55 4 9

66 4 10

77 4 11

Correção de Erros

� Código de Hamming

� Mas como é feito?

� R1: 1,3,5,7,9,11

� R2: 2,3,6,7,10,11

� R4: 4,5,6,7

� R8: 8,9,10,11� R8: 8,9,10,11

Correção de Erros

� Código de Hamming

r2 cuidará destes bits.

r1 cuidará destes bits.

r3 cuidará destes bits.

r4 cuidará destes bits.

Correção de Erros

� Código de HammingCorrompido

O bit na posição 7 está errado

Perguntas finais

� Qual a vantagem e desvantagem de cada código?

� Onde este códigos são utilizados?

� Falta apenas um assunto para a prova!