HTTP (Hypertext Transfer Protocol)

O que é HTTP?

HTTP (Hypertext Transfer Protocol) é o conjunto de regras para transferir arquivos -- como texto, imagens, som, vídeo e outros arquivos multimídia -- pela web. Assim que um usuário abre sua web browser, ele está usando indiretamente o HTTP. HTTP é um aplicativo protocol que roda em cima do TCP/IP conjunto de protocolos, que forma a base da Internet. A última versão do HTTP is HTTP/2, que foi publicada em maio de 2015. É uma alternativa ao seu predecessor, HTTP 1.1, mas não torna obsoleto.

Como funciona o HTTP

Por meio do protocolo HTTP, os recursos são trocados entre dispositivos clientes e servidores através da Internet. Os dispositivos clientes enviam pedidos aos servidores para os recursos necessários para carregar uma página web; os servidores enviam respostas de volta para o cliente para atender os pedidos. Pedidos e respostas compartilham sub-documentos -- tais como dados sobre imagens, texto, layouts de texto, etc. -- que são agrupados por um navegador web cliente para exibir o arquivo completo da página web.

Além dos arquivos da página web que pode servir, a web server contém um HTTP daemon, um programa que espera por solicitações HTTP e as trata quando elas chegam. Um web browser é um cliente HTTP que envia requisições para os servidores. Quando o usuário do navegador entra solicitações de arquivo "abrindo" um arquivo web digitando a URL ou clicando em a hypertext link, o navegador constrói uma solicitação HTTP e a envia para o endereço do Protocolo de Internet (endereço IP) indicado pela URL. O daemon HTTP no servidor de destino recebe o pedido e envia de volta o arquivo ou arquivos associados ao pedido.

diagram of http client, internet and servers Os dispositivos do cliente usam HTTP para se comunicar com servidores online e acessar páginas da web.

Para expandir neste exemplo, um usuário quer visitar TechTarget.com. O usuário digita o endereço web e o computador envia um pedido "GET" para um servidor que hospeda esse endereço. Essa solicitação GET é enviada usando HTTP e diz ao servidor TechTarget que o usuário está procurando o código HTML (Hypertext Markup Language) usado para estruturar e dar à página de login sua aparência e sensação. O texto dessa página de login está incluído na resposta HTML, mas outras partes da página -- particularmente suas imagens e vídeos -- são solicitadas por solicitações e respostas HTTP separadas. Quanto mais solicitações forem feitas -- por exemplo, para chamar uma página que tenha numerosas imagens -- mais tempo o servidor levará para responder a essas solicitações e para o sistema do usuário carregar a página.

Quando esses pares de solicitações/respostas estão sendo enviados, eles usam TCP/IP para reduzir e transportar informações em pequenos pacotes de seqüências binárias de uns e zeros. Estes pacotes são fisicamente enviados através de fios elétricos, cabos de fibra óptica e redes sem fio.

Os pedidos e respostas que servidores e clientes usam para compartilhar dados uns com os outros consistem em código ASCII. As solicitações declaram quais informações o cliente está buscando do servidor; as respostas contêm código que o navegador do cliente irá traduzir para uma página web.

HTTP vs. HTTPS

HTTPS é o uso de Secure Sockets Layer (SSL) ou Transport Layer Security (TLS) como um sub-camada sob a camada de aplicação HTTP regular. HTTPS encripta e descriptografa as solicitações de página HTTP do usuário, assim como as páginas que são retornadas pelo servidor web. Também protege contra eavesdropping e ataques man-in-the-middle (MitM). HTTPS foi desenvolvido por Netscape. A migração de HTTP para HTTPS é considerada benéfica, pois oferece uma camada adicional de segurança e confiança.

pedidos e respostas de HTTP

Cada interação entre o cliente e o servidor é chamada de mensagem. As mensagens HTTP são pedidos ou respostas. Os dispositivos clientes submetem pedidos HTTP aos servidores, que respondem enviando respostas HTTP de volta aos clientes.

> forte> pedidos HTTP. Isso é quando um dispositivo cliente, como um navegador de internet, pede ao servidor as informações necessárias para carregar o site. A solicitação fornece ao servidor as informações desejadas que ele precisa para adequar sua resposta ao dispositivo cliente. Cada pedido HTTP contém dados codificados, com informações como:

  • A versão específica do HTTP seguido. HTTP e HTTP/2 são as duas versões.
  • Uma URL. Isso aponta para o recurso na web.
  • Um método HTTP. Isso indica a ação específica que a solicitação espera receber do servidor em sua resposta.
  • HTTP request headers. Isso inclui dados como qual tipo de navegador está sendo usado e quais dados a solicitação está buscando no servidor. Também pode incluir cookies, que mostram informações previamente enviadas do servidor que está lidando com o pedido.
  • Um corpo HTTP. Esta é uma informação opcional que o servidor precisa do pedido, como formulários de usuário -- login de usuário/senha, respostas curtas e upload de arquivos -- que estão sendo submetidos ao website.

>strong>RespostasHTTP. A mensagem de resposta HTTP são os dados recebidos por um dispositivo cliente a partir do servidor web. Como seu nome sugere, a resposta é a resposta do servidor a um pedido HTTP. A informação contida numa resposta HTTP é adaptada ao contexto que o servidor recebeu da requisição. As respostas HTTP normalmente incluem os seguintes dados:

  • código de status do HTTP, que indica o status da requisição para o dispositivo cliente. As respostas podem indicar sucesso, uma resposta informacional, um redirecionamento ou erros no lado do servidor ou do cliente.
  • >>strong> cabeçalhos de resposta HTTP, que enviam informações sobre o servidor e os recursos solicitados.
  • >strong> Um corpo HTTP (opcional). Se uma solicitação for bem sucedida, ela contém os dados solicitados na forma de código HTML, que é traduzido para uma página web pelo navegador cliente.

códigos de status do HTTP

Em resposta a solicitações HTTP, os servidores frequentemente emitem códigos de resposta, indicando que a solicitação está sendo processada, houve um erro na solicitação ou que a solicitação está sendo redirecionada. Códigos de resposta comuns incluem:

  • 200 OK. Isto significa que o pedido, como GET ou POST, funcionou e está a ser tratado.
  • 300 Movido Permanentemente. Este código de resposta significa que a URL do recurso solicitado foi alterada permanentemente.
  • >>strong>401 Não Autorizado. O cliente, ou usuário que faz o pedido do servidor, não foi autenticado.
  • 403 Proibido. A identidade do cliente é conhecida mas não foi dada autorização de acesso.
  • 404 Not Found. Este é o código de erro mais frequente. Significa que a URL não é reconhecida ou o recurso no local não existe.
  • 500 Internal Server Error. O servidor encontrou uma situação que não sabe como lidar.

Proxies in HTTP

Proxies, ou servidores proxy, são os servidores de camada de aplicação, computadores ou outras máquinas que vão entre o dispositivo cliente e o servidor. Os proxies retransmitem pedidos e respostas HTTP entre o cliente e o servidor. Normalmente, há um ou mais proxies para cada interação cliente-servidor.

Proxies podem ser transparentes ou não-transparentes. Proxies transparentes não modificam o pedido do cliente, mas enviam-no para o servidor na sua forma original. Proxies não-transparentes irão modificar a requisição do cliente em alguma capacidade. Proxies não-transparentes podem ser usados para serviços adicionais, frequentemente para aumentar a velocidade de recuperação do servidor.

Desenvolvedores web podem usar proxies para os seguintes propósitos:

  • Caching. Servidores cache podem salvar páginas web ou outros conteúdos da Internet localmente, para uma recuperação mais rápida de conteúdo e para reduzir a demanda pela largura de banda do site.
  • Autenticação. Prerrogativas de controle de acesso a aplicativos e informações online.
  • Logging. The storage of historical data, such as the IP addresses of clients that sent requests to the server.
  • Web filtering. Controlling access to web pages that can compromise security or include inappropriate content.
  • Load balancing. Client requests to the server can be handled by multiple servers, rather than just one.

For more information on how proxies work and more types of proxies, click here.