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
?
Download

HGP