Você está na página 1de 7

HTTP a sigla em lngua inglesa de HyperText Transfer Protocol (Protocolo de Transferncia de Hipertexto), um protocolo da camada de Aplicao do modelo OSI

I utilizado para transferncia de dados na rede mundial de computadores, a World Wide Web HTTP a sigla em lngua inglesa de HyperText Transfer Protocol (Protocolo de Transferncia de Hipertexto), um protocolo da camada de Aplicao do modelo OSI utilizado para transferncia de dados na rede mundial de computadores, a World Wide Web. Tambm transfere dados de hiper-mdia (imagens, sons e textos). Normalmente, este protocolo utiliza o porta 80 e usado para a comunicao de "sites" (stios), comunicando na linguagem HTML (Hipertext Markup Language, ou Linguagem de Marcao de Hipertexto). Contudo, para haver comunicao com o servidor do site necessrio utilizar comandos adequados, que no esto em linguagem HTML. Para acedermos a outro documento a partir de uma palavra presente no documento actual podemos utilizar os chamados links/ (ligaes) ou ncoras. Estes documentos encontram-se num "site" (stio) com um endereo de pgina da Internet - e para entrarmos neles devemos digitar o respectivo endereo, denominado URI (Universal Resource Indentifier ou Identificador Universal de Recurso), que no deve ser confundir com URL (Universal Resource Locator ou Localizador Universal de Recurso), um tipo de URI que pode ser directamente localizado. Funcionamento do protocolo HTTP Um sistema de comunicao em rede possui diversos protocolos que trabalham em conjunto para o fornecimento de servios. Para que o protocolo HTTP consiga transferir seus dados pela Web, necessrio que os protocolos TCP e IP (Internet Protocol, Protocolo de Internet) tornem possvel a conexo entre clientes e servidores atravs de sockets TCP/IP. De acordo com Fielding et al (1999, p. 10), o HTTP utiliza o modelo clienteservidor, como a maioria dos protocolos de rede, baseando-se no paradigma de requisio e resposta. Um programa requisitante (cliente) estabelece uma conexo com um outro programa receptor (servidor) e envia-lhe uma requisio, contendo a URI, a verso do protocolo, uma mensagem MIME (padro utilizado para codificar dados em formato de textos ASCII para serem transmitidos pela Internet) contendo os modificadores da requisio, informaes sobre o cliente e, possivelmente, o contedo no corpo da mensagem. O servidor responde com uma linha de status (status line) incluindo sua verso de protocolo e um cdigo de operao bem sucedida ou um cdigo de erro, seguido pelas informaes do servidor, metainformaes da

entidade e possvel contedo no corpo da mensagem. Aps o envio da resposta pelo servidor, encerra-se a conexo estabelecida. Mensagem HTTP O protocolo HTTP faz a comunicao entre o cliente e o servidor atravs de mensagens. O cliente envia uma mensagem de requisio de um recurso e o servidor envia uma mensagem de resposta ao cliente com a solicitao. Segundo Foscarini (2001, p. 13), os dois tipos de mensagens existentes no protocolo utilizam um formato genrico, definido na RFC 822, para a transferncia de entidades. Uma mensagem, tanto de requisio quanto de resposta, composta, conforme definido na RFC 2616 (Fielding et al, 1999, p. 21), por uma linha inicial, nenhuma ou mais linhas de cabealhos, uma linha em branco obrigatria finalizando o cabealho e por fim o corpo da mensagem, opcional em determinados casos. Nesta seo sero apresentados os campos que compem uma mensagem mais detalhadamente; ou seja, o HTTP apresenta o stio ou local onde est a pgina da Internet. Cabealho da mensagem O cabealho da mensagem (header) utilizado para transmitir informaes adicionais entre o cliente e o servidor. O cabealho especificado imediatamente aps a linha inicial da transao (mtodo), tanto para a requisio do cliente quanto para a resposta do servidor, seguido de dois pontos (:) e um valor. Existem quatro tipos de cabealhos que podero ser includos na mensagem os quais so: general-header, requestheader, response-header e entity-header (cf. Fielding et al, 1999, p. 21). Estes cabealhos so utilizados para enviar informaes adicionais sobre a mensagem transmitida (general-header), a requisio e os clientes (request-header) que comunicam suas configuraes e os formatos de documentos desejados como resposta (cf. Bastos & Ladeira, 2001). Alm disso, so utilizados pelo servidor ao retornar o recurso no qual foi requisitado pelo cliente, para transmitir informaes que descrevem as configuraes do servidor e do recurso identificado pelo URI de requisio, e que no pertence linha de status (responseheader). Na RFC 2616 (cf. Fielding et al, 1999) esto descritos todos os campos que pertencem a estes cabealhos. Corpo da mensagem Uma mensagem HTTP pode conter um corpo de dados que so enviados abaixo das linhas de cabealho. Em uma mensagem de resposta, o corpo da mensagem o recurso que foi requisitado pelo cliente, ou ainda uma mensagem de erro, caso este recurso no seja possvel. J em uma mensagem de requisio, o corpo pode conter dados que sero enviados diretamente pelo usurio ou um arquivo que ser enviado para o servidor.
Pgina2

Quando uma mensagem HTTP tiver um corpo, podero ser includos cabealhos de entidades que descrevem suas caractersticas, como por exemplo, o Content-Type que informa o tipo MIME dos dados no corpo da mensagem e o Content-Length que informa a quantidade de bytes que o corpo da mensagem contm. A Tabela 2 apresenta alguns tipos MIME. Tabela 2 Alguns tipos MIME [2] Exemplo Descrio text/plain Arquivo no formato texto (ASCII) text/html Arquivo no formato HTML, utilizado como padro para documentos Web Image/gif Imagem com o formato GIF Image/jpeg Imagem com o formato JPEG application/zip Arquivo compactado

Requisio De acordo com Fielding (1999, p. 24), uma mensagem de requisio do cliente composta pelos seguintes campos: uma linha inicial (RequestLine); linhas de cabealhos (Request-header); uma linha em branco obrigatria e um corpo de mensagem opcional. A linha inicial de uma requisio composta por trs partes separadas por espaos: o mtodo (Method), a identificao do URI (Request-URI) e a verso do HTTP (HTTP-Version) utilizado. Segundo Bastos & Ladeira (BASTOS, Leonara de Oliveira; LADEIRA, Adriane Cristina. Protocolo HTTP.) Request-URI um identificador uniforme de recurso (Uniform Resource Identifier) que identifica sobre qual recurso ser aplicada a requisio. No protocolo HTTP, o tipo de URI utilizado chamado de URL (Uniform Resource Locater), o qual composto pela identificao do protocolo, pelo endereo do computador servidor e pelo documento requisitado (cf. Embratel, 2002). Conexes Segundo Hirata ( p5,. HIRATA, Renato. Desempenho em Servidores Web de Grande Porte. 1999. Proposta de Tese de Mestrado Universidade Estadual de Campinas, So Paulo, 1999. Disponvel em: http://www.oficinadanet.com.br/redirect.php?urlout=http://www.ic.unicamp.b r/~ra951407/PROPOSTA.DOC" rel="nofollow". Acesso em: 25 fev. 2002), o HTTP/1.0 um protocolo stateless. Isto significa que as conexes entre um cliente e um servidor so encerradas aps o envio de cada requisio ou resposta. Cada vez que uma conexo estabelecida ou encerrada, consumida uma grande quantidade de tempo da CPU, de largura de banda e de memria. Na maioria das vezes, para se obter o resultado esperado, necessrio realizar mais de uma solicitao de recursos atravs de vrias conexes. Por exemplo, no caso de uma pgina Web, que consiste de diversos arquivos (.html, .gif, .css, etc) preciso que sejam feitas vrias
Pgina3

requisies para compor a pgina(conexo no-persistente). O ideal seria que apenas uma conexo fosse utilizada para os pedidos e as respostas HTTP, diminuindo, assim, o overhead ocasionado pelas conexes. Este tipo de conexo chamado de conexo persistente (Persistent Connection). A conexo persistente, implementada como conexo padro no protocolo HTTP/1.1, possibilita que uma conexo seja estabelecida para enviar vrias requisies em seqncia sem a necessidade de esperar por cada resposta, no qual sero recebidas na mesma ordem em que as solicitaes foram enviadas, este processo chamado de pipelining (cf. Fielding et al, 1999, p. 30). Pode tambm dar-se o caso de ser estabelecida uma conexo sem pipelining, em que o cliente s faz nova requisio quando o servidor lhe envia a resposta, ou seja, o servidor fica inactivo at o objecto (.html, .gif, .css, etc) atingir o seu destino no cliente. Se uma requisio incluir o cabealho Connection: close, a conexo ser encerrada aps o envio da resposta correspondente. Utiliza-se este cabealho quando no h suporte a conexes persistentes, quando for a ltima requisio a ser enviada nesta conexo, ou ainda, sempre que quiser encerrar a conexo mesmo que nem todas as requisies tenham sido completadas. Alm disso, o servidor pode fechar uma conexo se estiver ociosa por um determinado perodo de tempo. Outros protocolos Existem outros tipos de protocolos como o FTP (File Tranfer Protocol, ou Protocolo de Transferncia de Arquivos), usado para envio de arquivos do computador para um servidor na Web, o SMTP (Simple Mail Transfer Protocol, ou Protocolo de Transferncia de Correio Simples), protocolo usado para correio eletrnico (e-mail), entre outros protocolos. Mtodos O protocolo HTTP define oito mtodos que indicam a ao a ser realizada no recurso especificado. Conforme Bastos & Ladeiras (2001), o mtodo determina o que o servidor deve fazer com o URL fornecido no momento da requisio de um recurso. - GET: o mtodo mais comum: solicita algum recurso como um arquivo ou um script CGI (qualquer dado que estiver identificado pelo URI) por meio do protocolo HTTP. O mtodo GET reconhecido por todos os servidores. Exemplo. Vemos abaixo uma conversa entre um cliente e um servidor HTTP. O servidor possui a URL www.exemplo.com, porta 80. Pedido do cliente (seguido por uma linha em branco, de maneira que o
Pgina4

pedido termina com um newline duplo, cada um composto por um carriage return seguido de um Line Feed):

GET /index.html HTTP/1.1 Host: www.exemplo.com

O cabealho "Host" reconhece vrios diferentes nomes DNS que tenham o mesmo IP. Resposta do servidor (seguido por uma linha em branco e o texto da pgina solicitada):

HTTP/1.1 200 OK Date: Mon, 23 May 2005 22:38:34 GMT Server: Apache/1.3.27 (Unix) (Red-Hat/Linux) Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT Etag: "3f80f-1b6-3e1cb03b" Accept-Ranges: bytes Content-Length: 438 Connection: close Content-Type: text/html; charset=UTF-8

- HEAD: o mesmo que GET, mas sem que o recurso seja retornado. usado para obter meta-informaes por meio do cabealho da resposta, sem ter que recuperar todo o contedo. - POST: Envia dados para serem processados (por exemplo, dados de um formulrio HTML) para o recurso especificado. Os dados so includos no corpo do comando.

Pgina5

A utilizao do mtodo POST em uma requisio ocorre quando necessrio enviar dados ao servidor para serem processados geralmente por um programa script identificado no Request-URI. Uma requisio por meio desse mtodo sempre requer que as informaes submetidas sejam includas no corpo da mensagem e formatadas como uma query string, alm de conter cabealhos adicionais especificando seu tamanho (Content-Lenght) e seu formato (Content-Type). Por isso, esse mtodo oferece uma maior segurana em relao aos dados transferidos, ao contrrio do mtodo GET que os dados so anexados a URL, ficando visveis ao usurio (cf. 46 HERRMANN, Eric. Aprenda em 1 semana programao CGI em Perl 5. Rio de Janeiro: Campus, 1997). Exemplo:

POST /index.html HTTP/1.0 Accept: text/html If-modified-since: Sat, 29 Oct 1999 19:43:31 GMT Content-Type: application/x-www-form-urlencoded Content-Length: 30 Nome=NamePessoa&Idade=99&Curso=Computacao

- PUT: Envia certo recurso. - DELETE: Exclui o recurso. - TRACE: Ecoa o pedido, de maneira que o cliente possa saber o que os servidores intermedirios esto mudando em seu pedido. - OPTIONS: Recupera os mtodos HTTP que o servidor aceita. - CONNECT: Serve para uso com um proxy que possa se tornar um tnel SSL (um tnel pode ser usado, por exemplo, para criar uma conexo segura). Um servidor HTTP deve implementar ao menos os mtodos GET e HEAD. Resposta
Pgina6

Para Fielding et al (1999, p. 26), uma mensagem de resposta do servidor composta pelos seguintes campos: uma linha inicial (Status-Line); linhas de cabealhos (Responseheader); uma linha em branco obrigatria e um corpo de mensagem opcional. A linha inicial de uma resposta, chamada de linha de status, possui por sua vez trs partes separadas por espaos: a verso do protocolo HTTP (HTTP-Version), um cdigo de status (StatusCode) da resposta, que fornece o resultado da requisio, e uma frase de justificativa (Reason-Phrase) que descreve o cdigo do status.

Cdigos de retorno O Status-Line de uma resposta HTTP indica ao cliente se sua requisio foi bem sucedida ou no (cf. Herrman, 1997, p. 53). Esta situao fornecida atravs de um cdigo de retorno (Status-Code) e uma frase explicativa (Reason-Phrase). De acordo com Fielding et al (1999, p. 37), o cdigo de status formado por trs dgitos e o primeiro dgito representa a classe que pertence classificada em cinco tipos: * 1xx: Informational (Informao) utilizada para enviar informaes para o cliente de que sua requisio foi recebida e est sendo processada; * 2xx: Success (Sucesso) indica que a requisio do cliente foi bem sucedida; * 3xx: Redirection (Redirecionamento) informa a ao adicional que deve ser tomada para completar a requisio; * 4xx: Client Error (Erro no cliente) avisa que o cliente fez uma requisio que no pode ser atendida; * 5xx: Server Error (Erro no servidor) ocorreu um erro no servidor ao cumprir uma requisio vlida. O protocolo HTTP define somente alguns cdigos em cada classe descritos na RFC 2616, mas cada servidor pode definir seus prprios cdigos. Leia mais no Oficina da Net: http://www.oficinadanet.com.br/artigo/459/o_protocolo_http#ixzz2gkX1 dNQB

Pgina7