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:
- Comprar: Celular Samsung, Notebook Toshiba, Notebook HP, Celular LG, Notebook, Notebook Acer
Maio 8th, 2006 at 3:11 pm
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.
Maio 8th, 2006 at 3:12 pm
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…
Maio 9th, 2006 at 1:06 pm
Muito bom o texto Bruno, está de parabéns, continue assim!!!
Maio 10th, 2006 at 8:43 pm
Boa!! parabens pela iniciativa
e obrigado!
Junho 25th, 2006 at 4:19 pm
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.
Agosto 4th, 2006 at 4:27 pm
Gostei pacas da explicação mano![
Parabens pelo trabalho!
Setembro 12th, 2006 at 2:56 pm
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+
Outubro 8th, 2006 at 3:55 am
[…] 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. […]
Abril 20th, 2007 at 3:21 am
[…] Vamos usar o código de exemplo do post de introdução ao protocolo HTTP. […]
Janeiro 11th, 2008 at 1:17 am
[…] 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 […]
Fevereiro 19th, 2008 at 7:07 am
[…] 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 […]
Março 2nd, 2008 at 11:15 pm
[…] Introdução ao protocolo HTTP […]
Março 20th, 2008 at 11:40 am
None…
None…
Agosto 30th, 2008 at 11:50 pm
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?
Agosto 30th, 2008 at 11:53 pm
Esqueci de falar… ele recebe os dados normais… só que para receber certos dados, só usando MSIE 7.1.
Setembro 8th, 2008 at 3:40 pm
[…] 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 […]
Outubro 23rd, 2008 at 3:19 pm
Parabéns,cara,Muito bom! Como vc disse, talvez é trivial mas é uma didática assim que esta faltando hoje em dia na net!