Rodrigo Aguas

Um monte de computador batendo papo

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:

  1. Ajax: computador tagarela

2 Comentários para “Um monte de computador batendo papo”

  1. Paula diz:

    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!

  2. Ajax: computador tagarela « Anotando diz:

    [...] 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 [...]

Deixe seu comentário