Você está na página 1de 8

Redes Digitais 2

Engenharia Informática; Engenharia de Telecomunicações e Informática; Informática e Gestão de Empresas


3º Laboratório de Avaliação TCP 2010/2011

Sempre que encontrar o símbolo  , deve chamar o docente e mostrar-lhe o resultado que
obtém na alínea correspondente. Se não o fizer, a sua cotação nessa alínea será nula.
No questionário a entregar, justifique sucinta mas adequadamente todas as suas respostas!

I. Preparação do laboratório
Como preparação deste laboratório era aconselhável realizar as seguintes tarefas:
• criar uma configuraçao em rede do tipo cliente-servidor;
• utilizar o utilitário ttcp (ou outro equivalente) para gerar tráfego TCP;
• capturar o trafego gerado com o WireShark e analisar, entre outros, os seguintes aspectos:
o estabelecimento de uma ligação TCP, tendo atenção aos parâmetros negociados
entre o cliente e o servidor;
o estrutura de um segmento: cabeçalho (incluindo as opções) e o payload;
o endereçamento utilizado no TCP;
o janela de receptor (do cliente e do servidor);
o encerramento da ligação TCP;
o gestão dos números de sequência;
o estudo do comportamento do TCP numa sessão interactiva telnet;
o estudo do controlo de fluxo no TCP;
o estudo do comportamento do TCP numa rede congestionada.
• Estudar alguma bibliografia relacionada com esta matéria:
o acetatos das teóricas disponíveis na plataforma e-Learning;
o Computer Networking – A Top-down Approach Featuring the Internet, James F.
Kurose, Keith W. Ross, 3rd Edition, Addison Wesley, pgs. 228-253
o Perspectiva sobre os protocolos TCP e UDP - http://www.tcpip-
lab.net/links/tcpudp.html;
o RFC 793 – TCP (http://www.ietf.org);
o WireShark - http://www.wireshark.org/;
o Help Online sobre o utilitário ttcp disponível em – http://www.tcpip-
lab.net/links/manual.html.
• Rever o laboratório LA2 – Laboratório Encaminhamento de pacotes.

II. Configuração inicial


Neste laboratório serão experimentados os seguintes conceitos relacionados com o TCP:
• Estudo das fases do TCP para o estabelecimento e encerramento de uma ligação;
• Estrutura dum segmento;
• Endereçamento utilizado no TCP;
• Controlo de fluxo;
• Gestão dos números de sequência;
• Estudo do comportamento do TCP numa sessão interactiva telnet;
• Estudo do comportamento do TCP numa rede congestionada.

__________________________________________________________________________
1º Semestre 3º Laboratório de Avaliação: TCP.
1
2010/2011 Rev. 1.0
Nota: Antes de fazer o login nos PCs da sua bancada, verifique se no bastidor associado à
sua bancada, está interligado um cabo ao ponto Bx - 6 / 5. Caso não esteja, interligue-o
primeiro e só depois é que deve realizar o seu login.

Inicialmente é necessário configurar a sua bancada de trabalho (algumas configurações serão


equivalentes a algumas já realizadas no laboratório LA2 – Laboratório Encaminhamento de
pacotes):
• Faça login nos PC´s de bancada.
• No PC de bancada pcx-1, onde x é o número da sua bancada, copie da pasta
c:\Laboratorios\Clones para uma pasta do MyDocuments as seguintes máquinas virtuais:
- Red Hat Linux 9.0 vmware 5 (daqui em diante designada por Linux1);
- Router 1 Red Hat Linux 9.0 vmware 5 (daqui em diante designada por Linux2).
• No PC de bancada pcx-2, copie da pasta c:\Laboratorios\Clones para uma pasta do
MyDocuments a seguinte máquina virtual:
- Red Hat Linux 9.0 vmware 5 (daqui em diante designada por Linux3).
• Nos dois PC de bancada lance as três máquinas virtuais da seguinte forma:
o duas máquinas (Linux1 e Linux2) através de uma aplicação Vmware a ser
executada no pcx-1;
o a restante máquina virtual numa outra aplicação Vmware a ser executada no pcx-
2.
• Observe a tabela da página seguinte e realize as seguintes tarefas:
o Confirme que cada máquina virtual está a ser executada na máquina base
correcta;
o Desligue o cabo de rede que está a interligar a sua bancada à intranet do
laboratório de redes. Para isso, no bastidor da sua bancada, retire o conector que
está interligado ao ponto de comutação Bx - 6 / 5, onde x é o número da sua
bancada.
o Verifique se o endereço IP (configuração estática) de cada interface e a respectiva
máscara de rede utilizados por cada uma das máquinas virtuais estão
correctamente atribuídos. Caso necessário corrija a configuração dos interfaces de
rede através do comando ifconfig (para mais informação consultar LA2 –
Laboratório Encaminhamento de pacotes);
o Verifique o endereço físico de cada interface. Caso necessário corrija o MAC dos
interfaces de rede através do comando ifconfig (para mais informação consultar
LA2). Tenha em atenção que não devem existir endereços MAC repetidos!
o Anote na seguinte figura (e tabela também), que representa a topologia da rede
deste laboratório, o endereço MAC de cada interface utilizado nessa topologia de
rede bem como o respectivo endereço IP;
o Verifique se o router Linux2 está parametrizado de forma a comutar pacotes (para
mais informação consultar LA2);
o Verifique se em cada host (Linux1 e Linux3) está configurada a respectiva
gateway por defeito (para mais informação consultar LA2);
o Execute em cada host o comando “traceroute –n <end_ip_outro_host>”, para
verificar se existe interconectividade com o outro host.

PC Máquina Função Interface IP Máscara MAC


virtual
pcx-1 Linux1 Host eth0 10.0.1.1 255.255.255.0
pcx-1 Linux2 Router eth0 10.0.1.254 255.255.255.0
eth1 10.0.2.254 255.255.255.0
pcx-2 Linux3 Host eth0 10.0.2.1 255.255.255.0

__________________________________________________________________________
1º Semestre 3º Laboratório de Avaliação: TCP.
2
2010/2011 Rev. 1.0
Ao longo deste guião a máquina virtual Linux2 deverá desempenhar o papel de router e as
restantes máquinas o papel de hosts. Tenha em atenção que nunca deve parar o Linux2! A
máquina virtual Linux2 deverá ser sempre suspensa. Para interligar em rede todas estas
máquinas virtuais existem duas redes (10.0.1.0/24 e 10.0.2.0/24), conforme se pode visualizar na
seguinte figura.

Linux1 Linux2 Linux 3

10.0.1.0/24 10.0.2.0/24
eth0 eth0 eth1 eth0

Router Host
Desta forma, a configuração inicial está concluída e nas secções seguintes irá realizar as
tarefas deste laboratório. Não se esqueça de justificar convenientemente no relatório todas
as suas respostas!

III. Gestão de ligação TCP


Nesta parte do laboratório vão ser analisados os protocolos de três vias para o estabelecimento de
uma ligação TCP (secção A) e para o encerramento simétrico dessa ligação, por solicitação de
cada um dos extremos (secções B e C).

A. Estabelecimento ligação TCP.

1. Inicie nas máquinas Linux1 e Linux3 a captura de pacotes através da aplicação WireShark.
2. Estabeleça uma sessão telnet da máquina Linux1 para Linux3, executando o seguinte comando
numa shell de Linux1:
telnet 10.0.2.1

Nota: Caso tenha ocorrido um erro na tentativa de ligação telnet, numa shell de Linux3, deve
executar os seguintes comandos:
chkconfig telnet on
service xinetd restart

(e depois repita o ponto 2.)

3. Quando na shell de Linux1 aparecer o texto “login:” páre as capturas.


4. No WireShark utilize um filtro de visualização de forma a somente visualizar as mensagens
pertencentes aos protocolos telnet e tcp:
(telnet or tcp) and (ip.addr = = 10.0.1.1)
5. Analise as capturas efectuadas e responda às seguintes questões no relatório:
a. Identifique e transcreva as mensagens do protocolo utilizado para o
estabelecimento da ligação TCP entre Linux1 (cliente) e Linux3 (servidor) e
represente-as num diagrama.
b. Mencione as flags e outros campos relevantes do cabeçalho TCP para o cliente e
o servidor TCP terem conseguido estabelecer com sucesso uma ligação. Descreva
como o cliente e o servidor utilizam estes campos do cabeçalho TCP.
c. Durante o estabelecimento da ligação, o cliente e o servidor indicam um ao
outro, qual irá ser o primeiro número de de sequência que cada um deles utilizará

__________________________________________________________________________
1º Semestre 3º Laboratório de Avaliação: TCP.
3
2010/2011 Rev. 1.0
para enviar dados para o outro. Indique os números de sequência iniciais propostos
respectivamente pelo cliente e pelo servidor.
d. Quantos bits são utilizados para codificar em binário cada número de
sequência?
e. Identifique a primeira mensagem que contém dados da aplicação telnet. Qual é o
número de sequência utilizado pelo primeiro byte de dados da aplicação?
f. Qual é o MSS (Maximum Segment Size) negociado entre o cliente e o servidor?
Em que secção do segmento este campo foi enviado? Justifique este valor.
g. Indique as janelas de receptor do cliente e do servidor que foram inicialmente
negociadas. Estes campos foram enviados na mesma secção do segmento utilizada
para enviar o MSS?
h. Qual o tamanho em bytes do cabeçalho TCP ao longo do ciclo de vida da sessão
TCP?
i. Quanto tempo foi necessário para que a ligação TCP ficasse estabelecida?
Justifique a sua resposta.
j. Que tipo de endereçamento foi utilizado pelo processo servidor telnet para
enviar dados para o processo cliente (Unicast / Multicast / Broadcast? Quais os
portos envolvidos?

B. Encerramento ligação TCP (iniciado pelo cliente).

1. Se não estiver nenhuma sessão telnet activa, inicie uma nova sessão da máquina Linux1
para Linux3.
2. Inicie em Linux1 e Linux3 a captura WireShark.
3. Na shell de Linux1, após ter aparecido o texto “login:”, tecle em simultâneo a seguinte
sequência de três teclas:
<Ctrl> <Alt Gr> <]>
4. Depois de aparecer o prompt “telnet>”, execute o comando quit.
5. Pare as capturas do WireShark.
6. Analise as capturas e responda às seguintes perguntas no relatório:
a. Identifique as mensagens envolvidas no encerramento da ligação TCP e
represente-as num diagrama.
b. Mencione também as flags e outros campos relevantes do cabeçalho TCP
utilizadas pelo cliente e pelo servidor TCP neste contexto. Descreva como o cliente
e o servidor utilizam estes campos do cabeçalho TCP.

C. Encerramento ligação TCP (iniciado pelo servidor).

1. Repita os passos da secção anterior, com a diferença de que após surgir na shell de Linux1
a linha de “login:”, não faça nada e aguarde que apareça a seguinte mensagem: “login:
connection closed by foreign host”.
2. Analise as capturas do WireShark e responda às seguintes perguntas no relatório:
a. Represente num diagrama as mensagens relevantes neste contexto.
b. Descreva as diferenças detectadas para o resultado obtido na secção anterior
(III.B).
c. Quanto tempo é que o servidor telnet utilizado aguarda antes de encerrar a
ligação TCP?

IV. Controlo de fluxo e Retransmissão TCP


Nesta secção vai ser analisado o comportamento do TCP numa sessão interactiva telnet, bem
como, o controlo de fluxo do TCP e a sua funcionalidade de retransmissão de segmentos.

__________________________________________________________________________
1º Semestre 3º Laboratório de Avaliação: TCP.
4
2010/2011 Rev. 1.0
A. Transferência interactiva de dados

O propósito deste exercício é o de observar uma transferência interactiva de dados TCP,


utilizando-se a aplicação telnet. Pretende-se observar mecanismos do TCP que são utilizados,
para evitar que o TCP envie muitos segmentos com um byte de dados e, desta forma, a
largura de banda disponível seja utilizada da forma mais eficiente possível.

1. Inicie o WireShark nas máquinas Linux1 e Linux3 para capturar pacotes.


2. Na máquina Linux1 estabeleça uma sessão telnet para Linux3 executando o seguinte
comando:
telnet 10.0.2.1
3. Faça login como user e password.
4. Tecle os caracteres “qwerty” e deixe premida a tecla “y” durante alguns segundos.
5. Pare a captura e analise as capturas de forma a responder às seguintes perguntas no
relatório:
a. Explique porque é que em certas ocasiões não consegue visualizar na captura
quatro pacotes por cada caracter premido? 
b. Como é que um emissor, ao receber de volta uma mensagem do receptor,
sabe se esta contém um campo válido acknowledgment number? A partir da
captura aponte mensagens que justifiquem a sua resposta.
c. Quais as flags do cabeçalho TCP que são activadas nos segmentos TCP que
transportam no seu payload os caracteres teclados?
d. Verifique do lado do cliente o intervalo de tempo entre envios consecutivos
de cada carácter premido. Justifique esse valor.
e. Qual a janela anunciada pelo servidor telnet? E pelo cliente? Qual a evolução
destas janelas ao longo da sessão telnet? Justifique a sua resposta.

B. Controlo de fluxo

O propósito deste exercício é o de observar a funcionalidade da janela deslizante do controlo de


fluxo numa transferência de blocos de dados entre Linux1 e Linux3.

1. Inicie o WireShark nas máquinas Linux1 e Linux3 para capturar pacotes.


2. Na máquina Linux3 inicie um processo ttcp para receber tráfego:
ttcp –rs –l1000 –n500 –p4444
3. Na máquina Linux1 inicie um processo ttcp para gerar tráfego:
ttcp –ts –l1000 –n500 –p4444 –D 10.0.2.1
4. Quando o processo de geração de tráfego tiver finalizado, pare as capturas.
5. Analise as capturas e responda às seguintes questões no relatório:
a. Porque é que alguns segmentos que possuem uma secção de payload vazia
mesmo assim têm associado um número de sequência? Porque é que esta
situação não é ambígua para o receptor TCP?
b. Observe a frequência da transmissão de segmentos e ACKs. Qual a
frequência com que o receptor envia ACKs? Existe um ACK para cada
segmento ou não? Justifique a sua resposta.
c. Qual é a gama de variação da janela anunciada pelo receptor? De que forma
a janela do receptor varia ao longo da sessão TCP?
d. Seleccione um pacote ACK arbitrário enviado por Linux3 para Linux1.
Localize no cabeçalho deste o número de sequência ACK. Depois relacione
este ACK com um segmento enviado por Linux1 e identifique-o na captura do
__________________________________________________________________________
1º Semestre 3º Laboratório de Avaliação: TCP.
5
2010/2011 Rev. 1.0
WireShark. Quanto tempo decorreu entre o envio do segmento de Linux1
para Linux3 e a recepção do ACK enviado de retorno? Indique três valores
obtidos da sua captura.
e. Verifique se o emissor normalmente transmite o máximo permitido pela
janela de receptor anunciada. Justifique a sua resposta.
f. Repita novamente os passos 1 a 4, mas agora executando os seguintes
comandos ttcp:
ttcp –rs –l1000 –n500 –p4444 –b1000 (em Linux3)
ttcp –ts –l1000 –n500 –p4444 –D 10.0.2.1 (em Linux1)

Responda às seguintes questões no relatório, justificando todas as suas


respostas:
i. Qual é a gama de variação da janela anunciada pelo receptor? De que
forma a janela do receptor varia ao longo da sessão TCP?
ii. Compare esta variação com a obtida anteriormente (passos 1 a 4).
iii. Compare também o tempo necessário em cada um dos cenários para
transferir os dados de Linux1 para Linux3.
iv. Verifique se o emissor normalmente transmite o máximo permitido
pela janela de receptor anunciada.
v. Qual o segmento TCP que indica que a janela do receptor chegou a
zero?
vi. Após o segmento anterior é enviado um segmento do tipo “Dup ACK”.
Significa isto que um pacote anterior se perdeu? Justifique se sim ou
não.
vii. Qual a dimensão típica da janela do receptor no segmento da alínea
anterior? Justifique o seu valor.

C. Desempenho do TCP numa rede congestionada

O propósito deste exercício é o de observar o comportamento do TCP quando tenta enviar


segmentos através de uma rede congestionada. Para congestionar a rede vai-se utilizar o
utilitário ping em modo contínuo que irá enviar pacotes ICMP através de uma porta do switch
da bancada, cujo input rate limit vai ser parametrizado para 1 Mbps.
Para isso, entrem no interface web do switch pelo endereço 192.168.x.201 (onde x é o número
da bancada). Entrem com as credenciais “admin” e “admin”.
Na porta do switch correspondente ao Linux1, alterem o seu input rate limit para 1Mbps, na
árvore do lado esquerdo no GUI do switch, em Port – Rate Limit – Input Port Configuration.
De seguida faça apply às alterações efectuadas.

Antes de iniciar o teste deve verificar nas máquinas Linux1 e Linux3 se o protocolo SACK
está inibido. Para isso deve verificar, em cada máquina, o valor do parâmetro tcp_sack através
do seguinte comando:
cat /proc/sys/net/ipv4/tcp_sack

Visualize o output do comando anterior, nomeadamente o valor do parâmetro tcp_sack.


Se este estiver a 1 então altere-o para 0, de forma a inibir o protocolo SACK, executando
para isso o seguinte comando:
echo “0” > /proc/sys/net/ipv4/tcp_sack

1. Inicie o WireShark nas máquinas Linux1 e Linux3 para capturar pacotes.


2. Na máquina Linux3 inicie um processo ttcp para receber tráfego:
__________________________________________________________________________
1º Semestre 3º Laboratório de Avaliação: TCP.
6
2010/2011 Rev. 1.0
ttcp –rs –l1000 –n500 –p4444
3. Na máquina Linux1 execute o seguinte comando:
ping –f 10.0.2.1
4. Na máquina Linux1 abra uma nova shell e inicie um processo ttcp para gerar tráfego:
ttcp –ts –l1000 –n500 –p4444 –D 10.0.2.1
5. Quando o processo de geração de tráfego tiver finalizado, pare as capturas e o ping.
6. Analise as capturas e responda às seguintes questões no relatório:
a. De que forma é que nesta ligação são detectadas perdas de segmentos?
Justifique.
b. Na captura de Linux3 seleccione uma das mensagens que no campo Info
possui a informação, “[TCP Previous segment lost]”, que foi inserida pelo
WireShark. Qual o valor do campo sequence number desta mensagem?
c. Após o receptor receber a mensagem anterior, qual a mensagem que o
receptor envia para o emissor? Qual o valor do campo acknowledgment
number desta última mensagem? Compare este valor com o valor obtido na
alínea b.
d. Na continuação do estudo deste cenário, após o emissor receber a mensagem
analisada na alínea c, indique as mensagens que este reenvia para o receptor e
também a quantidade de bytes reenviados em cada uma delas  .
e. Na continuação da alínea anterior, calcule agora o número total de bytes
reenviados para o receptor e compare este número com a diferença do campo
sequence number da alínea b com o campo acknowledgment number da alínea
c. Comente os resultados obtidos e explique o cenário que acabou de analisar.
f. Localize na captura de Linux1/ Linux3 uma mensagem que no campo Info
possui “out-of-order”. Interprete o significado desta mensagem e explique o
comportamento posterior do receptor.

Faça pause a todas as máquinas virtuais e depois faça o logoff do domínio. Retire também o
input rate limit que aplicou ao switch, fazendo o apply de seguida.

No bastidor da sua bancada introduza no ponto de comutação Bx - 6 / 5, onde


x é o número da sua bancada, o conector anteriormente retirado!

V. BIBLIOGRAFIA

Mastering Networks – An Internet Lab Manual, Jorg Liebeherr, Magda El Zarki, Addison
Wesley

Link de apoio ao livro Mastering Networks – An Internet Lab Manual – http://www.tcpip-


lab.net/links

Acetatos das teóricas disponíveis na plataforma e-Learning

Computer Networking – A Top-down Approach Featuring the Internet, James F. Kurose, Keith
W. Ross, 3rd Edition, Addison Wesley

Laboratório LA2 – Laboratório Encaminhamento de pacotes (disponível na plataforma e-


Learning)

__________________________________________________________________________
1º Semestre 3º Laboratório de Avaliação: TCP.
7
2010/2011 Rev. 1.0
VMware Workstation 5.5.2 – http://www.vmware.com/support/pubs/ws_pubs.html

WireShark - http://www.wireshark.org/

Download do Utilitário ttcp para Red Hat 9.0 – http://dag.wieers.com/packages/ttcp

Help Online sobre o utilitário ttcp disponível em – http://www.tcpip-lab.net/links/manual.html

Perspectiva sobre os protocolos TCP e UDP – http://www.tcpip-lab.net/links/tcpudp.html

TCP – RFC 793 (http://www.ietf.org)

TCP Reno – RFC 2581 (http://www.ietf.org)

Computing TCP's Retransmission Timer – RFC 2988 (http://www.ietf.org)

TCP Selective Acknowledgment Options – RFC 2018 (http://www.ietf.org)

__________________________________________________________________________
1º Semestre 3º Laboratório de Avaliação: TCP.
8
2010/2011 Rev. 1.0

Você também pode gostar