Pilha de Protocolos

Já dizia minha avó que se não é possível matar um bicho de sete cabeças, então você deve antes transformá-lo em sete bichos de uma cabeça só. Este mesmo conceito é aplicado em muitos projetos de informática: para reduzir a complexidade do projeto, ele é dividido em projetos menores e independentes mas com a capacidade de se comunicar entre si.

Em análise de sistemas isso se chama indireção, para os administradores isso é delegar, para os vagabundos isso é tirar o seu da reta, mas aqui vamos chamar de fatiamento. As redes de computadores, assunto complexo à primeira vista, são sempre resolvidas através do fatiamento, criando vários níveis que se comunicam entre si, as chamadas pilhas (ou camadas) de protocolos.

Vamos nós a mais uma metáfora para entender melhor como isso acontece.

Imagine que um Executivo brasileiro queira mandar uma carta para um Executivo japonês. Se não houvesse o fatiamento, ele precisaria, primeiro, aprender japonês. Depois de aprender japonês e escrever sua carta, ele teria, então, que descobrir o endereço para onde deveria mandar a carta. Depois de descobrir o endereço, ele deveria, então, levar a carta até o Japão, e entregar pessoalmente a correspondência. Trabalhoso, não?



O primeiro fatiamento possível aqui seria o Executivo contratar alguém para levar a carta até o japonês. Para ele, tanto faz se o cara pega um navio ou avião para chegar ao Japão, ou mesmo se vai andando. Além disso, também não importa ao Executivo como o Entregador descobre o endereço.

Os níveis, apesar de se comunicarem, são independentes, e o que importa é que a carta chegue. Além disso, para o Entregador, pouco importa o que tenha que levar, seu serviço é apenas entregar, não importa o que.



O segundo fatiamento ficaria a cargo do Entregador. Ao invés de ele mesmo pegar a carta e levar até o Japão, ele passa a contar com os serviços dos Correios. Além disso, ele passa a ter outro nome, passando a se chamar Correspondente. Este fatiamento acontece também no Japão, pois o Executivo de lá é esperto e copiou a idéia do brasileiro.

Novamente, o novo nível, dos Correios, é independente. Para os Correspondentes, pouco importa o modo usado pelos Correios para fazer a carta chegar ao outro lugar - avião, a pé, email ou teleporte - o que importa é que chegue. E repare que o Executivo não precisa nem saber que existe um outro nível depois do Correspondente: o serviço prestado a ele continua sendo o mesmo.



Depois disso, o Executivo vê que aprender japonês não vai ser uma boa e fatia de novo, contratando um Tradutor. Mas não um Tradutor comum! Aqui todos os Tradutores falam apenas duas línguas: braile e a língua de quem o contratou. É bom que seja assim porque todos os Tradutores conseguem conversar entre si. Vejamos o que passa a acontecer:

- O Executivo brasileiro escreve a carta em bom português a entrega para o Tradutor, dizendo a ele para traduzir e mandar para o Japão.
- O Tradutor traduz a carta para o braile e a entrega para o Correspondente, dizendo a ele para mandar para o Japão.
- O Correspondente põe a carta nos Correios, endereçada ao Japão.
- Os Correios levam a carta ao Japão e entregam-na ao Correspondente de lá.
- O Correspondente entrega a carta ao Tradutor, para que ele a traduza e a repasse para o Executivo japonês.
- O Tradutor traduz a carta do braile para o japonês e a entrega ao Executivo.

O que aconteceu? O Executivo brasileiro deixou de se preocupar com o idioma, mas para o Correspondente quase nada mudou, pois seu serviço continua sendo pegar as cartas e pedir aos Correios para entregar coisas. A única diferença é que, agora, ao invés de entregar as cartas diretamente para o Executivo, ele as entrega para o Tradutor.



Vamos agora fazer um último fatiamento. Como todos sabemos, Executivos são pessoas muitíssimo ocupadas, que não têm muito tempo para interromper o trabalho para escrever ou ler cartas. Pensando em uma maneira de melhorar isso, eles resolvem que melhor seria ditar as cartas para alguém escrever e ter alguém para ler as cartas para eles. E como conseguir isso? Simples: como sempre estão presos nos engarrafamentos, eles ditam as cartas em um gravador de voz, que é entregue à Secretária para que ela transcreva seu conteúdo e então a repasse para o Tradutor. No destino, o serviço da Secretária é ler a carta, registrando sua voz em um gravador. O Executivo japonês, preso no engarrafamento, ouve a carta.

Para os Executivos, nada mudou: eles continuam enviando e recebendo cartas. Para os Tradutores, nada mudou também: eles continuam traduzindo cartas de e para o braile. Os Correspondentes e os Correios ficam alheios à mudança.



Até aqui, com a ajuda de todas as ilustrações, a leitora já deve ter entendido a razão de ser da palavra "pilha". Todo este processo se resume ao empilhamento de responsabilidades.

Mas e os protocolos? Bem, meu primo Aurélio explica que protocolo é um conjunto de regras de como-agir. Nas ilustrações, vemos que os "trabalhadores" de mesmo nível se comunicam entre si, mas não diretamente: os Executivos têm toda a linguagem dos negócios, as Secretárias lidam com áudio, os Tradutores têm em comum o braile e os Correspondentes têm suas regras de como embalar as correspondências. Mesmo não se falando diretamente, eles conseguem entender o que seu companheiro quis dizer por terem um código que ambos entendem.

Logo, se cada nível tem um protocolo, podemos dizer, grosso modo, que temos uma pilha de protocolos.

É muito importante salientar que isso não apenas facilita a execução do projeto como um todo mas permite a modificação do funcionamento de um nível sem que isso comprometa o funcionamento de toda a engrenagem. Se os Correspondentes resolvem embalar as cartas de maneira diferente (mandando uma página em cada envelope) ou se as secretárias passam a fazer as gravações de outro jeito (com um destes programas que lê textos em voz alta), isso não faz diferença para os outros níveis.

Isso traz outra vantagem, no sentido de que pode-se trocar o "trabalhador" de um nível por outro mais capacitado ou mais barato: pode-se trocar a secretária fanha por uma com voz sensual, ou então um tradutor por outro que faça o serviço em metade do tempo.

É exatamente assim que a coisa funciona nas redes: o seu jogo quer informar ao jogo da sua prima que você deu um tiro, então ele repassa isso para o sistema operacional, que criptografa a informação e então repassa para o software que controla a placa de rede. Este software pega os dados criptografados pelo sistema operacional, divide a informação em pacotes devidamente endereçados e numerados e repassa para a placa de rede. A placa transforma os pacotes em sinais telefônicos (ou luminosos, ou de rádio, isso depende da sua conexão) e pede para os fios enviarem aquilo.

Quando aquela bagunça toda chega na placa de rede da sua prima, ela (a placa) transforma em pacotes os sinais recebidos, estes pacotes são repassados para o software controla a placa. Este software remonta os pacotes na ordem certa e os entrega ao sistema operacional. O sistema operacional descriptografa os dados e os entrega ao jogo da sua prima. O jogo vê o que os dados dizem e então mostra na tela que você deu um tiro. Tudo isso em frações de segundo.

Se a sua conexão é lenta, você pode trocá-la por uma melhor. Se sua placa não consegue converter os pacotes em sinais de forma 100% confiável, você pode comprar outra. Estas mudanças não geram problemas para as outras camadas.

Claro que este último exemplo não é exatamente o que acontece na realidade, pois a pilha de protocolos normalmente usada é um pouco mais complexa, mas serve para que a leitora possa entender o que quero explicar.

7 comentários:

Tiago Frossard disse...

Vc me deu uma ótima idéia com esses diagramas de classes adaptados, sabia??? Viva a UML! Viva o StarUML!! Viva a exportação em jpg!!!
.
.
.
.
.
Ê comentário nerd, sô.

Mário Marinato disse...

Mais nerd ainda é você reconhecer que são diagramas de classe adaptados, feitos pelo Star UML!

Anônimo disse...

amei! realmente ate minha avo entenderia desse jeito!

Mário Marinato disse...

Que bom que gostou, Anônima. Servíamos bem para servir sempre.

Anônimo disse...

Ótimo texto, gostei muito. Eram exatamente as minhas dúvidas. Obrigado cara! Continue assim!

Anônimo disse...

Obs. achei o link para seu blog no "Via6".

Mário Marinato disse...

Valeu, Anônimo.