Protocolos

Por trabalhar com tecnologia há muitos anos, costumo ser referência entre amigos para tirar dúvidas sobre o assunto. Recentemente, durante uma roda de conversa, um conhecido me fez uma pergunta simples, que rendeu uma longa explicação. Ao final, toda a mesa estava ouvindo, parte com curiosidade, parte com espanto. A pergunta foi:

"Rodam, me explica: o que é protocolo — e por que toda hora o pessoal de TI fala disso?"

Na hora, pensei: “Que pergunta aleatória... onde ele quer chegar?”...

– "Como assim, protocolo? Você quer saber o que é protocolo, de forma geral ou o que é um protocolo de maneira específica, ou algum protocolo em específico?"

– "Sei lá! Esses que vocês tanto falam em TI?"

Pronto! Me arrumei - pensei.

– "Bem, de maneira geral, protocolo é um conjunto de regras pré-estabelecidas. É usado em todo canto, não apenas em TI. Se você for em qualquer hospital há um protocolo de atendimento, outro protocolo de triagem, etc. É muito comum falarmos disso em TI, porque há muitas coisas interligadas de fornecedores diferentes e para que essas coisas funcionem elas precisam seguir padrões e regras pré-estabelecidas, ou seja, protocolos. Mas entendo que o mais comum é falarmos de protocolos de comunicação, tipo TCP/IP, VoIP, é sobre isso que você quer saber?"

– "Isso mesmo! Eu sempre tive curiosidade de entender essas paradas de IP."

– "Welll, eu não sou o melhor cara pra falar disso, redes não é muito a minha praia, mas vamos lá... Vou tentar te explicar de um jeito simples, imagine que eu quero enviar uma mensagem por uma rede de computadores. Como isso funciona?

Para mandar sua mensagem, usamos o protocolo TCP/IP. Ele é como um conjunto de regras para garantir que tudo chegue certinho, sem bagunça.

A primeira parte, chamada TCP, ou Transmission Control Protocol, divide sua mensagem grande em vários pedaços menores, coloca um número em cada um para não se perderem e envia todos separadamente.

Dessa forma, quando chegar no destino, o TCP, confere e se faltar algum pedaço ou vier fora de ordem, ele pede novamente só aquele pedaço que falta até tudo chegar certo.

E como cada pedaço sabe para onde deve ir?

É aí que o IP, ou Internet Protocol, entra. Ele coloca o endereço de origem (quem enviou) e de destino (quem vai receber) em cada pedaço, ou pacote. Cada pacote segue seu caminho, até chegar ao destino certo.

Aí você se pergunta, mas o que acontece quando todos chegam ao destino?

O TCP junta todos os pedaços de volta, seguindo a ordem dos números, para reconstruir a mensagem original.

E se for uma conversa em tempo real, como numa ligação?

Também dá certo, só pode ser um pouco mais lento porque tudo tem que chegar direitinho e na ordem certa.

Em resumo o TCP: Divide a mensagem, garante que chegue inteira e na ordem certa, enquanto o IP: Cuida do endereço, levando cada pedaço até o destino.

Conseguiu entender?"

– "Explicando dessa forma parece fácil, mas você comentou que os protocolos são conjuntos de regras e falou de TCP/IP, são dois protocolos ou um só?"

– "Me expressei mal, na verdade, TCP/IP é uma família de protocolos, que podem ser usados de forma independente. É possível usar o IP, sem o TCP. Há, por exemplo, outro protocolo dessa família, o UDP, User Datagram Protocol, que envia os dados, sem necessariamente se preocupar se todos os pacotes chegam ao seu destino, é muito utilizado em jogos on-line, streaming de vídeo e áudio, onde a velocidade é mais importante que a perfeição da comunicação."

– "Mas se nem todos os pacotes chegam no destino, por que usar esse cara? Por que eu iria querer usar algo que não completa o serviço?"

– "Como eu expliquei antes, dependendo do que você quer fazer, a velocidade é mais importante que a qualidade. Como o UDP não faz controle de pacotes, não se preocupa com a ordem das coisas, ele tem uma baixíssima latência. Em sistemas de áudio ou transmissão de vídeo, a perda de alguns pacotes não faz tanta diferença, e na maioria das vezes acaba passando desapercebido pelo usuário"

– "Baixa latência?"

– "Haha, desculpe, latência é o tempo que um pacote demora para ir da origem para o destino. Ou seja, quanto menor, mais rápida a rede. O TCP, por fazer diversos controles, tem uma latência maior em relação ao UDP"

– "Mas isso é só pra redes wi-fi, certo? Ou também vale pra redes com cabos?"

Nesse momento eu travei. Como assim? Que rumo essa conversa tá tomando? Onde isso vai parar? Será que tomei a pílula vermelha e não percebi? Respirei fundo e buscando meus últimos conhecimentos de redes de computadores, continuei...

– "Isso não tem nada a ver com o meio físico pelo qual os dados estão passando. São protocolos de rede, não importa se são redes wi-fi, satélite, 4g, cabo coaxial, fibra-ótica, 3g, assim por diante. Hoje em dia até sob a rede elétrica já estão usando TCP/IP."

– "Caramba, não faz muito sentido, porque uma coisa é algo ser transmitido por um cabo, outra coisa é ser transmitido pelo ar"

– "Não é bem assim, nós estamos falando de transmissão de informação, então, nesse caso, independente da mídia, é preciso que o remetente e o destinatário falem a mesma língua, se ela é transmitida por ondas de rádio, sinal de fumaça, fibra ótica, não interessa aqui. Esses protocolos que falei tratam da informação já codificada na mídia, não da sua digitalização."

– "Como assim digitalização da informação?"

– "Oxi! Quando você fala ao telefone e sua voz é transmitida via rede, ocorreu um processo de digitalização dela. O mesmo acontece no momento em que você capta uma foto, ou um vídeo. Algo do mundo real foi 'desmaterializado' para o digital."

– "Ah! Entendi! Pensei que teria um protocolo de digitalização também"

– "Protocolo não. Mas padrões, com certeza! Imagine você gravar um áudio ou vídeo em um formato que não abre em outro dispositivo. Que chato seria!"

– "Tá de sacanagem? Isso acontece toda hora!"

– "Pois é! Mesmo com milhares de padrões e protocolos ainda enfrentamos diversos pequenos problemas de incompatibilidades entre alguns sistemas. Esse exemplo que citei é um clássico. Quem nunca tentou reproduzir um arquivo de mídia que não funciona? Ou ao abrir um arquivo ele vem todo desconfigurado?"

– "Tem razão, isso é comum. E não tem com evitar que isso aconteça?"

– "É praticamente impossível. Veja: se coloque no lugar de um fornecedor de tecnologia que acabou de desenvolver uma nova forma de captar fotos com muito mais qualidade e ocupar menos espaço de armazenamento. É natural ele espalhar essa tecnologia em alguns serviços. Você nunca se perguntou por que há tantos formatos diferente de imagens se na hora de abrir você vê o mesmo?"

– "É mesmo! Nunca tinha pensado nisso."

– "Pois é, da mesma forma que há diversos formatos de imagem, há diversos formatos de praticamente qualquer tipo de arquivo. Isso acontece porque os diferentes fabricantes criam suas aplicações e depois de um tempo é que o padrão surge, e nem sempre o melhor formato em termos de desempenho ou tecnologia é o que vira padrão."

– "Como assim? Como é escolhido um padrão?"

– "Na maioria das vezes o padrão emerge pelo uso. Por exemplo, para documentos, o PDF acabou sendo adotado como padrão pelas características que o formato oferece, apesar de ter outros formatos similares, a maioria dos sistemas acabou abraçando esse formato. Outro padrão muito comum é o uso do JPEG como padrão para imagens, porém algum tempo depois, surgiu o PNG, adicionando a característica de transparência as imagens que o JPEG não possuía."

– "Mas era mais fácil adicionar isso ao JPEG, não?"

– "E como fica a retrocompatibilidade? As aplicações que sabem trabalhar com JPEG, mas não sabem tratar a transparência simplesmente entenderiam que o arquivo é inválido, ou pior, abririam o arquivo de forma toda estranha."

– "Caramba! Pode crer!"

– "Agora, pense isso em escala, outros formatos de imagem, áudio, texto, vídeo, compactação e por aí vai. Ao longo dos anos isso só vai aumentando. É por isso que a padronização e a definição de protocolos é algo extremamente importante nos nossos tempos. Inclusive existem órgãos responsáveis por manter esse tipo de coisa."

– "Sério? É brincadeira, tem gente que só olha pra isso?"

– "Sim, há internacionalmente a ISO, W3C, IEEE e outras que não me recordo de cabeça. No Brasil temos a ABNT, ANATEL e talvez alguma outra também. Esse é um trabalho extremamente sério. Um padrão mal/não definido, tem um impacto direto na vida das pessoas. É com base nesses padrões que fabricantes desenvolvem aparelhos de comunicação como modens, roteadores, smartphones, TVs, e até eletrodomésticos."

– "Mas aí é complicado, como esses órgãos definem esses padrões se quem cria tecnologia não são eles?"

– "Eles fazem uma curadoria, e na maioria das vezes ouvem os interessados. Novamente, os padrões e protocolos só fazem sentido quando há diversos fornecedores fazendo aquilo. Não faz sentido querer padronizar algo de um único fabricante, afinal, ele mesmo já faz isso.

Imagine se os fornecedores de tecnologia, juntamente com entidades de governo, universidades, pesquisadores e um monte de gente inteligente, não tivessem se juntado para criar alguns desses padrões, nossos computadores teriam que ter diversas interfaces para se conectar em redes distintas. Mas graças a colaboração e a definição de padrões e protocolos, todos podemos usar a internet sem muito esforço. Compreende?"

– "Na verdade, não. O que tem a ver a definição de padrões e protocolos com o uso da internet?"

"Façamos uma analogia com um carro. Hoje você pode ir em qualquer concessionária e comprar um, de qualquer tamanho ou cor, certo?"

– "Certo?"

– "Graças aos padrões que foram estabelecidos pelo governo, fabricantes, especialistas e demais interessados, uma vez habilitado, você pode andar com esse carro em qualquer rua, parar em qualquer vaga, transportar qualquer pessoa ou objeto que o veículo comporte, independente do fabricante, ano ou modelo do veículo. Se um pneu furar, você pode ir a uma loja, comprar outro de alguns fabricantes diferentes e você mesmo instalar, caso tenha conhecimento, e isso vale para diversos outros componentes do veículo. Compreende? Isso só acontece, pois existem padrões!"

– "Agora entendi! Mas entendo as questões de padrões para a fabricação de carros, mas há a necessidade de tantos para a internet?"

– "Rapaz.... não sei quantos existem para a indústria automobilística, imagino que milhares, mas para a internet e sistemas funcionarem há uma porrada deles! É muita coisa mesmo, tem protocolos de comunicação, armazenamento, segurança, gerenciamento, criptografia, compactação, etc. Assim como eu falei dos padrões de arquivos, para a internet é até pior!"

– "Como assim? Me dá um exemplo de outro protocolo?"

– "Tem alguns, um que você vê todos os dias: HTTP e HTTPS. Outros comuns que talvez você conheça: FTP, SSH, IMAP, POP3 e SMTP."

– "Tem razão, HTTP e HTTPS eu vejo que são os de site, o FTP eu já ouvi falar e os outros são de email, certo?

— "Isso mesmo! O HTTP e o HTTPS são usados para acessar sites, você os vê no começo do endereço, como http:// ou https://

Já O FTP serve para transferir arquivos entre computadores, enquanto o SSH é usado para acessar computadores remotamente de forma segura, como se você estivesse entrando em outro computador pela internet.

Já o SMTP é usado para enviar e-mails, enquanto o POP3 e o IMAP são usados para receber. O POP3 baixa os e-mails para o seu computador e normalmente apaga do servidor, já o IMAP deixa eles lá no servidor, assim você pode acessar do celular, do computador ou de qualquer lugar e tudo continua sincronizado."

— " Agora eu acho que entendi a parada toda, cada protocolo tem um papel diferente, certo?"

— "Exato! É como se cada serviço tivesse seu próprio idioma, e os protocolos são esses idiomas"

– "Agora ficou claro pra mim. Essa conversa me deixou com uma visão muito mais ampla. Dá pra perceber que, sem esses padrões, a comunicação seria um caos completo. Valeu pela explicação detalhada!"

– "Por nada, eu simplifiquei muita coisa, mas acredito que foi possível compreender os principais motivadores da criação de padrões."

Em linhas gerais o diálogo foi esse, eu omiti os palavrões, os erros de português e parte de linguagem coloquial, afinal, ninguém merece ler isso.

Claro! Segue sua conclusão, agora com um call to action (CTA) ao final, estimulando o engajamento dos leitores:

No fim das contas, dá até pra dizer que, sem protocolos e padrões, cada aparelho eletrônico seria praticamente um adolescente rebelde: ninguém se entende, cada um faz as coisas do seu jeito, sem seguir regra nenhuma. Já pensou ligar para pedir uma pizza e acabar recebendo um hambúrguer porque o protocolo do restaurante é diferente do seu? Pois é, seria o caos!

Ainda bem que existe toda essa galera de TI, cientistas, engenheiros e até burocratas de plantão pra garantir o mínimo de ordem nesse mundão digital. Graças a eles, conseguimos assistir séries, mandar mensagens e até pedir aquela pizza (do jeito certo) — cada um falando a mesma “língua”, mesmo sem perceber.

Então, na próxima vez que ouvir falar em protocolo, lembre-se com carinho desse time de nerds invisíveis, porque sem eles até a conversa neste blog poderia acabar em ruído.

E você, já passou por alguma situação engraçada ou caótica por causa de incompatibilidade de tecnologia? Conta aí nos comentários! Vamos rir (ou chorar) juntos dessas confusões tecnológicas!