Como a Internet funciona?
Tags: resume, braziliandevs, beginners
Published: 2021-11-14 21:34:14

## Introdução

Você consegue imaginar como seria a sua vida, a partir de agora, sem a Internet? Tenho que admitir, para mim esse tipo de pensamento me causa bastante tristeza. Se em somente alguns momentos quando a "Internet cai" já deixa a gente com um misto de emoções que vão desde raiva, abstinência até a depressão (cruzes), imagina ficar pra SEMPRE sem Internet. Difícil, né? Hahaha, mas calma, o intuito dessa postagem não é te deixar triste e nem nada do tipo, mas sim, tentar explicar como essa tecnologia, que hoje é indispensável em nossas vidas, realmente funciona.

É válido ressaltar que as explicações aqui feitas serão um tanto quanto "superficiais". Não vou esmiuçar TOOODA a estrutura da Internet, dado que para alcançar tal feito, seria demandado muito tempo de estudo e diversos livros. Vou tentar explicar de forma resumida, a partir das minhas pesquisas e dos conhecimentos adquiridos, o que acontece desde o momento em que uma requisição é feita a um servidor qualquer, até a obtenção da resposta da mesma. Então sem mais delongas, vamos começar!

## Cliente-Servidor

Um bom ponto de partida é iniciarmos explicando um dos modelos mais utilizados na comunicação distribuída, que é o "Cliente-Servidor". A julgar pelo nome do modelo, talvez o leitor já tenha percebido que há uma divisão entre duas entidades: O Cliente e o Servidor.

Vamos começar explicando o que seria o Servidor. Basicamente, este é um computador que estará executando um ou mais programas com o objetivo de prover recursos ou serviços dos mais variados tipos, que vão desde armazenamento de arquivos, serviços de e-mail, impressão, fax (alguém ainda usa isso?) entre muitos outros.

Já um Cliente tem um papel um pouco diferente nessa história. Basicamente, é ele que irá requisitar algum serviço ou recurso do Servidor. É interessante ressaltar que nesse modelo Cliente-Servidor, o pedido/requisição será sempre iniciado pelo Cliente.

Você deve estar se perguntando: "Tá.. entendi.. Mas como que a comunicação entre o Cliente e o Servidor ocorre nesse história toda?". Caaaalma, nós vamos falar disso em um capítulo mais abaixo chamado "A Rede" (spoiler). Esse parágrafo serviu apenas como uma "porta de entrada" para as próximas explicações, dito isso, vamos continuar!

## Data Centers

Uma vez que você tenha entendido o "básico do básico" do modelo Cliente-Servidor, vamos falar um pouco sobre os famosos "Data Centers".

Lembra que no comecinho dessa postagem eu perguntei se você consegue imaginar como sua vida seria sem a Internet? Pois é, sem os Data Centers, hoje talvez boa parte dos serviços do mundo todo parariam por completo!

Um Data Center, a grosso modo, é como se fosse o "sistema nervoso" de algumas empresas de tecnologia. Basicamente, ele é uma infraestrutura totalmente projetada para concentrar servidores e diversos equipamentos de armazenamento, processamento e vários outros ativos computacionais, da forma mais segura possível, buscando sempre a preservação tanto física quanto lógica de tudo.

O objetivo principal de um Data Center é garantir a disponibilidade dos equipamentos que rodam sistemas fundamentais para o negócio de uma empresa. Basicamente, precisamos que todos os recursos cruciais para o bel funcionamento estejam disponíveis 24 horas, 7 dias por semana, 365 dias no ano.

Lembra que eu expliquei mais ou menos a função de um Servidor? Agora imagina só um monte deles juntos, servindo recursos dos mais diversos tipos, para milhares de Clientes mundo a fora, independente da hora do dia. Esse seria um "resumão" do que são os Data Centers.

## A Rede

Agora nós aprendemos mais ou menos como funciona o modelo Cliente-Servidor, e também, sabemos de certa forma sobre o que é um Data Center e qual a importância dele.

Mas algumas coisas ainda não foram explicadas até aqui: Como que clientes e servidores se comunicam? Como é possível, dado a imensa quantidade de computadores pelo mundo, que uma requisição seja enviada para o servidor específico e a resposta volte sem se perder no meio do caminho? Vou tentar responder essas perguntas logo a seguir.

No momento em que eu estava escrevendo esse parágrafo, eu dei uma pausa para usar uma ferramenta para calcular a distância da minha casa até um dos Data Centers do Google que fica na cidade de Lenoir, na Carolina do Norte, EUA (eu tava meio entendiado, não me julgue). Talvez eu tenha uma certa vantagem em relação aos leitores de outras localidades aqui do Brasil, já que eu moro na região mais ao norte do país, mas mesmo assim, a distância ainda foi bem alta, aproximadamente uns 6.689,97 km. O tempo de voo médio que um avião levaria saindo aqui da minha casa (o quê!?) até o a esse Data Center, seria algo entorno de umas 8 horas e meia.

Engraçado, mesmo sabendo das distâncias físicas, como é possível que o tempo de resposta de uma requisição feita do meu computador até um dos servidores do Google, demore somente 53.4 milissegundos? Ora, essa pergunta é muito fácil de ser respondida: É graças aos aproximadamente [1.2 milhões de quilômetros de fibra óptica interligados em todos os países do mundo](https://edition.cnn.com/2019/07/25/asia/internet-undersea-cables-intl-hnk/index.html), que emitem sinais por meio de pulsos eletromagnéticos (luz, radiação infravermelha ou qualquer outra radiação eletromagnética). Ahhh, então é graças a isso, né.. PERA! 1.2 MILHÕES DE QUILÔMETROS?!

Só pra você ter uma noção, a circunferência da terra tem aproximadamente uns 40.075 km, isso quer dizer que com o comprimento de toda a fibra óptica usada para nos conectarmos, daria pra gente dar quase umas 30 voltas ao redor dela.

Não se precipite. Pode até parecer, mas a internet não é só um "*cabão gigantesco de fibra óptica ligando todo mundo, que transmite dados de maneira super-rápida*", afinal, hoje existem uma série de dispositivos que estão conectados a Internet e não precisam de cabo nenhum, não é mesmo? Mas então como que essa "mágica" acontece? Para respondermos melhor essa pergunta, precisamos entender mais alguns conceitos básicos que são os **roteadores**, **modems**, **provedores**, **endereços IPs**, **protocolos** e **pacotes**. Eu sei, eu sei.. É muita coisa, mas relaxa, eu vou tentar explicar de uma forma que você possa compreender a correlação entre cada um deles.

## Roteadores

Vamos começar falando um pouco sobre os roteadores. Para iniciarmos nossa discussão, eu vou propor uma reflexão (de novo isso?).

Imagina só que para que dois computadores se comunicassem, precisássemos que existisse uma conexão entre eles, por exemplo, através de um cabo Ethernet. Beleza, para conectar dois computadores, precisaríamos de apenas um cabo, certo? Agora imagina que precisássemos conectar 10 computadores através de cabos Ethernet, você sabe quantos cabos iriamos precisar mais ou menos? Seriam necessários 45 cabos! Agora eu vou mais além, imagina se a gente fosse conectar todos os dispositivos do mundo usando cabos? A gente não ia conseguir nem sequer andar no meio de tanto fio, não é mesmo? Então como que a gente fez pra resolver esse problemão? Ora, através da utilização dos roteadores!

![45 conexões seriam necessárias para a comunicação de 10 computadores. Imagem retirada de developer.mozilla.org.](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m55lqon01ok3jt4u06qr.png)

Um roteador nada mais é que uma espécie de "computador pequenininho", super simples, que possui apenas uma única tarefa: Ele precisa garantir que a mensagem enviada de um determinado computador, chegue ao computador de destino correto. Para melhorar a explicação, imagina que vamos enviar uma mensagem do computador A para o computador B, então basicamente o que ocorrerá é que o computador A envia a mensagem para o roteador, que por sua vez encaminha para o computador B, e garante que ela não seja entregue, por exemplo, para o computador C.

Dessa forma, voltando a considerar que tivéssemos 10 computadores na nossa rede, ao invés de 45 conexões entre todos os computadores, iriamos precisar apenas que cada um deles se conectasse ao roteador, dessa forma, teríamos apenas 10 conexões, ou melhor ainda, já que temos "Roteadores Wi-Fi", não precisamos de cabo nenhum, né?

![Utilizando um roteador, precisamos apenas de 10 conexões, uma para cada computador na rede. Imagem retirada de developer.mozilla.org.](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0olvl4vmjau2tu7h6zmv.png)

Mas calma! Não existe apenas um roteador conectando todos os computadores do mundo todo! Lembra que eu falei que o roteador é um "computador pequenininho"? Por se tratar exatamente de um computador, ele pode se conectar a outro roteador, que por sua vez se conecta a outro, e a outro, e a outro… Mas isso só é possível se estivéssemos falando de uma rede local. Ainda com a solução do roteador, se quiséssemos nos conectar ao mundo todo, iriamos continuar precisando de muuuitas conexões de cabos de rede entre outros computadores e roteadores. E é a partir dessa problemática que vamos para o nosso próximo dispositivo que ajuda a resolver esse problema, que é o **modem**.

![Conexões entre computadores e roteadores. Imagem retirada de developer.mozilla.org.](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4f2l7y1sfrjzdllq6goi.png)

## Modems

Há um certo tempo atrás, foi criada uma grande infraestrutura, extremamente complexa, que permitiu com que nos comunicássemos com qualquer pessoa no mundo através de uma ligação telefônica. O que poucas pessoas sabem no entanto, é que essa infraestrutura também pode ser utilizada para nos conectarmos hoje a Internet. Porém, como os tipos de dados que utilizamos na rede de computadores são diferentes dos dados que são utilizados em redes telefônicas, precisamos de uma forma de gerenciar isso tudo. É aí que o **modem** entra.

Basicamente, o modem serve para transformar informações da nossa rede em informações gerenciáveis pela infraestrutura telefônica e vice-versa. Ele modula um ou mais sinais de onda portadora para codificar informações digitais para transmissão, e desmodula sinais para decodificar as informações transmitidas (acho que peguei um pouco pesado nessa explicação, mas deu pra entender, né?).

Pronto, agora estamos conectados à estrutura telefônica e podemos reaproveitá-la para conectar nossos computadores a outros computadores por meio dela. Mas estamos esquecendo de um detalhe muito importante: Nós somos cobrados para que possamos nos conectar a essa infraestrutura. E quem faz essa cobrança, e de quebra facilita ainda mais com que possamos nos conectar a outros computadores no mundo, é justamente o nosso "Provedor" (*Internet Service Provider* ou ISP).

![Roteador conectado ao modem que por sua vez está conectado à infraestrutura telefônica. Imagem retirada de developer.mozilla.org.](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ui7hz41jxb2le9f3f0jc.png)

**PS:** *Existem muitas outras formas de nos conectarmos a Internet além da utilização dedicada de linhas telefônicas, mas para fins didáticos e também para não nos alongarmos explicando cada uma delas, vamos nos focar nossa jornada utilizando a conexão via linha telefônica, tá bom?*

## Provedor

Vamos recapitular um pouco alguns elementos da rede que foram explicados até aqui:

- Temos os nossos dispositivos (computadores, smartphones, etc);
- eles podem estar conectados localmente através de um roteador;
- o roteador por sua vez se conecta ao modem;
- o modem transforma informações da nossa rede em informações gerenciáveis pela infraestrutura telefônica;
- estamos agora conectados a estrutura telefônica.

O próximo passo agora é enviar as mensagens da nossa rede para a rede que queremos alcançar, por exemplo, acessar através do navegador do meu computador uma página do Google. Para facilitar esse envio de mensagem, contratamos um **Provedor** (*Internet Service Provider* ou ISP). Um Provedor é uma empresa que gerencia alguns "roteadores especiais" que são conectados entre si, e que também, podem acessar roteadores de outros Provedores que seguem a mesma lógica.

Deste modo, a mensagem parte da nossa rede local, e então é transportada para a "rede de redes" do Provedor, e assim, para a rede de destino na qual a mensagem deverá ser entregue. Basicamente, essa é a estrutura permite que os computadores do mundo todo, uma vez que fazem parte dessa graaande rede, possam se comunicar.

![Conexão entre vários ISPs. Imagem retirada de developer.mozilla.org.](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ngyiagvexd24hsokqh40.png)

Certo, acho que nós conseguimos entender como os computadores na Internet estão conectados, mas se você é um cara curioso, deve estar se perguntando agora: No momento que eu envio uma mensagem de um computador, que está em uma rede específica, para outro, sei lá, há milhares de quilômetros de distância, em uma rede completamente diferente, como é possível que essa mensagem não se perca no caminho? Ou melhor, como é possível ainda que depois dela ter chegado no destino, ela possa voltar em formato de resposta para a origem? Mistério? Magia? Óbvio que não, né? E é aqui que teremos a nossa "deixa" para explicarmos sobre **endereço IP**, **protocolos** e **pacotes**.

## Endereço IP

Todos os dispositivos que estejam conectados na Internet, desde computadores até smartphones, smart TVs, impressoras, câmeras de segurança, etc, recebem um endereço único de identificação chamado de "**Endereço IP**".

Atualmente, possuímos duas versões de para os endereços IPs. A primeira, que mais "comumente" utilizada, é o **IPv4**, que permite que tenhamos cerca de 4,294,967,296 de endereços únicos na Internet. Já a segunda versão, que é o **IPv6**, possui aproximadamente *79 octilhões de vezes mais endereços em relação ao IPv4*. Não sei bem ao certo hoje, mas levando em consideração que o planeta terra tenha aproximadamente 6 bilhões de habitantes, isso daria um pouco mais de *56 octilhões de endereços para cada um deles*. E ae, tu conseguiria gastar todos os endereços disponíveis pra você, hahaha?

Para fins didáticos, e também pra não confundir muito a sua cabeça, vamos nos ater ao IPv4, tá bom? Basicamente, os endereços IPs nessa versão possuem um formato **nnn.nnn.nnn.nnn**, onde cada conjunto de "nnn" é um número que vai de 0 até 255.

Mas agora imagine a dificuldade para nós, meros mortais, lembrarmos o endereço IP de um computador específico. Difícil, né? E a julgar pela forma com que você está familiarizado a utilizar a Internet, você não sai digitando nenhuma série de "nnn.nnn.nnn.nnn" para se conectar a um site, e sim, algo parecido com "www.algumacoisa.com". Basicamente esse "algumacoisa.com", é o que chamamos de **nome de domínio**, que nada mais é que um "apelido" para o seu real endereço IP do computador, que sei lá, talvez fosse 175.234.12.100 (Não, esse não é o meu IP). Para não nos alongarmos muito, vou deixar a explicação de como essa tradução é feita para outra postagem, mas se o leitor tiver interesse sobre o assunto, basta pesquisar sobre **DNS (Domain Server Name)**.

Certo, agora nós entendemos que não há como uma determinada **mensagem** se perder no caminho de forma acidental, uma vez que tanto o computador origem, quanto o computador destino, possuem endereços únicos em toda a rede. E criando um gancho agora para o nosso próximo tópico, talvez o leitor notado, uma vez que tenha chegado até aqui, que eu utilizei várias vezes a palavra "mensagem" quando precisava dar exemplo de uma comunicação entre dois computadores (até deixei em negrito um exemplo aqui no começo desse parágrafo). Vamos agora tentar entender o que seriam algumas dessas "mensagens" compreendendo o conceito de **protocolos** e **pacotes**.

## Protocolos

Imagina só se tivéssemos apenas uma única língua universal e que essa permitisse que todas as pessoas do planeta pudessem se comunicar sem nenhum problema. Seria maravilhoso, né? Só pra você ter noção, se alguém quisesse ser capaz de conversar com qualquer pessoa no mundo, precisaria aprender um pouco mais de 6 912 idiomas diferentes.

Um **protocolo de rede** funciona exatamente como um "língua universal" entre todos os computadores do mundo, independente do sistema operacional ou fabricante. Uma vez que os computadores estão conectados na Internet, eles vão se comunicar utilizando protocolos específicos.

Para cada tipo de serviço irá existir um protocolo de rede diferente. Se você deseja assistir um vídeo no seu navegador, enviar e receber mensagens no "zap", baixar e subir arquivos, acessar algum site específico, para cada uma dessas tarefas existe um protocolo a ser seguido entre todos os computadores.

Os dois protocolos mais importante para nós, nesse momento, são o **TCP/IP** e o **HTTP/HTTPS**. O protocolo TCP/IP, é responsável pelo envio e recebimento de dados, identificando as melhores rotas para a comunicação entre dois locais. Já o HTTP, é o protocolo utilizado para acessar páginas na internet, como por exemplo essa postagem que você está lendo agora. É válido falar também sobre o HTTPS que funciona da mesma forma que o HTTP, contudo, ele possui uma "camada de proteção extra de segurança" durante as trocas de mensagens entre os computadores.

Existem diversos outros protocolos que infelizmente não será contemplado aqui na nossa explicação, mas se o leitor sentir vontade de aprender mais, pode pesquisar por **UDP**, **DHCP**, **FTP**, **SFTP**, **SSH**, **SMTP**, **IMAP** (é quase uma sopa de letrinhas).

Ufa, estamos quase chegando ao fim, agora só precisamos saber um último conceito, intrinsecamente ligado aos protocolos, que são os **pacotes**.

## Pacotes

A gente não se dá conta, mas tudo que você utiliza no seu computador, na parte de software é claro, é uma imensa coleção de 0's e 1's. Essa postagem que você está lendo agora por exemplo, chegou até você no formato de uma graaande coleção de 0's e 1's. Basicamente, o conteúdo que você está acessando agora, está armazenado em um servidor e precisou ser transportado, seguindo toooda a estrutura que explicamos até aqui, até chegar ao seu computador. Mas sabe o que realmente faz com que a transferência de dados aqui na Internet seja extremamente eficiente? É exatamente pela forma em que esses 0's e 1's são divididos e transmitidos em vários pequenos pedaços chamados de **pacotes**.

Cada pacote, além de uma pequena parte da informação, também irá possuir um "cabeçalho" no qual contém informações importantes para a transmissão, como o endereço do servidor/cliente, prioridades, etc.

Uma vez que esses pacotes são criados, eles começam a ser transferidos um a um pela Internet até que alcancem o computador de destino. A medida que os pacotes começam a chegar no computador de destino, inicia-se um processo para "juntá-los" novamente. Para que haja uma consistência na forma em que eles são transmitidos pela rede e também reconstruídos após chegarem ao seu desígnio, é que são utilizados os protocolos (que explicamos anteriormente). Para cada serviço (vídeo, chat, e-mail, armazenamento, etc), existirá um protocolo diferente para a manipulação dos pacotes.

## Conclusão

Nem de perto eu cheguei a tratar de todos os assuntos por trás de como a Internet REALMENTE funciona. Como eu disse no começo dessa postagem, seriam necessários muito tempo de estudos e vários livros para englobar tudo que é imprescindível pra entender, com extrema maestria, o funcionamento por completo da Internet. Mas de qualquer forma, eu espero que com esse resumão você possa ter aprendido, "superficialmente", como essa tecnologia que hoje é indispensável em nossas vidas funciona.

Obrigado pela leitura e até a próxima! :-)

## Bibliografia

- [How de Internet Works in 5 Minutes](https://www.youtube.com/watch?v=7_LPdttKXPc)
- [How does the INTERNET work? ICT #2](https://www.youtube.com/watch?v=x3c1ih2NJEg)
- [How does the Internet work?](https://developer.mozilla.org/en-US/docs/Learn/Common_questions/How_does_the_Internet_work)
- [How does the Internet work?](https://computer.howstuffworks.com/internet/basics/internet.htm)
- [The global internet is powered by vast undersea cables. But they're vulnerable.](https://edition.cnn.com/2019/07/25/asia/internet-undersea-cables-intl-hnk/index.html)
- [Entenda o IPv4 e o IPv6](https://www.techtudo.com.br/artigos/noticia/2011/02/um-pequeno-guia-sobre-ipv4-e-ipv6.html)
- [Data Centers: tudo que você precisa saber](https://olhardigital.com.br/pro/noticia/data-centers-tudo-que-voce-precisa-saber/58506)
- [What is Client-Server Architecture?](https://www.w3schools.in/what-is-client-server-architecture/)
- [What is a router? | CCNA](https://geek-university.com/ccna/what-is-a-router/)
- [What is a Modem?](https://www.linksys.com/us/r/resource-center/what-is-a-modem/)
- [Protocolos de rede: o que são, como funcionam e tipos de protocolos na internet](https://www.weblink.com.br/blog/tecnologia/conheca-os-principais-protocolos-de-internet/)
- [O que é TCP/IP?](https://www.tecmundo.com.br/o-que-e/780-o-que-e-tcp-ip-.htm)
- [How Does the Internet Work?](http://www.theshulers.com/whitepapers/internet_whitepaper/index.html)