Curso Livre de Redes de Computadores I/Caderno 5: A Camada de Enlace de Dados
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.