[ CONTEÚDO ] Entendendo como o Cliente se comunica com o Servidor de forma simples
Introdução:
Este pode ser um tópico um pouco assustador para iniciantes, devido a quantidade de conteúdo que existe sobre HTTP
, Web servers
, dentre outros protocolos que também estão presentes durante a comunicação como: TCL
, TCP
e IP
.
Hoje explicarei da forma mais simples possível como essa comunicação acontece, e sobre cada passado que ocorre nos bastidores. Não irei me aprofundar em todos os detalhes técnicos, até porquê este não é o objetivo de artigo.
Comunicação entre Cliente e Servidor:
Se você é programador, ou trabalha em alguma outra área de TI, já deve saber, ou já pensou no processo que ocorre, ao clicar num Link e ser rederecionado para a respectiva página. Este processo, é bem simples, na verdade, e irei explicar em passos.
Vamos suport, que estamos tentando acessar o site tabnews.com.br
. Para fazer isso, precisamos de um meio
para ir ao tabnews.com.br
. Qual seria esse meio? navegadores
! Browsers são o user-cliente
, o meio que o usuário vai utilizar para ir ao tabnews.com.br
.
Então, agora temos o meio
, que é o navegador
, vamos supor o chrome
, e temos o nosso endereço: tabnews.com.br
. Com isso, já é possível ir até o tabnews.com.br
.
E se eu não tivesse o endereço que eu quero?
Se você já tem experiência com motores de busca
e sabe com funciona, pode pular o próximo tópico, onde continuamos acima.
Caso você não tivesse a url
do tabnews.com.br
, tivesse somente o tabnews
. E agora? Como chegarei até o endereço correto, afinal o tabnews
não é o endereço completo, está faltando algo chamado TLD
, que é o .com
e o .br
. Sem isso, não tem como chegar lá.
Ai que entra os motores de busca
. Todos os navegadores tem um motor de busca
integrado (ao menos eu nunca vi algum sem um motor de busca). Os motores de busca
entram em ação, quando você digita algo na barra de url
do navegador,(ou na barra padrão mesmo, dependendo do seu navegador. Os dois fazem a mesma coisa ), e não corresponder a um endereço válido, com uma label
, TLD
, dentre outras coisas, o motor de busca
irá te levar até uma página com resultados com base na sua pesquisa. Isso aqui, não é novidade né?
Desde muito tempo, pesquisamos no google
, que é um motor de busca, e sempre aparecia vários links
com base na nossa pesquisa. Isso é o papel de um motor de busca
, ele auxilia o usuário na sua procura pelo o site em específico.
Então pesquisar tabnews
não levaria para o site na hora, mas levaria para vários links
relacionados. Motores de Busca
tem seu próprio algoritmo, e forma de posicionar o site. Como o tabnews
tem um excelente SEO, ele normalmente é o primeiro link.
Exemplo:
Processos que ocorrem durante uma comunicação:
Como dito anteriormente em Comunicação entre Cliente e Servidor
, precisamos de uma url
, e um navegador
.
Por baixo dos panos ocorrem diversos processos que eu irei explicar um por um de maneira mais simples possível. Antes, quero mencionar algo não previamente dito: Navegadores
, não apenas servem para buscar recursos na internet, eles vão muito além disso. Após o servidor nos enviar um recurso, ele vai ler e interpretar. Então, o fato de podermos está vendo qualquer site dentro do navegador, é porque o navegador leu e interpretou.
Continuando, vamos agora passar pelo o passo a passo dos ocorreidos:
- Abro meu navegador;
- Procuro por:
tabnews.com.br
; - O navegador irá pedir para o DNS o
IP
correspondente aotabnews.com.br
; - O DNS irá enviar de volta o
IP
se existir, caso contrário éError 404 NOT FOUND
; - O Navegador irá estabelecer uma conexão entre o
client
(nevgeador) e oservidor
que tem o endereço do IP retornado pelo o DNS; - Após isso, o
servidor
irá verificar orequest
(pedido) do usuário, e se oservidor
, puder retornar aquilo que oclient
está pedindo, os recursos são enviados; - O navegador recebe esses recursos, ler e interpreta;
Estes são os processos que ocorrem por debaixo dos panos durante uma comunicação entre client
e Server
. Entretanto, ainda podem ter mais coisas como Proxy
, cache
, e outros processos que ocorrem entre o client
e o servidor
.
Você está vendo muitos nomes como Proxy
, cache
, request
e DNS
. Não precisa se preocupar no momento com eles, é possível entender como a comunicação é feita, sem se aprofundar neles no momento, mas eventualmente será necessário, que ao longo dos seus estudos, domine esses conceitos.
Mas se você é dos que gostam de entender por completo tudo, antes de prosseguir, assim como eu, aqui tem uns links que podem ser úteis:
O que é DNS?
Servidor Proxy
Fetch API (Para os dev JavaScript)
HTTP:
Vimos como as coisas acontecem por debaixo dos panos, mas assim como fora das telas, precisamos de um idioma
para se comunicar, no nosso caso, português
para se comunicar com nativos
e outro idioma para pessoas de fora, existe sim uma forma de comunicação entre client
e servidores
;
Achou que era mágica o navegador
pedir para o servidor
o recurso? Nesse processso, ocorreu sim uma comunicação, e foi utilizando HTTP
.
O que é HTTP?
HTTP é um protocolo amplamente adotado com a finalidade de comunicação entre client
e servidor
. Bom, falando de maneira mais simples, HTTP
é a forma que o client
e servidor
se comunicam para pedir e enviar recursos pela a internet.
A boa noticia é que HTTP
é uma forma padronizada de se comunicar, então você não precisará aprender diversos protocolos de comunicação, assim como aprendimos alguns idiomas como o inglês.
Dito isso, como essa comunicação ocorre? Bom, o HTTP
possui methods
, que possui valores como GET
, POST
, HEAD
, PUT
, DELETE
, Dentre outros. O método que utilizamos, diz para o servidor, o que queremos fazer.
Por exemplo, se utilizarmos o método GET
, estamos dizendo para o servidor
que queremos um recurso. Se usarmos o método POST
, significa que queremos enviar dados para o servidor, geralmente informações de um formulário.
E assim, segue. Cada método tem sua própria funcionalidade. O HTTP
também possui algo chamado Headers
, que carrega informações extra sobre o nosso request
, como o tipo de arquivo, a linguagem do conteúdo, dentre diversas outras coisas.
HTTP
é um assunto muito, mas muito extenso mesmo. então, não irei me aprofundar em todos os aspectos aqui. Acima deixei uma base bem supercial, para entender de forma simples, o que ocorre. Ainda existe muito, principalmente por trás do Headers
.
Você pode encontrar mais informações sobre HTTP aqui: HTTP
Então, no exemplo passado a passo que colocamos mais acima, seria algo como:
sequenceDiagram
client->>servidor: Method: GET, Tabnews.com.br
servidor-->>client: Response: Text/html, status 200...
O servidor, responde com um response
object, que contém algumas informações extras sobre a responsa, como metadados, status, dentre outras coisas.
TLS, TCP e IP
Vimos o que é um client
se comunicar com um servidor
. Quais são os passo a passo por debaixo dos panos e o HTTP
.
Só que, assim como é necessário um meio
, um tradutor
(DNS), dependendo do caso, um auxiliar
(moto de busca) e uma forma de se comunicar HTTP
, mas, esquemos de nada?
Sim, precisamos de algo fundamental, que não pode falta durante uma comunicação, que ocorre no meio do caminho, segurança
,integridade
e precisão
.
Já falamos um pouco sobre IP
, durante o DNS
, mas irei explicar mais um pouco sobre, por último, pois IP
é a última camada da comunicação.
TLS (Transport Layer Security):
TSL, é responsável por encripitar todo o conteúdo que está sendo enviado, garantido seguraça durante o caminho. antigamente, a maioria dos sites utilizavam SSL
. o TSL
é o seu sucessor, e a forma mais segura se proteção de dados atualmente durante uma comunicação. Para quem não sabe, o SSL
foi descontinuado e está obsoleto atualmente, se eu não me engano, isso ocorreu em 2015
, sendo substituido pelo o TSL
que resolveu seus problemas.
TCP:
O TCP é o carinha que controla todos os pedaços dos dados. Quando fazemos um request
, os dados são quebrados em binário e enviados de pedaço em pedaço através de várias rotas.
O TCP garante que todos os pedaços cheguem ao destino final, e na ordem correta. Se por ventura ocorrer a perda de um pedaço, o TCP
irá emitir este pedacinho novamente e aguarda sua chegada.
Atualmente, já está sendo trabalhado no HTTP/3
, que basicamente tem a maiorias das suas alterações voltadas para o TCP
, substituindo pelo o QUIC
, que é basicamente uma versão aprimorada.
IP:
IP tem papel fundamental na comunicação HTTP
. Quando o DNS traduz o nome do dominio
, o IP retornando é usado para estabelecer uma comunicação entre client
e o servidor
. Cada pedacinho sendo enviados através das redes, é encapsulado dentro de um IP
, com o endereçamento de quem enviou (client
) e de quem receber o pedido (servidor
).
Conclusão:
Espero ter ajudado você a entender melhor como ocorre a comunicação entre um client
e um servidor
.
Ainda tem muito para se aprender como CORS
, Headers
, HTTP/3
, dentre várias outras coisas que você pode encontrar pesquisando na internet facilmente.
Bom, é isso, obrigado pela atenção.