Você está na página 1de 30

Tecnologias de Redes de

Computadores

Gustavo Sousa Pavani

Universidade Federal do ABC (UFABC)


2 Quadrimestre - 2016

Aula 3
Camada de enlace de dados
A camada de enlace de dados tem uma srie funes
especficas:
Prover uma interface de servios bem definida para a camada de
rede;
Tratar os erros de transmisso;
Regular o fluxo de dados, de forma que um receptor lento no
seja inundado por um transmissor rpido.
Para cumprir esses objetivos, a camada de enlace de
dados toma os pacotes que recebeu da camada de rede
e os encapsula em quadros para a transmisso.
Cada quadro contm um cabealho de quadro, um campo de
carga til para guardar o pacote e um cauda de quadro.
O gerenciamento dos quadros formam o ncleo das tarefas da
camada de enlace de dados.

Gustavo S. Pavani 2
Relao entre pacotes e quadros

Note que as funes de controle de erro e de controle de


fluxo podem ser tambm encontradas em outras
camadas!

Gustavo S. Pavani 3
Servios providos a camada de rede
O principal servio da camada de enlace de dados
transferir dados da camada de rede da mquina origem
para a camada de rede na mquina destino.
mais fcil imaginar um protocolo de enlace de dados (a)!

Gustavo S. Pavani 4
Tipos de servio - 1
Servio sem conexo e sem confirmao
A mquina origem envia quadros para a mquina destino, sem
que o destino acuse o recebimento deles.
No estabelecimento de nenhuma conexo lgica.
Apropriado quando a taxa de erros to baixa, que a recuperao
deixada para as camadas superiores.
Ex: redes locais.
Tambm apropriada para acomodar trfego tempo real.
Servio sem conexo, mas com confirmao.
No h nenhuma conexo lgica, mas cada quadro tem seu
recebimento acusado.
Se a confirmao de recebimento do quadro no chega dentro de
um certo intervalo, ele pode ser enviado novamente.
Apropriado para redes com canais no-confiveis.
Ex: redes sem fio.
Gustavo S. Pavani 5
Tipos de servio - 2

Servio com conexo e com confirmao:


o tipo de servio mais sofisticado.
As mquinas origem e destino estabelecem uma conexo antes
dos dados serem transferidos.
Cada quadro enviado na conexo recebe um nmero e a
camada de enlace de dados garante que cada quadro enviado
recebido.
Tambm garante que cada quadro recebido apenas uma vez e
que todos os quadros so recebidos na mesma ordem.
Trs fases
Estabelecimento da conexo com inicializao dos contadores.
Um ou mais quadros so transmitidos.
A conexo e os seus recursos (buffers, contadores, etc) so
liberados.

Gustavo S. Pavani 6
Sub-rede WAN com enlaces ponto-a-ponto
Exemplo de sub-rede WAN com enlaces ponto-a-ponto.
Quando o quadro chega no roteador, o hardware o checa por erros
e passa o quadro para o software da camada de enlace de dados.
O software checa se o quadro esperado e, em caso afirmativo,
envia o pacote que est na carga til para o software de roteamento.
O software de roteamento escolhe o enlace de sada e passa o
pacote para o software da camada de enlace de dados, que o
transmite.

Gustavo S. Pavani 7
Enquadramento
Para prover o servio a camada de rede, a camada de enlace
de dados deve usar o servio fornecido pela camada fsica.
O fluxo de bits fornecido pela camada fsica no est isento de erros.
A camada de enlace de dados deve detectar e, se necessrio, corrigir
esses erros.
A camada de enlace de dados deve quebrar esse fluxo de bits em
quadros discretos e calcular um checksum para cada quadro.
Quando o quadro chega no destino o checksum recalculado.
Se o novo valor de checksum for diferente daquele contido no quadro,
ento a camada de enlace de dados sabe que houve um erro e toma as
medidas necessrias para gerenciar essa situao.
Quebrar um fluxo de bits em quadros no uma tarefa trivial! Mtodos:
Contagem de caracteres
Bytes indicadores (flags) com preenchimento (stuffing) de bytes.
Indicadores de incio e fim com preenchimento de bits.
Violaes da codificao da camada fsica.
Gustavo S. Pavani 8
Contagem de caracteres
Cabealho do quadro contm campo que especifica o
nmero de caracteres no quadro.
O nmero de caracteres pode ser modificado por erros de
transmisso.
O que causa um erro de sincronizao.
Mesmo que o checksum esteja incorreto, o destino sabe que o quadro foi
danificado, mas no sabe aonde o prximo quadro comea.
Raramente usado hoje em dia.

Gustavo S. Pavani 9
Bytes indicadores com preenchimento de bytes

Evita o problema da re-sincronizao aps um erro


atravs do uso de bytes especiais para o incio e o fim de
cada quadro.
Normalmente se usa o mesmo byte, chamado de byte flag,
como delimitadores do incio e do fim do quadro.
Problemas com dados binrios. Que pode ser resolvido com o uso
de caractere especial de escape (ESC) antes de cada byte flag nos
dados binrios. A camada de enlace de dados remove o byte de
escape antes que os dados sejam entregues para a camada de
rede.
Caso um caractere de escape aparea no meio dos dados binrios,
ele tambm recebe um byte de escape para preenchimento. Assim,
um s byte de escape parte de uma sequncia de escape,
enquanto dois bytes de escape indica um caractere de escape que
ocorreu naturalmente nos dados.
Essa tcnica conhecida como preenchimento (stuffing) de bytes.
Problema: supe o uso de caracteres de 8 bits.

Gustavo S. Pavani 10
Quadros delimitados por byte flags

(a) Exemplo do uso de flags como delimitadores.


(b) Quatro sequncias de bytes antes e depois do
processo de preenchimento.
Gustavo S. Pavani 11
Indicadores de incio e fim com preenchimento de bits

Permite que os quadros contenham um nmero qualquer


de bits, permitindo cdigos de caracteres com um
nmero qualquer de bits.
Cada quadro comea e termina com certo padro de bits, como,
por exemplo, 01111110.
Quando a camada de enlace de dados do emissor encontra 5
bits 1, ele preenche com um bit 0.
O preenchimento de bits anlogo ao preenchimento de bytes.
O receptor quando recebe 5 bits 1 seguido de um bit 0, ele
automaticamente remove o bit 0.

Gustavo S. Pavani 12
Violaes da codificao da camada fsica
possvel somente quando a codificao na camada
fsica contm certa redundncia.
Por exemplo, algumas LANs codificam um bit de dados usando
dois bits fsicos, pois as transies facilitam encontrar os limites
de cada bit.
Ex: o par 1-0 indica um bit 1 e o par 0-1 indica o bit 0. Assim,
as combinaes 0-0 e 1-1 no so usadas para dados, mas so
usadas para delimitar quadros em certo tipos de protocolo.
Vrios protocolos de enlace de dados usam uma
combinao do mtodo da contagem de caracteres com
outros mtodos.
Quando um quadro chega, o campo contador usado para
localizar o final do quadro. Somente se o delimitador apropriado
for encontrado naquela posio e o checksum estiver correto
que o quadro ser aceito como vlido. Caso contrrio, a entrada
lida em busca do prximo delimitador.
Gustavo S. Pavani 13
Controle de erro
Como ter certeza que os quadros foram entregues
camada de rede do destino e na ordem correta?
A maneira usual de se obter uma entrega confivel atravs do
envio de algum retorno ao emissor.
Usualmente, o receptor envia quadros especiais contendo
confirmaes positivas ou negativas sobre os quadros enviados.
Entretanto, um problema no hardware, como uma rajada de rudo,
pode fazer com que um quadro se perca completamente.
Necessidade de um temporizador na camada de enlace de dados.
Quando o emissor envia um quadro, ele deve iniciar um temporizador.
Se o temporizador deve expirar aps um intervalo longo o suficiente
para o quadro atingir o destino, ser processado e ter a confirmao
retornada para o emissor.
Finalmente, se o quadro ou sua confirmao de recebimento
perdida, a soluo bvia retransmitir o quadro.
Para evitar que o receptor receba o quadro mais de uma vez,
necessrio alocar um nmero de sequncia para os quadros, de forma
que o receptor seja capaz de distinguir as retransmisses dos
originais.
Gustavo S. Pavani 14
Controle de fluxo
Um problema importante que ocorre na camada de
enlace de dados (e em outras tambm) o que fazer
quando o emissor quer transmitir quadros mais
rapidamente que o receptor pode aceitar.
Duas estratgias so normalmente usadas:
No controle de fluxo baseado em realimentao (feedback), o
receptor manda informao para o emissor dando permisso
para enviar mais dados ou, ao menos, dizendo ao emissor a
situao do receptor.
Vrios esquemas so conhecidos, mas usam na maior parte das
vezes um conjunto de regras de quando o emissor pode transmitir o
prximo quadro.
No controle de fluxo baseado em taxa, o protocolo tem um
mecanismo para limitar a taxa que o emissor pode transmitir
dados, sem usar uma realimentao do receptor.
Essa estratgia nunca usada na camada de enlace de dados.
Gustavo S. Pavani 15
Tratamento de erros

Duas estratgias para tratar os erros:


Inserir informao redundante em cada bloco de dados
enviado, o que permite o receptor deduzir os dados
que foram transmitidos.
Ex: canais com alta taxa de erro, como redes sem fio. melhor
entender os dados transmitidos do que se basear em
retransmisses, que tambm podem conter erros.
Incluir somente redundncia suficiente para permitir
que o receptor deduza que um erro aconteceu e que
ser necessrio a retransmisso do dado.
Ex: canais tem baixa taxa de erro, como comunicaes
pticas. mais barato usar um cdigo detector de erro e
retransmitir os dados que ocasionalmente tiverem problemas.

Gustavo S. Pavani 16
Distncia de Hamming
Um quadro contendo m bits de dados e r so bits
redundantes para checagem. Seja n = m + r, que
normalmente referido como palavra-cdigo (codeword).
Seja duas palavras cdigo 10001001 e 10110001, possvel observar
que h 3 bits diferentes.
O nmero de posies de bits que duas palavras-cdigo diferem
chamada de distncia de Hamming.
Na maior parte das aplicaes de transmisso de dados, todas as 2m
mensagens so vlidas, mas nem todas as 2n possveis palavras-
cdigo so usadas, devido ao clculo dos bits de checagem.
Assim, possvel construir uma lista completa de palavras-cdigo e dessa
lista achar as duas palavras-cdigo cuja distncia de Hamming mnima.
Essa a distncia de Hamming do cdigo.
As propriedades de deteco e correo de erro dependem da
distncia de Hamming.
Detectar d erros: distncia de Hamming = d + 1
Corrigir d erros: distncia de Hamming = 2d + 1

Gustavo S. Pavani 17
Exemplos de cdigos
Exemplo de cdigo de deteco de erros:
Um bit de paridade concatenado aos dados.
O bit de paridade escolhido de forma que o nmero de bits 1 na
palavra par (ou mpar).
Ex: 1011010 enviado em paridade par, um bit 0 adicionado. Com
paridade mpar, um bit 1 adicionado.
Um cdigo com paridade nica tem distncia de Hamming igual a 2.
Exemplo de cdigo corretor de erros:
Considere o seguinte cdigo com somente 4 palavras-cdigo
vlidas: 0000000000, 0000011111, 1111100000 e 1111111111.
A distncia de Hamming do cdigo igual a 5, o que significa que
esse cdigo pode corrigir erros duplos.
Ex: Se 0000000111 chega no receptor, ele considera que o original foi
0000011111. Se houver um erro triplo, entretanto, o erro no ser
corrigido de forma apropriada.

Gustavo S. Pavani 18
Correo de erros simples - 1
Cdigo com m bits de mensagem e r bits de checagem
que permite todos os erros simples sejam corrigveis.
Todas as 2m mensagens legais tem n palavras-cdigo distncia
de 1 dela.
Essas so formadas atravs da inverso sistemtica de cada um dos
n bits da palavras-cdigo que formam essas mensagens.
Assim, cada uma das 2m mensagens legais requer n + 1 padres de
bits dedicados.
Como o nmero total de padres de bits 2n temos que (n + 1)2m 2n
ou (m + r + 1)2m 2n
Mtodo de Hamming (1950)
Os bits so numerados da esquerda para direita.
Os bits que so potncia de 2 (1, 2, 4, 8, 16, etc) so bits de
checagem. Os restantes (3, 5, 6, 7, 9, etc) so preenchidos com
os m bits de dados.
Cada bit de checagem fora a paridade de uma coleo de bits,
incluindo a si prprio, de ser par (ou mpar).
Gustavo S. Pavani 19
Correo de erros simples - 2
Para ver quais bits de checagem o bit de dado k contribui,
necessrio reescrever k como uma soma de potncia de 2.
Ex: 11 = 1 + 2 + 8 e 29 = 1 + 4 + 8 + 16.
Assim, um bit checado pelos bits de checagem que ocorrem na
sua expanso.
Quando uma palavra-cdigo chega, o receptor inicializa o
contador para zero.
O receptor examina cada bit de checagem j (j=1, 2, 4, 8, ...), para
ver se tem a paridade correta. Se no tem a paridade correta, o
receptor adiciona j ao contador.
Se o contador zero aps o exame de todos os bits de
checagem, a palavra-cdigo aceita.
Se no zero, contm o nmero do bit incorreto.
Ex: se os bits de checagem 1, 2 e 8 esto errados, o bit invertido o
11, porque o nico checado por esses bits!

Gustavo S. Pavani 20
Correo de erros em rajada - 1
Os cdigos de Hamming so capazes somente de
corrigir erros simples.
Uma pequena modificao pode ser usada para permitir que os
cdigos de Hamming sejam capazes de corrigir erros em rajada.
Uma sequncia de k palavras-cdigo consecutivas pode ser
arranjada em uma matriz, com uma palavra-cdigo por linha.
Normalmente, os dados seriam transmitidos com uma palavra-
cdigo por vez, da esquerda para direita.
Para corrigir erros em rajada, os dados devem ser transmitidos
uma coluna por vez, comeando pela coluna mais esquerda.
Quando o quadro chega no receptor, a matriz reconstruda,
uma coluna por vez. Se um erro em rajada de tamanho k ocorre,
no mximo 1 bit das k palavras-cdigo so afetados.
Como o cdigo de Hamming pode corrigir um erro por palavra-
cdigo, o bloco inteiro pode ser recuperado!
Mtodo que usa kr bits de checagem para km bits de dados imunes
a um nico erro em rajada de k ou menos bits.

Gustavo S. Pavani 21
Correo de erros em rajada - 2
Exemplo de alguns caracteres de 7-bits ASCII codificados como
palavras-cdigo de 11 bits, usando o cdigo de Hamming.
Lembre-se que os dados esto nas posies 3, 5, 6, 7, 9, 10 e 11.

Gustavo S. Pavani 22
Cdigos de deteco de erros
Considere o canal onde os erros so isolados e que ocorrem
com uma taxa de 10-6 por bit.
Seja o tamanho do bloco de 1.000 bits. Para prover correo de erros
para blocos de 1.000 bits, 10 bits de checagem so necessrios.
Um megabit de dados requer 10.000 bits de checagem.
Para se detectar o erro de 1 bit em um bloco, seria necessrio somente
um bit de paridade por bloco.
A cada mil blocos, somente um precisar ser retransmitido.
O que resulta em 2.001 bits de checagem por megabit transmitido.
Entretanto, se somente um bit de paridade adicionado ao bloco e o
bloco atingido por uma rajada de erros, ento a probabilidade de se
detectar a rajada de erros de somente 0,5!
Usar um bloco de n bits de largura e k bits de altura, com um bit de paridade
calculado para cada coluna e adicionado como ltima linha da matriz.
A matriz deve ser transmitida uma linha por vez. E o receptor checa todos os
bits de paridade. Se um deles est errado, o receptor solicita a
retransmisso do bloco.
capaz de detectar uma rajada de erros de tamanho n. Mas se o bloco
atingido por uma longa rajada, a probabilidade de aceitar o bloco como
correto 2-n. Gustavo S. Pavani 23
Checagem de redundncia cclica (CRC)
Tambm conhecido como cdigo polinomial.
Pois tratam as strings de bits como a representao de
polinomiais com coeficientes 0 e 1.
Um quadro de k bits representado como uma lista de
coeficientes de um polinmio de k termos, que vo de xk-1 a x0
O bit mais a esquerda o coeficiente de xk-1 , o prximo o
coeficiente de xk-2 e assim sucessivamente.
Ex: 110001 tem seis bits, representado o polinmio x5 + x4 + x0.
A aritmtica polinomial feita mdulo 2.
Adio e subtrao idntico ao operador XOR.
Diviso feita da mesma maneira que a operao binria, exceto
que a subtrao feita mdulo 2.
Quando o cdigo polinomial usado, o receptor e o emissor tem
que fazer um acordo sobre o gerador polinomial, G(x), com
antecedncia.
Os bits mais e menos significativos do gerador tem que ser 1.
Gustavo S. Pavani 24
Clculo do checksum
Para se calcular o checksum de um quadro de m bits,
que corresponde ao polinomial M(x), o quadro tem que
ser maior que o gerador polinomial.
Deve se adicionar o checksum no final do quadro de forma que o
polinomial representado pelo quadro com o checksum seja
divisvel por G(x).
Quando o receptor recebe o quadro, ele o divide por G(x). Se h
resto, ento houve um erro de transmisso.
Algoritmo:
Seja r o grau de G(x). Adicione r bits zero ao final do quadro, de
forma que ele contm m + r bits e corresponde ao polinomial xr M(x).
Divida a string de bits correspondente a G(x) pela string de bits
correspondente a xr M(x), usando diviso mdulo 2.
Subtraia o resto da string de bits correspondente a xr M(x) usando
subtrao mdulo 2. O resultado o quadro com checksum, T(x),
que deve ser transmitido.
Gustavo S. Pavani 25
Exemplo de checksum

Gustavo S. Pavani 26
Eficincia do CRC - 1
Que tipos de erro podem ser detectados?
Supondo que um erro de transmisso ocorre, ao invs de chegar
T(x), chega T(x) + E(x).
Cada 1 bit em E(x) corresponde a um bit que foi invertido.
Se h k bits 1 em E(x), k erros simples ocorreram.
Um erro simples em rajada caracterizado por um 1 inicial, uma
mistura de 0s e 1s e um final 1, com os outros bits iguais a 0.
O quadro com checksum recebido pelo receptor, que o divide
por G(x), isto , computa [T(x) + E(x)]/G(x).
Os erros que correspondem aos polinmios que contm G(x)
como fator podem escapar e os demais erros sero pegos.
Se h um erro simples de bit, E(x) = xi, onde i determina
qual bit est errado. Se G(x) contm dois ou mais
termos, ele nunca dividir E(X), de forma que todos os
erros simples sero detectados.
Gustavo S. Pavani 27
Eficincia do CRC - 2
Se h dois erros de bits isolados, E(x) = xi + xj, onde i > j,
ou em outros termos, E(x) = xj(xi-j + 1).
Se assumimos que G(x) no divisvel por x, uma condio
suficiente para que todos os erros duplos sejam detectados
que G(x) no divida xk + 1, para qualquer k at o mximo valor
de i j (isto , at o mximo tamanho do quadro).
Ex: x15 + x14 + 1 no divide xk + 1 para qualquer valor de k abaixo de
32.768.
Se h um nmero mpar de bits errados, E(x) contm um
nmero mpar de termos.
Nenhum polinomial com um nmero mpar de termos tem x + 1
como fator no sistema mdulo 2.
Fazendo x + 1 como fator de G(x), pode-se detectar todos os
erros com um nmero mpar de bits invertidos.

Gustavo S. Pavani 28
Eficincia do CRC - 3
Finalmente, se um cdigo polinomial tem r bits de
checagem, ele capaz de detectar todos os erros em
rajada com comprimento r.
Um erro em rajada de tamanho k pode ser representado por xi (xk-1
+ ... + 1), onde i determina quo longe do lado direito do quadro
recebido a rajada est localizada.
Se G(x) contm qualquer termo x0, ele no ter xi como fator, de
forma que o grau da expresso de erro menor que o grau de
G(x), de forma que o resto nunca poder ser zero.
Se o tamanho da rajada for r + 1, o resto da diviso por G(x) ser
0, somente se a rajada for idntica a G(x)!
Como, por definio, os primeiros e ltimos bits da rajada so 1, as
combinaes dependem dos r 1 bits intermedirios.
Supondo que todas as combinaes so igualmente provveis, temos
que a probabilidade um quadro com erros ser aceito de (0,5)r-1.
Para erros em rajada maiores que r + 1, essa probabilidade de (0,5)r.
Gustavo S. Pavani 29
Eficincia do CRC - 4

Alguns polinmios viraram padro.


O polinmio usado pelo IEEE 802 x32 + x26 + x23 + x22 + x16 +
x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x1 + 1
Capaz de detectar todas as rajadas de erro com tamanho 32 ou
inferior;
Capaz de detectar todas as rajadas com um nmero mpar de bits.
Embora o clculo do checksum parea complicado, um simples
registrador de deslocamento pode ser construdo para computar
e verificar os checksums em hardware.
A suposio dos erros serem totalmente aleatrios no
muito boa (Partridge, 1995).
Como os algoritmos de cdigo polinomial fazem essa suposio,
sob certas circunstncias, erros podem passar despercebidos
mais comumente do que se acreditava.

Gustavo S. Pavani 30

Você também pode gostar