Sunteți pe pagina 1din 3

Hypertext Transfer Protocol

os protocolos TCP e IP (Internet Protocol, Protocolo de Internet) tornem possvel a conexo entre clientes e servidores atravs de socketsTCP/IP.

O Hypertext Transfer Protocol (HTTP) - Protocolo de Transferncia de Hipertexto - um protocolo de comunicao (na camada de aplicao segundo o Modelo OSI) utilizado para sistemas de informao de hipermedia distribudos e colaborativos.[1] Seu uso para a obteno de recursos interligados levou ao estabelecimento da World Wide Web. Coordenado pela World Wide Web Consortium e a Internet Engineering Task Force, culminou na publicao de uma srie deRequests for Comments; mais notavelmente o RFC 2616, de junho de 1999, que definiu o HTTP/1.1. Normalmente, este protocolo utiliza a porta 80 e usado para a comunicao de stios web, comunicando na linguagem HTML. Contudo, para haver comunicao com o servidor do stio 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 hiperligaes (ou ncoras). Estes documentos se encontram no stio com um endereo de pgina da Internet - e para acess-los deve-se digitar o respectivo endereo, denominado URI (Universal Resource Identifier 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. Prefcio O HyperText Transfer Protocol um protocolo de aplicao responsvel pelo tratamento de pedidos e respostas entre cliente e servidor na World Wide Web. Ele surgiu da necessidade de distribuir informaes pela Internet e para que essa distribuio fosse possvel foi necessrio criar uma forma padronizada de comunicao entre os clientes e os servidores da Web e entendida por todos os computadores ligados Internet. Com isso, o protocolo HTTP passou a ser utilizado para a comunicao entre computadores na Internet e a especificar como seriam realizadas as transaces entre clientes e servidores, atravs do uso de regras bsicas. Este protocolo tem sido usado pela WWW desde 1990. A primeira verso de HTTP, chamada HTTP/0.9, era um protocolo simples para a transferncia de dados no formato de texto ASCII pela Internet, atravs de um nico mtodo de requisio, chamado GET. A verso HTTP/1.0 foi desenvolvida entre 1992 e 1996 para suprir a necessidade de transferir no apenas texto. Com essa verso, o protocolo passou a transferir mensagens do tipo MIME44 (Multipurpose Internet Mail Extension) e foram implementados novos mtodos de requisio, chamados POST e HEAD. No HTTP/1.1, verso actual do protocolo descrito na RFC 2616,
[2]

De acordo com Fielding,[3] o HTTP utiliza o modelo cliente-servidor, 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 com os cdigos de erro informando se a operao bem sucedida ou fracasso, 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 por meio 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,[4] 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,[5] 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. Nessa 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. Ele 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, responseheader e entity-header.[6] Esses cabealhos so utilizados para enviar informaes adicionais sobre a mensagem transmitida (generalheader), a requisio e os clientes (request-header) que comunicam suas configuraes e os formatos de documentos desejados como resposta.[7] 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,[8] esto descritos todos os campos que pertencem a esses cabealhos. Alguns tipos MIME Arquivo no formato texto (ASCII) Arquivo no formato HTML, utilizado como padro para documentos Web Descrio text/plain text/html

foi desenvolvido um conjunto de

implementaes adicionais ao HTTP/1.0, como por exemplo: o uso de conexes persistentes; o uso de servidores proxy que permitem uma melhor organizao da cache; novos mtodos de requisies; entre outros. Afirma-se que o HTTP tambm usado como um protocolo genrico para comunicao entre os agentes de utilizadores e proxies/gateways com outros protocolos, como o SMTP, NNTP, FTP, Gopher, e WAIS, permitindo o acesso a recursos disponveis em aplicaes diversas. Funcionamento 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

Imagem com o formato GIF Imagem com o formato JPEG Arquivo compactado Corpo da mensagem

Image/gif Image/jpeg application/zip

A resposta do servidor (seguida 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

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. Quando uma mensagem HTTP tiver um corpo, podero ser includos cabealhos de entidades que descrevem suas caractersticas, como por exemplo, oContent-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 ao lado apresenta alguns tipos MIME. Requisio De acordo com Fielding,[10] uma mensagem de requisio do cliente composta pelos seguintes campos: uma linha inicial (Request-Line); 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,[11] 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), composto pela identificao do protocolo, pelo endereo do computador servidor e pelo documento requisitado.[12] Mtodos O protocolo HTTP define oito mtodos que indicam a ao a ser realizada no recurso especificado. Conforme Bastos e Ladeiras,[13] o mtodo determina o que o servidor deve fazer com o URL fornecido no momento da requisio de um recurso. Um servidor HTTP deve implementar ao menos os mtodos GET e HEAD. GET Solicita algum recurso como um arquivo ou um script CGI (qualquer dado que estiver identificado pelo URI) por meio do protocolo HTTP. Por exemplo, segue abaixo uma comunicao entre um cliente e um servidor HTTP. O servidor possui a URL www.exemplo.com, porta 80. O pedido do cliente (seguido por uma linha em branco, de maneira que o 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.

HEAD Variao do GET em que o recurso no retornado. usado para obter metainformaes 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. Sua utilizao 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.[14] Por 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: 41 Nome=NomePessoa&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). Resposta Para Fielding,[15] 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 (Status-Code) da resposta, que fornece o resultado da requisio, e uma frase de justificativa (Reason-Phrase) que descreve o cdigo do status. Cdigos de retorno A linha inicial de uma resposta HTTP indica ao cliente se sua requisio foi bem sucedida ou no.
[16]

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 Transfer 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, entre outros protocolos. Esquema de comunicao Essa Pedido bsico de HTTP cliente-servidor: GET <ficheiro> HTTP/1.1 Host: <ip> User-Agent: <Agente> Connection: <tipo> O agente quem faz a ligao ao servidor, normalmente um navegador. O tipo indica como o servidor deve proceder com a conexo. comumente utilizado para requisies persistentes. Uma requisio completa pode exigir muitas informaes. A requisio abaixo - utilizando o mtodo POST - fora retirada do Mozilla Firefox v3.6b5 (pt-BR, para Windows): POST /diretorio/arquivo.html HTTP/1.1 Host: www.exemplo.com User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; pt-BR; rv:1.9.2b5) Gecko/20091204 Firefox/3.6b5 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: pt-br,pt;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-alive: 115 Cookie: nome=valor; nome2=valor2 Connection: keep-alive Content-Length: 28 usuario=exemplo&senha=123456

situao fornecida atravs de um cdigo de retorno (Status-Code) e uma frase explicativa (Reason-Phrase). De acordo com Fielding,[17] 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. Conexes Segundo Hirata,[18] o HTTP/1.0 um protocolo sem estado. 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 requisies para compor a pgina, uma conexo no-persistente. O ideal seria que apenas uma conexo fosse utilizada para os pedidos e as respostas HTTP, diminuindo, assim, a sobrecarga ocasionada pelas conexes, uma conexo persistente. 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, um processo chamado de pipelining.[19] 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.

S-ar putea să vă placă și