Hypertext Transfer Protocol Equipe: Alan José de Moura Silva Filho (ajmsf) Cyrus Dias da Silva (cds) Dayse Danielle Soares da Rocha(ddsr) Elton Renan Magalhães Alves (erma) Marcelo Costa Melo de Andrade (mcma) Roteiro Visão Geral Conexões Versões Formato de mensagens Métodos Códigos de status HTTPS Visão Geral Protocolo da camada de aplicação Tipos mensagens Sintaxe das mensagens Semântica das mensagens Regras de quando e como os processos enviam as mensagens Visão Geral Web e http Jargões Páginas web consistem em objetos Um objeto é qualquer coisa que tenha uma URL( Universal Resourse Locator) www.folha.uol.com.br/folha/dinheiro/ult91u448619.shtml host caminho Visão Geral Modelo Cliente Servidor Cliente Servidor user agent Visão Geral Usa TCP Porta 80 Stateless – o servidor não mantém estado sobre requisições passadas de clientes Conexões Não-persistente Persistente Não-persistente No máximo um objeto é enviado pela conexão TCP HTTP/1.0 usa HTTP não-persistente como padrão 2 RTT – round trip time - para cada objeto Abre sempre uma nova conexão para cada objeto Não persistente RTT Abre conexão RTT OBJETO Transmis são do objeto Abre conexão para cada objeto Persistente Varios objetos podem ser enviados em uma mesma conexão TCP entre o cliente e o servidor. HTTP 1.1 usa como padrão Implementa pipeline A conexão fecha quando sinalizada no header “Connection ” das mensagens HTTP Vantagens Abre menos conexões TCP. É possível implementar um pipeline sobre requisições e respostas O congestionamento da rede é reduzido com a redução do número de pacotes para abrir as conexões Latencia em requisições seguintes diminui, já que não será necessário abrir novas conexões Sem pipeline Só envia próxima requisição quando a anterior tiver sido recebida. 1 RTT para cada objeto Sem pipeline RTT OBJETO RTT OBJETO Vários objetos na mesma conexão Com pipeline Padrão do HTTP 1.1 Cliente envia requisições sem esperar pela resposta de cada requisição Gasta um pouco mais que 1RTT para todos os objetos Não deve enviar em pipeline métodos que não são idempotentes. Deve esperar pela resposta Com pipeline RTT OBJETOS Vários objetos solicitados ao mesmo tempo Versões HTTP 0.9 – só o GET HTTP 1.0 – RFC 1945 HTTP 1.1 – RFC 2616 HTTP 1.0 1996 – RFC 1945 Usa conexão não-persistente Possibilidade de transmissão de mensagens do tipo MIME44 (Multipurpose Internet Mail Extension) Implementa os métodos de requisição POST e HEAD Ainda é um protocolo bastante utilizado HTTP 1.1 1999 – RFC 2616 Habilita conexão persistente com ou sem pipeline Implementa os métodos GET, POST, HEAD, PUT, DELETE, TRACE, OPTIONS e CONNECT Servidores Proxys, entre outras características Pergunta Há incompatibilidade entre o HTTP1.0 e o HTTP1.1? Formato das Mensagens •Mensagens do HTTP 1.1 •Especificadas em ASCII •Formato geral de uma request mensage Formato das Mensagens Exemplo de request mensage: GET /~if738 HTTP 1.1 Host: www.cin.ufpe.br User-agent: Mozilla/4.0 Connection: close Accept-language: pt-br Formato das Mensagens •Mensagens do HTTP 1.1 •Formato geral de uma reponse mensage Version code sentence Formato das Mensagens Exemplo de response mensage: HTTP/1.1 301 Moved Permanently Date: Thu, 23 Sep 2008 23:27:20 GMT Server: Apache Location: http://www.cin.ufpe.br/~if738/ Content-Length: 303 Connection: close Content-Type: text/html; charset=iso-8859-1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>301 Moved Permanently</title> </head><body> <h1>Moved Permanently</h1> <p>The document has moved <a href="http://www.cin.ufpe.br/~if738/">here</a>.</p> <hr> <address>Apache Ser ver at www.cin.ufpe.br Port 80</address> </body></html> Métodos Métodos Seguros: Get, Head Métodos idempotentes: Put, Delete, Options, Trace, Get e Head Post e Connect não respeitam essas propriedades Métodos GET Qualquer requisição de dados especificada por uma URL Sempre retorna entidade conditional GET partial GET HEAD Idêntico ao GET, porém sem corpo. Pode ser usado para validar hyperlink. Retorna metadados Métodos POST Enviar dados a serem processados no servidor. PUT Envia dados que serão armazenados no servidor. Caso a operação não seja realizada o servidor não pode deixar de retorno uma mensagem da causa HTTP1.1 não define como esse método afeta o estado do servido Métodos DELETE Deleta dados no servidor As mensagem de resposta podem não ser o que parece. TRACE Ecoa o caminho feito pela requisição OPTIONS Retorna informação sobre as opções de conexão entre as partes da conexão CONNECT Converte a conexão para TCP/Tunnel transparente. Facilita o uso do criptografia SSL Diferença entre POST e PUT A principal diferença entre o POST e o PUT está no significado do URI - Identificador Uniforme de Recursos - da requisição. POST – identifica um recurso que irá manipular o objeto enviado PUT – identifica o próprio objeto enviado Códigos de Resposta Ao responder uma requisição do cliente, o servidor envia um código de resposta Constituído por numeros Segue um padrão Padrão de resposta 1XX – informativo 2XX – sucesso 3XX – redirecionamento 4XX – erros no cliente 5XX – erros no servidor Exemplos 200 OK A resposta segue com o objeto requisitado 302 Found Cliente pega o campo “Location” do header que informa a URI para o qual o recurso foi direcionado 301 Moved Permanently Redirecionamento permanente de URI Exemplos 304 Not Modified Para uso de caching. Informa que não teve alteração desde a ultima requisição 401 Unauthourized é possível acessar o recurso apenas por meio de autenticação 403 Forbidden Não é possível acessar o recurso, mesmo usando autenticação Exemplos 404 Not Found O recurso está temporariamente indisponível ou realmente não exista 500 Internal Server Error Algo inesperado aconteceu no servidor (???) 503 Service Unavailable Temporariamente indisponível. Manutenção ou sobrecarga HTTPS Implementação de HTTP sobre uma camada SSL Usado no comércio online/operações bancárias e clientes de email Permite que os dados sejam transmitidos por uma conexão criptografada Verifica autenticidade usando certificados digitais HTTPS SSL HANDSHAKE Referencias Redes De Computadores E A Internet - James F Kurose http://www.w3.org/Protocols/ www.UFRJ.br ?