HTTP - Visão geral

1,456 views

Published on

Visão geral do Protocolo HTTP

Published in: Education
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,456
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
89
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

HTTP - Visão geral

  1. 1. Hypertext Transfer Protocol HTTPIFRS - Campus Porto Alegre Prof. Evandro Manara Miletto http://www.inf.poa.ifrs.edu.br/~evandro/
  2. 2. O que é o HTTPProtocolo de Transferência de Hipertexto - é um protocolo decomunicação (na camada de Aplicação do modelo TCP/IP)utilizado para transferência de dados na Internet.
  3. 3. Nível de AplicaçãoComunicação entre cliente e servidor, com mesmas característicasIdentifica o cliente que inicia a comunicação A A A A T T R R E E F F
  4. 4. Acessando recursos Web <protocolo>://<servidor>/<caminho> Protocolo de Define o comunicação entre endereço URL cliente e servidor Cliente Servidor
  5. 5. Características do HTTPUsa mecanismo de requisição-resposta (request/response)Servidor aguarda conexões na porta 80Servidor aceita ou não conexõesLocalizador Universal de Recurso – URLComunicação é encerrada ao final da conexão
  6. 6. Funcionamento HTTP
  7. 7. Formato de requisição HTTP Especifica métodoRequest 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. 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. 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. 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. 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)
  12. 12. Exemplo Request/ Response
  13. 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. 14. Mensagem HTTP servidor status line (protocol status HTTP/1.0 200 OKcode 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
  15. 15. Principais Atributos de Requisição (request)
  16. 16. HostIdentifica um página (site)É representado por um endereço IPv4 ou um nome registradoSe o host for um nome registrado então deve ser consideradoum identificador indiretoO valor do host não pode ser nuloSe a porta não for fornecida, a 80 é assumida como a padrãopara serviços WWW
  17. 17. User-AgentPossui informação sobre o “agente” (cliente http) que originou a requisição HTTPNavegadores podem ser considerados user-agent (Firefox, Opera, Safari, etc.)Propósito: colher dados estatísticos, detecção de violação do protocolo ereconhecimento automático de clientes (adaptação ou limitações)É recomendado que um cliente acrescente o user-agent na requisição (não é umcampo obrigatório)O campo pode conter comentários para identificar qualquer subproduto que façaparte do user-agent
  18. 18. AcceptPode ser utilizado por clientes para especificar os tipos de mídias que são aceitáveisUma requisição pode ser limitada para um conjunto de tipos de mídia desejáveis (ex. requisiçãode apenas imagens)O asterisco (*) é usado para agrupar tipos de mídiasO "*/*" indica todos os tipos de mídias enquanto "type/*" indica todas as mídias de umdeterminado tipoCada tipo de mídia pode ser seguido por um ou mais parâmetros, iniciando com "q" para indicarum fator de “qualidade”Um fator de qualidade (q) permite o usuário indicar o grau relativo de "qualidade" para um tipode mídia. A escala vai de 0 até 1 (valor padrão)
  19. 19. Accept (exemplo)Exemplo: Accept: text/plain; q=0.5, text/html, text/x-dvi; q=0.8, text/x-cO exemplo acima deve ser interpretado: "text/html e text/x-c são ostipos de mídia preferidos. Caso não exista, envie-me text/x-dvi. Seainda não existir, envie-me os arquivos em text/plainAssim, o valor “1” (ou maior) da qualidade deve ser interpretadocomo o formato preferido
  20. 20. Accept-LanguageO campo Accept-Language pode ser utilizado por clientes HTTP paraindicar o conjunto de linguagens naturais que são preferidosO atributo de "qualidade" q também pode ser utilizado para indicaros idiomas preferidosExemplo: Accept-Language: pt-br, en-us;q=0.9, en;q=0.8
  21. 21. Accept-EncodingInforma a codificação aceita na resposta.Accept-Encoding: gzipsignifica que o client aceita, como codificação da resposta, gzip;
  22. 22. Keep-Alive e ConnectionConexão HTTP persistente, usa uma conexão TCP única paraenviar e receber múltiplas requisições/repostas HTTPOcorre de forma oposta a abrir uma nova conexão para cadarequisição/resposta simples.
  23. 23. Keep-Alive e Connection http://en.wikipedia.org/wiki/File:HTTP_persistent_connection.svg
  24. 24. Accept-CharsetUtilizado para indicar o padrão dos caracteres de respostaaceitáveis. Ex: Accept-Charset: iso-8859-5, unicode-1-1;q=0.8Informação complementar: Iso-8859-5: http://en.wikipedia.org/wiki/ISO/IEC_8859-5 Unicode: http://pt.wikipedia.org/wiki/Unicode
  25. 25. Accept-LanguageInforma o idioma aceito na resposta. Accept-Language: pt-br,pt;q=0.8significa que o cliente prefere português brasileiro comoidioma da resposta, mas aceita português se não tiver emportuguês brasileiro.
  26. 26. RefererPermite que o cliente especifique a URI de um recurso (página,vídeo, imagem, etc.) que deve ser visualizadoEste atributo também é geralmente utilizado pelos servidorespara realizar cache de recursos mais acessadosTambém permite que os servidores redirecione recursosobsoletos para páginas em manutenção, etc.
  27. 27. CookieSão dados trocados entre o cliente e o servidorFunçã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. 28. Cookie (exemplo) Request Servidor Cliente Username: professor Password: 12345 Arquivo de seção Response Set Cookie: SESSION_ID = @#$%12wert @#$%12wertTempo 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
  29. 29. Principais Códigos de Status HTTP
  30. 30. 1xx - Informativos100 (Continue) – Significa que o servidor recebeu uma parteinicial da requisição e está informando para o cliente que eledeve continuar enviando (por exemplo, no caso de um POST commuitos megas)101 (Switching Protocols) – O servidor avisa para o cliente queirá modificar o protocolo de comunicação (por exemplo, umanova versão de HTTP)
  31. 31. 2xx - Sucesso200 (OK) - Resposta entregue corretamente201 (Created) – Requisição executada e originou um novo recurso202 (Accepted) – Requisição aceita mas ainda não realizada203 (Non-Authoritative Information) – A resposta da requisição foioriginada por outras fontes de dados, Ex. cache do navegador204 (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 oconteúdo dos campos de formulário
  32. 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.orgHTTP/1.1 302 Found respostaLocation: http://www.wikipedia.org/index.php
  33. 33. 3xx - Redirecionamento 303 (See Other) – Método correto de direcionar um cliente para um outro link. Exemplo: respostaHTTP/1.1 303 See OtherLocation: http://www.example.org
  34. 34. 4xx - Erro de Cliente400 (Bad Request) - A sintaxe do pedido está mal formulada401 (Unauthorized) - O cliente não está autorizado a acessar umrecurso. Deve refazer a requisição passando suas credenciais (ex: usuárioe senha)402 (Payment Required) - Pede para o cliente refazer a requisiçãopassando dados para pagamento403 (Forbidden) - O acesso ao recurso é proibido404 (Not Found) - O servidor não encontrou o recurso solicitado
  35. 35. 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 pedido502 (Bad Gateway) - O servidor está recebendo uma resposta inválidade um outro servidor (ex: servidor de stream de vídeo)503 (Service Unavaiable) - O servidor não pode responder no momento504 – GATEWAY TIMEOUT - A resposta do servidor foi muito longaesgotando o tempo
  36. 36. Principais Atributos de Resposta (response)
  37. 37. Content-Type e Content-LengthContent-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. 38. Content-Encoding e Content-LanguageContent-Encoding indica o tipo de codificação utilizada na resposta. Porexemplo, compress, deflate, gzip, etc.Content-Language indica o tipo de língua utilizada no corpo damensagem. Por exemplo, pt-br, en-us, etc.
  39. 39. LocationO campo de resposta location é utilizado para identificar um novorecurso criado ou para redirecionar o cliente para uma localização(link) diferenteSe o status da resposta for 201 (created) então o servidor estáindicando um novo recursoEntretanto, o status 3xx indica que o servidor está indicando umnovo link para o cliente fazer um redirecionamento
  40. 40. ServerO campo de resposta server contém informações sobre o software usadopelo servidor para manipular as requisições (servidor HTTP)Exemplos de servidores HTTP: Apache HTTP Server Internet Information Services (IIS)
  41. 41. Expires e DateO campo de resposta expires indica explicitamente para o cliente quandoele deve realizar novamente uma requisição para o servidor. Enquantoisto o cliente pode carregar a página da cache, etc. Ex: Expires: Thu, 01 Dec 1994 16:00:00 GMTO campo de propósito geral date indica o dia e a hora que umamensagem foi enviada Ex: Date: Tue, 15 Nov 1994 08:12:31 GMT
  42. 42. Exercício práticoSimular um browser realizando uma requisição HTTP a um servidor WebUtilizar 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. 43. Referências RFCS (Request for Comments) HTTP 1.1http://datatracker.ietf.org/wg/httpbis/ Tutoriais HTTPhttp://pt.kioskea.net/contents/internet/http.php3Baseado no material do Prof Rodrigo Prestes Machado

×