pythonlini1

Hoje o mundo todo gira em torno da Internet, mas você já parou pra pensar em o que é a Internet? A Internet é uma rede de computadores, dispersos por todo o planeta, que trocam dados e mensagens utilizando algumas regras específicas, que chamamos de Protocolos.

Podemos dizer que estes protocolos são as regras de comunicação na internet Hoje existem milhares de protocolos no mundo de TI, os mais comuns são:

protocols

  • HTTP: Navegação na Web
  • SMTP: Envio de Email
  • FTP: Transporte de Arquivos
  • POP3: Recebimento de email
  • SSH: Login remoto seguro
  • WAP: Telefonia Móvel
  • IMAP: Troca de email
  • TCP/IP: Envio e recebimento de dados entre computadores

Destes protocolos listados, o mais importante para nós é o O HTTP, que possibilita a comunicação entre computadores na Internet e ele utiliza algumas regras para definir como é feita esta troca de informações entre clientes e servidores.

HTTP: O Protocolo mais importante da Internet

A sigla vem do inglês Hypertext Transfer Protocol. (Protocolo de transferência de Hipertexto : hipertexto é o texto estruturado que utiliza ligações lógicas (hiperlinks) entre nós contendo texto).

Ele é o protocolo mais importante porque ele possibilita a comunicação entre computadores na Internet e utiliza algumas regras para definir como é feita esta troca de informações entre clientes e servidores por meio de mensagens.

cliente-servidor

O HTTP possui um modelo cliente-servidor, como a maioria dos protocolos, se baseando no paradigma requisição-resposta.

Um modelo cliente-servidor é uma arquitetura onde o processamento das informações são divididos em dois módulos, onde um é responsável pelo processamento das informações (Servidor) e o outro receber os dados (Cliente). Os processos cliente enviam pedidos para o processo servidor, e este por sua vez processa e envia os resultados dos pedidos.

Esta comunicação engloba 4 passos:

  • Estabelecer conexão entre cliente-servidor
  • Envio de uma mensagem para o servidor
  • Servidor responde a mensagem para o Cliente
  • Fechamento da conexão

Veremos agora cada passo detalhado, para melhorar o entendimento do processo de comunicação requisição-resposta com o HTTP.

Estabelecer conexão entre cliente-servidor

Sabemos que, ao escrever em nosso navegador www.google.com, o navegador envia uma requisição para o Servidor. Mas se o servidor é um computador, em algum lugar do mundo, como o Navegador encontra este servidor?

nazare

Através dos Domínios e dos IP’S

No mundo de desenvolvimento, chamamos o www.google.com que digitamos no navegador, de domínio. O domínio é o nome do site na Web, ele foi criado para organizar sites e ser algo fácil para que possamos nos lembrar. Aquele nome que utilizamos são para os humanos se entenderem.

Já as máquinas encontram o seu endereço a partir de alguns números que chamamos de endereços de IP. Qualquer site que acessamos, por trás existe um IP, todos os computadores possuem um IP, é como se fosse um identificador único daquele computador, um CPF.

Quando digitamos o domínio do site que desejamos acessar, esta URL é transformada em um IP para que possamos encontrar qual a máquina que precisamos pedir a informação que desejamos. Quem faz esta transformação é um serviço chamado DNS (Domain Name System).

Este serviço é como se fosse um grande catálogo de domínios. Então quando queremos acessar o site da google, o DNS traduz nosso domínio em um IP correspondente e a requisição com o servidor prossegue.

Podemos usar de exemplo, ao abrir o terminal e escrever nslookup www.google.com (Comando procura o ip da serasa na internet) e vamos ter a seguinte resposta:

nslookup

Ao colocar o número de ip 172.217.30.100 em nosso navegador, podemos observar que o site da google irá abrir.

Envio de uma mensagem para o servidor

Seguindo os passos do modelo que o HTTP segue, com a arquitetura de comunicação entre cliente e servidor, após encontrar o endereço IP do servidor e se conectar, entramos em nosso segundo passo, que é enviar a mensagem para o servidor, solicitando alguma ação.

Esta mensagem que enviamos para o servidor são chamadas de HTTP Request, e seguem as regras do protocolo Elementos que compõem uma mensagem:

  • Um método HTTP;
  • URL da requisição, sendo composta pelo nome do protocolo + domínio. Ex: http://www.serasa.com.br
  • A versão do protocolo HTTP;
  • Informações do cliente;
  • Em alguns casos, um corpo da mensagem.
Métodos HTTP

Métodos falam pro servidor a intenção do cliente. http-methods Métodos mais utilizados são:

  • GET: Pede para o servidor alguma informação
  • POST: Informa que queremos criar um recurso
  • PUT: Pede para ser atualizado um recurso, caso ele nao existir, o mesmo é criado.
  • PATCH: Pede para atualizar partes de um recurso
  • DELETE: Pede para excluir um recurso

Para que a comunicação entre cliente e servidor seja realizada com sucesso, precisamos sempre enviar todas as informações na mensagem, não importa se vamos fazer 10 requisições iguais para o mesmo servidor, cada uma dela precisa ser independente.

http-methods Podemos fazer uma analogia ao envio de uma carta, se eu quero enviar duas cartas para Blumenau, eu não posso colocar o endereço do destinatário em apenas uma das cartas e deixar que o carteiro adivinhe que as duas cartas que enviei são para o mesmo lugar, precisamos colocar o endereço nas duas cartas para que elas sejam entregues.

Servidor processa e responde ao cliente

O servidor interpreta a mensagem recebida do cliente, e monta uma nova mensagem para responder para o cliente, que chamamos de HTTP Response.

Um HTTP response segue algumas regras e possui as seguintes características:

  • Status da requisição
  • Código de resposta
  • Corpo da mensagem, em alguns casos

Algo muito importante nas respostas do Servidor são os códigos de respostas definidos no protocolo HTTP. Estes códigos ajudam o Servidor contar para o Cliente o que aconteceu enquanto ele estava processando aquela requisição. Quando ela ocorre com sucesso o código 200 é retornado, já quando buscamos uma informação que não existe, recebemos o código 404. E também erros podem acontecer no lado do servidor, o que é super normal no mundo do desenvolvimento e o código mais comum nestes casos, é o 500. Se você ver ele em algum lugar, pode ter certeza que algo não correu como esperado. Existem vários códigos de respostas no protocolo HTTP, você pode encontrar tabelas com seus significados muito facilmente na web.

Fechamento da conexão

Após o envio da resposta pelo servidor, encerra-se a conexão estabelecida. Por este motivo, chamamos as requisições HTTP Stateless, elas não mantém estado.

catlini

Este é todo o fluxo de um paradigma cliente-servidor na comunicação entre aplicações na web.

Grande Abraço, A.R. 🙂