PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
HTTP - Visão geral
1. Hypertext Transfer Protocol
HTTP
IFRS - Campus Porto Alegre
Prof. Evandro Manara Miletto
http://www.inf.poa.ifrs.edu.br/~evandro/
2. 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.
3. Nível de Aplicação
Comunicação entre cliente e servidor, com mesmas características
Identifica o cliente que inicia a comunicação
A A A A
T T
R R
E E
F F
4. Acessando recursos Web
<protocolo>://<servidor>/<caminho>
Protocolo de Define o
comunicação entre endereço URL
cliente e servidor
Cliente Servidor
5. 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
7. Formato de requisição HTTP
Especifica método
Request Line GET /index.html HTTP/1.0 de requisição
Header Host: www.content-networking.com
Lines Date: BBBBBBBBBBBB
User-Agent: Mozilla/5.0 (en) (WINNT; U)
Accept-Language: en-us
Carriage
Return/
Line Feed Especifica recurso via
URI
Message & metadados
Content-length:
Body (Message Payload)
8. 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.)
9. 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
10. Métodos HTTP (3/4)
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
11. Métodos HTTP (4/4)
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)
13. Mensagem HTTP cliente
request line
(GET, POST, HEAD..) GET /somedir/page.html HTTP/1.0
Host: www.someScholl.edu
User-agent: Mozilla/4.0
header lines
Accept: text/html, image/gif,image/jpeg
Accept-language:fr
indica o final da (extra carriage return, line feed)
mensagem
14. Mensagem HTTP servidor
status line
(protocol status HTTP/1.0 200 OK
code status phrase) Date: Thu, 06 Aug 1998 12:00:15 GMT
header lines Server: Apache/1.3.0 (Unix)
Last-Modified: Mon, 22 Jun 1998 ......
Content-Length: 6821
Content-Type: text/html
indica o final da data data data data data ...
mensagem
16. Host
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
17. 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
18. 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)
19. 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
20. 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
22. 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.
24. Accept-Charset
Utilizado 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
25. 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.
26. 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.
27. 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
28. Cookie (exemplo)
Request Servidor
Cliente Username: professor
Password: 12345
Arquivo de seção
Response
Set Cookie: SESSION_ID = @#$%12wert
@#$%12wert
Tempo
Pode ser utilizado
para guardar
uma informação
Response
do usuário
Cookie: SESSION_ID = @#$%12wert
Arquivo de seção
Conteúdo (HTML) para o professor @#$%12wert
30. 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)
31. 2xx - Sucesso
200 (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
32. 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. requisição
Exemplo: GET /index.html HTTP/1.1 Host: www.wikipedia.org
HTTP/1.1 302 Found resposta
Location: http://www.wikipedia.org/index.php
33. 3xx - Redirecionamento
303 (See Other) – Método correto de direcionar um cliente para um
outro link.
Exemplo: resposta
HTTP/1.1 303 See Other
Location: http://www.example.org
34. 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 é proibido
404 (Not Found) - O servidor não encontrou o recurso solicitado
35. 5xx - Erro de Servidor
500 (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
37. 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
38. 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.
39. 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
40. 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)
41. 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
42. 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 80
GET http://www.google.com.br HTTP/1.0 [enter]
[enter]
[enter]
43. 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