HTTP: Entendendo a web por baixo dos panos

O HTTP é independente de qualquer plataforma de desenvolvimento, de qualquer linguagem. A primeira coisa que vem a mente quando falamos de HTTP é utilização da internet por navegadores.
O modelo de envio de dados é o cliente-servidor, baseado em regras, que na web é chamado de protocolos. O protocolo do HTTP já está na versão 2, mas ainda é muito utilizada a versão 1.1.

Tópicos:

  1. HTTPS - a web segura
  2. ENDEREÇOS
  3. PORTAS
  4. RECURSOS
  5. MODELO REQUISIÇÃO RESPOSTA
  6. MÉTODOS
  7. SERVIÇOS REST
  8. VERSÃO 2 HTTP

HTTPS - A web segura

Quando trabalhamos com modelo de requisição, o nosso navegador pode enviar dados.

Ao entrar no site da alura, na parte de login, quando colocamos nosso usuário e senha, recebemos uma mensagem de sucesso ou falha no login. Isso acontece porque o servidor verificou a requisição e analisou se iria valida-lo ou não o acesso.

Olhando pela aba de inspeção do navegador, na parte network é possível ver os dados enviados na requisição do login. Esse dados são enviados até o servidor, mas até chegar lá ele passa por muitos intermediários como routeador, modem, provedor e etc. Isso não é seguro, pois qualquer um mal intencionado pode intervir na comunicação e olhar os dados trafegados, image fazer isso num internet banking.

Devido a isso foi criado o HTTP + SSL/TLS = HTTPS

HTTP (Hypertext Transfer Protocol )
SSL (Secure Sockets Layer)
TLS (Transport Layer Security)

Os navegadores exibem na URL os sites com protocolo HTTPS.

Para deixar o site mais seguro é necessário um certificado digital. Onde do lado no navegador fica uma chave pública e do lado do servidor uma chave privada, em que só ela conhece.

O navegador usa a chave para encriptografar os dados e envia-los até o servidor, e o servidor faz o processo inverso com a sua chave.


Endereços

Os endereços são informações que indicam onde os navegadores devem solicitar conexão para uma futura troca de dados com ele.

Exemplo:
HTTP://ALURA.COM.BR

HTTP - É o protocolo de comunicação
ALURA - É o domínio do site
COM.BR - É a especificação do domínio, que nos passam mais informações sobre o endereço, podendo ser:

  • COM - Comercial
  • BR - Site hospedado no Brasil
  • ORG - Um site organizacional
  • e etc.

Os domínio nada mais é do que um nome fácil de memorizar, pois na comunicação web o navegador busca no servidor DNS o nome e o converte em endereço de IP.

O DNS é parecido com um banco de dados, onde ele armazena os domínios e os IP's relacionados.


Portas

O domínio pode ser ainda mais específico passando o número da porta a ser acessada, mas essa porta tem que estar aberta a requisições de fora.
Na web a porta padrão é a 80, por isso não precisamos digita-la sempre que escrevemos o nome de uma URL.

No protocolo HTTPS essa porta é alterada para a 443, mas ela fica configurada como padrão também.


Recursos

Em uma URL também é possível passar mais informações para indicar o local onde estamos buscando aquelas informações, isso é chamado de recurso. O recurso é algo concreto que queremos acessar.

Exemplo:
https://alura.com.br:443/course/introducao-html-css

  • https - indica que estamos na web com um protocolo criptografado;
  • alura - É o domínio, que será convertido em número de IP pelo DNS;
  • com - Indica que o site é comercial;
  • br - Indica que o site está hospedado no Brasil;
  • 443 - É a porta que estamos acessando, como ela é a padrão não é obrigatório colocarmos;
  • course/introducao-html-css - É o recurso que estamos passando ao servidor, dizendo qual informação queremos.

Modelo requisição e resposta

O protocolo HTTPS é stateless, ele não guarda informações entre requisições, ou seja toda requisição que é enviada não é guardada no servidor ou navegador.

Sendo assim toda vez que procuramos por um curso na Alura estamos enviando o login e senha pro servidor ?

Não é necessário, pois o servidor quando envia a página de resposta dos cursos ele também passa um código, assim toda as vezes que procurarmos um novo curso é só passarmos aquele código que o servidor já saberá quem está logado.

Esse conceito é chamado de SESSÃO, que é a guardar a informação daquele usuário até que ele não necessite mais e encerre a sessão. Essa implementação só ocorre quando é depositado no navegador do cliente um dado chamado COOKIE, que é um par de chave-valor.


Métodos

Existem métodos, ou verbos, ou ações diferentes para passarmos informações na hora de criar a requisição no servidor.

GET é o método de buscar, ou receber dados do servidor. Podemos especificar usando os parâmetros na URL. Exemplo:

https://alura.com.br/cursos?buscar=html+css&filtro=web

Depois do sinal de ? vem os parâmetros, que no caso são dois um para buscar o curso e o outro de filtrar a areá de estudo, os dois são concatenados com o sinal de &.

POST É o método usado para submeter os dados ao servidor. Os parâmetros são passados pelo corpo da requisição e não na URL. Assim os dados ficam mais seguros evitando que qualquer um veja.

DELETE É o método utilizado para deletar dados do servidor.

PUT É usado para atualizar dados do servidor.

PATCH é utilizado para atualização parcial do recurso que foi definido.


Serviços REST

(REpresentational State Transfer)

É a requisição e troca de dados entre aplicações, não mais com o cliente, uma aplicação conversa com outra ou um servidor. O REST não devolve como resultado uma página HTML, normalmente é usado o XML e JSON, o que torna mais fácil a implementação nas suas API's.

URI + METHOD

http://alurafood.com/api/restaurante + GET

Retorna todos os restaurante, podendo ser em formato JSON ou XML.

http://alurafood.com/api/restaurante + POST

Nesse caso passaríamos informações de um restaurante para que sejam salvas no banco de dados do servidor.

http://alurafood.com/api/restaurante/1 + DELETE

Esse seria usado quando quisermos deletar um restaurante do banco, passando sempre uma identificação exata de qual restaurante se trata.

http://alurafood.com/api/restaurante/1 + PUT

Este é o método para atualizarmos alguma informação do restaurante no banco, como nome ou endereço. Passando a identificação do restaurante na URI.

Com isso podemos utilizar a mesma URI para varias tarefas apenas mudando o método utilizado, isso é o REST API.


Versão 2 HTTP

Novidade no HEADER

Nesta versão os dados das requisições e nas respostas foram modificados, agora a resposta enviado pelo servidor é comprimida com o GZIP. O dados do header da requisição e resposta são enviado em binários e também comprimidos com o HPACK. Além disso os dados são comprimidos e também criptografados com TLS, o padrão HTTPS de segurança.Tudo isso para otimizar o tráfego de dados na rede e aumentar a segurança das informações.

HEADER STATEFULL

É usado quando enviamos um header ao servidor, ele guarda esse informação e não reenvia até que seja necessário mudar alguma coisa. Enviando assim menos dados redundantes ao servidor e deixando de gastar banda.

SERVER PUSH

É usada quando há uma requisição com mais de um arquivos, como página HTML, CSS, JS e etc, assim o serve envia todos os arquivos necessários para o cliente renderizar a página, quando o navegador foi buscar aqueles arquivos ele verá que já recebeu, evitando tráfego desnecessário na rede.

Multiplexação

Na versão anterior quando o cliente fazia requisições, era criado uma conexão TCP com o servidor, e uma sempre dependia da anterior para continuar, sendo conexões em série e sincronizadas. Para melhorar isso foi desenvolvido o KEEP-ALIVE que mantém no navegador de 4 té 8 requisições TCP no mesmo tempo, porém todas sincronizadas ainda.

Já na versão 2.0, as requisições são enviadas no momento que o cliente necessitar, ou seja são conexões paralelas, e o servidor vai respondendo de acordo com a demanda, fazendo assim uma multi conexão assíncrona entre client-server. Com isso o tráfego fica muito mais ágil e economiza recursos.


results matching ""

    No results matching ""