• Nenhum resultado encontrado

Atividade 1 – Análise do protocolo TCP

No documento Interconexão de redes de computadores (páginas 76-81)

1. Para esta análise usaremos o programa Ethereal (ou Wireshark) cuja tela inicial está representada a seguir:

Na parte superior aparecem os menus suspensos e abaixo deles a barra de ferramentas principal.

2. Clicar no primeiro ícone à esquerda da barra de ferramentas para selecionar a interface de captura de pacotes. Esta segunda tela está mostrada na mesma figura. No exemplo, a interface será a placa de rede Acer ALN. Clicar na opção “Prepare” (segundo botão na mesma linha).

3. Teremos então a tela a seguir onde podemos usar a opção de filtragem de pacotes e configurar algumas opções do programa.

Digitar na janela “Capture filter” o nome do protocolo que desejamos analisar: Tcp. Clicar no botão “Start” (parte inferior) para dar início à captura de pacotes. Somente serão capturados os pacotes que contenham segmentos TCP e que entrem ou saiam da interface selecionada.

Teremos então a tela a seguir que fornece o total de pacotes capturados por protocolo.

Minimizar todas as telas do Ethereal.

4. Precisamos agora iniciar uma conexão com algum web site na internet para capturar os pacotes em trânsito. Vamos usar o site da RNP: www.rnp.br.

O protocolo da aplicação é o http que usa a porta TCP 80 no servidor web.

5. Após a carga da home page (página inicial do web site), encerrar a captura de pacotes clicando no botão “Stop” na tela mostrada acima. Teremos então a tela principal do Ethereal com os pacotes capturados, que deve ser similar à tela apresentada a seguir.

A tela nos computadores dos alunos será diferente, porque eles estão numa rede diferente do computador onde foram feitos esses testes. O arquivo “captura1” do Ethereal que está no servidor de sala de aula tem os dados originais.

No quadro principal que mostra os pacotes capturados, a primeira coluna indica a ordem em que os pacotes foram capturados, e a segunda coluna indica o tempo a partir da captura do primeiro pacote (instante zero).

6. Os pacotes 20 a 22 estabelecem uma conexão TCP identificada pelos

sockets:

192.168.0.199:2206 (lado do cliente) 200.143.193.5:80 (lado do servidor web)

7. Observe que o pacote 20 envia um pedido de estabelecimento de conexão TCP (flag SYN ligado) no sentido cliente-servidor (é sempre o cliente que solicita o estabelecimento da conexão) e inicializa o contador de octetos enviados (Seq = 0). No pacote o contador é um número binário inicializado aleatoriamente com um valor qualquer. O programa

Etherealconsidera esse valor como referência zero e conta os octetos enviados a partir dele, para melhor compreensão do protocolo.

8. O pacote 21 responde ao 20 (flag ACK ligado) e também envia um pedido de estabelecimento de conexão TCP (flag SYN ligado) no sentido servidor- cliente.

Lembre-se de que a conexão TCP é full-duplex. Observe que o contador de recebidos do servidor (Ack = 1) indica que o flag SYN foi contado como 1 octeto de dados recebidos.

9. Finalmente, o pacote 22 responde ao 21 (flag ACK ligado) indicando através dos contadores (Seq = 1, Ack = 1) que os flags foram devidamente reconhecidos. Esses 3 pacotes compõem o conhecido “three-way-handshake” de uma conexão TCP. Somente a partir de agora os dados podem ser enviados. Resumindo:

1o pacote (20): cliente-servidor; contadores: Seq = 0, Ack = 0 2o pacote (21): servidor-cliente; contadores: Seq = 0, Ack = 1 3o pacote (22): cliente-servidor; contadores: Seq = 1, Ack = 1

10. Note que o endereço IP do cliente é 192.168.0.199, que é um endereço privativo; portanto, o cliente não pode acessar diretamente a internet, necessitando dos serviços de um tradutor NAT. Neste exemplo, o tradutor NAT é um roteador doméstico D-Link Di524, cuja tela está mostrada a seguir (opção Status/Active sessions), junto com parte da tela do navegador que acessou o site da RNP.

Na primeira coluna à esquerda temos o endereço interno e respectiva porta TCP/ UDP da aplicação (números acima de 1024), em seguida o protocolo e depois o endereço externo e a respectiva porta TCP/UDP do servidor.

Como o roteador só possui um endereço público fornecido pelo provedor de acesso à internet, ele precisa fazer o NAT Overload (PAT). A coluna “NAT” mostra os números de portas associados a cada conexão estabelecida. No caso, o endereço público do roteador é 189.6.52.242/20 (máscara 255.255.240.0) fornecido pelo ISP.

Exemplo: a primeira conexão mostrada é uma chamada ao Servidor DNS do provedor (socket 200.167.216.14:53) usando o protocolo UDP. O socket de resposta do Servidor DNS será 189.6.52.242:64159, que será devidamente traduzido para o socket interno do cliente. E assim por diante.

Nesta tela aparece a conexão TCP 2206 mostrada na tela do Ethereal. Ela será traduzida de 192.168.0.199:2206 (socket interno) para 189.6.52.242:64163 (socket externo). É esse socket que será visto pelos servidores externos.

11. Na tela do Ethereal está selecionado o pacote 25 que foi enviado pelo servidor web para o cliente. O quadro imediatamente abaixo do quadro principal detalha o pacote selecionado. Observe que o Ethereal mostra as informações por camada de protocolo, na ordem: camada física (Frame

25 ...), camada de enlace (Ethernet II ...), camada de rede (Internet Protocol ...) e camada de transporte (Transmission Control Protocol ...).

Quando o pacote carrega informações do protocolo da aplicação (caso do pacote 23, por exemplo), é mostrada também a camada de aplicação.

12. O cabeçalho do TCP selecionado mostra as portas de origem (80) e destino (2206), os contadores Seq = 1 (octetos enviados pelo servidor até esse momento) e Ack = 1 (octetos recebidos pelo servidor até esse momento) e o tamanho do campo de dados da aplicação (Len = 1460).

13. O Ethereal informa também na linha [SEQ/ACK analysis] que este pacote é um reconhecimento do pacote 23 enviado pelo cliente.

Também informa que este pacote contém parte da PDU de transporte (segmento TCP) que está sendo remontada a partir de vários pacotes no frame 42. Isto acontece porque uma rede local Ethernet não permite que o campo de dados passe de 1500 octetos. Como o cabeçalho IP consome 20 octetos e o cabeçalho TCP também gasta 20 octetos, temos: 1500 – 20 – 20 = 1460 octetos. Isto porque não existe o campo de opções nos cabeçalhos IP e TCP; portanto, eles

14. O tamanho total da PDU original era 16220 bytes, que foi segmentada nos pacotes 25, 26, ..., 42. Note que todos os tamanhos da carga útil (payload) são 1460 bytes, exceto no último que é 160 bytes.

Este trabalho de segmentação e remontagem é feito pelo TCP, antes de entregar os dados para a aplicação no cliente.

Esta atividade exemplificou o funcionamento da pilha de protocolos TCP/IP.

No documento Interconexão de redes de computadores (páginas 76-81)

Documentos relacionados