Roteiro 1: Protocolo HTTP (parte 1)
Objetivos:
•
•
•
Detalhar as características do protocolo HTTP;
Detalhar o funcionamento do protocolo HTTP;
Configurar aplicações com uso dos serviços HTTP e HTTPS;
Ferramentas necessárias
Vmware server, Wireshark, Windows XP, MS IIS, Httperf, Navegadores web
Introdução
HTT significa Protocolo de transferência de Hipertexto (Hypertext transfer Protocol) e é um protocolo da camada de aplicação
da web (figura 1), ele é implementado em dois programas: um programa cliente e um programa servidor. Os dois programas,
executados em sistemas finais diferentes, conversam um com o outro por meio da troca de mensagens. O HTTP define como
clientes Web requisitam páginas aos servidores e como eles as transferem a clientes.
Figura 1 - camadas tcp-ip
Para o transporte de informações, o HTTP usa o TCP. Primeiramente o cliente HTTP inicia uma conexão TCP com o servidor.
Uma vez estabelecida a conexão, os processos de browser e servidor acessam o TCP por meio de suas interfaces sockets
(portas de comunicação entre as partes cliente e servidor da comunicação).
O formato de uma mensagem HTTP é definido de acordo com as especificações do HTTP [RFC2616] e é composto por uma
mensagem HTTP de requisição e outra de resposta, descrito na tabela 1.
Exemplo de mensagem HTTP de requisição:
Exemplo de mensagem HTTP de requisição
GET /algum diretório/pagina.html HTTP/1.1
Host: www.algumacoisa.com
Connection: close
User-agent: Mozzilla/4.0
Accept-language: em
Tabela 1 - Exemplo de mensagem de requisição HTTP
A mensagem HTTP é escrita em texto ASCII, geralmente composta por 5 linhas. A primeira linha é chamada de linha de
requisição composta pelos campos de método, URL e versão do HTTP e as demais são denominadas linhas de cabeçalho,
composta pelo Host, o Hospedeiro, o tipo de conexão, o agente de usuário (navegador que fez a requisição) e a linguagem a
qual é solicitada a requisição. Uma mensagem de requisição pode conter bem mais campos do que os demonstrados no
exemplo, porém seguem sempre o padrão demonstrado a seguir na tabela 2.
4
Tabela 2 - Formato geral de mensagem de requisição HTTP
Ao final do formato geral existe um outro campo não comentado chamado de campo de entidade (Entity Body). Este campo é
reservado para uso de envio de informações de formulário através de páginas web.
A mensagem de resposta HTTP geralmente é a resposta a uma requisição, a seguir um exemplo de resposta para a
mensagem de requisição no exemplo de tabela 3:
Exemplo de mensagem de resposta:
Exemplo de mensagem HTTP de resposta
HTTP/1.1 200 Ok
Connection: close
Date: Sat. 06 Fev 2012 18:40:20 GMT
Server: Apache/1.3.0 (Unix)
Last-modified: Sun, 12 jun 2010 11:22:15 GMT
Content-length: 6690
Content-type: text/html
(data data data data ...)
Tabela 3 - Exemplo de mensagem de resposta HTTP
A mensagem de resposta demonstrada na tabela 3 possui 3 seções: uma linha de estado, seis linhas de cabeçalho e em
seguida um corpo de identidade.
Na linha de estado existem 3 campos: campo de versão de protocolo, código de estado e uma mensagem de estado
correspondente, no exemplo está se utilizando o HTTP/1.1 e que está tudo ok (o servidor encontrou e está enviando o objeto
solicitado).
Nas linhas de cabeçalho o servidor utiliza as linhas de cabeçalho:
Connection: close, informando ao cliente que fechará a conexão TCP após enviar a mensagem.
Date: indicando a hora e data em que a resposta HTTP foi criada e enviada pelo servidor.
Server: mostrando que a mensagem foi gerada por um servidor Web Apache em comparação na requisição com a linha UserAgent
Last-Modified:, indica a data e a hora em que o objeto foi criado ou sofreu a última modificação.
Content-length: indica o número de bytes do objeto que está sendo enviado.
Content-type: mostra que o objeto presente no corpo da mensagem é um texto HTML. Este é responsável por identificar ao
servidor que tipo de documento está-se abrindo atualmente.
O formato geral de uma mensagem de resposta é descrito pela figura 2.
5
Figura 2 - formato geral da mensagem HTTP de resposta
Tanto o o browser quanto o servidor gerarão as linhas de cabeçalhos em função de suas versões e seus tipos. Por exemplo, se
um browser for do tipo HTTP/1.0 ele não gerará linhas de cabeçalho 1.1.
Tarefas:
1.
Instalar
o
MS
IIS
(Internet
Information
Server)
e
o
IIS6
Resource
Kit,
disponível
em,
http://192.168.200.3/andre/redes/redes-III/iis60rkt.exe na máquina virtual Windows XP.
2.
3.
4.
Criar um diretório virtual senac no IIS apontando para o diretório c:\senac na máquina virtual (Painel de
Controle->Ferramentas Administrativas->Internet Information Services).
a.
Criar o subdiretório c:\senac\restrito.
b.
Habilitar o HTTPS no servidor. Para isto, deve ser utilizada a ferramenta selfssl disponível no IIS6 Resource
Kit.
c.
Modificar o arquivo padrão para index.html no diretório virtual senac
d.
Ativar a autenticação de usuário no diretório restrito.
e.
Modificar as páginas de erros 403, 401 e 404 que deverão conter imagens. Em c:\windows\help\iishelp
podem ser encontrados as páginas de erro padrão para serem editadas.
f.
Trocar a porta de escuta 80 do servidor, para a porta 8900.
g.
Criar um diretório virtual meudrivec apontando para c:\ e habilitar a visualização de arquivos do diretório.
h.
Utilizar a ferramenta de análise de logs Deep Log Analyzer (http://192.168.200.3/andre/redes/redes-III/dlafree.exe)
para gerar relatórios de acesso do servidor. Os arquivos de logs estão disponíveis em
c:\windows\system32\logfiles\W3SVC
Na máquina virtual WindowsXP, instalar os seguintes navegadores:
a.
Mosaic – Disponível em: http://192.168.200.3/andre/redes/redes-III/navegadores/ncsamosaicv1_0.zip
b.
SpyGlass (precursor do IE) - Disponível em: http://192.168.200.3/andre/redes/redesIII/navegadores/sm211_5.zip
c.
Netscape Navigator - Disponível em: http://192.168.200.3/andre/redes/redes-III/navegadores/n32e407.exe
d.
Amaya - Disponível em: http://192.168.200.3/andre/redes/redes-III/navegadores/amaya-WinXP-11.3.1.exe
e.
Google Chrome - Disponível em: http://192.168.200.3/andre/redes/redes-III/navegadores/ChromeSetup.exe
f.
Apple Safari - Disponível em: http://192.168.200.3/andre/redes/redes-III/navegadores/SafariSetup.exe
g.
Opera - Disponível em: http://192.168.200.3/andre/redes/redes-III/navegadores/Opera_951_in_Setup.exe
h.
SeaMonkey - Disponível em: http://192.168.200.3/andre/redes/redes-III/navegadores/SeaMonkey
Setup2.0.7.exe
Acessar o servidor IIS do colega com cada um dos navegadores e utilizar a ferramenta Wireshark para capturar
os cabeçalhos com a descrição de cada agente (browser). Gerar imagens com os cabeçalhos de cada browser.
a.
Acessar com os navegadores Mosaic, SpyGlass e Netscape Navigator os sites http://www.terra.com.br,
http://www.microsoft.com, http://www.google.com e http://192.168.200.3/ e http://192.168.200.3/wiki/
b.
Utilizar o cliente de HTTP wget, disponível em http://192.168.200.3/andre/redes/redes-III/navegadores/wget.exe
para acessar os mesmos sites da tarefa anterior. Descrever o resultado obtido capturando pelo menos 3
acessos de sites utilizando o wireshark.
6
5.
6.
c.
Comente a respeito dos resultados obtidos utilizando um navegador e um cliente de HTTP para acesso a
estes sites.
d.
Apontar os principais avanços da tecnologia de navegadores, comparando Mosaic e o Opera Browser.
Descrever para cada navegador utilizado as seguintes questões:
a.
Quais navegadores utilizam HTTP 1.0 e HTTP1.1?
b.
Qual a versão HTTP dos servidores que foram acessados?
c.
Qual o código de STATUS retornado do servidor para o navegador ao acessar as páginas?
d.
Escolha uma das páginas acessadas e indique a linha onde é referida a data de modificação de um dos
documentos web que foi recuperado.
Pesquise o que significa um GET CONDICIONAL. Escreva a resposta em apenas um parágrafo e com as suas
palavras.
Referências:
Material disponibilizado em aula
“Redes de computadores e a Internet”, Kurose e Ross, 5ª Edição.
“Utilizando o wget no Windows” disponível em - http://www2.explorando.com.br/2007/09/como-baixar-sites-inteiros-com-o-wget
“MS IIS” Disponível em - http://www.iis.net/
DEEP LOG ANALYZER. Disponível em - http://www.deep-software.com/
7
Download

Roteiro 1: Protocolo HTTP (parte 1)