Anda di halaman 1dari 21

Conceito de Hipertexto

• Documentos que possuem ligações a outros documentos


• Essas ligações são chamadas hiperligações (hyperlinks)
• Seleccionando uma hiperligação, é carregado o documento
apontado por essa hiperligação

No mesmo computador...

mdfvmdf

eferfeferf
mdfvmdf

eferfeferf

mdfvmdf

eferfeferf

Autores: Alexandre Fonte, Osvaldo Santos, Vasco Soares


Extensão do conceito a redes
• Em 1990 Tim Berners Lee, do CERN, começou a
trabalhar numa arquitectura que suportasse o
conceito de hipertexto entre computadores, através
da Internet Computador #3

Computador #1

Computador #2 mdfvmdf

eferfeferf
mdfvmdf

eferfeferf

mdfvmdf

eferfeferf

Autores: Alexandre Fonte, Osvaldo Santos, Vasco Soares


Foram desenvolvidos...

• HTML - Hypertext Markup Language


– Linguagem de descrição de documentos
– Baseia-se em SGML - Standard Generalized
Markup Language
– Permite a inclusão de hiperligações no
documento

• HTTP - Hypertext Transfer Protocol


– Método de transferir documentos HTML entre
clientes e servidores
– Usa ligações TCP/IP ( tipicamente na porta 80)

Autores: Alexandre Fonte, Osvaldo Santos, Vasco Soares


Versões do HTTP
• HTTP 0.9 (1990)
– Foi o primeiro a ser desenvolvido
– Transferência simples de documentos de texto
– Uma nova sessão TCP para cada documento

• HTTP 1.0 (1992)


– Transfere todo o tipo de documentos: imagem som, vídeo, etc
– Continua a utilizar uma sessão TCP independente para cada
documento

• HTTP 1.1
– Introduz as ligações TCP persistentes
– Similar à versão 1.0, mas com um melhor desempenho,
– A especificação completa do protocolo pode ser consultada em
http://slow1.w3.org/Protocols/rfc2616/rfc2616.txt

Autores: Alexandre Fonte, Osvaldo Santos, Vasco Soares


Identificadores de hiperligações

• URI - Uniform Resource Identifier


– String que identifica um recurso na Internet, através de nome,
localização ou qualquer outra característica
– Os URIs identificam também o tipo de protocolo que deve ser
usado para acesso ao recurso

• URL ( Uniform Resource Locator) HTTP


– “http:” “//” host [ “:port” ] [ path [ “?” query ] ]
– exemplos de URLs:
• http://www.yahoo.com
• http://www.est.ipcb.pt/disciplinas/tecnologiasinternet/default.htm
• http://www.est.ipcb.pt/scripts/pesquisa9.dll?expressao=projecto
• http://www.musica.pirata.pt:46345/mp3/xpto.mp3

Autores: Alexandre Fonte, Osvaldo Santos, Vasco Soares


Mensagens HTTP

Pedido (Request)

Resposta (Response)

Cliente Servidor
HTTP

• Existem dois tipos de mensagens:


– Pedidos: gerados pelos clientes (browsers)
– Respostas: geradas pelo servidor em resposta aos pedidos

• Cada mensagem utiliza métodos e obedece a uma


determinada formatação e suporta cabeçalhos
(headers) específicos
Autores: Alexandre Fonte, Osvaldo Santos, Vasco Soares
Métodos HTTP 1.1
• OPTIONS - solicita ao servidor que responda com as características e opções de transferência
gerais ou de um determinado documento

• GET - solicita ao servidor que envie um determinado documento

• HEAD - similar ao get, mas o servidor envia apenas os cabeçalhos do documento

• POST - solicita ao servidor que aceite dados enviados pelo cliente, destinados a um
determinado processo que os vais processar

• PUT - solicita ao servidor que aceite e armazene dados enviados pelo cliente para um
determinado recurso do servidor

• DELETE - solicita ao servidor que apague um determinado recurso

• TRACE - solicita a um agente remoto que devolva uma cópia do pedido que lá chegou

• CONNECT - método reservado para comunicação específica com proxy servers

Autores: Alexandre Fonte, Osvaldo Santos, Vasco Soares


Formato genérico das mensagens
HTTP-message = Request | Response

generic-message = start-line
*(message-header CRLF)
CRLF
[ message-body ]

start-line = Request-Line | Status-Line

| significa “ou”
CRLF significa mudança de linha, carriage return/line feed
* significa repetição de cabeçalhos n vezes

Autores: Alexandre Fonte, Osvaldo Santos, Vasco Soares


Formato dos pedidos (Request)
Request = Request-Line
*(( general-header | request-header | entity-header ) CRLF)
CRLF
[ message-body ]

Request-Line = Method SP Request-URI SP HTTP-Version CRLF

Method= “OPTIONS” | “GET” | “HEAD” | “POST” | “PUT”


| “DELETE” | “TRACE” | “CONNECT”

• Exemplo:
GET /disciplinas/TecnologiasInternet/projecto.html HTTP/1.1
ACCEPT: text/html

Autores: Alexandre Fonte, Osvaldo Santos, Vasco Soares


Formato das respostas (Response)
Response = Status-Line
* (( general-header | response-header | entity-header )
CRLF)
CRLF
[ message-body ]

Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF

• Exemplo:
HTTP/1.1 200 Document Follows

Autores: Alexandre Fonte, Osvaldo Santos, Vasco Soares


Status-Codes
• 1xx : códigos informativos Exemplos dos códigos mais comuns:

• 2xx: códigos de confirmação 101 - switching protocols


positiva 200 - OK
202 - Accepted
• 3xx: códigos de redireccionamento; 304 - Not modified
alguma acção tem que ser 305 - Use proxy
desenvolvida de modo a completar o
pedido 400 - Bad request
402 - Unauthorized
• 4xx: códigos de erro; o pedido está 403 - Forbidden
mal feito (sintaxe, etc) 404 - Not found
407 - Proxy Authentication Required
• 5xx: códigos de erro; o pedido está 500 - Internal Server Error
correcto mas o servidor falhou

Autores: Alexandre Fonte, Osvaldo Santos, Vasco Soares


Formato das entidades (entity)
Entity-Header = Allow ;métodos válidos associados
| Content-Encoding ;tipo de codificação do documento
| Content-Language ;idioma do documento
| Content-Length ;tamanho do documento em octetos
| Content-Location ;localização principal do documento
| Content-MD5 ;message digest do documento
| Content-Range ;localização parcial deste bloco
| Content-Type ;tipo de documento
| Expires ;data em que o documento expira
| Last-Modified ;data em que o documento foi alterado
Exemplo:
HTTP/1.1 200 Document Follows
Content-Type: text/html
Last-Modified: Wed, 19 Jan 1997 02:45:11 GMT
Content-Length: 2436

Autores: Alexandre Fonte, Osvaldo Santos, Vasco Soares


Exemplo de um pedido/resposta
GET http://www.ua.pt/ HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Pedido User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows NT)
Host: www.ua.pt
Proxy-Connection: Keep-Alive

HTTP/1.1 200 OK
Server: Microsoft-IIS/4.0
Date: Mon, 17 Jan 2000 18:26:10 GMT
Content-Type: text/html
Cache-control: private

Resposta <html>
<head>
<title>Universidade de Aveiro / Aveiro University</title>
<meta http-equiv="refresh" content="300">
</head>
<body bgcolor="#ffffff" text="#003300" link="#008000" vlink="#003300">

Autores: Alexandre Fonte, Osvaldo Santos, Vasco Soares


Caching HTTP

GET projectos.html http/1.1

HTTP/1.1 200 Document Follows

Cliente Servidor HTTP

Projectos.html

Cache

• A função da cache HTTP é permitir a melhoria de desempenho:


– Quando um pedido (request) é feito a um servidor, a resposta (response) a
esse pedido é armazenada em disco (e/ou em memória)
– Posteriormente, se existirem novos pedidos iguais, podem utilizar-se as
respostas armazenadas, melhorando drasticamente o desempenho

Autores: Alexandre Fonte, Osvaldo Santos, Vasco Soares


Caching HTTP
• No entanto, para se poder utilizar este mecanismo o cliente
tem que ter a garantia que as respostas armazenadas em
cache estão dentro do prazo de validade (iguais às
respostas que o servidor daria aos pedidos)

• Como é que o cliente pode saber se o documento em cache


é válido ou não?
● Através da data de validade do documento que o servidor envia no
cabeçalho “Expires”
● Através da recepção do Status-Code “304 - Not Modified”
● Através da comparação do documento em cache com o documento
no servidor
● Através de directivas, usando o cabeçalho “Cache-Control”

Autores: Alexandre Fonte, Osvaldo Santos, Vasco Soares


Cache: cabeçalhos HTTP 1.0
• If-Modified-Since : condiciona o método de acordo com a data de
modificação de um documento (executa o método se foi modificado)

• If-Unmodified-Since : condiciona o método de acordo com a data de


modificação de um documento (executa o método se não foi modificado)

• Last-modified : indica a data e hora da última modificação do documento

• Expires : indica a data a partir da qual o documento deve ser considerado


inválido (uma espécie de prazo de validade)

• Pragma: No-Cache : usado nos pedidos, indica que, mesmo que o


documento em cache seja considerado válido, deve ser descarregada uma
cópia fresca do servidor original

Autores: Alexandre Fonte, Osvaldo Santos, Vasco Soares


Cache: cabeçalhos HTTP 1.1
• Cache-Control
● “no-cache” ; indica que não deve ser armazenado em cache

● “no-store” ; indica que não deve ser armazenado em cache não volátil (disco)

● "max-age" "=" delta-seconds ; indica que o cliente só aceita o documento se


este tiver uma ‘idade’ inferior a um determinado período de tempo

● "max-stale" [ "=" delta-seconds ] ; indica que o cliente aceita documentos já


fora do prazo de validade; opcionalmente o cliente pode definir um período
máximo de tempo após o fim do prazo de validade

● "min-fresh" "=" delta-seconds ; indica que o cliente só aceita o documento se


ele se mantiver ainda válido pelo menos por um determinado período de tempo

● “public” ;indica que pode ser armazenado numa área partilhada

● “private” ;indica que só pode ser consultado por um determinado utilizador

Autores: Alexandre Fonte, Osvaldo Santos, Vasco Soares


Exemplo de funcionamento de cache
• O cliente tem o documento em cache, mas vai perguntar ao
servidor se esse documento foi modificado ou não; se não
foi modificado vai utilizar a cópia em cache; se foi
modificado, o servidor envia-lhe a cópia mais recente do
documento

GET http://www.dn.pt/ http/1.1


If-Modified-Since: Mon, 17 Jan 2000 04:05:05 GMT

HTTP/1.1 304 Not Modified


Date: Mon, 17 Jan 2000 11:11:53 GMT
Content-type: text/html
Content-length: 3485
Last-modified: Mon, 17 Jan 2000 04:05:05 GMT

Autores: Alexandre Fonte, Osvaldo Santos, Vasco Soares


Ligação através de proxies
Proxy
Pedido Pedido

Resposta Resposta

Cliente #1 i do Servidores
Ped s ta
Re s po HTTP

Cliente #n
• O proxy é ao mesmo tempo cliente e servidor HTTP
• A utilização de proxies tem vantagens:
– Melhoria de desempenho: utilização de cache global numa rede
– Melhoria da segurança: controlo de acesso ao nível dos
utilizadores e ao nível de aplicação (controlo de acesso a
determinados sites, etc)
– Isolamento da rede interna de uma organização perante a Internet
(utilização de endereços internos, anonimização, etc)
Autores: Alexandre Fonte, Osvaldo Santos, Vasco Soares
Operação através de proxies: exemplo
Connecting to 10.1.1.2 ...
Connected to 10.1.1.2 [10.1.1.2]

GET http://www.dn.pt:80/ HTTP/1.0


Proxy-Connection: Close
Accept: */*
User-Agent: ESTCB Browser 1.0/3.0

HTTP/1.0 200 OK
Server: Netscape-Enterprise/2.0c
Date: Mon, 17 Jan 2000 11:11:53 GMT
Last-modified: Mon, 17 Jan 2000 04:05:05 GMT
Content-length: 3485
Content-type: text/html

Autores: Alexandre Fonte, Osvaldo Santos, Vasco Soares


Proxies: configuração do browser
Firefox Internet Explorer

Autores: Alexandre Fonte, Osvaldo Santos, Vasco Soares

Anda mungkin juga menyukai