http - visão geral

43
Hypertext Transfer Protocol HTTP IFRS - Campus Porto Alegre Prof. Evandro Manara Miletto http://www.inf.poa.ifrs.edu.br/~evandro/

Upload: evandro-manara-miletto

Post on 24-May-2015

1.043 views

Category:

Education


1 download

DESCRIPTION

Visão geral do Protocolo HTTP

TRANSCRIPT

Page 1: HTTP - Visão geral

Hypertext Transfer Protocol

HTTPIFRS - Campus Porto Alegre

Prof. Evandro Manara Milettohttp://www.inf.poa.ifrs.edu.br/~evandro/

Page 2: HTTP - Visão geral

O que é o HTTP

Protocolo de Transferência de Hipertexto - é um protocolo de comunicação (na camada de Aplicação do modelo TCP/IP) utilizado para transferência de dados na Internet.

Page 3: HTTP - Visão geral

Nível de Aplicação

A

T

R

E

F

A

T

R

E

F

A A

Comunicação entre cliente e servidor, com mesmas características

Identifica o cliente que inicia a comunicação

Page 4: HTTP - Visão geral

<protocolo>://<servidor>/<caminho>

Acessando recursos Web

Protocolo de comunicação entre cliente e servidor

Define o endereço URL

Cliente Servidor

Page 5: HTTP - Visão geral

Características do HTTP

Usa mecanismo de requisição-resposta (request/response)

Servidor aguarda conexões na porta 80

Servidor aceita ou não conexões

Localizador Universal de Recurso – URL

Comunicação é encerrada ao final da conexão

Page 6: HTTP - Visão geral

Funcionamento HTTP

3Imagem do Livro: Use a Cabeça! HTML com CSS e XHTML

Page 7: HTTP - Visão geral

Formato de requisição HTTPGET /index.html HTTP/1.0

Host: www.content-networking.comDate: BBBBBBBBBBBBUser-Agent: Mozilla/5.0 (en) (WINNT; U)Accept-Language: en-us

Header Lines

Carriage Return/

Line Feed

Especifica método de requisição

Especifica recurso via URI

& metadadosMessage Body

Content-length: (Message Payload)

Request Line

Page 8: HTTP - Visão geral

Métodos HTTP (1/4)

GET

Pedido de um recurso situado na URL especificada

HEAD

Idêntico ao GET entretanto o servidor enviará apenas o cabeçalho da resposta

É utilizado para obter informações de um recurso sem transferir os dados (testa de link quebrado, data de modificação, etc.)

Page 9: HTTP - Visão geral

Métodos HTTP (2/4)

POST

utilizado para solicitar que o servidor de origem aceite os dados que são incluídos na requisição

projetado para permitir as seguintes funções:

Postar uma mensagem para uma lista de e-mails, grupo de notícias, etc.

Prover uma forma de enviar dados por meio de formulários

Page 10: HTTP - Visão geral

PUT

Semelhante ao POST, PUT apenas atualiza um novo recurso no servidor enquanto o PUT envia dados para processamento

DELETE

elimina ou move um recurso para uma localização inacessível

Métodos HTTP (3/4)

Page 11: HTTP - Visão geral

TRACE

O objetivo to TRACE é verificar o que o servidor ou proxy está recebendo do cliente (eco)

Este método foi concebido com o objetivo de permitir a realização de diagnósticos e testes

Exercício: Experimente descobrir a rota (nodos) para chegar a um servidor Web (use tracert no prompt)

Métodos HTTP (4/4)

Page 12: HTTP - Visão geral

Exemplo Request/Response

Page 13: HTTP - Visão geral

Mensagem HTTP cliente

GET /somedir/page.html HTTP/1.0Host: www.someScholl.eduUser-agent: Mozilla/4.0Accept: text/html, image/gif,image/jpegAccept-language:fr

(extra carriage return, line feed)

request line (GET, POST, HEAD..)

header lines

indica o final da mensagem

Page 14: HTTP - Visão geral

Mensagem HTTP servidor

HTTP/1.0 200 OKDate: Thu, 06 Aug 1998 12:00:15 GMTServer: Apache/1.3.0 (Unix)Last-Modified: Mon, 22 Jun 1998 ......Content-Length: 6821Content-Type: text/html

data data data data data ...

status line (protocol status

code status phrase)

header lines

indica o final da mensagem

Page 15: HTTP - Visão geral

Principais Atributos de Requisição (request)

Page 16: HTTP - Visão geral

Identifica um página (site)

É representado por um endereço IPv4 ou um nome registrado

Se o host for um nome registrado então deve ser considerado um identificador indireto

O valor do host não pode ser nulo

Se a porta não for fornecida, a 80 é assumida como a padrão para serviços WWW

Host

Page 17: HTTP - Visão geral

User-Agent

Possui informação sobre o “agente” (cliente http) que originou a requisição HTTP

Navegadores podem ser considerados user-agent (Firefox, Opera, Safari, etc.)

Propósito: colher dados estatísticos, detecção de violação do protocolo e reconhecimento automático de clientes (adaptação ou limitações)

É recomendado que um cliente acrescente o user-agent na requisição (não é um campo obrigatório)

O campo pode conter comentários para identificar qualquer subproduto que faça parte do user-agent

Page 18: HTTP - Visão geral

Accept

Pode ser utilizado por clientes para especificar os tipos de mídias que são aceitáveis

Uma requisição pode ser limitada para um conjunto de tipos de mídia desejáveis (ex. requisição de apenas imagens)

O asterisco (*) é usado para agrupar tipos de mídias

O "*/*" indica todos os tipos de mídias enquanto "type/*" indica todas as mídias de um determinado tipo

Cada tipo de mídia pode ser seguido por um ou mais parâmetros, iniciando com "q" para indicar um fator de “qualidade”

Um fator de qualidade (q) permite o usuário indicar o grau relativo de "qualidade" para um tipo de mídia. A escala vai de 0 até 1 (valor padrão)

Page 19: HTTP - Visão geral

Accept (exemplo)

Exemplo:

Accept: text/plain; q=0.5, text/html,

text/x-dvi; q=0.8, text/x-c

O exemplo acima deve ser interpretado: "text/html e text/x-c são os tipos de mídia preferidos. Caso não exista, envie-me text/x-dvi. Se ainda não existir, envie-me os arquivos em text/plain

Assim, o valor “1” (ou maior) da qualidade deve ser interpretado como o formato preferido

Page 20: HTTP - Visão geral

Accept-Language

O campo Accept-Language pode ser utilizado por clientes HTTP para indicar o conjunto de linguagens naturais que são preferidos

O atributo de "qualidade" q também pode ser utilizado para indicar os idiomas preferidos

Exemplo:

Accept-Language: pt-br, en-us;q=0.9, en;q=0.8

Page 21: HTTP - Visão geral

Accept-Encoding

Informa a codificação aceita na resposta.Accept-Encoding: gzip

significa que o client aceita, como codificação da resposta, gzip;

Page 22: HTTP - Visão geral

Keep-Alive e Connection

Conexão HTTP persistente, usa uma conexão TCP única para enviar e receber múltiplas requisições/repostas HTTP

Ocorre de forma oposta a abrir uma nova conexão para cada requisição/resposta simples.

Page 23: HTTP - Visão geral

Keep-Alive e Connection

http://en.wikipedia.org/wiki/File:HTTP_persistent_connection.svg

Page 24: HTTP - Visão geral

Accept-CharsetUtilizado para indicar o padrão dos caracteres de resposta aceitáveis. Ex:

Accept-Charset: iso-8859-5, unicode-1-1;q=0.8

Informação complementar:

Iso-8859-5: http://en.wikipedia.org/wiki/ISO/IEC_8859-5

Unicode: http://pt.wikipedia.org/wiki/Unicode

Page 25: HTTP - Visão geral

Accept-Language

Informa o idioma aceito na resposta. Accept-Language: pt-br, pt;q=0.8 significa que o cliente prefere português brasileiro como idioma da resposta, mas aceita português se não tiver em português brasileiro.

Page 26: HTTP - Visão geral

Referer

Permite que o cliente especifique a URI de um recurso (página, vídeo, imagem, etc.) que deve ser visualizado

Este atributo também é geralmente utilizado pelos servidores para realizar cache de recursos mais acessados

Também permite que os servidores redirecione recursos obsoletos para páginas em manutenção, etc.

Page 27: HTTP - Visão geral

Cookie

São dados trocados entre o cliente e o servidor

Função principal: manter a persistência de sessões HTTP

Existiram muitas críticas ao conceito devido ao problema de segurança

Ex: segurança na utilização de computadores públicos

Page 28: HTTP - Visão geral

Cookie (exemplo)

ServidorCliente

Temp

o

RequestUsername: professor

Password: 12345

Arquivo de seção

@#$%12wertPode ser utilizado

para guardaruma informação

do usuário

ResponseSet Cookie: SESSION_ID = @#$%12wert

Conteúdo (HTML) para o professor

ResponseCookie: SESSION_ID = @#$%12wert

Arquivo de seção

@#$%12wert

Page 29: HTTP - Visão geral

Principais Códigos de Status HTTP

Page 30: HTTP - Visão geral

1xx - Informativos

100 (Continue) – Significa que o servidor recebeu uma parte inicial da requisição e está informando para o cliente que ele deve continuar enviando (por exemplo, no caso de um POST com muitos megas)

101 (Switching Protocols) – O servidor avisa para o cliente que irá modificar o protocolo de comunicação (por exemplo, uma nova versão de HTTP)

Page 31: HTTP - Visão geral

2xx - Sucesso200 (OK) - Resposta entregue corretamente

201 (Created) – Requisição executada e originou um novo recurso

202 (Accepted) – Requisição aceita mas ainda não realizada

203 (Non-Authoritative Information) – A resposta da requisição foi originada por outras fontes de dados, Ex. cache do navegador

204 (No Content) - O servidor recebeu a requisição mas não há informação para devolver (página sem conteúdo)

205 (Reset Content) - O servidor indica ao navegador para suprimir o conteúdo dos campos de formulário

Page 32: HTTP - Visão geral

3xx - Redirecionamento

301 (Moved) – O recurso solicitado foi transferido para um novo endereço. Assim, o cliente pode guardar esta nova localização

302 (Found) – O recurso alvo reside numa localização diferente. Isto acontece num redirecionamento, assim, o cliente deve utilizar o link correto numa requisição futura.

Exemplo: GET /index.html HTTP/1.1 Host: www.wikipedia.org

HTTP/1.1 302 FoundLocation: http://www.wikipedia.org/index.php

requisição

resposta

Page 33: HTTP - Visão geral

3xx - Redirecionamento

303 (See Other) – Método correto de direcionar um cliente para um outro link.

Exemplo:

HTTP/1.1 303 See OtherLocation: http://www.example.org

resposta

Page 34: HTTP - Visão geral

4xx - Erro de Cliente

400 (Bad Request) - A sintaxe do pedido está mal formulada

401 (Unauthorized) - O cliente não está autorizado a acessar um recurso. Deve refazer a requisição passando suas credenciais (ex: usuário e senha)

402 (Payment Required) - Pede para o cliente refazer a requisição passando dados para pagamento

403 (Forbidden) - O acesso ao recurso é proibido404 (Not Found) - O servidor não encontrou o recurso solicitado

Page 35: HTTP - Visão geral

5xx - Erro de Servidor500 (Internal Error) - O servidor encontrou uma condição inesperada (sistema mal implementado)

501 (Not Implemented) - O servidor não suporta o serviço pedido

502 (Bad Gateway) - O servidor está recebendo uma resposta inválida de um outro servidor (ex: servidor de stream de vídeo)

503 (Service Unavaiable) - O servidor não pode responder no momento

504 – GATEWAY TIMEOUT - A resposta do servidor foi muito longa esgotando o tempo

Page 36: HTTP - Visão geral

Principais Atributos de Resposta (response)

Page 37: HTTP - Visão geral

Content-Type e Content-Length

Content-Type indica o tipo de conteúdo do corpo da resposta

Exemplos: text/html, application/pdf, etc.

Content-Length indica o tamanho do corpo da mensagem de resposta

Page 38: HTTP - Visão geral

Content-Encoding e Content-Language

Content-Encoding indica o tipo de codificação utilizada na resposta. Por exemplo, compress, deflate, gzip, etc.

Content-Language indica o tipo de língua utilizada no corpo da mensagem. Por exemplo, pt-br, en-us, etc.

Page 39: HTTP - Visão geral

Location

O campo de resposta location é utilizado para identificar um novo recurso criado ou para redirecionar o cliente para uma localização (link) diferente

Se o status da resposta for 201 (created) então o servidor está indicando um novo recurso

Entretanto, o status 3xx indica que o servidor está indicando um novo link para o cliente fazer um redirecionamento

Page 40: HTTP - Visão geral

Server

O campo de resposta server contém informações sobre o software usado pelo servidor para manipular as requisições (servidor HTTP)

Exemplos de servidores HTTP:

Apache HTTP Server

Internet Information Services (IIS)

Page 41: HTTP - Visão geral

Expires e Date

O campo de resposta expires indica explicitamente para o cliente quando ele deve realizar novamente uma requisição para o servidor. Enquanto isto o cliente pode carregar a página da cache, etc.

Ex: Expires: Thu, 01 Dec 1994 16:00:00 GMT

O campo de propósito geral date indica o dia e a hora que uma mensagem foi enviada

Ex: Date: Tue, 15 Nov 1994 08:12:31 GMT

Page 42: HTTP - Visão geral

Exercício prático

Simular um browser realizando uma requisição HTTP a um servidor Web

Utilizar TELNET na porta 80 do servidor Ex:

Ex:

telnet www.google.com.br 80GET http://www.google.com.br HTTP/1.0 [enter][enter][enter]

Page 43: HTTP - Visão geral

Referências

RFCS (Request for Comments) HTTP 1.1

http://datatracker.ietf.org/wg/httpbis/

Tutoriais HTTP

http://pt.kioskea.net/contents/internet/http.php3

Baseado no material do Prof Rodrigo Prestes Machado