Redes de Computadores Grupo de Redes de Computadores HTTP HyperText Transport Protocol
Introdução ao protocolo HTTP Origem Definido na iniciativa da WWW HTML e HTTP Modelo cliente servidor Protocolo sem estado O servidor não mantém informação sobre os pedidos anteriores dos clientes Troca de objectos Objecto: ficheiro HTML, imagem (jpeg, gif, etc), applet de Java, ficheiro de audio ou video, etc Formato das mensagens Pedidos e respostas Ligações HTTP: persistentes e não persistentes ISEL-ADEETC-GRC 2
URL Uniform Resource Locator Um página web consiste em objectos Um URL serve para identificar e localizar um objecto Um ficheiro HTML pode incluir vários objectos referenciados Cada objecto é identificado por um URL Formato ISEL-ADEETC-GRC 3
Protocolo HTTP Protocolo da camada de aplicação utilizado por aplicações Web Dois tipos de mensagens: pedido e resposta, no formato ASCII Utiliza TCP, porto 80 por omissão O cliente abre uma ligação TCP com o servidor, troca mensagens HTTP e fecha a ligação TCP Prevê o uso de Webcaches HTTP 0.9 (1991) HTTP 1.0 (1996) RFC 1945 HTTP 1.1 (1996) RFC 2068 ISEL-ADEETC-GRC 4
Funcionamento ISEL-ADEETC-GRC 5
Formato das Mensagens Pedido /Respostas EID/ISEL-DEETC-GRC/2009 6
Formato de um pedido HTTP Linha de pedido (comandos GET, POST, HEAD, etc) Linhas de cabeçalho Carriage return, line feed Indica o fim da mensagem GET /somedir/page.html HTTP/1.1 Host: www.someschool.edu User-agent: Mozilla/4.0 Connection: close Accept-language:fr (extra carriage return, line feed) ISEL-ADEETC-GRC 7
Pedidos HTTP (linha de pedido) Pedido simples (HTTP/1.0) Method SP Request-URI CRLF Pedido completo (HTTP/1.0) ISEL-ADEETC-GRC 8
2068 1945 Métodos RFC Métodos Acções GET Pede um documento/recurso/objecto ao servidor POST Envia informação do cliente para o servidor HEAD Pede informação sobre um documento mas não o documento em si OPTIONS Pede quais as opções disponíveis para um recurso PUT Envia um documento/recurso/objecto para o servidor DELETE Apagar o documento/recurso/objecto TRACE Loop-back do pedido ISEL-ADEETC-GRC 9
Formato de uma resposta HTTP Linha de estado (protocolo, código de estado, frase de estado) Dados, e.g. ficheiro HTML pedido Linhas de cabeçalho HTTP/1.1 200 OK Connection close Date: Thu, 06 Aug 1998 12:00:15 GMT Server: Apache/1.3.0 (Unix) Last-Modified: Mon, 22 Jun 1998... Content-Length: 6821 Content-Type: text/html data data data data data... ISEL-ADEETC-GRC 10
Resposta HTTP Resposta simples (HTTP/1.0) sem linha de estado Resposta completa (HTTP/1.1) Categoria 1yz 2yz 3yz 4yz 5yz Descrição Informação Sucesso Redireccionamento Erro do cliente Erro do servidor ISEL-ADEETC-GRC 11
Códigos de resposta HTTP (1) Código Nome (phrase) Descrição Informação 100 Continue A parte inicial do pedido foi realizada e o cliente pode continuar com o pedido 101 Switching O servidor vai realizar o pedido do cliente para mudar de protocolos Sucesso 200 OK O pedido teve sucesso, o objecto é enviado na mensagem 201 Created Um novo URL foi criado 202 Accepted O pedido foi aceite, mas não foi imediatamente processado 204 No content Processa o pedido, mas não retorna nenhum conteúdo Redireccionamento 300 Multiple choices O URL pedido refere-se a mais do que um recurso 301 Moved permanently O objecto foi movido, nova localização indicada no cabeçalho location 304 Not modified Indica que o recurso não foi alterado desde o último pedido (uso c/get condicional) ISEL-ADEETC-GRC 12
Códigos de resposta HTTP (2) Código Nome (phrase) Descrição Erro no cliente 400 Bad request O pedido não pode ser realizado devido a erros de sintaxe 401 Unauthorized Autenticação falhou ou não foi realizada 403 Forbidden O pedido está correcto mas o servidor recusa-se a responder 404 Not Found O objecto pedido não foi encontrado 405 Method not allowed O método não é suportado para o objecto indicado no pedido 406 Not acceptable Não consegue gerar uma resposta num formato aceitável pelo cliente Erro no servidor 500 Internal server error O servidor econtrou um errro não esperado, que o impediu de responder ao pedido 501 Not implemented O servidor não suporta a funcionalidade necessária para satisfazer o pedido 502 Service unavailable O servidor é incapaz de responder ao pedido devida uma sobrecarga ou manutenção do servidor ISEL-ADEETC-GRC 13
Cabeçalhos (Header field) Servem para transmitir informação adicional Existe quatro tipos: gerais (General-Header), de pedido (Request- Header), de resposta (Response-Header) e relacionado com o conteúdo (Entity-Header) Formato ISEL-ADEETC-GRC 14
Cabeçalhos generalistas Header Cache-control Connection Date MIME-version Upgrade Description Specifies information about caching Shows whether the connection should be closed or not Show the current date Show the MIME version used Specifies the preferred communication protocol ISEL-ADEETC-GRC 15
Cabeçalhos para pedidos Header Accept Accept-Charset Accept-enconding Accept-language Authorization From Host If-modified-since If-match If-non-match If-range If-unmodified-since Referref User-agent Description Show the media format the client can accept Show the character set the client can handle Show the encoding scheme the cliente can handle Show the language the client can accept Show what permissions the client has Show the e-mail address of the user Show the host and port number of the client Send the document if newer than specified date Send the document only if matches given tag Send the document only if it does not match given tag Send only the portion of the document that is missing Send the document if not changed since specified date Specifies the URL of the linked document Identifies the client program ISEL-ADEETC-GRC 16
Cabeçalhos para respostas Header Accept-range Age Public Retry-after Server Description Show if server accepts the range requested by client Show the age of the document Show the supported list of methods Specifies the date after which the server is available Show the server name and version number ISEL-ADEETC-GRC 17
Cabeçalhos relacionados com o conteúdo Header Allow Content-encoding Content-language Content-length Content-range Content-type Etag Expires Last-modified Location Description Lists valid methods that can be used with a URL Specifies the encoding scheme Specifies the language Show the length of the document Specifies the range of the document Specifies the media type Gives an entity tag Gives the date and time when contents may change Gives the date and time of the last change Specifies the location of the created or moved document ISEL-ADEETC-GRC 18
Tipo de ligações de HTTP Não persistentes: apenas um objecto pode ser transferido numa ligação de TCP Estabelecimento e fecho de uma ligação de TCP por objecto Persistentes: podem ser transferidos vários objectos sobre a mesma ligação de TCP Requisitos de memória e CPU são menores Menor latência Usar Connection: Keep-Alive ISEL-ADEETC-GRC 19
Exemplo GET ISEL-ADEETC-GRC 20
Exemplo POST ISEL-ADEETC-GRC 21
Exemplo de um GET ~ # telnet www.net.ipl.pt 80 GET / HTTP/1.1 Host: www.net.ipl.pt User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-us; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en,pt;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Cookie: _horde_sidebar_expanded=true; default_imp_view=imp HTTP/1.x 200 OK Date: Thu, 11 Sep 2008 16:41:41 GMT Server: Apache X-Powered-By: PHP/5.2.6-pl6-gentoo Set-Cookie: fe_typo_user=3434b4366d; path=/ Keep-Alive: timeout=15, max=100 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html; charset=utf-8 (...) Connection closed by foreign host. ISEL-ADEETC-GRC 22
Bibliografia http://www.w3.org/pub/www/protocols/http/asimplemented.html - Hypertext Transfer Protocol HTTP V0.9 (1991) RFC1945 - Hypertext Transfer Protocol -- HTTP/1.0 (1996) RFC2068 - Hypertext Transfer Protocol -- HTTP/1.1 (1997) RFC2616 - Hypertext Transfer Protocol -- HTTP/1.1 (1999) Forouzan, Behrouz A. TCP/IP Protocol Suite. Boston: McGraw-Hill, 2003. Print Slides realizados pelo docente João Viegas e João Ascenso em 03/2012 ISEL-ADEETC-GRC 23