Já que estou começando este blog e falarei, entre outras coisas, sobre desenvolvimento web, pensei que deveria ter um comentário sobre o básico da internet, digamos o princípio dela. Acho que muitas pessoas a usam em seu dia-a-dia, mas poucas sabem como a internet funciona. É sobre isso que falarei hoje.
A internet hoje é composta por aproximadamente 1,1 bilhões de pessoas, conforme estatísticas. Cada vez que uma dessas pessoas digita em seu browser um endereço de um site e dá enter, seu computador faz um pedido a outro computador, que então lhe retorna o conteúdo desejado. Esta transação é caracterizada por dois papeis, o de cliente e o de servidor, e só é possível graças à existência de um padrão de comunicação.
Ao tentar conversar com uma criança bem nova ou um estrangeiro temos muitas dificuldades, pois não existe um padrão de comunicação estabelecido e de conhecimento de ambos. O mesmo acontece com os computadores da internet, mas graças a Tim Berners-Lee, considerado o inventor da Web, nossos computadores sabem a mesma “língua”, o protocolo HTTP que é utilizado por todos no acesso a web sites.
Este protocolo permite uma comunicação simples baseado no envio de HTTP request pelo computador cliente e a respectiva resposta do servidor por HTTP response. Existem duas opções de pedido para o cliente utilizar, os métodos GET e POST. O primeiro seria inicialmente utilizado em pedidos simples, sem a necessidade de envio de outros parâmetros além da url para o servidor. Mas você deve estar estranhando, certo? E tem razão. Na prática, o GET permite o envio de pequenas quantidades de dados junto ao endereço do conteúdo requisitado. Enquanto que o método POST lhe dá total liberdade na quantidade de dados enviados, pois foi projetado com esse fim.
O uso esperado do GET é no caso de links que passam um identificador para a página que será acessada, por exemplo. Já para enviar os dados de um formulário de cadastro é necessário o uso do POST.
Ilustrativamente, abaixo temos um exemplo de requisição por GET:
GET /noticia.php?id=12&view=2 HTTP/1.1 Host: www.exemplo.com.br User-Agent: Mozilla/5.0 Accept: text/xml,text/html Accept-Language: pt-br;q=0.5 Accept-Encoding: gzip Accept-Charset: ISO-8859-1,UTF-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive
E um outro por POST:
POST /busca.php HTTP/1.1 Host: www.exemplo.com.br User-Agent: Mozilla/5.0 Accept: text/xml,text/html Accept-Language: pt-br;q=0.5 Accept-Encoding: gzip Accept-Charset: ISO-8859-1,UTF-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive busca=blog&lingua=port-br
Já a resposta do servidor contém os cabeçalhos e o corpo. Nos cabeçalhos vão informações como código de estado da resposta (200 quando tudo certo, 404 para páginas não encontrada e etc), data, tamanho e tipo de conteúdo do corpo, muito conhecido por MIME Type, este pretendo mais para frente elaborar um post especialmente dedicado a ele. No corpo está o código html do site. Abaixo, um exemplo:
HTTP/1.1 200 OK Set-Cookie: JSESSIONID=A4ECF6EFCA47AECF47AEF64EF5ACAE4F; Path=/exemplo Content-Type: text/html Content-Length: 150 Date: Wed, 13 Aug 2007 05:17:25 GMT Server: Apache-Coyote/1.1 Connection: close <html> ... </html>
Nesse corpo cada elemento html dá origem a um elemento renderizado pelo browser em sua tela e cada imagem para aparecer gera um novo HTTP request para que o browser a receba e possa então exibi-la. Fica claro então que uma única página da web gera não só uma “fala”, mas uma “conversa”. hehe
Chegou ao fim. Ufa! Minhas mãos já doem.
Abraços!
Artigos relacionados:
Inspired by Head First Servlets & JSPs.
Esse assunto é legal ser falado pq pouquissimas pessoas tem noção de como as coisas funcionam.
Legal dar essa noção! =P
Bjins!
6/06/07 às 17:59[...] and XML, mas muitos não entenderam o que isso significa e desistiram. Depois de entender o funcionamento da Web, percebemos que um site quando é acessado (ou carregado) dá origem a uma série de requisições [...]
12/06/07 às 3:23