Tecnologia

HTTP (Hypertext Transfer Protocol): o que significa e como funciona?

HTTP

Protocolo de Transferência de Hipertexto (HTTP) ou Hypertext Transfer Protocol é o protocolo usado em cada transação da world wide web, ou www.

Usando HTTP, os clientes e servidores determinam dinamicamente o formato dos documentos, permitindo que eles usem um formato não padrão para troca de dados.

Se o receptor não tiver uma maneira de ver ou acessar os dados, é possível fazer o download de um programa de plug-in que permita receber o conteúdo.

Os cabeçalhos HTTP contêm informações sobre os objetos transmitidos pelo aplicativo através da web. Com as informações de cabeçalhos, os aplicativos cliente-servidor negociam os formatos que poderão usar para transferir os objetos.

Se eles não reconhecerem as informações no cabeçalho, apenas o ignoram. Portanto, o recomendável é testar novos protocolos sem comprometer a integridade do HTTP. Além disso, o protocolo é baseado em texto, portanto, é legível e não requer decodificação.

História do HTTP

O HTTP foi desenvolvido pelo World Wide Web Consortium e pela Internet Engineering Task Force. Esta foi uma colaboração que culminou em 1999 com a publicação de uma série de RFCs. Destes, o mais importante foi o RFC 2616 que especifica a versão 1.1.

O HTTP define a sintaxe e a semântica que os elementos de software da arquitetura da web (clientes, servidores, proxies) usam para se comunicar.

É um protocolo orientado por transações e segue o esquema de solicitação-resposta entre um cliente e um servidor. O cliente que faz a solicitação (um navegador da web) é conhecido como “agente do usuário”.

A informação transmitida é chamada de recurso e é identificada por um localizador uniforme de recursos (URL). Os recursos podem ser:

  • Arquivos;
  • O resultado da execução de um programa;
  • Uma consulta a um banco de dados;
  • A tradução automática de um documento;
  • Etc.

HTTP é um protocolo sem estado, isto é, não armazena nenhuma informação sobre conexões anteriores. O desenvolvimento de aplicativos da web geralmente precisa manter o estado.

Para tal, são usados ​​cookies, ou seja, informações que um servidor pode armazenar no sistema do cliente. Isso permite que os aplicativos da web instituam a noção de “sessão”. Também permite que os usuários sejam rastreados, uma vez que os cookies são “guardados” no cliente por um período indefinido de tempo.

HTTP

Transações HTTP

Uma transação P é formada por um cabeçalho seguido, opcionalmente, por uma linha em branco e alguns dados. O cabeçalho especificará coisas como:

  • A ação necessária do servidor;
  • O tipo de dados retornados;
  • O código de status.

O uso de campos de cabeçalho enviados em trens TP dá grande flexibilidade ao protocolo. Esses campos facilitam o envio das informações descritivas na transação, permitindo:

  • A autenticação;
  • A criptografia;
  • A identificação do usuário.

Um cabeçalho é um bloco de dados que precede as informações em si. Por isso é frequentemente chamado de metadados, porque possui dados sobre os dados.

Se as linhas de cabeçalho do cliente forem recebidas, o servidor as colocará nas variáveis ​​de ambiente CGI com o prefixo HTTP_ seguido do nome do cabeçalho. Qualquer caractere de hífen (-) no nome do cabeçalho é convertido em caracteres “_”.

O servidor pode excluir quaisquer cabeçalhos já processados, como Autorização, Tipo de Conteúdo e Comprimento do Conteúdo. O servidor também pode optar por excluir alguns ou todos os cabeçalhos, caso a inclusão exceda quaisquer limites do ambiente do sistema.

O servidor envia para o cliente um código de status que indica se a solicitação estava correta ou não. Códigos de erro típicos informam:

  • Que o arquivo solicitado não foi encontrado;
  • Que a solicitação não foi executada corretamente;
  • Que a autenticação é necessária para acessar o arquivo.

O servidor também envia a informação em si e as informações sobre o objeto retornado. Como o HTTP permite enviar documentos de todos os tipos e formatos, é ideal para transmissão de multimídia, como gráficos, áudio e vídeo. Essa liberdade é uma das maiores vantagens do protocolo.

HTTP

Versões

O HTTP passou por várias versões do protocolo, muitas das quais são compatíveis com as anteriores. RFC-2145 descreve o uso de números de versão HTTP. O cliente informa ao servidor no início da solicitação a versão que ele usa e o servidor usa o mesmo ou um anterior em sua resposta.

Entre essas versões estão:

  • 0,9 – Obsoleto. Suporta apenas um comando, GET, e também não especifica o número da versão HTTP. Não suporta cabeçalhos e não suporta POST, então o cliente não pode enviar muita informação para o servidor;
  • HTTP/1.0 (maio de 1996) – Esta é a primeira revisão do protocolo que especifica sua versão nas comunicações e ainda é amplamente usada, especialmente em servidores proxy;
  • HTTP/1.1 (junho de 1999) – É a versão atual. As conexões persistentes são habilitadas por padrão e funcionam bem com proxies. Também permite que o cliente envie várias solicitações ao mesmo tempo, o que possibilita eliminar o tempo de atraso da viagem de ida e volta para cada solicitação;
  • HTTP/1.2 – Os primeiros rascunhos de 1995 do Protocolo de Extensão, que é um mecanismo de extensor para HTTP foram feitos pelo World Wide Web Consortium e enviados para a Força-Tarefa de Engenharia da Internet.

Nota: O Protocolo de Extensão foi inicialmente destinado a se tornar um intervalo distinto de HTTP/1.2. Nos rascunhos subsequentes, no entanto, a referência ao HTTP/1.2 foi excluída. O HTTP Extension Framework inclui, em grande parte, o Protocolo de Extensão publicado em fevereiro de 2000.

Exemplo de um diálogo HTTP

Para obter um recurso com o URL http://www.exemplo.com/index.html é preciso que uma conexão com o host seja aberta www.exemplo.com, porta 80, que é a porta padrão para HTTP.

Uma mensagem é enviada no seguinte estilo:

GET /index.html

Host HTTP/1.1 : www.exemplo.com

User-Agent: nome do cliente 

[linha em branco]

A resposta do servidor consiste em cabeçalhos seguidos pelo recurso solicitado, no caso de uma página da web:

HTTP/1.1 200 OK

Data: Sex, 31 Dec 2008 23:59:59 GMT

Tipo de conteúdo: text / html

Content-Length: 1221

<html>
<body>
<h1> Página inicial do yourHost </ h1>

(Conteúdo)

………. ‘

</ body>

</ html>

A linguagem do HTTP pode parecer um tanto complicada, mas na prática é tudo o que se faz na Internet e nem sequer temos noção.