Curso Livre de Redes de Computadores I/Caderno 5: A Camada de Enlace de Dados

Fonte: Wikiversidade

Camada de Enlace de Dados[editar | editar código-fonte]

A camada de enlace de dados fica acima da camada física, ela é responsável por oferecer serviços à camada de rede, recebendo pacotes e encapsulando em quadros para transmissão nos canais. Os quadros são enviados da camada de rede da máquina transmissora até a camada de rede da máquina receptora, então os quadros são remontados em forma de pacotes.[1]

A camada de enlace também é responsável pelo controle de erros, pois pode acontecer erros durante a transmissão de bits devido as características da camada física, como por exemplo a troca física de um bit, que devem ser detectados e resolvidos usando algum algoritmo. Uma forma de garantir se os quadros chegaram ao receptor de forma correta é recebendo um feedback, para isso é solicitado ao receptor o retorno de quadros contendo confirmações, caso haver uma confirmação negativa, quer dizer que houve um problema no envio do quadro.[1]

Outra responsabilidade da camada de enlace é o controle de fluxo, pois a máquina transmissora pode enviar quadros mais rápido e o receptor não conseguir aceita-los a tempo, podendo perder alguns quadros, mesmo sem haver erros durante a transmissão. Um exemplo bem comum de controle de fluxo é quando um smartphone, que é um aparelho mais fraco, faz uma requisição de um Site em um servidor, que é muito mais rápido e forte.[1]

Funções da camada de enlace[editar | editar código-fonte]

A camada de enlace tem diversas funções que se relacionam com a camada de rede, através da utilização dos serviços da camada física, ela é capaz de enviar e receber informações pelos meios de comunicação. Sua funções variam de fornecer uma interface de serviço para camada de rede, contornar erros de transmissão e manter funcionando sincronizadamente receptores de diferentes desempenhos. Esses objetivos são alcançados pela camada de enlace através da transformação de pacotes vindouros da camada de rede em quadros para transmissão.

Enquadramento[1][editar | editar código-fonte]

Para que a camada de enlace de dados possa oferecer um serviço para a camada de rede, é necessário que a camada de enlace utilize os serviços fornecidos pela camada física. Como já visto, a camada física irá receber um fluxo de bits e tentará entregar a um destino. Se o canal possuir algum ruído na transmissão, a própria camada física tentará de alguma maneira reduzir estes erros de bits para um nível aceitável. No entanto os dados recebidos pela camada de enlace não estarão sem erros, então a camada de enlace de dados ficará responsável por fazer a detecção e correção de erros vindos da camada física.

A técnica utilizada pela camada de enlace de dados é a de dividir a quantidade de bits em diferentes quadros, calcular um token conhecido como checksum (somatório de checagem) para cada um dos quadros, quando o quadro chegar até seu destino esse checksum é calculado novamente. Portanto, se o checksum que foi calculado na chegada ao destino for diferente do valor do token que se encontra no quadro, a camada de enlace detectará que algum erro ocorreu e buscará alguma maneira de corrigi-lo.

Diversos métodos de enquadramento podem ser utilizados, um deles é o método de contagem de caracteres onde a quantidade de bytes é informada por meio de um cabeçalho. Vendo a contagem de caracteres, a camada de enlace de dados do destino é capaz de saber qual a quantidade de bytes que devem ser recebidos e também quando o quadro chega ao fim. O problema deste método é que a contagem de caracteres pode ser afetada durante algum possível erro ocorrido ao decorrer da transmissão dos dados, fazendo com que o receptor perca a sincronização e então fique incapaz de fazer a detecção do inicio do próximo quadro.

Outro método é o de byte de flag, este método corrige problemas de ressincronização. O método consiste em iniciar e encerrar os quadros com bytes especiais (bytes de flag), então em caso de perca de sincronização basta o receptor buscar os bytes de flag que irão indicar o fim do quadro atual e o início do próximo quadro. A maneira utilizada para sinalização é a seguinte, dois bytes de flag consecutivos sinalizam o fim de um quadro e o início do próximo.

Contudo ainda existem problemas que podem afetar o enquadramento utilizando este método, visto que os bytes de flags podem estar contidos nos dados, principalmente quando se trata de dados binários como fotos e músicas. Uma maneira de solucionar este problema seria fazendo com que o transmissor dos dados insira bytes de escape especiais previamente a os bytes de flag, permitindo assim a distinção de quais são os bytes de flag e quais são os bytes contidos nos dados transmitidos, para então tornar possível a detecção do início e fim do quadro. Então a camada de enlace de dados receptora ficaria responsável por remover estes bytes de escape antes de fazer o envio das informações para a camada de rede. No entanto diversos outros métodos podem ser utilizados para a realização do enquadramento.

Endereçamento[editar | editar código-fonte]

A camada de enlace de dados fornece mecanismo de endereçamento de hardware da camada 2. O endereço de hardware é considerado exclusivo no link. Ele é codificado em hardware no momento da fabricação.

Sincronização[editar | editar código-fonte]

Quando os dados são enviados, as duas máquinas devem ser sincronizadas para que a transferência ocorra.

Controle de Erro[editar | editar código-fonte]

Os sinais podem ter encontrado problemas na transmissão, os bits são perdidos. Esses erros são detectados e tentará reenviar os bits perdidos. Ele também fornece mecanismo de relatório de erros ao remetente.

Controle de fluxo[editar | editar código-fonte]

A camada de enlace de dados garante o controle de fluxo que permite que ambas as máquinas troquem dados na mesma velocidade, já que muitas vezes, as estações podem ter velocidades ou capacidades diferentes.

  1. 1,0 1,1 1,2 1,3 TANENBAUM, A. WETHERALL, D. Redes de Computadores. 5 ed.