Prévia do material em texto
<p>Laboratório Wireshark:</p><p>TCP v8.1</p><p>Suplemento para redes de computadores: uma</p><p>abordagem de cima para baixo, 8ª ed ., JF Kurose e</p><p>KW Ross</p><p>“Diga-me e eu esqueço. Mostre-me e eu me lembrarei.</p><p>Envolva-me e eu entenderei.” Provérbio chinês</p><p>© 2005-2021, JF Kurose e KW Ross, Todos os direitos</p><p>reservados</p><p>Neste laboratório, investigaremos detalhadamente o comportamento do famoso protocolo</p><p>TCP. Faremos isso analisando um rastreamento dos segmentos TCP enviados e recebidos</p><p>na transferência de um arquivo de 150 KB (contendo o texto de Alice no País das</p><p>Maravilhas, de Lewis Carrol ) do seu computador para um servidor remoto. Estudaremos</p><p>o uso de números de sequência e de confirmação pelo TCP para fornecer transferência</p><p>confiável de dados; veremos o algoritmo de controle de congestionamento do TCP –</p><p>início lento e prevenção de congestionamento – em ação; e veremos o mecanismo de</p><p>controle de fluxo anunciado pelo receptor do TCP. Também consideraremos brevemente</p><p>a configuração da conexão TCP e investigaremos o desempenho (taxa de transferência e</p><p>tempo de ida e volta) da conexão TCP entre o seu computador e o servidor.</p><p>Antes de iniciar este laboratório, você provavelmente desejará revisar as seções 3.5 e 3.7</p><p>do texto 1.</p><p>1. Capturando uma transferência TCP em massa do seu computador</p><p>para um servidor remoto</p><p>Antes de iniciar nossa exploração do TCP, precisaremos usar o Wireshark para obter um</p><p>rastreamento de pacote da transferência TCP de um arquivo do seu computador para um</p><p>servidor remoto. Você fará isso acessando uma página da Web que permitirá inserir o</p><p>nome de um arquivo armazenado em seu computador (que contém o texto ASCII de</p><p>Alice no País das Maravilhas ) e, em seguida, transferir o arquivo para um servidor Web</p><p>usando o protocolo HTTP POST. método (ver seção 2.2.3 no texto). Estamos usando o</p><p>1As referências às figuras e seções referem-se à 8ª edição do nosso texto, Computer Networks, A Top-down</p><p>Approach, 8ª ed ., JF Kurose e KW Ross, Addison-Wesley/Pearson, 2020. Nosso site para este livro é</p><p>http ://gaia.cs.umass.edu/kurose_ross Você encontrará muito material aberto interessante lá.</p><p>http://gaia.cs.umass.edu/kurose_ross</p><p>método POST em vez do método GET, pois gostaríamos de transferir uma grande</p><p>quantidade de dados do seu computador para outro computador. Claro, estaremos</p><p>executando o Wireshark durante esse período para obter o rastreamento dos segmentos</p><p>TCP enviados e recebidos do seu computador.</p><p>Faça o seguinte:</p><p> Inicie seu navegador da web. Acesse</p><p>http://gaia.cs.umass.edu/wireshark-labs/alice.txt e recupere uma cópia ASCII de</p><p>Alice no País das Maravilhas. Armazene-o como um arquivo .txt em algum lugar</p><p>do seu computador.</p><p> Em seguida, vá para http://gaia.cs.umass.edu/wireshark-labs/TCP-wireshark-</p><p>file1.html .</p><p> Você deverá ver uma tela semelhante à Figura 1.</p><p>Figura 1: Página para fazer upload do arquivo alice.txt do seu computador</p><p>para gaia.cs.umass.edu</p><p> Use o botão Procurar neste formulário para o arquivo em seu computador que</p><p>você acabou de criar contendo Alice no País das Maravilhas . Não pressione o</p><p>botão “ Carregar arquivo alice.txt ” ainda.</p><p> Agora inicie o Wireshark e comece a captura de pacotes (consulte os laboratórios</p><p>anteriores do Wireshark se precisar de uma atualização sobre como fazer isso).</p><p> Voltando ao seu navegador, pressione o botão “ Carregar arquivo alice.txt ” para</p><p>fazer upload do arquivo para o servidor gaia.cs.umass.edu. Assim que o arquivo</p><p>for carregado, uma breve mensagem de parabéns será exibida na janela do seu</p><p>navegador.</p><p> Pare a captura de pacotes do Wireshark. A janela do Wireshark deve ser</p><p>semelhante à janela mostrada na Figura 2.</p><p>http://gaia.cs.umass.edu/wireshark-labs/TCP-wireshark-file1.html</p><p>http://gaia.cs.umass.edu/wireshark-labs/TCP-wireshark-file1.html</p><p>http://gaia.cs.umass.edu/wireshark-labs/alice.txt</p><p>Figura 2: Sucesso! Você carregou um arquivo em gaia.cs.umass.edu e</p><p>esperançosamente capturou um rastreamento de pacote do Wireshark ao</p><p>fazer isso.</p><p>Se você não conseguir executar o Wireshark em uma conexão de rede ativa, você pode</p><p>baixar um rastreamento de pacote que foi capturado seguindo as etapas acima em um dos</p><p>computadores do autor. 2. Além disso, você pode achar valioso baixar esse rastreamento,</p><p>mesmo que tenha capturado seu próprio rastreamento e usado-o, bem como seu próprio</p><p>rastreamento, ao explorar as questões abaixo.</p><p>2. Uma primeira olhada no traço capturado</p><p>Antes de analisar detalhadamente o comportamento da conexão TCP, vamos dar uma</p><p>visão geral do rastreamento.</p><p>Vamos começar examinando a mensagem HTTP POST que carregou o arquivo alice.txt</p><p>para gaia.cs.umass.edu do seu computador. Encontre esse arquivo em seu rastreamento</p><p>do Wireshark e expanda a mensagem HTTP para que possamos dar uma olhada na</p><p>mensagem HTTP POST com mais cuidado. A tela do Wireshark deve ser semelhante à</p><p>Figura 3.</p><p>2Você pode baixar o arquivo zip http://gaia.cs.umass.edu/wireshark-labs/wireshark-traces-8.1.zip e extrair o</p><p>arquivo de rastreamento tcp-wireshark-trace1-1 . Este arquivo de rastreamento pode ser usado para</p><p>responder a este laboratório do Wireshark sem realmente capturar pacotes por conta própria. Este</p><p>rastreamento foi feito usando o Wireshark rodando em um dos computadores do autor, executando as</p><p>etapas indicadas neste laboratório do Wireshark. Depois de baixar um arquivo de rastreamento, você pode</p><p>carregá-lo no Wireshark e visualizar o rastreamento usando o menu suspenso Arquivo , escolhendo Abrir e</p><p>selecionando o nome do arquivo de rastreamento.</p><p>http://gaia.cs.umass.edu/wireshark-labs/wireshark-traces-8.1.zip</p><p>Figura 3: expandindo a mensagem HTTP POST que carregou alice.txt do seu computador</p><p>para gaia.cs.umass.edu</p><p>Há algumas coisas a serem observadas aqui:</p><p> O corpo da mensagem HTTP POST da camada de aplicação contém o conteúdo</p><p>do arquivo alice.txt, que é um arquivo grande com mais de 152 K bytes. OK – não</p><p>é tão grande, mas será muito grande para que esta mensagem HTTP POST esteja</p><p>contida em apenas um segmento TCP!</p><p> Na verdade, conforme mostrado na janela do Wireshark na Figura 3, vemos que a</p><p>mensagem HTTP POST foi espalhada por 106 segmentos TCP. Isso é mostrado</p><p>onde a seta vermelha é colocada na Figura 3 [Além disso: o Wireshark não tem</p><p>uma seta vermelha como essa; nós o adicionamos à figura para ser útil ]. Se</p><p>você olhar com ainda mais cuidado, verá que o Wireshark também está sendo</p><p>muito útil para você, informando que o primeiro segmento TCP que contém o</p><p>início da mensagem POST é o pacote nº 4 no rastreamento específico do exemplo</p><p>da Figura 3 , que é o rastreamento tcp-wireshark-trace1-1 observado na nota de</p><p>rodapé 2. O segundo segmento TCP contendo a mensagem POST no pacote nº 5</p><p>no rastreamento e assim por diante.</p><p>Vamos agora “colocar a mão na massa” examinando alguns segmentos TCP.</p><p> Primeiro, filtre os pacotes exibidos na janela do Wireshark digitando “tcp”</p><p>(minúsculas, sem aspas, e não se esqueça de pressionar Enter após inserir!) na</p><p>janela de especificação do filtro de exibição na parte superior da janela do</p><p>Wireshark. A tela do Wireshark deve ser semelhante à Figura 4. Na Figura 4,</p><p>observamos o segmento TCP que tem seu bit SYN definido – esta é a primeira</p><p>mensagem TCP no handshake de três vias que configura a conexão TCP com</p><p>gaia.cs .umass.edu que eventualmente carregará a mensagem HTTP POST e o</p><p>arquivo alice.txt. Também notamos o segmento SYNACK (a segunda etapa no</p><p>handshake triplo TCP), bem como o segmento TCP (pacote nº 4, conforme</p><p>discutido acima) que carrega a mensagem POST e o início do arquivo alice.txt. É</p><p>claro que, se você estiver usando seu próprio arquivo de rastreamento, os números</p><p>dos pacotes serão diferentes, mas você deverá ver um comportamento semelhante</p><p>ao mostrado nas Figuras 3 e 4.</p><p>Figura 4: Segmentos TCP envolvidos no envio da mensagem HTTP POST (incluindo o</p><p>arquivo alice.txt) para gaia.cs.umass.edu</p><p>Responda às perguntas a seguir 3, a partir de seu próprio rastreamento ao vivo ou abrindo</p><p>o arquivo de pacote capturado pelo Wireshark tcp-wireshark-trace1-1</p><p>em</p><p>http://gaia.cs.umass.edu/wireshark-labs/wireshark-traces-8.1. zip</p><p>3Para a aula do autor, ao responder às seguintes perguntas com tarefas entregues, os alunos às vezes</p><p>precisam imprimir pacotes específicos (veja o laboratório introdutório do Wireshark para uma explicação</p><p>de como fazer isso) e indicar onde no pacote eles encontraram o informações que respondem a uma</p><p>pergunta. Eles fazem isso marcando as cópias em papel com uma caneta ou anotando as cópias eletrônicas</p><p>com texto em fonte colorida. Existem também módulos de sistema de gerenciamento de aprendizagem</p><p>(LMS) para professores que permitem aos alunos responder a essas perguntas on-line e ter respostas</p><p>avaliadas automaticamente para esses laboratórios Wireshark em</p><p>http://gaia.cs.umass.edu/kurose_ross/lms.htm</p><p>http://gaia.cs.umass.edu/wireshark-labs/wireshark-traces-8.1.zip</p><p>http://gaia.cs.umass.edu/kurose_ross/lms.htm</p><p>1. Qual é o endereço IP e o número da porta TCP usados pelo computador cliente</p><p>(fonte) que está transferindo o arquivo alice.txt para gaia.cs.umass.edu? Para</p><p>responder a esta pergunta, provavelmente é mais fácil selecionar uma mensagem</p><p>HTTP e explorar os detalhes do pacote TCP usado para transportar esta</p><p>mensagem HTTP, usando a “janela de detalhes do cabeçalho do pacote</p><p>selecionado” (consulte a Figura 2 na seção “Introdução ao Wireshark” Lab se</p><p>você não tiver certeza sobre as janelas do Wireshark).</p><p>2. Qual é o endereço IP de gaia.cs.umass.edu? Em qual número de porta ele está</p><p>enviando e recebendo segmentos TCP para esta conexão?</p><p>Como este laboratório é sobre TCP e não sobre HTTP, agora altere a janela “listagem de</p><p>pacotes capturados” do Wireshark para que ela mostre informações sobre os segmentos</p><p>TCP que contêm as mensagens HTTP, em vez de sobre as mensagens HTTP, como na</p><p>Figura 4 acima. Isto é o que procuramos – uma série de segmentos TCP enviados entre o</p><p>seu computador e gaia.cs.umass.edu!</p><p>3. Fundamentos do TCP</p><p>Responda às seguintes perguntas para os segmentos TCP:</p><p>3. Qual é o número de sequência do segmento TCP SYN usado para iniciar a</p><p>conexão TCP entre o computador cliente e gaia.cs.umass.edu? (Nota: este é o</p><p>número de sequência “bruto” transportado no próprio segmento TCP; NÃO é o</p><p>número do pacote na coluna “Não.” na janela do Wireshark. Lembre-se de que</p><p>não existe “número de pacote” no TCP ou UDP; como você sabe, existem</p><p>números de sequência no TCP e é isso que buscamos aqui. Observe também que</p><p>este não é o número de sequência relativo em relação ao número de sequência</p><p>inicial desta sessão TCP. O que há neste segmento TCP que identifica o segmento</p><p>como um segmento SYN? O receptor TCP nesta sessão será capaz de usar</p><p>Reconhecimentos Seletivos (permitindo que o TCP funcione um pouco mais</p><p>como um receptor de “repetição seletiva”, consulte a seção 3.4.5 no texto)?</p><p>4. Qual é o número de sequência do segmento SYNACK enviado por</p><p>gaia.cs.umass.edu ao computador cliente em resposta ao SYN? O que há no</p><p>segmento que identifica o segmento como um segmento SYNACK? Qual é o</p><p>valor do campo Acknowledgment no segmento SYNACK? Como</p><p>gaia.cs.umass.edu determinou esse valor?</p><p>5. Qual é o número de sequência do segmento TCP que contém o cabeçalho do</p><p>comando HTTP POST? Observe que para encontrar o cabeçalho da mensagem</p><p>POST, você precisará pesquisar no campo de conteúdo do pacote na parte inferior</p><p>da janela do Wireshark, procurando por um segmento com o texto ASCII</p><p>“POST” dentro do campo DATA 4, 5. Quantos bytes de dados estão contidos no</p><p>4 Dica: este segmento TCP é enviado pelo cliente logo (mas nem sempre imediatamente) após o segmento</p><p>SYNACK ser recebido do servidor.</p><p>5Observe que se você filtrar para mostrar apenas mensagens “http”, você verá que o segmento TCP que o</p><p>Wireshark associa à mensagem HTTP POST é o último segmento TCP na conexão (que contém o texto no</p><p>final de alice.txt: “THE END”) e não o primeiro segmento de transporte de dados na conexão. Os alunos (e</p><p>professores!) muitas vezes acham isso inesperado e/ou confuso.</p><p>campo de carga útil (dados) deste segmento TCP? Todos os dados do arquivo</p><p>transferido alice.txt cabem neste único segmento?</p><p>6. Considere o segmento TCP contendo o “POST” HTTP como o primeiro segmento</p><p>na parte de transferência de dados da conexão TCP.</p><p> A que horas foi enviado o primeiro segmento (aquele que contém o HTTP</p><p>POST) na parte de transferência de dados da conexão TCP?</p><p> A que horas foi recebido o ACK para este primeiro segmento contendo dados?</p><p> Qual é o RTT para este primeiro segmento que contém dados?</p><p> Qual é o valor RTT do segundo segmento TCP transportador de dados e seu</p><p>ACK?</p><p> Qual é o valor EstimatedRTT (ver Seção 3.5.3, no texto) após o</p><p>recebimento do ACK para o segundo segmento de transporte de dados?</p><p>Suponha que, ao fazer esse cálculo após o recebimento do ACK para o</p><p>segundo segmento, o valor inicial de EstimatedRTT seja igual ao RTT</p><p>medido para o primeiro segmento e, em seguida, seja calculado usando a</p><p>equação EstimatedRTT na página 242 e um valor de uma = 0,125.</p><p>Nota: O Wireshark possui um recurso interessante que permite traçar o</p><p>RTT para cada um dos segmentos TCP enviados. Selecione um segmento</p><p>TCP na janela “listagem de pacotes capturados” que está sendo enviado do</p><p>cliente para o servidor gaia.cs.umass.edu. Em seguida, selecione:</p><p>Estatísticas-> Gráfico de fluxo TCP-> Gráfico de tempo de ida e volta.</p><p>7. Qual é o comprimento (cabeçalho mais carga útil) de cada um dos primeiros</p><p>quatro segmentos TCP que transportam dados?6</p><p>8. Qual é a quantidade mínima de espaço de buffer disponível anunciada ao cliente</p><p>por gaia.cs.umass.edu entre esses primeiros quatro segmentos TCP de transporte</p><p>de dados 7? A falta de espaço no buffer do receptor alguma vez estrangula o</p><p>remetente nesses primeiros quatro segmentos de transporte de dados?</p><p>9. Há algum segmento retransmitido no arquivo de rastreamento? O que você</p><p>verificou (no rastreamento) para responder a esta pergunta?</p><p>10. Quantos dados o receptor normalmente reconhece em um ACK entre os primeiros</p><p>dez segmentos de transporte de dados enviados do cliente para gaia.cs.umass.edu?</p><p>Você consegue identificar casos em que o receptor está ACKing todos os outros</p><p>segmentos recebidos (veja a Tabela 3.2 no texto) entre esses primeiros dez</p><p>segmentos que transportam dados?</p><p>11. Qual é a taxa de transferência (bytes transferidos por unidade de tempo) para a</p><p>conexão TCP? Explique como você calculou esse valor.</p><p>4. Controle de congestionamento TCP em ação</p><p>6Os segmentos TCP no arquivo de rastreamento tcp-wireshark-trace1-1 têm menos de 1480 bytes. Isso</p><p>ocorre porque o computador no qual o rastreamento foi coletado possui uma placa de interface que limita o</p><p>comprimento máximo do datagrama IP a 1.500 bytes e há um mínimo de 40 bytes de dados de cabeçalho</p><p>TCP/IP. Este valor de 1.500 bytes é um comprimento máximo bastante típico para um datagrama IP da</p><p>Internet.</p><p>7Forneça o valor relatado pelo Wireshark para “Window Size Value” que deve então ser multiplicado pelo</p><p>Window Scaling Factor para fornecer o número real de bytes de buffer disponíveis em gaia.cs.umass.edu</p><p>para esta conexão.</p><p>Vamos agora examinar a quantidade de dados enviados por unidade de tempo do cliente</p><p>para o servidor. Em vez de (tediosamente!) calcular isso a partir dos dados brutos na</p><p>janela do Wireshark, usaremos um dos utilitários gráficos TCP do Wireshark – Time-</p><p>Sequence-Graph (Stevens ) – para plotar os dados.</p><p> Selecione um segmento TCP enviado pelo cliente na janela “listagem de pacotes</p><p>capturados” do Wireshark correspondente à transferência de alice.txt do cliente</p><p>para gaia.cs.umass.edu. Em seguida, selecione o menu: Estatísticas->TCP Stream</p><p>Graph->Time-Sequence-Graph(Stevens 8). Você deverá ver um gráfico</p><p>semelhante ao gráfico da Figura 5, que foi criado a partir dos pacotes capturados</p><p>no rastreamento de pacotes tcp-wireshark-trace1-1 . Talvez você precise</p><p>expandir, encolher e mexer nos intervalos mostrados nos eixos para que seu</p><p>gráfico se pareça com a Figura 5.</p><p>Figura 5: Um gráfico de número de sequência versus</p><p>tempo (formato Stevens) de</p><p>segmentos TCP.</p><p>Aqui, cada ponto representa um segmento TCP enviado, traçando o número de</p><p>sequência do segmento versus o horário em que foi enviado. Observe que um</p><p>conjunto de pontos empilhados uns sobre os outros representa uma série de</p><p>pacotes (às vezes chamados de “frota” de pacotes) que foram enviados</p><p>consecutivamente pelo remetente.</p><p>Responda à seguinte pergunta para os segmentos TCP no rastreamento de pacotes tcp-</p><p>wireshark-trace1-1 (consulte a nota de rodapé 2 anterior )</p><p>8William Stevens escreveu o livro “bíblico” sobre TCP, conhecido como TCP Illustrated .</p><p>https://www.amazon.com/TCP-Illustrated-Vol-Addison-Wesley-Professional/dp/0201633469</p><p>12. Use a ferramenta de plotagem Time-Sequence-Graph (Stevens ) para visualizar o</p><p>gráfico de número de sequência versus tempo dos segmentos que estão sendo</p><p>enviados do cliente para o servidor gaia.cs.umass.edu. Considere as “frotas” de</p><p>pacotes enviados em torno de t = 0,025, t = 0,053, t = 0,082 e t = 0,1. Comente se</p><p>parece que o TCP está em sua fase de início lento, fase de prevenção de</p><p>congestionamento ou alguma outra fase. A Figura 6 mostra uma visão</p><p>ligeiramente diferente desses dados.</p><p>13. Estas “frotas” de segmentos parecem ter alguma periodicidade. O que você pode</p><p>dizer sobre o período?</p><p>14. Responda cada uma das duas perguntas acima sobre o rastreamento que você</p><p>coletou quando transferiu um arquivo do seu computador para gaia.cs.umass.edu</p><p>Figura 6: Outra visualização dos mesmos dados da Figura 5.</p>