O documento introduz os conceitos básicos sobre redes de computadores e o protocolo HTTP. Apresenta os componentes do serviço web, formatos de mensagens HTTP, métodos HTTP, códigos de status e cabeçalhos de resposta. Discorre sobre caches, autenticação, cookies e HTTPS.
Introdução às redes de computadores e ao serviço WWW
1. Introdução
Redes de Computadores ! Serviço world wide web
Instituto de Informática - UFRGS
! Aplicação cliente-servidor
! Permite a publicação de documentos (servidor) e a recuperação e
HyperText Transfer Protocol visualização de documentos (cliente)
! Protocolo específico para interação cliente-servidor:
! HTTP (Hyper Text Transfer Protocol)
Instituto de Informática - UFRGS
! Protocolo textual para transferir documentos em formato HTML (Hyper
Text Markup Language)
! O cliente se encarrega de interpretar o documento HTML (página) e
A. Carissimi -9-déc.-09
exibir para o usuário
Aula 29
Redes de Computadores 2
Componentes do serviço web Página web
! Documento web
! Composta por uma série de objetos: arquivo base HTML, imagens,
Cliente Servidor applets, clipes de vídeo, etc)
Web HTTP Web ! Èxemplo: página com texto e cinco imagens possui seis objetos
! Acessível através de um URL (Uniforme Resource Locator)
Instituto de Informática - UFRGS
Instituto de Informática - UFRGS
! Nome de um hospedeiro
Cache Documentos
Web ! Caminho para um recurso no sistema de arquivos do hospedeiro
A. Carissimi -9-déc.-09
A. Carissimi -9-déc.-09
http://www.in.ufrgs.br/~asc/redes
Páginas web (HTML)
Redes de Computadores 3 Redes de Computadores 4
2. Cliente Web Servidor web
! Para o usuário, a web é conjunto de páginas ! Cada site web possui um daemon (servidor web)
! Páginas são visualizadas por programas específicos: ! Espera requisições de clientes (conexões TCP)
! Browsers (Netscape, Mozilla, MS Internet Explorer, etc) ! Cliente envia uma requisição ao servidor
! Servidor atende requisição e envia resposta
! Browser normalmente possui internamente vários interpretadores ! Conexão é desfeita*
permitindo a carga e a execução de páginas de diferentes tipos
! Servidor faz o armazenamento dos objetos
Instituto de Informática - UFRGS
Instituto de Informática - UFRGS
! Exemplos: apache, Microsoft Internet Information Server, Netscape Enterprise
server
Protocolo://nome_máquina:porta/recurso ! Interação baseada em dois elementos:
! URL: Uniform Resource Locator
A. Carissimi -9-déc.-09
A. Carissimi -9-déc.-09
http, htpps, ftp, mailto, news, telnet, ldap, file ! HTTP: HyperText Transfer Protocol
Redes de Computadores 5 Redes de Computadores 6
Hyper Text Transfer Protocol (HTTP) Conexões não-persistentes
! Protocolo de aplicação da web ! Usada nas versões 0.9, 1.0 e 1.1
! Define forma como clientes solicitam páginas web aos servidores e ! Uma conexão para cada objeto
como esses as transferem para os clientes ! Cada conexão transporta exatamente uma requisição/resposta
! Cliente abre a conexão, envia a requisição, o servidor envia a resposta e
! Determina apenas como os dados são transferidos: não indica, nem impõem
fecha a conexão (ex: uma página com 5 figuras envolve seis conexões,
tipos de dados e determina nenhum tipo de processamento uma para página e uma para cada figura)
! Browser é que determina como os dados são processados ! Conexões podem ser feitas em paralelo para páginas com mais de um objeto
Instituto de Informática - UFRGS
Instituto de Informática - UFRGS
! Emprega conexões TCP na porta 80 (default) ! Número máximo de conexões é uma configuração do cliente
! Protocolo stateless (sem estado) e orientado a mensagens ! Desvantagens:
! Servidor não mantém nenhuma informação sobre o cliente ! Tempo para estabelecimento
A. Carissimi -9-déc.-09
A. Carissimi -9-déc.-09
! Consumo de recursos do sistema (memória e descritores)
! Possuem três versões: HTTP 0.9, HTTP 1.0 e HTTP 1.1
! Cada conexão sofre o processo de partida lenta (slow start) do TCP
Redes de Computadores 7 Redes de Computadores 8
3. Conexões persistentes Métodos HTTP
! Disponível na versão HTTP/1.1 ! HTTP foi criado para ser genérico
! Uma conexão pode atender várias requisições/respostas ! Tratamento de objetos e definições de métodos para manipulá-los
! A conexão é fechada pelo servidor em resposta a uma requisição de ! Métodos suportados na versão 1.1 (visão do cliente)
encerramento feita pelo cliente ou por time-out ! GET: usado para solicitar a recuperação de um objeto
! Configurado no servidor ! POST: similar ao GET, mas envia informações obtidas por formulários
! Duas versões: ! PUT: solicita gravação de um objeto no servidor
Instituto de Informática - UFRGS
Instituto de Informática - UFRGS
! Sem paralelismo: cliente envia requisição i após ter recebido respostas da ! PATCH: envia lista de modificações a serem feitas em um objeto
requisição i-1 ! HEAD: solicita leitura apenas do cabeçalho da página
! Com paralelismo: envio de várias requisições sem esperar pela resposta ! MOVE, COPY, DELETE, LINK e UNLIK: similares aos comandos de
A. Carissimi -9-déc.-09
A. Carissimi -9-déc.-09
movimentação, cópia, remoção, criação e remoção de aliases em um sistema
de arquivos
! OPTION: consulta propriedades do servidor ou de um objeto
Redes de Computadores 9 Redes de Computadores 10
Formatos da mensagem HTTP Mensagem de requisição
! Dois formatos básicos: ! Linha de requisição possui três campos:
! Requisição e resposta ! Tipo da requisição (métodos)
! Mensagem em ASC II (exceto o corpo da mensagem em alguns casos) ! GET, HEAD, POST, PUT, PATCH, COPY, MOVE, DELETE, LINK,
! Genericamente possuem três seções: UPLINK, OPTION
! Uniform Resource Locator (URL): [protocolo] :// [máquina] : [porta] / [recurso]
! Linha de requisição/status
! Versão HTTP
! Linhas de cabeçalho
Instituto de Informática - UFRGS
Instituto de Informática - UFRGS
! Corpo de entidade ! Linha(s) de cabeçalho
! Conjunto de pares {nome de campo; valor}
! Corpo da entidade
A. Carissimi -9-déc.-09
A. Carissimi -9-déc.-09
! Para métodos como POST que envia parâmetros para um formulário
Redes de Computadores 11 Redes de Computadores 12
4. Cabeçalhos da requisição Mensagem de requisição: formato e exemplo
! Pares nome e valor Requisição
! Indicam ao servidor como realizar a requisição Cabeçalhos
! Exemplos: [nome; valor] GET /somedir/page.html HTTP/1.1
Host: www.someschool.edu
! Host: nome do servidor onde o objeto se encontra ....
Connection: close
! Connection: se servidor deve encerrar ou não a conexão após enviar objeto [nome; valor] User-agent: Mozilla/4.0
Instituto de Informática - UFRGS
Instituto de Informática - UFRGS
! User-agent: tipo do cliente que está fazendo a requisição Accept-language: fr
Linha em branco (CR/LF)
! Accept-language: idioma de preferência do usuário
Corpo
(presente apenas em
A. Carissimi -9-déc.-09
A. Carissimi -9-déc.-09
algumas mensagens)
- Método GET não possui corpo
Mensagem de requisição - Método POST envia aqui as informações
Redes de Computadores 13 Redes de Computadores 14
Mensagem de resposta Códigos de status e cabeçalho de resposta
! Linha de status define: ! Códigos mais comuns ! Cabeçalhos mais comuns
! Versão HTTP ! 200: requisição processada com ! Connection: informa ao cliente se o
sucesso servidor encerrará ou não a conexão
! Código de status
! 301: objeto solicitado foi movido ! Date: hora e data do envio do objeto
! Frase explicativa do código de status ! 400: erro genérico no ! Last-modified: data e hora de
! Linhas de cabeçalho processamento criação ou modificação do objeto
! Conjunto de pares {nome, valor} ! 404: objeto solicitado não existe ! Server: tipo do servidor:
Instituto de Informática - UFRGS
Instituto de Informática - UFRGS
! 505: versão requisitada não é ! Content-lenght: tamanho da
! Corpo da entidade suportada mensagem em bytes
! Objeto solicitado ! Content-type: tipo do objeto que
está sendo enviado
A. Carissimi -9-déc.-09
A. Carissimi -9-déc.-09
Redes de Computadores 15 Redes de Computadores 16
5. Interação usuário/servidor: autenticação
Mensagens de resposta: formato e exemplo
Status
! Mecanismo para identificar usuários
Cabeçalhos ! Exige a definição de um nome de usuário e uma senha
[nome; valor] ! Codificação de status e cabeçalhos específicos para tal
HTTP/1.1 200 OK
... Connection: close
Date: Thu, 06 Aug 1998 12:00:15 GMT
Requisição
[Nome; valor] Server: Apache/1.3.0 (Unix)
Instituto de Informática - UFRGS
Instituto de Informática - UFRGS
Last-Modified: Mon,22 jun 199809:23:24 GMT 401 Authorization Required
Linha em branco (CR/LF) Servidor
Content-Length: 6821 Cliente
Content-Type: text/html Authorization
Corpo
(presente apenas em
A. Carissimi -9-déc.-09
A. Carissimi -9-déc.-09
algumas mensagens) (data data data .... Data data data data)
Mensagem de resposta
Redes de Computadores 17 Redes de Computadores 18
Interação usuário/servidor: cookies Proxy Web
! Armazenam informações dos usuários ! Melhorar o desempenho realizando caching das páginas acessadas
! Usos de cookies ! Segurança
! Identificar usuários sem necessitar nome e senha ! Máquina cliente não é visível do exterior
! Lembrar preferências de um usuário ! Possibilidade de monitorar sites, palavras chaves, etc
! Carrinhos de compras, etc. Proxy
! Problema: usuários nômades (armazenamento é local)
Instituto de Informática - UFRGS
Instituto de Informática - UFRGS
Requisição
Cliente Servidor reponse
Set-cookie: 167843
servidor
... Cliente request
A. Carissimi -9-déc.-09
A. Carissimi -9-déc.-09
Proxy web mais comum é o squid (porta 3128)
Cookie: 1678453
http://www.squid-cache.org
Redes de Computadores 19 Redes de Computadores 20
6. Caches cooperativos GET condicional
! Vantagens do uso de caches: ! Funcionamento baseado na cache cliente
! Redução do tempo de resposta ! Cópia na cache pode estar desatualizada
! Redução do tráfego no enlace instituição-Internet (economia largura de banda) ! Emprega cabeçalho If-modified-since
! Infra-estrutura para distribuição de conteúdo para servidores e organizações
de “baixo-custo”
! Idéia é ao invés de repassar a consulta para o servidor web “origem” GET
Instituto de Informática - UFRGS
Instituto de Informática - UFRGS
Cliente Servidor
repassar a um outro cache Last-Modified: data
! Organização de forma hierárquica (normalmente em backbones) ...
! Protocolo específico: ICP (Internet Caching Protocol) GET If-Modified-Since: data
A. Carissimi -9-déc.-09
A. Carissimi -9-déc.-09
HTTP/1.0 304 Not Modified
Redes de Computadores 21 Redes de Computadores 22
Hyper Text Transfer Protocol over SSL (HTTPS) Exemplos reais de http
! Protocolo de aplicação da web que utiliza criptografia ! Uma sessão de consulta a uma página web composta por um
! Garante privacidade (criptografia) conjunto de objetos (com paralelismo e não persistente)
! Sessão exemplo 1 http ethereal
! Garante a identidade das partes envolvidas em uma transferência
! Porta 443/TCP ! Uma sessão de consulta a uma página web com https
! Sessão exemplo 2 https
Instituto de Informática - UFRGS
Instituto de Informática - UFRGS
https://nome_máquina/recurso
A. Carissimi -9-déc.-09
A. Carissimi -9-déc.-09
Redes de Computadores 23 Redes de Computadores 24
7. Leituras complementares
! Tanenbaum, A. Redes de Computadores (4a edição), Campus 2003.
! Capítulo 7, seção 7.3.4
! Carissimi, A.; Rochol, J; Granville, L.Z; Redes de Computadores.
Série Livros Didáticos. Bookman 2009.
! Capítulo 7, seção 7.3
Instituto de Informática - UFRGS
A. Carissimi -9-déc.-09
Redes de Computadores 25