Confirmando o Recebimento de Pacotes

Quando há algumas semanas eu publiquei um artigo que trata da conexão entre equipamentos na camada de enlace de dados, falei nele sobre a confirmação do recebimento dos pacotes: sempre que um pacote é enviado, a camada de enlace de dados do transmissor aguarda o recebimento de uma confirmação. Se depois de um tempo esta confirmação não chegar ele manda o pacote novamente.

Pois bem, andei descobrindo umas coisas interessantes sobre este trabalho de confirmar o recebimento dos pacotes e acho que vale a pena compartilhar.

Apesar de terem tamanhos variados, os pacotes da camada de enlace de dados seguem uma organização padrão: eles têm espaços para a colocação de flags de marcação de início e fim, espaços para os dados a serem transportados, e todo o cabeçalho com informação de numeração do pacote e afins.

Quando a camada de enlace de dados receptora envia uma confirmação de recebimento de um pacote, esta combinação vai na forma de um novo pacote. Não é questão de apenas uns bits indo e voltando, é um pacote inteiro, cheio de espaços vazios. Isso não está com cara de desperdício? Com certeza.

Como a camada de enlace de dados geralmente trabalha nos dois sentidos, enviando e recebendo dados quase o tempo todo, os cabeçalhos dos pacotes incluem não apenas espaços para informar os dados relativos à entrega do pacote, mas também possuem campos para confirmar o recebimento de um outro pacote qualquer, matando, assim, dois coelhos com uma cajadada só.

Assim, quando recebe um pacote, a camada de enlace de dados não envia uma resposta automaticamente. Ela aguarda um tempo para ver se não vai ter que enviar algo. Se tiver que enviar um pacote com dados, a confirmação do outro vai junto.

E é claro que ela não vai ficar esperando pra sempre: se assim fosse, o cara que está esperando a confirmação vai achar que o pacote se perdeu no caminho e vai mandar outro. Logo, se mesmo aguardando um tempo não surgirem dados para serem enviados, a camada de enlace de dados manda um pacote vazio, só com a confirmação.

É como se numa empresa, quando um departamento enviasse um ofício para o outro, ele aproveitasse e escrevesse também que "a propósito, acuso o recebimento do vosso ofício 123". O que está sendo enviado não precisa ter algo a ver com o que está sendo confirmado. O que está em jogo aqui é apenas a economia de tráfego (ou de envelopes, no caso da empresa).

***


Naquele outro artigo, que citei aí em cima, eu comparei o aviso de recebimento da camada de enlace de dados com o AR dos Correios, mas depois de estudar um pouco mais e descobrir estas coisas que acabei de falar, eu vi que a camada de enlace de dados vai um pouco mais além.

Se o AR funcionasse como a camada de enlace de dados, ele seria assim: ao receber uma correspondência com AR, a folhinha que volta para o remetente não ficaria com o carteiro para ser devolvida. Ao contrário, ela ficaria com o destinatário.

O destinatário só mandaria o comprovante de volta quando uma destas duas situações ocorressem:
- Ele tem alguma coisa para mandar, e então manda o comprovante junto;
- Ele já reteve o comprovante tempo demais, e então manda de volta assim mesmo, para que o remetente não pense que sua correspondência se perdeu.

***


Há ainda um outro detalhe interessante quanto à velocidade e à taxa de envio de pacotes, mas isso já é assunto para um outro artigo, que pintará por aqui durante a semana que vem.

***


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

  • Nenhum comentário: