Laboratorio: Captura de pacotes HTTP
Laboratório: Captura de pacotes HTTP
Fonte: [1].
- Para este laboratório será utilizado a ferramenta de captura de pacotes wireshark
- Veja no link as instruções para download e instalação do wireshark, bem como as instruções para uso do ferramenta.
- O laboratório deve ser realizado em uma máquina virtual, em virtude da necessidade de conta de administrador para instalar os aplicativos e utilizar o wireshark.
Objetivos
O objetivo deste laboratório é estudar o funcionamento da Aplicação Web e explorar o funcionamento do protocolo HTTP, incluindo as mensagens de pedido e resposta, memória cache do navegador, acesso a arquivos HTML grandes e arquivos HTML com objetos incluídos.
Pedido e Resposta HTTP
Vamos iniciar a nossa exploração do HTTP baixando um arquivo em HTML pequeno, sem objetos incluídos.
- Procedimentos
- Verifique com ifconfig a configuração de sua interface de rede;
- Inicie o navegador Firefox e não abra nenhuma página Web;
- Inicie o Wireshark, em seguida selecione a placa de rede e nas opções de captura selecione o filtro tcp port http, de tal forma que apenas as mensagens HTTP capturadas serão exibidas na janela de listagem de pacotes. ;
- Inicie a captura de pacotes
- Digite o seguinte URL no navegador http:200.17.101.9/redes/redes1.html;
- Pare a captura de pacotes.
- Análise dos pacotes capturados
- Verifique a mensagem GET (enviada pelo seu navegador para o servidor) e a mensagem de resposta do servidor para o seu navegador;
- Verifique os detalhes da mensagem GET;
- Verifique o encapsulamento dos protocolos, com a mensagem HTTP sendo transportada em um segmento TCP, que é carregado em um datagrama IP, que por sua vez é levado em um quadro Ethernet.
- Perguntas
- O seu navegador executa HTTP 1.0 ou 1.1?
- Qual a versão de HTTP do servidor?
- Quais idiomas o seu navegador indica que pode aceitar ao servidor?
- Qual o endereço IP do seu computador e do servidor?
- Qual o número da porta TCP utilizada no seu computador e pelo servidor?
- Qual o endereço MAC do seu computador?
- É possível veridficar o MAC do servidor?
- Qual o código de status retornado do servidor para o seu navegador?
- Quando o arquivo em HTML que você baixou foi modificado no servidor pela última vez?
- Quantos bytes de conteúdo são baixados pelo seu navegador?
Pedido HTTP GET Condicional e Resposta
A maioria dos navegadores web tem uma memória cache que permite armazenar as últimas páginas acessadas. Desta forma o nagegador realiza um GET condicional quando busca um objeto HTTP a fim de verificar se o objeto em cache é o mesmo que está sendo provido pelo servidor.
- Procedimentos
- Inicie o navegador web;
- Limpe o cache do seu navegador (Firefox: Editar -> Preferências -> Avançado -> rede);
- Inicie o Wireshark e selelcione o filtro http, de tal forma que apenas as mensagens HTTP capturadas serão exibidas na janela de listagem de pacotes. ;
- Digite o seguinte URL no navegador http:200.17.101.9/redes/redes1.html;
- Visualize os pacores capturados;
- Pressione o botão “atualizar” no navegador;
- Pare a captura de pacotes.
- Perguntas
- Inspecione o conteúdo da primeira mensagem HTTP GET do seu navegador para o servidor. Você vê uma linha If-Modified-Since?
- Inspecione o conteúdo da resposta do servidor. O servidor retornou explicitamente o conteúdo do arquivo? Como você pode dizer isso?
- Agora inspecione o conteúdo da segunda mensagem HTTP GET do seu navegador para o servidor. Você vê uma linha If-Modified-Since? Caso a resposta seja afirmativa, qual informação segue o cabeçalho If-Modified-Since?
- Qual é o código de status e a frase retornada do servidor na resposta à segunda mensagem HTTP GET? É diferente do código de retorno da primeira mensagem?
- O servidor retornou explicitamente o conteúdo do arquivo? Explique.
- Qual o tamanho da primeira e segunda mensagem de retorno do servidor?
Baixando Documentos Longos
Nos exemplos até agora, os documentos baixados foram simples e pequenos arquivos em HTML. Vamos ver o que acontece quando baixamos um arquivo em HTML grande.
- Procedimentos
- Inicie o navegador web;
- Limpe o cache do seu navegador;
- Inicie o Wireshark;
- Digite o seguinte URL no navegador http:200.17.101.9/redes/redes2.html;
- Atualize a página no navegador;
- Pare a captura de pacotes e selecione o filtro http para que apenas as mensagens HTTP seja exibidas.
- Análise dos pacotes capturados
- Verifique a primeira mensagem GET e a resposta do servidor;
- Verifique a carga útil (Content-Length) da resposta HTTP, que é o arquivo HTML completo;
- Verifique que o arquivo HTML é muito grande para caber em um segmento TCP, por isto, a mesma é acomodada em vários segmentos TCP. Note que cada segmento TCP é capturado em um pacote separado pelo Wireshark, veja Reassembled TCP Segments.
- Verifique a segunda mensagem GET e a resposta do servidor.
- Perguntas
- Quantas mensagens HTTP GET foram enviadas pelo seu navegador?
- Quantos segmentos TCP foram necessários para carregar a resposta?
- Qual é o código de status e a frase associada com a resposta à mensagem HTTP GET?
- No segundo GET realizado, quantos segmentos TCP foram necessários para obtenção da resposta do servidor?
- O que explica a diferença entre a primeira e segunda requisições?
Documentos HTML com Objetos Incluídos
Vamos observar o que acontece quando o seu navegador baixa um arquivo com objetos incluídos, como por exemplo, uma figura.
- Procedimentos
- Inicie o navegador web;
- Limpe o cache do seu navegador;
- Inicie o Wireshark;
- Digite o seguinte URL no navegador http:200.17.101.9/redes/redes3.html;
- Pare a captura de pacotes e selecione o filtro http para que apenas as mensagens HTTP seja exibidas.
- Perguntas
- Quantas mensagens HTTP GET foram enviadas pelo seu navegador? Explique.
- Veja como cada figura foi transportada nos segmentos TCP. Houve fragmentação?
Tarefa
Construa um relatório sobre o funcionamento do protocolo HTTP, tendo como base as capturas de pacotes realizadas. O relatório pode ser realizado em duplas e deve incluir:
- As capturas de pacotes realizadas;
- As respostas para as questões solicitadas.
Referências
--Evandro.cantu (discussão) 16h36min de 23 de abril de 2015 (BRT)