Laboratorio: Captura de pacotes HTTP: mudanças entre as edições
De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar
(30 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 1: | Linha 1: | ||
=Laboratório: Captura de pacotes HTTP= | =Laboratório: Captura de pacotes HTTP= | ||
Fonte: <ref>http://wiki.sj.ifsc.edu.br/wiki/index.php/RED29004-2015-1</ref>. | |||
; | ;Requisitos de software: Este laboratório utiliza a ferramenta de captura de pacotes '''Wireshark'''. | ||
:*Para utilizar o '''Wireshark''' é necessário que o administrador atribua permissão para os usuários normais poderem executá-lo. | |||
: | :*Outra opção é utilizar uma '''máquina virtual''' com a placa de rede configurada em modo '''''bridge''''' e com permissão de administrador e instalar os aplicativos e utilizar o '''Wireshark'''. | ||
:Veja no link '''[[wireshark]]''' as instruções para download e instalação do '''Wireshark''', bem como as instruções para uso do ferramenta. | |||
==Objetivos== | ==Objetivos== | ||
O objetivo deste laboratório é estudar o funcionamento da '''[[Aplicação Web]]''' e explorar o funcionamento do ''' | 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''' e a '''memória ''cache'' do navegador'''<!--, acesso a '''arquivos HTML grandes''' e '''arquivos HTML com objetos incluídos'''-->. | ||
==Pedido e Resposta HTTP== | ==Pedido e Resposta HTTP== | ||
Vamos iniciar a nossa exploração do HTTP baixando um arquivo em HTML | Vamos iniciar a nossa exploração do HTTP baixando um arquivo em HTML simples. | ||
;Procedimentos: | ;Procedimentos: | ||
#Inicie o navegador; | #Verifique com '''ifconfig''' a configuração de sua interface de rede; | ||
#Inicie o Wireshark e | #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 http''', de tal forma que apenas as mensagens HTTP capturadas serão exibidas na janela de listagem de pacotes. ; | |||
#Inicie a captura de pacotes | #Inicie a captura de pacotes | ||
#Digite | #Digite no navegador a URL para acessar o seu servidor Web com a página padrão ou uma página HTML simples; | ||
#Pare a captura de pacotes. | #Pare a captura de pacotes. | ||
Linha 33: | Linha 34: | ||
#Qual o número da porta TCP utilizada no seu computador e pelo servidor? | #Qual o número da porta TCP utilizada no seu computador e pelo servidor? | ||
#Qual o endereço MAC do seu computador? | #Qual o endereço MAC do seu computador? | ||
#Qual o código de ''status'' retornado do servidor para o seu navegador? | #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? | #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? | #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 | A maioria dos navegadores web tem uma '''memória ''cache''''' que permite armazenar as últimas páginas acessadas. Desta forma o navegador 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: | ;Procedimentos: | ||
#Inicie o navegador web; | #Inicie o navegador web; | ||
#Limpe o '''''cache''''' do seu navegador | #Limpe o '''''cache''''' do seu navegador: | ||
#:Firefox: Preferências -> Privacidade e Segurança -> Cookies e Dados de Sites; | |||
#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. ; | #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 | #Digite a uma URL no navegador; | ||
#Visualize os | #Visualize os pacotes capturados; | ||
#Pressione o botão “atualizar” no navegador; | #Pressione o botão “atualizar” no navegador; | ||
#Pare a captura de pacotes. | #Pare a captura de pacotes. | ||
Linha 58: | Linha 59: | ||
#O servidor retornou explicitamente o conteúdo do arquivo? Explique. | #O servidor retornou explicitamente o conteúdo do arquivo? Explique. | ||
#Qual o tamanho da primeira e segunda mensagem de retorno do servidor? | #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? | |||
;Análise dos pacotes TCP capturados: | |||
#Modifique o filtro de análise para visualizar pacotes TCP e porta 80; | |||
#Verifique a abertura de conexão TCP que precedeu a mensagem GET; | |||
#Verifique a transferência do arquivo longo pelo TCP, identificando os segmentos com dados e o número de sequência utilizados; | |||
#Verifique os reconhecimentos dos dados recebidos; | |||
#Verifique o encerramento da conexão TCP. | |||
==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? | |||
===Autenticação HTTP=== | |||
Finalmente, vamos tentar visitar um local na web que é protegido por senha e examinar a seqüência de mensagens HTTP trocadas com este local. O URL http://www.sj.ifsc.edu.br/~odilson/RED29004/Seguro/ é protegido por senha. O usuário é “red29004” (sem as aspas), e a senha é “seguro” (novamente, sem as aspas). Então vamos acessar o local protegido por senha. Faça o seguinte: | |||
#inicie o navegador web; | |||
#limpe o cache do seu navegador; | |||
#inicie o Wireshark; | |||
#digite o URL no navegador http://www.sj.ifsc.edu.br/~odilson/RED29004/Seguro/ seu navegador apresentará um ''pop up'' solicitando usuário e senha; | |||
#forneça usuário e senha e o navegador apresentará uma "linda" página já conhecida; | |||
#pare a captura de pacotes, e digite "http" na caixa de texto de especificação de filtro, para que apenas as mensagens HTTP seja exibidas. | |||
Agora vamos examinar a saída do Wireshark. Você pode querer primeiro ler sobre a autenticação HTTP revisando o material fácil de ler (em inglês) [http://frontier.userland.com/stories/storyReader$2159 HTTP Access Authentication Framework] | |||
Responda às seguintes questões: | |||
#Qual é a resposta do servidor (código de status e frase) para a primeiro mensagem HTTP GET do seu navegador? | |||
#Quando o seu navegador envia a mensagem HTTP GET pela segunda vez, qual o novo campo que está incluído na mensagem? | |||
O nome de usuário (red29004) e a senha (seguro) que você digitou foram codificados na cadeia de caracteres (cmVkMjkwMDQ6c2VndXJv) após o cabeçalho “Authorization: Basic” na mensagem HTTP GET (primeira). Parece que o nome e senha estão criptografados, mas na verdade estão simplesmente codificados em um formato denominado Base64. O nome do usuário e a senha não estão criptografados! Para ver isso, vá para https://www.base64decode.org/ e digite o texto cmVkMjkwMDQ6c2VndXJv e pressione DECODE. Voilá! Você traduziu de Base64 para ASCII, e desta forma consegue ver o nome de usuário e a senha! Sabendo que alguém pode baixar o Wireshark e capturar pacotes (não somente os próprios), e alguém pode traduzir de Base64 para ASCII (você acabou de fazê-lo!), deve estar claro para você que o uso de senhas apenas em locais na web não garantem segurança, a não ser que medidas adicionais sejam tomadas. Não tema! Há meios de fazer o acesso WWW ser mais seguro. Contudo, nós claramente precisamos de algo que vá além do ''framework'' básico de autenticação HTTP! | |||
===HTTPS=== | |||
Para finalizar, vamos capturar sequências de mensagens HTTPS, somente a título de comparação. Execute os seguintes procedimentos: | |||
#inicie o navegador web; | |||
#limpe o cache do seu navegador; | |||
#inicie o Wireshark; | |||
#digite o URL no navegador https://www.base64decode.org/ seu navegador apresentará um site já apresentado/utilizado; | |||
#pare a captura de pacotes e digite "ssl" na caixa de texto de especificação de filtro, para que apenas as mensagens criptografadas sejam exibidas. | |||
Responda: | |||
#Compare a sequência de troca de mensagens (GET e resposta) entre o HTTP (das seções anteriores) com o ssl, existe alguma similaridade? | |||
#Que tipos de campos são mais presentes nesse tipo de mensagens? | |||
#Você consegue identificar o conteúdo de alguma nas mensagens ssl? | |||
--> | |||
====Referências==== | |||
<references /> | |||
---- | ---- | ||
[[Usuário:Evandro.cantu|Evandro.cantu]] ([[Usuário Discussão:Evandro.cantu|discussão]]) 17h40min de 26 de abril de 2021 (-03) | |||
---- | ---- | ||
[[Categoria:Redes de Computadores]] | [[Categoria:Redes de Computadores]] |
Edição atual tal como às 12h23min de 3 de maio de 2021
Laboratório: Captura de pacotes HTTP
Fonte: [1].
- Requisitos de software
- Este laboratório utiliza a ferramenta de captura de pacotes Wireshark.
- Para utilizar o Wireshark é necessário que o administrador atribua permissão para os usuários normais poderem executá-lo.
- Outra opção é utilizar uma máquina virtual com a placa de rede configurada em modo bridge e com permissão de administrador e instalar os aplicativos e utilizar o Wireshark.
- Veja no link wireshark as instruções para download e instalação do Wireshark, bem como as instruções para uso do ferramenta.
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 e a memória cache do navegador.
Pedido e Resposta HTTP
Vamos iniciar a nossa exploração do HTTP baixando um arquivo em HTML simples.
- 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 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 no navegador a URL para acessar o seu servidor Web com a página padrão ou uma página HTML simples;
- 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?
- 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 navegador 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: Preferências -> Privacidade e Segurança -> Cookies e Dados de Sites;
- 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 a uma URL no navegador;
- Visualize os pacotes 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?
Referências
Evandro.cantu (discussão) 17h40min de 26 de abril de 2021 (-03)