Esse é o primeiro texto de uma série que pretendo escrever, explicando o básico sobre os conceitos e tecnologias que formam o que chamamos de web, e que vou chamar pelo criativo nome de “O básico da web”. Pra muitos de vocês a informação apresentada aqui (e nos textos seguintes) vai parecer trivial, básico demais pro seu gosto. Mas, com certeza, para muitos outros pode ser realmente útil. O feedback de vocês é apreciado e pode nortear o desenvolvimento dos próximos textos. Vamos então ao que interessa. Nada mais justo que começar essa série de textos dando uma noção do protocolo HTTP, que é, de fato, a base sobre a qual a web se sustenta. Qualquer um que deseje publicar qualquer tipo de recurso na web deve ter pelo menos algum conhecimento , ainda que básico, de HTTP. Principalmente hoje, com a popularização do AJAX, que consiste basicamente de requisições HTTP. HTTP é um protocolo, uma série de regras que definem como um determinado diálogo deve ser conduzido. Basicamente o protocolo define que perguntas podem ser feitas, e que respostas podem ser dadas a cada uma delas. Nesse diálogo, quem faz as perguntas (ou requisições) é o cliente HTTP — também chamado de user agent, que pode ser um browser, um robô (googlebot é um exemplo), um leitor de tela, um script, ou qualquer outro programa que conheça e saiba como seguir o protocolo. Quem dá as respostas é o servidor HTTP (ou servidor web). Os dois servidores HTTP que dominam a quase totalidade do mercado hoje em dia são o Apache, da Apache Foundation e o IIS, da microsoft. Nos últimos tempos o lighthttpd vem ganhando alguma força, apoiado no crescente sucesso da linguagem de programação Ruby e seu quase ubíquo companheiro Rails. Nota: A não ser quando notado o contrário, todas as implementações e códigos exibidos nesse texto e nos subseqüentes referentes a HTTP serão baseados no servidor Apache.

O diálogo

E como é esse tal diálogo, regido pelo protocolo HTTP? Bom, existem muitas possibilidades de perguntas e respostas em um diálogo HTTP. Vamos dar uma olhada em uma conversa bem básica e, aos poucos, vamos aumentando a complexidade. Uma requisição HTTP comum é algo muito parecido com isso:

GET / HTTP/1.1
Host: dominio.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5

Na primeira linha, o cliente informa ao servidor que ele deseja a raiz do site (/), que o método usado para “pegar” este recurso é o GET (que será explicado mais a frente) e que o protocolo usado é o HTTP versão 1.1. A partir da segunda linha começam os request headers. O primeiro deles informa o host onde o recurso se encontra, na segunda o user agent se identifica (no caso acima é o Firefox 1.0.7) e na terceira diz que tipo de recursos está apto a receber e interpretar de maneira correta. Isso é suficiente para o servidor buscar o recurso e enviar uma resposta ao cliente. Vamos explorar melhor os códigos de resposta nos próximos textos. Por agora, vamos ver como poderia ser uma resposta à requisição acima, caso o recurso fosse encontrado pelo servidor:

HTTP/1.x 200 OK
Date: Mon, 12 Dec 2005 04:15:03 GMT
Server: Apache/1.3.33 (Unix) DAV/1.0.3 mod_fastcgi/2.4.2 mod_gzip/1.3.26.1a PHP/4.3.10 mod_ssl/2.8.22 OpenSSL/0.9.7e
Content-Type: text/html; charset=UTF-8

Com isso o servidor diz ao cliente que a requisição teve sucesso e o recurso foi encontrado (200 OK), informa a data e hora, se identifica e mostra que tipo de documento está sendo enviado e qual o seu charset (conjunto de caracteres, assunto que também será tratado mais a frente). Essa resposta é enviada ao cliente acompanhada do conteúdo do recurso requisitado. No caso um documento HTML. Como já disse acima, existem inúmeras possibilidades para as perguntas e respostas em um diálogo HTTP. Esse texto foi apenas uma introdução ao protocolo. Você pode “bisbilhotar” os diálogos HTTP que acontecem enquanto você navega usando a extensão Live HTTP Headers para o Firefox. Vá brincando com ela enquanto espera o próximo texto: Códigos de resposta e seus significados.

Leia também:

13 Comentários sobre “Introdução ao protocolo HTTP”

  1. Micox disse:

    Parabéns cara.

    Eu já saco muito disso, mas direto preciso explicar pra outras pessoas que não entendem comé que funciona linguagens server-side, etc.

    Agora eu já tenho um site pra indicar.
    té mais.
    Não para não.

  2. Micox disse:

    Ah sim…
    Faltou voce falar pro cara fazer um teste usando o telnet.
    Assim ele iria “ver” o que acontece e ficar maravilhado.

    Cita o telnet nesse texto ae…

  3. Pedro Rogério disse:

    Muito bom o texto Bruno, está de parabéns, continue assim!!!

  4. Wellington disse:

    Boa!! parabens pela iniciativa
    e obrigado!

  5. Thiago Simões disse:

    Parabéns pela iniciativa Bruno, não pense que esses assuntos são triviais não cara, muitos hard developers ou que se julgam tal, não tem a mínima noção desses conceitos, que eu primo muito por isso inclusive, saber os detalhes de como porque e quando fazem a grande diferença.

    Parabéns novamente.

  6. Leonardo Procópio disse:

    Gostei pacas da explicação mano![
    Parabens pelo trabalho!

  7. Kleber J. disse:

    Eae Bruno!

    Parabens cara, continue assim!

    Apesar de entender um pouco do assunto, fiquei surpreso
    com sua criatividade em relação a introdução!

    Fuerte abrazo! T+

  8. Google code search e a falta de conhecimento básico de HTTP - Bruno Torres ponto net disse:

    […] A propósito, se algum de vocês pensou que o google poderia vasculhar seus códigos e revelar suas senhas, reserve uns minutos do seu tempo para ler meus textos sobre HTTP no O básico da web, principalmente a Introdução ao HTTP, que podem ajudá-lo a esclarecer algumas dúvidas sobre este protocolo tão importante. […]

  9. Protocolo HTTP: métodos de requisição - O Básico da web disse:

    […] Vamos usar o código de exemplo do post de introdução ao protocolo HTTP. […]

  10. Tableless » disse:

    […] via protocolo HTTP (uma série de regras que definem um diálogo entre o cliente e o servidor - mais aqui). O servidor dá uma série de repostas ao browser, que por sua vez mostrará na tela o que o […]

  11. Desenvolvimento Web » Metatags - Breve introdução de uso e teoria disse:

    […] via protocolo HTTP (uma série de regras que definem um diálogo entre o cliente e o servidor - mais aqui). O servidor dá uma série de repostas ao browser, que por sua vez mostrará na tela o que o […]

  12. Tutorial Iniciante de HTML: Exercícios « Codando disse:

    […] Introdução ao protocolo HTTP […]

  13. Bill390735197','952871087billy@msn.com','','118.130.25.156','2008-03-20 23:39:26','2008-03-20 23:39:26','','0','lynx','comment','0','0'),('0', '', '', '', '', '2008-03-21 23:39:26', '2008-03-21 23:39:26', '', 'spam', '', 'comment', '0','0' ) /* disse:

    None…

    None…

Leave a Reply