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) GET /somedir/page.html HTTP/1.1 Host: www.someschool.edu User-agent: Mozilla/4.0 Linhas de Connection: close cabeçalho Accept-language:fr Carriage return, (extra carriage return, line feed) line feed Indica o fim da mensagem 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 Métodos 2068 1945 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) Linhas de cabeçalho Dados, e.g. ficheiro HTML pedido 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) ISEL-ADEETC-GRC Categoria Descrição 1yz Informação 2yz Sucesso 3yz Redireccionamento 4yz Erro do cliente 5yz Erro do servidor 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 201 Created Um novo URL foi criado 202 Accepted O pedido foi aceite, mas não foi imediatamente processado 204 No content O pedido teve sucesso, o objecto é enviado na mensagem Processa o pedido, mas não retorna nenhum conteúdo Redireccionamento 300 Multiple choices 301 Moved permanently 304 Not modified O URL pedido refere-se a mais do que um recurso O objecto foi movido, nova localização indicada no cabeçalho location 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 406 Not acceptable O método não é suportado para o objecto indicado no pedido Não consegue gerar uma resposta num formato aceitável pelo cliente Erro no servidor 500 Internal server error 501 Not implemented 502 Service unavailable O servidor econtrou um errro não esperado, que o impediu de responder ao pedido O servidor não suporta a funcionalidade necessária para satisfazer o pedido 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 (RequestHeader), de resposta (Response-Header) e relacionado com o conteúdo (Entity-Header) Formato ISEL-ADEETC-GRC 14 Cabeçalhos generalistas Header Description Cache-control Specifies information about caching Connection Shows whether the connection should be closed or not Date Show the current date MIME-version Show the MIME version used Upgrade Specifies the preferred communication protocol ISEL-ADEETC-GRC 15 Cabeçalhos para pedidos Header Description Accept Show the media format the client can accept Accept-Charset Show the character set the client can handle Accept-enconding Show the encoding scheme the cliente can handle Accept-language Show the language the client can accept Authorization Show what permissions the client has From Show the e-mail address of the user Host Show the host and port number of the client If-modified-since Send the document if newer than specified date If-match Send the document only if matches given tag If-non-match Send the document only if it does not match given tag If-range Send only the portion of the document that is missing If-unmodified-since Send the document if not changed since specified date Referref Specifies the URL of the linked document User-agent Identifies the client program ISEL-ADEETC-GRC 16 Cabeçalhos para respostas Header Description Accept-range Show if server accepts the range requested by client Age Show the age of the document Public Show the supported list of methods Retry-after Specifies the date after which the server is available Server Show the server name and version number ISEL-ADEETC-GRC 17 Cabeçalhos relacionados com o conteúdo Header Description Allow Lists valid methods that can be used with a URL Content-encoding Specifies the encoding scheme Content-language Specifies the language Content-length Show the length of the document Content-range Specifies the range of the document Content-type Specifies the media type Etag Gives an entity tag Expires Gives the date and time when contents may change Last-modified Gives the date and time of the last change Location 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