Upload
kireton-kruvinel
View
15
Download
5
Embed Size (px)
Citation preview
48
4. AULA 4 – CAMADA DE ENLACE
Objetivos da Aula Compreender as principais características da camada de enlace, que são comuns às
redes ponto a ponto e multiponto. Apresentar alguns métodos de detecção e correção de
erros, e controle de fluxo, que permitem uma comunicação eficiente e confiável entre
os dispositivos.
A principal tarefa da camada de enlace de dados é garantir a comunicação entre
dispositivos adjacentes, livres de erros. Por adjacentes, entende-se que os dispositivos
estão fisicamente conectados (sem a utilização de dispositivos intermediários) por meio
de um canal de comunicação que funciona conceitualmente como um fio.
A camada de enlace trabalha com blocos de bits, denominados quadros. Assim, a função
desta camada é criar e interpretar corretamente cada quadro, detectar possíveis erros e
corrigi-los, se necessário. Outra função da camada de enlace é regular o tráfego de
quadros que chegam ao destino, de maneira a não sobrecarregá-lo com uma quantidade
excessiva de dados.
4.1. Quadros
Diferentemente da camada física que trabalha com bits, a camada de enlace trabalha
com quadros ou frames, em inglês. Estes quadros são constituídos por três elementos
básicos: cabeçalho, dados e CDE (Figura 4.1).
Figura 4.1: Estrutura de um quadro.
Fonte: MAIA, 2009, p. 75.
No cabeçalho estão inseridas as informações de controle. Estas informações permitem a
comunicação horizontal entre as camadas de enlace da origem e de destino. O cabeçalho
é formado por vários campos, que possuem funções específicas no protocolo. O campo
49
de dados encapsula o PDU (Protocol Data Unit) passado pela camada de rede. E o
código de detecção de erro (CDE) tem a função de controlar erros na camada de enlace.
Um quadro pode ser formado tanto por uma sequência de caracteres quanto por uma
sequência de bits. No primeiro caso, o quadro é formado por um número inteiro de
caracteres, são chamados de protocolos orientados a caracteres. Enquanto que no
segundo caso, é transmitida uma sequência de bits, não existindo uma relação entre o
número de bits que compõem o quadro e o tamanho do caractere utilizado, são
chamados de protocolos orientados a bit.
4.2 Enquadramento
A função do enquadramento ou framing é permitir ao receptor, a identificação correta
do início e fim de cada bloco transmitido. Os protocolos de enlace, na sua maioria,
utilizam um flag (sinalizador) para estabelecer os limites de cada quadro. Alguns
protocolos utilizam o mesmo flag para identificar o início e final do quadro, outros
utilizam dois flags diferentes. Por exemplo, a Figura 4.2 mostra o uso de um único flag
para delimitar o início e o final do quadro.
Figura 4.2: Uso de delimitadores.
Fonte: MAIA, 2009, p. 76.
Às vezes, pode haver a ocorrência do próprio flag dentro do quadro, e isto
constitui um problema grave. Entretanto, existem técnicas que podem ser
utilizadas para resolver este problema, como as técnicas de byte stuffing e
bit stuffing.
4.3 Endereçamento
Para identificar um dispositivo na rede é utilizado o endereçamento da camada de
enlace, também chamado de endereço físico ou endereço MAC (Media Access Control).
Este endereço dever ser único a nível mundial, e todos os fabricantes de interfaces de
rede devem seguir o mesmo padrão.
50
Este endereço é formado por 6 bytes ou 48 bits, e visualizado como um conjunto de 12
caracteres hexadecimais, como, por exemplo:
02:2D:5E:00:31:03
Os três primeiros octetos são destinados à identificação do fabricante, enquanto que os
três últimos são fornecidos pelo próprio fabricante.
As três formas básicas de endereçamento são: unicast, multicast e broadcast (Figura
4.3). No unicast o endereçamento é feito a um único destinatário, ou seja, somente um
dispositivo receberá a mensagem, a entrega no unicast é simples, ponto-a-ponto. No
multicast, o endereçamento é feito para um grupo de dispositivos, denominados grupo
multicast, que é um subconjunto dos dispositivos que formam a rede. Já no
endereçamento broadcast, todos os dispositivos da rede recebem a informação.
Figura 4.3: Endereçamento unicast, multicast e broadcast.
Fonte: MAIA, 2009, p. 78.
Os comandos ipconfig /all e ifconfig, dos sistemas operacionais Windows e
Linux, respectivamente, exibem informações das interfaces de rede
instaladas no computador e seus endereços MAC.
4.4 Detecção de Erro
Durante a transmissão dos dados é comum surgirem erros, em grande parte devido a
problemas como ruídos e atenuação. Assim, quando um pacote é recebido, é importante
saber se existem erros, pois os dados contidos nesse pacote serão utilizados pelos níveis
superiores, originando diversos problemas que se podem estender até as aplicações.
51
A detecção de erro é feita por meio de algumas informações de controle enviadas junto
aos dados. O transmissor utiliza uma função para gerar um código de detecção de erro
(CDE) antes de enviar a mensagem, uma espécie de dígito verificador. Esse código
gerado é anexado à mensagem, depois disso o pacote pode ser enviado (Figura 4.4).
Figura 4.4: Geração do código de detecção de erro.
Fonte: MAIA, 2009, p. 79.
Ao receber o pacote, o destinatário recalcula o CDE e o compara com o código
recebido. Caso o código recebido seja diferente do calculado, significa que houve algum
erro na transmissão (Figura 4.5).
Figura 4.5: Verificação do código de detecção de erro.
Fonte: MAIA, 2009, p. 80.
As principais técnicas de detecção de erros são bit de paridade e verificação de
redundância cíclica, que serão apresentadas a seguir.
52
4.4.1 Bit de Paridade
A paridade é utilizada para detectar erros nas transmissões, já que o seu cálculo é
extremamente simples, consiste em se adicionar um bit ao final da sequência
transmitida. Existem dois tipos de código de paridade: a paridade par e a paridade
ímpar. A paridade será par quando o número de bits de valor 1 for par, caso contrário,
será ímpar. A Tabela 4.1 apresenta alguns exemplos usando-se bits de paridade par e
ímpar.
Tabela 4.1: Exemplos de bit de paridade
Sequência Paridade par Paridade ímpar
11101 111010 111011
11010 110101 110100
00001 000011 000010
O bit de paridade permite identificar problemas em um único bit. Por exemplo, caso
ocorra alterações de dois bits na sequência 11101, resultando na sequência 11110, o
problema não será percebido, pois a quantidade de bits 1 não se altera. Por esse motivo,
esse tipo de estratégia é utilizada apenas em transmissões de baixa velocidade e que
apresenta poucos erros.
4.4.2 Verificação de Redundância Cíclica
A verificação de redundância cíclica (Cyclic Redundancy Check - CRC) é uma técnica
para detectar erros nas transmissões de dados, mas não realiza nenhuma correção caso
seja detectado algum erro. A verificação de redundância cíclica é um tipo de função
hash que gera um valor expresso em poucos bits em função de um bloco maior de
dados, como um pacote de dados.
Um hash é uma sequência de bits geradas por um algoritmo de dispersão.
Em outras palavras, hash é a transformação de uma grande quantidade de
informações em uma pequena quantidade de informações.
No método CRC, certo número de bits de verificação, frequentemente chamados de
checksum, são adicionados a mensagem que será transmitida. O receptor pode
determinar se os bits de verificação estão de acordo ou não com os dados recebidos. Se
53
ocorrer um erro, o receptor envia um NAK (Negative Acknowledgement) ao
transmissor, requisitando o reenvio da mensagem.
Esta técnica também é aplicada a dispositivos de armazenamento de dados, como os
discos rígidos. Nesta situação, cada bloco do disco teria bits de verificação, e o
hardware poderia, automaticamente, iniciar uma releitura do bloco caso um erro seja
detectado, ou então, relatar o erro ao software.
O CRC é calculado utilizando-se códigos polinomiais. Com efeito, é o resto
da divisão polinomial entre os dados a enviar, e um polinômio gerador
adequadamente escolhido.
4.5 Correção de Erro
As técnicas de correção de erro formam a segunda parte da função de controle de erro.
Primeiramente, é importante ressaltar que a camada de enlace nem sempre implementa
algum método de correção de erro. Às vezes, a camada de enlace simplesmente ignora
algum erro encontrado, deixando a função de correção de erro para as camadas
superiores. Isso depende do meio de transmissão empregado e da taxa de erros
relacionada. Em meios como a fibra óptica, que é bastante imune a ruídos, é possível
abrir mão desse mecanismo.
Para entender os mecanismos de correção de erros, imagine o exemplo de uma
transmissão de três quadros, apresentado na Figura 4.6. O primeiro quadro (Q) é
transmitido e, depois de certo tempo, chega ao destino. O receptor verifica a integridade
do quadro por meio de alguma técnica de detecção de erros, como o CRC. Se nenhum
erro for detectado, o receptor envia uma confirmação de recebimento do quadro
utilizando um ACK (Acknowledgement). Este mesmo procedimento é empregado para
o envio e o reconhecimento dos demais quadros.
O ACK funciona para o transmissor como um reconhecimento de que o
destinatário recebeu corretamente o quadro enviado. Por essa razão, é
conhecido como reconhecimento positivo.
54
Figura 4.6: Reconhecimento positivo.
Fonte: MAIA, 2009, p. 75.
Mas existe a possibilidade de ocorrerem problemas na transmissão desses quadros do
exemplo da Figura 4.6. Um deles seria o fato do quadro não chegar ao destino devido a
algum erro na transmissão. O outro, a possibilidade do quadro chegar ao destino
apresentando algum erro.
4.5.1 Quadro não chega ao destino
Caso um quadro não chegue ao destino, é empregado um método de correção de erro
conhecido como retransmissão por timeout. Neste, para cada quadro enviado, o
transmissor mantém um temporizador e, caso não chegue um reconhecimento positivo
(ACK) em um tempo determinado, ocorre um timeout e o quadro é retransmitido.
Porém, se o ACK chegar dentro do tempo esperado, o temporizador do quadro
associado é desativado.
Eventualmente, um ACK também pode sofrer algum tipo de problema e,
consequentemente, um quadro recebido poderá não obter um reconhecimento positivo.
Dessa forma, ocorrerá um timeout e o quadro será retransmitido. Se não houver
problemas nessa nova tentativa, o destino irá receber o quadro e confirmá-lo novamente.
4.5.2 Quadro chega ao destino com erro
Existem duas estratégias possíveis para tratar um quadro que chegue ao destino com
algum erro. A primeira é descartar o quadro recebido e aguardar que ocorra um timeout
no transmissor para que o quadro seja novamente transmitido. Esta estratégia deve ser
empregada quando o custo para a retransmissão não for significativo.
Uma variação dessa estratégia é a técnica conhecida como reconhecimento negativo
com retransmissão, que utiliza um NAK para avisar ao transmissor que houve um erro
no quadro e que este deve ser retransmitido imediatamente.
55
A segunda estratégia implementa a correção de erro no destino, é conhecida como FEC
(Forward Error Correction). Nessa estratégia, o quadro é recebido, analisado e, se
algum erro for detectado, o quadro é corrigido no próprio receptor. Dessa forma, esta
técnica dispensa a retransmissão do quadro em caso de erros. Em contrapartida, exige
que o código de detecção de erro realize a correção para qualquer tipo de problema
encontrado. É utilizada principalmente em transmissão sem fio, devido à elevada taxa
de erro e ao custo de retransmissão.
4.6 Controle de Fluxo
Outra questão importante que ocorre na camada de enlace de dados é o controle de
fluxo. Para tornar esta questão mais clara, considere o exemplo de um balde com um
pequeno orifício na base e uma torneira que despeja água continuamente no balde
(Figura 4.7). Dependendo da vazão de água que sai da torneira e da vazão da água que
sai pelo fundo do balde, pode ocorrer o transbordamento quando o recipiente ficar
totalmente cheio. Analogamente, pode haver situações em que o receptor fique
totalmente “inundado” com o volume de dados enviados pelo transmissor, mesmo que a
transmissão não contenha erros. Em um determinado ponto o receptor não será capaz de
tratar os quadros à medida que eles chegam e começará a perder alguns deles.
Evidentemente, algo deve ser feito para impedir que essa situação ocorra. Neste
contexto, está inserido o controle de fluxo.
Figura 4.7: Problema de controle de fluxo.
Fonte: MAIA, 2009, p. 91.
Então, a função do controle de fluxo é permitir que o transmissor regule o volume de
dados enviados de forma a não gerar um transbordamento (overflow) no receptor. Uma
forma simples de realizar o controle de fluxo é chamada de pare e espere (stop and
56
wait), onde o transmissor envia um quadro e espera a confirmação do recebimento deste
para, então, enviar o próximo. Dessa forma, resolve-se o problema do overflow, pois, de
certa forma, o transmissor e o receptor estão sincronizados. Entretanto, esta técnica
possui o problema de subutilização do canal de comunicação.
Outra técnica de controle de fluxo é fazer com que o receptor sempre informe se está
apto ou não para receber novos quadros. Assim, o transmissor somente enviará novos
quadros após a autorização do receptor.
Existem outros esquemas de controle de fluxo. No entanto, a maioria deles utiliza o
mesmo princípio básico: o receptor informando ao transmissor sua capacidade de
recepção de dados. Utilizam protocolos com regras bem definidas sobre quando um
transmissor pode enviar o quadro seguinte. Com freqüência, essas regras impedem que
os quadros sejam enviados até que o receptor tenha concedido permissão para
transmissão, implícita ou explicitamente. Dessa maneira, o transmissor pode regular o
volume de dados enviados de forma a não sobrecarregar o destinatário.
4.7 Subcamadas da Camada de Enlace de Dados
O grupo de trabalho conhecido como IEEE 802 dividiu a camada de enlace de dados em
duas subcamadas: Controle de Vínculo Lógico (Logical Link Control - LLC) e Controle
de Acesso ao Meio (Media Access Control - MAC), como mostra a Figura 4.8.
Figura 4.8: Subcamadas da camada de enlace.
Fonte: FILHO, 2009a, p. 53.
4.7.1 Controle de Enlace Lógico
Esta subcamada forma a metade superior da camada de enlace de dados, com a
subcamada MAC imediatamente abaixo dela. Fornece serviço de multiplexação e
57
mecanismos de controle de fluxo, o que permite que muitos protocolos de rede (IP,
IPX) sejam utilizados dentro de uma mesma rede e serem transportados no mesmo canal
de comunicação.
A subcamada LLC também age como uma interface entre a subcamada Mac e a camada
de rede, fornecendo um único formato e uma única interface com a camada de rede.
Dessa forma, é possível utilizar diversos tipos de rede, tais como ethernet, token ring e
WLAN.
4.7.2 Controle de Acesso ao Meio
A camada de controle de acesso ao meio é a responsável por montar o quadro que será
enviado para a rede. Esta camada é responsável por adicionar o endereço MAC de
origem e destino. Também, fornece mecanismos de controle ao canal de comunicação, o
que torna possível a comunicação de diversos terminais ou nós em uma rede,
especialmente utilizada em redes locais (LAN) e metropolitanas (MAN).
A subcamada MAC também age como uma interface entre a subcamada LLC e a
camada física provendo uma emulação de comunicação full-duplex, o que permite os
endereçamentos unicast, multicast e broadcast.