Redes de Computadores
Grupo de Redes de
Computadores
HTTP
HyperText Transport Protocol
Introdução ao protocolo HTTP
 Origem
– Definido na iniciativa da WWW – HTML e HTTP
 Modelo cliente servidor
 Protocolo sem estado
– O servidor não mantém informação sobre os pedidos anteriores dos clientes
 Troca de objectos
– Objecto: ficheiro HTML, imagem (jpeg, gif, etc), applet de Java, ficheiro de
audio ou video, etc
 Formato das mensagens
– Pedidos e respostas
 Ligações HTTP: persistentes e não persistentes
ISEL-ADEETC-GRC
2
URL – Uniform Resource Locator
 Um página web consiste em objectos
 Um URL serve para identificar e localizar um objecto
 Um ficheiro HTML pode incluir vários objectos referenciados
– Cada objecto é identificado por um URL
 Formato
ISEL-ADEETC-GRC
3
Protocolo HTTP
 Protocolo da camada de aplicação utilizado por aplicações Web
 Dois tipos de mensagens: pedido e resposta, no formato ASCII
 Utiliza TCP, porto 80 por omissão
– O cliente abre uma ligação TCP com o servidor, troca mensagens HTTP e fecha
a ligação TCP
 Prevê o uso de Webcaches
 HTTP 0.9 (1991)
 HTTP 1.0 (1996)
– RFC 1945
 HTTP 1.1 (1996)
– RFC 2068
ISEL-ADEETC-GRC
4
Funcionamento
ISEL-ADEETC-GRC
5
Formato das Mensagens – Pedido /Respostas
EID/ISEL-DEETC-GRC/2009
6
Formato de um pedido HTTP
Linha de pedido
(comandos GET, POST,
HEAD, etc)
GET /somedir/page.html HTTP/1.1
Host: www.someschool.edu
User-agent: Mozilla/4.0
Linhas de Connection: close
cabeçalho Accept-language:fr
Carriage return,
(extra carriage return, line feed)
line feed
Indica o fim da mensagem
ISEL-ADEETC-GRC
7
Pedidos HTTP (linha de pedido)
 Pedido simples (HTTP/1.0)
– Method SP Request-URI CRLF
 Pedido completo (HTTP/1.0)
ISEL-ADEETC-GRC
8
Métodos
2068
1945
RFC
Métodos
Acções
GET
Pede um documento/recurso/objecto ao servidor
POST
Envia informação do cliente para o servidor
HEAD
Pede informação sobre um documento mas não o documento em si
OPTIONS
Pede quais as opções disponíveis para um recurso
PUT
Envia um documento/recurso/objecto para o servidor
DELETE
Apagar o documento/recurso/objecto
TRACE
Loop-back do pedido
ISEL-ADEETC-GRC
9
Formato de uma resposta HTTP
Linha de estado
(protocolo,
código de estado,
frase de estado)
Linhas de
cabeçalho
Dados, e.g.
ficheiro HTML
pedido
HTTP/1.1 200 OK
Connection close
Date: Thu, 06 Aug 1998 12:00:15 GMT
Server: Apache/1.3.0 (Unix)
Last-Modified: Mon, 22 Jun 1998 …...
Content-Length: 6821
Content-Type: text/html
data data data data data ...
ISEL-ADEETC-GRC
10
Resposta HTTP
 Resposta simples (HTTP/1.0)
– “sem linha de estado”
 Resposta completa (HTTP/1.1)
ISEL-ADEETC-GRC
Categoria
Descrição
1yz
Informação
2yz
Sucesso
3yz
Redireccionamento
4yz
Erro do cliente
5yz
Erro do servidor
11
Códigos de resposta HTTP (1)
Código
Nome (phrase)
Descrição
Informação
100
Continue
A parte inicial do pedido foi realizada e o cliente pode continuar com o pedido
101
Switching
O servidor vai realizar o pedido do cliente para mudar de protocolos
Sucesso
200
OK
201
Created
Um novo URL foi criado
202
Accepted
O pedido foi aceite, mas não foi imediatamente processado
204
No content
O pedido teve sucesso, o objecto é enviado na mensagem
Processa o pedido, mas não retorna nenhum conteúdo
Redireccionamento
300
Multiple choices
301
Moved permanently
304
Not modified
O URL pedido refere-se a mais do que um recurso
O objecto foi movido, nova localização indicada no cabeçalho location
Indica que o recurso não foi alterado desde o último pedido (uso c/GET condicional)
ISEL-ADEETC-GRC
12
Códigos de resposta HTTP (2)
Código
Nome (phrase)
Descrição
Erro no cliente
400
Bad request
O pedido não pode ser realizado devido a erros de sintaxe
401
Unauthorized
Autenticação falhou ou não foi realizada
403
Forbidden
O pedido está correcto mas o servidor recusa-se a responder
404
Not Found
O objecto pedido não foi encontrado
405
Method not allowed
406
Not acceptable
O método não é suportado para o objecto indicado no pedido
Não consegue gerar uma resposta num formato aceitável pelo cliente
Erro no servidor
500
Internal server error
501
Not implemented
502
Service unavailable
O servidor econtrou um errro não esperado, que o impediu de responder ao pedido
O servidor não suporta a funcionalidade necessária para satisfazer o pedido
O servidor é incapaz de responder ao pedido devida uma sobrecarga ou manutenção
do servidor
ISEL-ADEETC-GRC
13
Cabeçalhos (Header field)
 Servem para transmitir informação adicional
 Existe quatro tipos: gerais (General-Header), de pedido (RequestHeader), de resposta (Response-Header) e relacionado com o
conteúdo (Entity-Header)
 Formato
ISEL-ADEETC-GRC
14
Cabeçalhos generalistas
Header
Description
Cache-control
Specifies information about caching
Connection
Shows whether the connection should be closed or not
Date
Show the current date
MIME-version
Show the MIME version used
Upgrade
Specifies the preferred communication protocol
ISEL-ADEETC-GRC
15
Cabeçalhos para pedidos
Header
Description
Accept
Show the media format the client can accept
Accept-Charset
Show the character set the client can handle
Accept-enconding
Show the encoding scheme the cliente can handle
Accept-language
Show the language the client can accept
Authorization
Show what permissions the client has
From
Show the e-mail address of the user
Host
Show the host and port number of the client
If-modified-since
Send the document if newer than specified date
If-match
Send the document only if matches given tag
If-non-match
Send the document only if it does not match given tag
If-range
Send only the portion of the document that is missing
If-unmodified-since
Send the document if not changed since specified date
Referref
Specifies the URL of the linked document
User-agent
Identifies the client program
ISEL-ADEETC-GRC
16
Cabeçalhos para respostas
Header
Description
Accept-range
Show if server accepts the range requested by client
Age
Show the age of the document
Public
Show the supported list of methods
Retry-after
Specifies the date after which the server is available
Server
Show the server name and version number
ISEL-ADEETC-GRC
17
Cabeçalhos relacionados com o conteúdo
Header
Description
Allow
Lists valid methods that can be used with a URL
Content-encoding
Specifies the encoding scheme
Content-language
Specifies the language
Content-length
Show the length of the document
Content-range
Specifies the range of the document
Content-type
Specifies the media type
Etag
Gives an entity tag
Expires
Gives the date and time when contents may change
Last-modified
Gives the date and time of the last change
Location
Specifies the location of the created or moved document
ISEL-ADEETC-GRC
18
Tipo de ligações de HTTP
 Não persistentes: apenas um objecto pode ser transferido numa ligação
de TCP
– Estabelecimento e fecho de uma ligação de TCP por objecto
 Persistentes: podem ser transferidos vários objectos sobre a mesma
ligação de TCP
– Requisitos de memória e CPU
são menores
– Menor latência
– Usar Connection: Keep-Alive
ISEL-ADEETC-GRC
19
Exemplo GET
ISEL-ADEETC-GRC
20
Exemplo POST
ISEL-ADEETC-GRC
21
Exemplo de um GET
~ # telnet www.net.ipl.pt 80
GET / HTTP/1.1
Host: www.net.ipl.pt
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en,pt;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Cookie: _horde_sidebar_expanded=true; default_imp_view=imp
HTTP/1.x 200 OK
Date: Thu, 11 Sep 2008 16:41:41 GMT
Server: Apache
X-Powered-By: PHP/5.2.6-pl6-gentoo
Set-Cookie: fe_typo_user=3434b4366d; path=/
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=utf-8
(...)
Connection closed by foreign host.
ISEL-ADEETC-GRC
22
Bibliografia
 http://www.w3.org/pub/WWW/Protocols/HTTP/AsImplemented.html Hypertext Transfer Protocol – HTTP V0.9 (1991)
 RFC1945 - Hypertext Transfer Protocol -- HTTP/1.0 (1996)
 RFC2068 - Hypertext Transfer Protocol -- HTTP/1.1 (1997)
 RFC2616 - Hypertext Transfer Protocol -- HTTP/1.1 (1999)
 Forouzan, Behrouz A. TCP/IP Protocol Suite. Boston: McGraw-Hill,
2003. Print
 Slides realizados pelo docente João Viegas e João Ascenso em
03/2012
ISEL-ADEETC-GRC
23
Download

Redes de Computadores