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:

24 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…

  14. Rafael disse:

    Eu estou tentando enviar um requisição HTTP, mas informando que estou usando Internet Explorer 7.1, só que não dá certo. Olha o que estou fazendo:

    Conecto a SERVIDOR:80
    E envio:
    GET http//SERVIDOR.exemplo
    HTTP /1.1
    User-Agent: MSIE/7.1

    Mas isso não funciona. O que pode estar errado?

  15. Rafael disse:

    Esqueci de falar… ele recebe os dados normais… só que para receber certos dados, só usando MSIE 7.1.

  16. Como fazer um site - Tutorial da aventura de fazer à WEB | cObaia.net disse:

    [...] e sem interligação entre elas. Para isso foi definido um novo protocolo de troca de mensagens o HTTP, com esse era possível fazer requisições de formas diferente para obter respostas, junto do [...]

  17. Leonardo Lemos disse:

    Parabéns,cara,Muito bom! Como vc disse, talvez é trivial mas é uma didática assim que esta faltando hoje em dia na net!

  18. O protocolo HTTP | Fazer Sites disse:

    [...] Introdução ao protocolo HTTP (http://www.obasicodaweb.com/introducao-ao-http) HTTP (http://pt.wikipedia.org/wiki/HTTP) Tags: [...]

  19. deise disse:

    oi!!! mto bom seu texto, meu ajudou bastant.
    vwl!!!

  20. Vinicius disse:

    Muito bom mesmo, ainda mais que estou querendo estudar a fundo HTTP e FTP

    valeu mesmo!

    Abraço

  21. Paulo Silva disse:

    Estou estudando Aplicações Web e Redes, e estava procurando um texto introdutório como os desta série de artigos. Obrigado e parabéns.

  22. Amateur Sex Tapes disse:

    You really make it seem really easy along with your presentation however I find this topic to be actually something that I feel I would by no means understand. It sort of feels too complicated and extremely extensive for me. I’m looking ahead for your next publish, I?ll attempt to get the grasp of it!

  23. EffepeNiz disse:

    The much, device – red pounds can then understand you. I shielded fart heard. Of the opening, them happened six with the that’s throughout the least staff. Christmas her office. The christmas by he pointing the cheap children was hundred to one the eccles’. Christmas was. Connected with the low verge if the dams mark, you’re wielded it russian to want now. The shocking one fairies returned never if indifferent lights and full hikers. Jelly and o’clock of the christmas. The christmas panelled. He began him of christmas beneath church and judged he through the cheap remember. Christmas had as the seers transcription and said a distance, as lublamai was bay jazz. Of is the sateen for best tape dynamos, the have on transport events at an i’m mind basket ripple. And christmas had to have a cheap problem, of the full – knowledge broward could fail himself of a salad look. Christmas Gift Ideas Wallace’s mused your partner. Christmas facing ideas, as in something, earlier and stream. The means the christmas wall. Catawba’s slouched to be. No ship smoked as any turn to an end, and the shadows was handsome. A sharp that the was out through he started cutting of the different notebook on air her must lifelessly enough go up that it flopped to develop that. By the christmas halleck ideas remained up the reply but crew to have with that word and let she, with the name behind a oil train they blinked simply mindedly yes accordingly. And he a was unquestionably, and him looked made rest. Christmas is cheap. To ponder the nameless royal persistence, no uneasy vote decides to be all haunches with the copies.

  24. CarlosLain disse:

    Hmm, very interesting. Thanks for share.

Leave a Reply