Conexão entre equipamentos na camada de Enlace de Dados

Depois de passarmos algumas semanas com a camada física, vamos entrar agora na camada de enlace de dados. Antes de entrar no assunto deste artigo, vale lembrar uma coisa: quando falamos de camada física estamos falando de cabos, fios, ondas eletromagnéticas. E agora, quando falamos da camada de enlace de dados, estamos nos referindo ao pequeno software que faz com que a informação possa ser transmitida através destes cabos, fios e ondas eletromagnéticas, controlando o funcionamento destes. Este software da camada de enlace de dados não é nenhum programa que você instale em seu computador, ele está lá dentro do equipamento, e já veio assim de fábrica.

Compartilho este jeito de pensar com vocês pois só quando entendi isso é que o papo sobre redes começou a fazer sentido. É o tipo de coisa que os livros não falam: eles assumem que você já era pra saber isso e você passa a vida toda com uma pulga atrás da orelha.

Bem, estando isso explicado, vamos lá.

Como eu já tinha falado sem muitos detalhes em um artigo anterior, uma das responsabilidades da camada de enlace de dados é a de lidar com o transporte da informação de um equipamento para outro. Este artigo trata de como ela faz isso.

Primeiramente, explico que o transporte com o qual ela lida não se dá necessariamente entre dois computadores, mas também entre hubs, roteadores, ou qualquer outro equipamento através do qual a informação a ser transportada tenha que passar. Isso acontece porque a camada de enlace de dados é uma das camadas mais de baixo nível, onde ainda não há uma conexão fim-a-fim.

Primeiramente, quando a camada de rede pede à camada de enlace de dados que leve uma informação de um lugar para outro, a camada de enlace de dados pega os pacotes que tem que enviar e divide-os em quadros. Estes quadros são então repassados para a camada física, que efetivamente transporta as informações até o seu destino.

Este trabalho de fazer a conexão entre dois equipamentos pode se dar de várias maneiras, sendo que três delas são mais comuns. Vamos vê-las a seguir.

***


Serviço sem conexão e sem confirmação


Este modo de transmissão pode ser comparado a um pombo correio. Emissor e receptor não estabelecem uma ligação direta entre si, e não há uma garantia que a mensagem chegará corretamente, se é que chegará. Pode acontecer de o pombo ver alguém jogando milho na praça e esquecer do recado.

Neste modo, a camada de enlace de dados do equipamento transmissor repassa para a camada física os quadros a serem transportados sem nenhum método que garanta que eles serão recebidos corretamente, se é que serão recebidos. Ao chegar em seu destino, os quadros são recebidos pela camada de enlace de dados do receptor, que os junta, refazendo o pacote original, que é repassado para as camadas superiores. São as camadas superiores que se encarregam de descobrir o erro e solicitar um novo envio.

Tampouco há neste caso o estabelecimento de uma conexão direta entre o transmissor e o receptor antes da transmissão ou o encerramento da conexão depois da transmissão.

Este tipo de serviço costuma ser usado nos casos em que o meio de transmissão é confiável; quando ocorre o tráfego de streaming de dados, como nas transmissões de rádio ou TV pela internet; ou então quando se quer deixar o trabalho de controle de erros para outras camadas. Com base neste último motivo é que a maior parte dos equipamentos de LAN existente hoje em dia usa este tipo de serviço.

***


Serviço sem conexão e com confirmação


Este serviço é basicamente o AR que você faz nos Correios. Aqui há um pouco mais de qualidade na transmissão, mesmo que uma conexão direta não seja estabelecida entre os transmissor e o receptor. Neste caso, cada vez que o receptor recebe um quadro corretamente, ele envia uma pequena mensagem informando ao transmissor que tudo chegou certo. O transmissor, por sua vez, após mandar um quadro, aguarda uma confirmação durante um certo tempo. Se não receber a confirmação, envia de novo.

Fazer a confirmação de recebimento em um nível tão baixo da pilha de camadas, ao invés de fazê-lo nas camadas superiores, tem conseqüências na melhora do desempenho da rede quando o meio de transmissão não é muito confiável. Entender o motivo é simples:

Imagine que o pacote a ser transmitido de um equipamento para outro tenha um mega. A camada de rede passa este pacote para a camada de enlace de dados, que divide o pacote em mil quadros, que são então enviados. Como o meio de transmissão não é lá essas coisas, cerca de cem quadros são perdidos. Daí, no equipamento receptor, os quadros que chegaram são montados e repassados para a camada de rede, que só então verifica que houve um problema na transmissão, e pede para que o pacote seja reenviado. E lá vai um novo mega circular, com grandes chances de que a transmissão não aconteça corretamente. Até isso dar certo, vixe, às vezes vale até a pena gravar os dados num pendrive e caminhar até o destino.

A confirmação de recebimento feita diretamente na camada de enlace de dados resolve o problema, pois antes mesmo da remontagem do pacote original já há um aviso de que uma pequena fração dele - um dos quadros - não foi recebida corretamente. E então apenas este quadro é reenviado.

Quando o meio de transmissão é altamente confiável, caso dos cabos de fibra ótica, por exemplo, geralmente abre-se mão da confirmação de recebimento na camada de enlace de dados, deixando-se este serviço a cargo das camadas superiores.


***


Serviço com conexão e com confirmação


Aqui temos o que há de mais confiável neste assunto. Quando a camada de enlace de dados fornece à camada de rede um serviço deste tipo, uma conexão direta é estabelecida entre o transmissor e o receptor, formando um caminho virtual entre os dois extremos.

Nestes casos, os quadros são devidamente numerados antes de serem enviados. Com isso, além de confirmar o recebimento correto de cada quadro, há ainda a vantagem de evitar o envio duplicado de quadros.

O envio duplicado costuma acontecer quando a mensagem de confirmação se perde no caminho. Daí, como o transmissor não sabe que o quadro foi recebido nos trinques, envia novamente. No caso do serviço com conexão, se a confirmação se perder e o transmissor reenviar o quadro, o receptor será capaz de saber que aquele quadro está repetido, para então descartá-lo e enviar uma nova confirmação.

***


Links interessantes:
  • Veja aqui o que já foi publicado no Vovó Viu a Rede sobre a camada de enlace de dados.

  • 11 comentários:

    Anônimo disse...

    wow, esse artigo ajudou pacas. Tava moh zona aki com uns slides q são o resumo do resumo do q ja era vago e/ou mal explicado(como vc disse os kra assume q vc ja manja alguma coisa). vlw.

    Mário Marinato disse...

    Que bom que o artigo ajudou, Anônimo. Fico que feliz que eu tenha ajudado.

    Grande abraço.

    Amanda disse...

    Parabéns pelo belo trabalho.O blog tá ótimo e tem me ajudado muito na realização de trabalhos da faculdade de Ciência da Computação.
    Obrigada.

    Mário Marinato disse...

    Que bom que ajudei, Amanda!

    De nada!

    BLASTER disse...

    Muiiiito obrigado!!!tinha dificuldade de entender essas camadas q formam os protocolos!!principalmente a de enlace de dados! vlw

    Mário Marinato disse...

    Que bom que ajudei, Blaster!

    De nada!

    liftlorena disse...

    Nusssa
    muito melhor de entender
    meus parabens pela iniciativa

    liftlorena disse...

    Muito bom mesmo parabens pela iniciativa!

    Mário Marinato disse...

    Que bom o artigo ajudou, liftlorena.

    Servíamos bem para servir sempre.

    PrefiroNaoColocarMasTemQueSerDiferenteDeAnonimo disse...

    Não perco tempo comentando, mas este artigo realmente me ajudou.
    Então vale meus 30 segundos de escrita para algo que levaria 3 horas...
    Parabens.

    Mário Marinato disse...

    Opa, valeu pelo elogio!

    Eu é que agradeço pela atenção.