10
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

Material - 4ª Semana

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.