HTTP 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 http request Servidor http response http request http response 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 Transmissão do objeto 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 • Abremenosconexõ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
?