REDES E SISTEMAS
INTERNET
Camada de Enlace
Roteiro
•
Introdução
•
Enquadramento
•
Controle de Erros
•Controle de Fluxo
•MAC
Protocolo da camada 5
Protocolo da camada 4
Protocolo da camada 3
Protocolo da camada 2
Introdução
•
Recaptulando...
• Mecanismos de detecção de erros:
• Paridade.
• Checksums.
• Verificação de redundância cíclica (CRCs).
• Mecanismos de correção de erros:
• Códigos de Hamming.
• Códigos de convolução binários.
• Códigos de Reed-Solomon.
corrigir qualquer erro simples
•
Um método criado por Hamming em 1950 permite que
sejam corrigidos erros com um
r
pequeno
•
Passos:
• Numerar os bits da palavra de código começando com 1 à esquerda, o bit 2 em seguida, etc.
• Os bits que são potência de 2 serão os bits de verificação (os outros são bits de dados).
• Os bits de verificação são obtidos por ou exclusivo (XOR) das posições que influenciam.
Códigos de Hamming
•
Exemplo 1
envio da letra “H” (1001000):
• Usando o código de Hamming com n = 11 r = 4:
• Inclusão dos bits m.
• Inclusão de bits r usando a regra de expansão (Vide cola abaixo):
? ?
1
?
0 0 1
?
0 0 0
01 02 03 04 05 06 07 08 09 10 11
Valor
Posição
0 0
1
1
0 0 1
0
0 0 0
01 02 03 04 05 06 07 08 09 10 11
Valor
Posição
3 = 1 + 2; 5 = 4 + 1; 6 = 4 + 2; 7 = 4 + 2 + 1; 9 = 8 + 1; 10 = 8 + 2; 11 = 8 + 2 + 1
• Suponha que o bit 11 foi invertido como corrigir no receptor?
• O receptor faz a verificação de paridade nos bits 1, 2, 4 e 8 com relação aos bits que eles se referem
• Paridade de 1 1 0 1 0 1 = 1 (falhou)
• Paridade de 2 1 0 1 0 1 = 1 (falhou)
• Paridade de 4 0 0 1 = 1 (passou)
• Paridade de 8 0 0 1 = 1 (falhou)
0 0 1 1 0 0 1 0 0 0 0
0 0 1 1 0 0 1 0 0 0 1
Enviado
Recebido
1 = 3 5 7 9 11; 2 = 3 6 7 10 11; 4 = 5 6 7; 8 = 9 10 11
01 02 03 04 05 06 07 08 09 10 11
Códigos de Hamming
•
Exemplo 1
envio da letra “H”:
• Suponha que o bit 11 foi invertido como corrigir no receptor?
• Depois que o receptor descobre que a paridade de 1, 2 e 8 está errada, ele identifica a posição que os dígitos verificadores compartilham
3
5
7
9
11 Paridade de 1
Paridade de 2
Paridade de 8
6
10
• Usando o código de Hamming com n = 11 r = 4:
• Inclusão dos bits m.
• Inclusão de bits r usando a regra de expansão (Vide cola abaixo):
? ?
1
?
0 0 0
?
0 0 1
01 02 03 04 05 06 07 08 09 10 11
Valor
Posição
0 0
1
0
0 0 0
1
0 0 1
01 02 03 04 05 06 07 08 09 10 11
Valor
Posição
3 = 1 + 2; 5 = 4 + 1; 6 = 4 + 2; 7 = 4 + 2 + 1; 9 = 8 + 1; 10 = 8 + 2; 11 = 8 + 2 + 1
Códigos de Hamming
•
Exemplo 2
envio da letra
“A” (1000001):
• Suponha que o bit 4 foi invertido como corrigir no receptor?
• O receptor faz a verificação de paridade nos bits 1, 2, 4 e 8 com relação aos bits que eles se referem
• Paridade de 1 1 0 0 0 1 = 0 (passou)
• Paridade de 2 1 0 0 0 1 = 0 (passou)
• Paridade de 4 0 0 0 = 0 (falhou)
• Paridade de 8 0 0 1 = 1 (passou)
0 0 1 0 0 0 0 1 0 0 1
0 0 1 1 0 0 0 1 0 0 1
Enviado
Recebido
1 = 3 5 7 9 11; 2 = 3 6 7 10 11; 4 = 5 6 7; 8 = 9 10 11
01 02 03 04 05 06 07 08 09 10 11
Posição
usando o conceito de
síndrome do erro
:
• Se existem k dígitos de paridade, forme uma sequência de k bits (começando do mais significativo para o menos significativo):
• Se o dígito de paridade está ok use um 0, se falhou, use o valor 1.
• Converta a sequência para decimal para encontrar o índice do erro.
• No exemplo 1 a síndrome do erro é 1011 ( 8 falhou, 4 passou, 2 falhou e 1 falhou)
• 1011 em decimal é 11, logo o dígito 11 está invertido!
• No exemplo 2 a síndrome do erro é 0100 ( 8 passou, 1 falhou, 2 passou e 1 passou)
Verificação de redundância cíclica (CRC)
•
Método para detecção de erros amplamente usado
•Também conhecido como código polinomial:
• São considerados polinômios com expoentes relacionados à presenta de 1s na sequência de bits:
• Exemplo de polinômio para um quadro de k = 6 bits:
• Quadro: 110001
• Polinômio: x5 + x4 + x0
• As operações sobre o polinômio são feitas em módulo 2:
• As adições e subtrações correspondem a um XOR
• Na divisão considera-se que o divisor “cabe” no dividendo se possuem a mesma quantidade de bits
1. Seja G(x) o polinômio gerador de grau r, acrescente r bits 0 ao
quadro.
2. Divida o novo quadro pelo gerador G(x) (módulo 2).
3. Subtraia do quadro original o resto da divisão (módulo 2).
•
Exemplo com G = 10011 e M = 1101011011:
1101011011
0000
10011
01001
1
1100001010
00000
10110
00101
00
00111
0
T(x) = 1101011011
1110
(resto final da divisão)
Verificação de redundância cíclica (CRC)
•
Algoritmo para checagem no receptor:
• Divida o quadro recebido por G(x).
• O resto da divisão deverá ser igual a 0.
•
Exemplo de recepção sem erro:
•
Faça o teste de inversões simples e duplas e verá que o
resto dará diferente de zero!
1101011011
1110
10011
01001
1
110000101
00000
10111
00100
11
• CRC-12 (Celulares) x12 + x11 + x3 + x2 + x1 + 1
• CRC-16-CCITT (Bluetooth) x16 + x15 + 1
• CRC-32 (HDLC, Ethernet) x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x9 + x7 + x5 + x4 + x2 + x1 + 1
•
Entenda o poder do CRC
• O padrão CRC-CCITT detecta:
• Todos os erros simples, duplos ou com número ímpar de bits.
• Todos os erros em rajada de comprimento < 17 bits.
Exercícios para praticar...
•
Exercício 1:
• Os protocolos usados na camada 2 usam um CRC-4 com G = 11001.
• O transmissor enviou o quadro 1011011011 e devido a um erro na camada física o receptor recebeu o quadro 1010111011
• Prove que o erro ocorrido na camada física será detectado pela camada de enlace
•
Exercício 2:
• A camada 2 de uma rede espacial comunica-se com estações terrestres usando códigos de Hamming.
• Um quadro contendo 1001011 é transmitido (juntamente com os bits de paridade), mas a estação terrestre recebe 1001001
• Mostre quais são os bits de paridade enviados e prove que o receptor consegue identificar que houve erro e corrigir o erro!
• Protocolo simplex sem restrições.
• Protocolo simples stop-and-wait.
• Protocolo simplex para canal com ruído.
• Protocolo de janela deslizante.
• Protocolo que utiliza go back n
• Protocolo com retransmissão seletiva