
Funcionamento do servidor WWW
O ambiente WWW funciona como um ambiente cliente-servidor, como todos os outros serviços disponíveis na internet. Nesse ambiente, dois computadores que se conectam via rede trocam informações, onde o cliente faz o pedido, e o servidor entrega a informação. O cliente no ambiente WWW é chamado de Browser. (por exemplo o Netscape/Explorer). Quando o usuário quer acessar uma página, o Browser abre uma conexão e manda uma mensagem contendo pedido para o servidor WWW. O servidor responde com outra mensagem, contendo o arquivo ou os dados que foram pedidos. Depois de enviada a mensagem o servidor encerra a sessão e o ciclo inicia-se novamente. Importante notar que HTTP é um protocolo stateless, isto é, não mantém nenhum tipo de conexão entre as mensagens.
Caso tenhamos imagens, frames, programas Java, arquivos de som ou qualquer outro componente além da linguagem HTML que está presente na página pedida, o cliente faz os pedidos subsequentes para trazer essas informações.
Componentes da transação básica
O pedido mais comum do cliente WWW para um servidor é um pedido de informação. Tanto o pedido quanto a resposta tem um formato padrão, que é dividido em quatro seções diferentes. Cada seção tem sua própria função, algumas são opcionais, outras não. Normalmente todas a seções são necessárias para o correto funcionamento da conexão.
Ambas mensagens consiste de:

Linha Inicial
Linhas de Cabeçalho
Uma linha em branco
Corpo da mensagem (opcional)
Vamos explicar cada componente a seguir.

Linha Inicial
Linha inicial do pedido
A linha inicial do pedido é diferente da linha inicial da resposta. Uma linha de pedido tem 3 partes, separadas por espaços: O nome de método (METHOD), o caminho do arquivo pedido (PATH) e a versão do HTTP que está sendo usada, como no exemplo:
GET /path/file/index.html HTTP/1.0
Notas:
O método GET é o mais comum. Ele quer dizer: "Me dê esse arquivo". Outros métodos populares são o POST e o HEAD. O método sempre vem em letras maiúsculas.
O caminho é a parte que vem depois do hostname na URL.
A versão do HTTP sempre vem no formato "HTTP/x.x", sempre em maiúsculas.
Linha inicial da resposta
A linha inicial da resposta, chamada de STATUS LINE, também tem 3 partes separadas por espaço: A primeira é a versão do HTTP, a segunda é um código de status que indica o resultado do pedido, e uma frase em inglês descrevendo o código de status. Uma típica linha de status seria:
HTTP/1.200 OK
ou
HTTP/1.0 404 Not Found
Notas:
A versão de HTTP vem no mesmo formato da linha inicial do pedido: "HTTP/x.x".
O código de status sempre tem 3 dígitos, se divide em categorias:

1xx - Indica uma mensagem informativa
2xx - Indica sucesso
3xx - Indica redirecionamento para outro endereço (URL)
4xx - Indica um erro no cliente (Browser)
5xx - Indica um erro no servidor
Os códigos mais comuns são:
200 OK - O pedido foi executado com sucesso e o arquivo transferido.
404 Not Found - O arquivo pedido não existe.
301 Moved Permanently - O arquivo está em outro endereço; o cliente deve automáticamente refazer o pedido.
500 Server Error - Erro não esperado. Normalmente um problema num CGI.
Linhas de Cabeçalho
As linhas de cabeçalho servem para informar o cliente sobre a natureza da resposta que o servidor está enviando ou para informar o servidor sobre os parâmetros que o cliente está enviando. Antes de realmente dos dados serem enviados. Também é identificado o endereço da máquina que está efetuando o pedido (IP Adress) para fins estatísticos.
Essas linhas são muito importantes hoje em dia, com o advento do plug-ins. Os Plug-ins são certos programas que estão na Internet e servem para aumentar as capacidades de interpretar corretamente páginas multimídia, os servidores de áudio sob demanda, vídeo sob demanda. VRML, e outros formatos de (mercado).
Falaremos mais a este respeito na seção clientes e servidores.
As linhas de cabeçalho geralmente são enviadas em modo texto, com um cabeçalho por linha (caso haja mais de um) no formato:
"Heard-Name: value".
Terminando com um CRLF (enter). O formato é o mesmo utilizado em E-Mail, conforme definição RFC822, seção 3.
A versão 1.0 do HTTP permite 16 tipos diferentes de cabeçalhos, embora sejam todos opcionais. A versão 1.1 permite 46 cabeçalhos e 1 se tornou obrigatório. É o HOST, que identifica a máquina que está se comunicando.
O corpo da mensagem
Uma mensagem HTTP pode ter um corpo contendo dados depois de suas linhas de cabeçalho. Em uma resposta, normalmente temos um arquivo que está sendo retornado para o cliente, ou um texto com um código, caso tenha ocorrido algum erro. Num pedido, podem ser os parâmetros de um formulário, por exemplo.
O corpo da mensagem normalmente é um arquivo HTML. Os autores de páginas podem incluir informações relevantes na página utilizando-se a tag<META> do HTML. Normalmente informa-se o nome do autor da página, data de expiração e assunto tratado no documento. A informação é muito útil principalmente para os mecanismos de busca automática na Internet, que utilizam dessas informações para classificar os arquivos.
Se uma comunicação HTTP inclui um corpo, normalmente seu conteúdo já foi descrito num cabeçalho anterior. Os cabeçalhos mais utilizados para essa descrição são:
Contet-Type: Informa o tipo MINE do dado no corpo. Exemplo: text/html, imagr/jpg
Content-Lenght: Informa o tamanho em bytes do corpo.
Caso não exista nenhum cabeçalho, o servidor vai tentar descobrir qual o tipo do arquivo sendo transmitido. Essa operação vai ser explicada na seção sobre MINE.
Exemplo de conexão HTTP
Vamos supor que eu quero um arquivo cujo endereço é http://www.databrasil.com/professor/cam.html.
Primeiro, deveremos abrir a conexão com a máquina www.databrasil.com isso pode ser feito através do telnet, assim:
telnet www.databrasil.com 80
Devemos especificar a porta onde o servido HTTP está recebendo os pedidos. Nesse caso, é a porta 80.
Depois, deveremos mandar algo semelhante ao exemplo abaixo:
GET /cam.html HTTP/1.0
[Enter]
O servidor deve responder com aldo do tipo:
HTTP/1.0 200 OK
Date: Fri, 31 Dec 1999 23:59:59 GMT
Content-Type: text/html
Content-Length: 1354
<HTML>
<BODY>
<H1>Servidores W3</H1>
...
...
</BODY>
</HTML>
Depois de enviada a resposta o servidor fecha a conexão.