Você está na página 1de 11

Redes Digitais 2

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


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

Licenciatura: ETI
Turma : ETC1
Grupo : Rd2_t4-03 Data: 2010/11/26

Número do Aluno Nome do Aluno


27791 Fabiana Moura
28399 Tiago Tavares
29408 Ruben Pestana

___________________________________________________________________________________
1º Semestre Relatório do 3º Guião Laboratorial de Avaliação: TCP
1
2010/2011 Rev. 1.0
III – Gestão de Ligação TCP
A – Estabelecimento ligação TCP

5.
a)

Figura 1: Mensagens capturadas no Linux 1 (cliente).

Figura 2: Mensagens capturadas no Linux 3 (servidor).

Figura 3: Diagrama das mensagens TCP utilizadas para o estabelecimento de ligação.

Pacotes utilizados:

 TCP[Syn]: Tipicamente, um pacote TCP com a flag SYN activa é utilizado para iniciar uma sessão TCP
(primeiro pacote emitido), uma vez que determina o sincronismo dos números de sequência. Isto é, os
números de sequência começam a contar a partir do número de sequência do pacote com TCP com a
flag SYN activa.

___________________________________________________________________________________
1º Semestre Relatório do 3º Guião Laboratorial de Avaliação: TCP
2
2010/2011 Rev. 1.0
 TCP[SYN, ACK]: Neste caso temos um pacote com a flag SYN activa para marcar o inicio de envio de
pacotes TCP por parte do Linux3 em resposta ao dados enviados pelo Linux1, daí a utilização da flag ACK
que marca a recepção da mensagem SYN em Linux 3 enviados pelo Linux1.
 TCP[ACK]: Esta flag é utilizada por parte do Linux 1 em resposta a recepção do SYN, ACK anterior e serve
meramente para confirmar que efectivamente recebeu os dados que lhe foram enviados.

b) As flags mais relevantes para o estabelecimento de ligação usando o protocolo TCP são:
 SYNchronize sequence numbers (1 bit) - Indica o início de uma ligação.
 ACKnowledge (1 bit) - Marca se o campo Acknowledment number é significativo ou não.
 RST (1 bit) - Faz reset à ligação quando está activo.

Por sua vez, os campos relevantes são:


 Campo de origem (16 bits) e de destino (16 bits) - Utilizado para indicar quem é o emissor e o
receptor de um pacote TCP.
 Campo de número de sequência (32 bits) - Tem duas funções:
o Quando a flag SYN esta activa este número é o número de sequência inicial, que indica o
primeiro pacote TCP enviado numa dada ligação.
o Quando a flag SYN está inactiva então este número é o número de sequência inicial
acrescido do número de mensagens que já foram trocadas numa dada ligação.
 Campo de Acknowledgement Number (32 bits) - Com a flag ACK activa este número é o próximo
número de sequência que o receptor está à espera de receber e garante a recepção dos bytes
recebidos anteriormente.

c) Os números de sequência relativos iniciais do servidor e do cliente são o ‘0’. No entanto, o número de
sequência real para o servidor é: 1094022442.

Figura 4: Número de sequência real para o servidor (Linux 3).

E para o cliente o número de sequência real é: 2386962690.

Figura 5: Número de sequência real para o cliente (Linux 1).

d) O número de bits necessários para codificar em binário cada número de sequência é 32 bits. Em
hexadecimal, como podemos observar nas figuras acima, são 8 dígitos.

___________________________________________________________________________________
1º Semestre Relatório do 3º Guião Laboratorial de Avaliação: TCP
3
2010/2011 Rev. 1.0
e)

Figura 6: Primeira mensagem que contém dados da aplicação telnet.

A primeira mensagem que contém dados é a primeira mensagem que tem o campo “Len” diferente de
zero. Neste caso o “len” tem o valor 12 e um número de sequência relativo de ‘1’ e real de ‘2461463288’.

f)

Figura 7: MSS negociado entre o cliente e o servidor.

O MSS negociado entre o cliente e o servidor é de 1460 Bytes e foi enviado no cabeçalho do pacote TCP,
mais concretamente no campo das opções. O maximum segment size determina o tamanho máximo dos dados
que pode ser enviado num único segmento. O MSS é determinado através do MTU do nível da ligação de dados
da rede na qual o emissor e o receptor estão ligados, neste caso são 1500 bytes do MTU da ethernet menos 20
bytes do cabeçalho IP e menos outros 20 bytes do cabeçalho TCP, portanto o MSS só diz respeito ao payload
sem os cabeçalhos TCP.

g) O tamanho da janela do emissor é de 5840 bytes e do receptor é de 5792 bytes. Estes valores são
enviados no campo Window Size do pacote TCP e não no Options como o MSS.

h) O tamanho do cabeçalho TCP é de 40 bytes mas este valor muda para 32 bytes à medida que o campo
Options se vai alterando, mais concretamente, uma vez que o MSS já foi negociado o campo Options
decresce de 20 bytes para 12 bytes.

i) O tempo necessário para estabeler a ligação TCP corresponde ao tempo que decorreu desde o SYN
enviado pelo cliente até que o mesmo envia um ACK ao servidor a confirmar a ligação.
35,579751 - 35,579336 = 0,000415.

Figura 8: Tempo decorrido até a ligação TCP ficar estabelecida.

___________________________________________________________________________________
1º Semestre Relatório do 3º Guião Laboratorial de Avaliação: TCP
4
2010/2011 Rev. 1.0
j) Foi utilizado endereçamento Unicast entre as duas máquinas uma vez que a comunicação foi directa. Os
portos envolvidas foram os seguintes: (i) No lado do servidor foi utilizado o porto Telnet (port 23); (ii) No
lado do cliente foi usado o porto digital-notary (port 1335).

___________________________________________________________________________________
1º Semestre Relatório do 3º Guião Laboratorial de Avaliação: TCP
5
2010/2011 Rev. 1.0
B – Encerramento ligação TCP (iniciado pelo cliente).

6.
a)

Figura 9: Linux 1 (Cliente).

Figura 10: Linux 3 (Servidor).

Mensagens trocadas:
 TCP[FIN, ACK]: Um pacote com a flag FIN indica que o emissor deste pacote terminou de enviar dados e
que pretende terminar a ligação. A flag ACK neste caso indica o acknowledge do pacote recebido
previamente.
 TCP[ACK]: Neste caso concreto, o emissor host 10.0.1.1 indica ao servidor telnet com a flag ACK que
recebeu o pacote TCP[FIN, ACK] com sucesso. É o último pacote trocado ao terminar uma ligação TCP.

___________________________________________________________________________________
1º Semestre Relatório do 3º Guião Laboratorial de Avaliação: TCP
6
2010/2011 Rev. 1.0
b) Para além das flags mencionadas na alínea anterior, outros campos importantes para o término da
ligação são o campo de Origem e Destino.
O término da ligação funciona de maneira semelhante ao protocolo de estabelecimento de sessão TCP
de 3 vias. Inicialmente o cliente envia uma mensagem ao servidor com as flags FIN e ACK activas, a
primeira flag serve para indicar ao servidor que não vai enviar mais dados e a segunda serve para avisar
que recebeu correctamente os dados enviados anteriormente. Em resposta a esta mensagem, o
servidor envia uma mensagem TCP com as flags FIN e ACK activas, a flag FIN para indicar que o servidor
também não vai enviar mais dados e o ACK para indicar que a mensagem de término de ligação do
cliente foi correctamente recebida. Por último, o cliente responde ao servidor com um ACK que
confirma a recepção da última mensagem enviada e por fim cessa a ligação.

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

2.
a)

b) A diferença mais significativa deve-se ao facto da sessão ser encerrada pelo servidor de maneira
automática devido ao período de inactividade presente na sessão Telnet. Na secção anterior, o término
da ligação foi efectuado activamente por nós (cliente).

c)

Figura 11: Linux 3 (Servidor).

___________________________________________________________________________________
1º Semestre Relatório do 3º Guião Laboratorial de Avaliação: TCP
7
2010/2011 Rev. 1.0
Figura 12: Linux 1 (Cliente).

Podemos observar, tanto na captura do cliente como na captura do servidor, que o tempo de timeout
que o servidor Telnet emprega para finalizar a ligação é de 60 segundos.

IV – Controlo de fluxo e Retransmissão TCP

A – Transferência interactiva de dados

5.

a) Os pacotes que são esperados existir na troca de dados TCP são quatro:
 Pacote onde se envia o carácter (do cliente para o servidor);
 Pacote de ACK da recepção do carácter (do servidor para o cliente);
 Pacote com o “echo” do carácter recebido pelo servidor (do servidor para o cliente);
 Pacote de ACK do “echo” enviado anteriormente (do cliente para o servidor).
Como podemos observar na figura 13, são enviados apenas 3 pacotes, sendo que o 2ª e 3ª pacote são
enviados num só (piggybacking). Ou seja o servidor envia o ACK da recepção do carácter e o “echo” num
só pacote. É por esta razão que não conseguimos visualizar o envio de 4 pacotes por cada carácter
premido.

Figura 13: Pacotes trocados a cada carácter premido.


b) O emissor sabe que o acknowledgment number é válido, quando a flag ACK está activa e tem valor 1. Na
realidade, o valor do ACK é sempre o número a seguir ao número de sequência anteriormente recebido.
c) As flags são a flag Acknowledgment (ACK) e a flag push(PSH). A flag push(PSH) ao ter o valor 1 serve
para informar o serviço TCP para não retardar a transmissão pois significa que é uma mensagem
prioritária.
d) Do lado do cliente o intervalo de tempo entre envios consecutivos de cada carácter poderá ser visto, por
exemplo entre a transmissão da mensagem Data Telnet número 297 e a mensagem Data Telnet número
303.
Tempo = 20.399613 - 20.359740 = 0.039873 segundos.

Figura 14: Intervalo de tempo entre envios consecutivos de cada caracter.


e) A janela anunciada pelo servidor é de 5792, o valor da janela do cliente é de 5840.
Ao longo da sessão Telnet o valor das janelas não irá ser alterado, porque nunca esgotámos o tamanho da
janela, logo esta não necessitou de aumentar o seu tamanho.

B – Controlo de Fluxo

5.
a) Todos os segmentos possuem um número de sequência pois é obrigatório para se poder fazer uma
comunicação com uma sequência lógica entre cliente/servidor. No entanto, reparamos que por ter um
___________________________________________________________________________________
1º Semestre Relatório do 3º Guião Laboratorial de Avaliação: TCP
8
2010/2011 Rev. 1.0
campo de payload vazio (Len = 0), este número não vai ser incrementado (caso seja um ACK). Esta
situação não é ambígua para o receptor pois ao receber este pacote, não necessitará de confirmar um
ACK. Já no caso da mensagem ser um SYN, o número de sequência irá aumentar um valor, para que o
receptor a possa confirmar (ACK). Desta forma não irá haver situações de indecisão nos receptores.
b) O servidor irá enviar ACK’s sensivelmente de 0,0007 segundos em 0,0007 segundos. Podemos observar
que nem sempre existe um ACK para cada segmento, havendo mais do que um segmento a ser
confirmado num único ACK, o que irá aliviar o tráfego na rede.
c) A gama de variação da janela do receptor é entre 5792-63712. A janela varia ao longo da sessão TCP de
forma crescente como podemos ver na figura que se segue. Quando o valor da janela chega a 63712,
mantém-se com este valor, o que nos leva a concluir que este é o valor máximo da janela do receptor.

Figura 15: Variação do tamanho da janela do receptor.


d)

Pacote 48 confirma o pacote 47. Tempo = 37.782038 – 37.782028 = 0.00001

Pacote 66 confirma o pacote 64. Tempo = 37.783623 – 37.783559 = 0,000064

Pacote 71 confirma o pacote 70. Tempo = 37.784259 – 37.784239 = 0.00002


e) O maior segmento com dados enviado pelo emissor (Linux1) que observamos foi com Len = 1448, mais
12 bytes de opções, perfazendo 1460, que é o valor máximo (MSS- Maximum Segment Size). Não
observamos nenhum segmento com mais dados, embora o valor mínimo da janela do receptor seja
5792.
f)
i) A gama de variação da janela agora é entre 0 e 1448. Quando o emissor transmite mais do que
os 1448, a janela esgota e volta para o valor 0.
ii) No exemplo anterior não limitamos o valor da janela do receptor, pelo que esta iria crescendo
sempre que precisasse. Agora, definimos um valor máximo de janela, pelo que quando o
emissor envia um maior numero de dados esta esgota, pois está limitada a um dado valor
máximo (1448).
iii) Se a janela do receptor esgotar, o emissor terá de aguardar não podendo enviar dados. Isto irá
traduzir-se num maior atraso no envio de mensagens entre o Linux 1 e Linux 3.
iv) O emissor não transmite o máximo permitido. Começa por enviar um segmento com metade do
tamanho da janela (724) e seguidamente outro com metade deste valor (276), de modo a tentar
não esgotar a janela do receptor.
v) O segmento TCP que indica que a janela do receptor chegou a zero é o [TCP ZeroWindow] que é
precedido pelo segmento [TCP Window Full] que o emissor envia para o receptor.

Figura 16: Segmento que indica que a janela do receptor chegou a zero.

___________________________________________________________________________________
1º Semestre Relatório do 3º Guião Laboratorial de Avaliação: TCP
9
2010/2011 Rev. 1.0
vi) O [Dup ACK] Significa que um segmento se perdeu ou que foi enviado fora de ordem e informa
que segmento (número de sequencia) é esperado pelo receptor, para que o emissor possa
reenviar o segmento, caso este tenha sido perdido.
vii) A dimensão típica da janela do receptor no [Dup ACK] é a máxima possível, dado que antes de
ser enviado este segmento, é enviado um [TCP Window Update] e irá por a janela do receptor
no seu valor máximo.

C – Desempenho do TCP numa rede congestionada

6.

a) As perdas de segmentos são detectadas quando o emissor envia um segmento e não recebe nenhum
ACK para esse segmento durante um determinado tempo. De seguida, ao esgotar esse tempo, o emissor
enviará um segmento do tipo [TCP Retransmission]. Além desta situação poderão ocorrer envios de
[TCP Dup ACK] por parte do receptor, para avisar o emissor que não recebeu o segmento que estava à
espera.

b) O segmento tem o numero de sequência relativo 193609.

Figura 17: Mensagens envolvidas no estudo desta situação.

c) Após o envio da mensagem anterior, o receptor envia um [TCP Dup ACK] com numero de sequência
relativo 192161, o que significa que a mensagem anterior inserida pelo WireShark estava certa e o
receptor estava à espera de um segmento que deveria ter sido enviado anteriormente, pois tem um
numero de sequência menor.

d) O emissor ao receber o TCP Dup ACK com numero de sequência 192161, irá aperceber-se de que algo
de errado aconteceu e que o receptor continua à espera daquele segmento. O que o emissor irá fazer é
retransmitir esse mesmo segmento numa mensagem do tipo [TCP Retransmition], com Len = 1448
bytes.

e) São reenviados 1448 bytes para o receptor e podemos observar que o TCP Previous Segment Lost tem o
número de sequência 193609 e o TCP Retransmission tem o número de sequência 192161, logo:
192161 + 1448 = 193609. Como sabemos, o TCP é um serviço fiável, pelo que quando detectados erros
de envio, estes terão que ser reenviados e é por isso que os valores estejam correctos.

f) A mensagem do tipo [TCP Out of order] é enviada pelo emissor quando este se apercebe que um
segmento foi enviado fora de ordem. Após receber este mensagem o receptor envia um ACK caso a
mensagem afinal não esteja fora de ordem, ou com um Dup ACK caso esteja. O emissor fica assim a
saber que a mensagem foi entregue embora esteja fora de ordem.

D – Pergunta complementar (envio de rajadas).


1. Opine o que terá acontecido no instante anterior ao t=0 s.

No instante anterior a t=0, foi começada uma emissão em ‘slow start’ a partir do instante t = -1 | SM’s =
7 (supondo que este é o ponto inicial da emissão), daí que de t = 0 para t = 1 o número de segmentos
deu um salto de 2 Segmentos (de SM’s = 8 para SM’s = 10). É de notar que este crescimento pára no
limiar existente em SM’s = 10.

___________________________________________________________________________________
1º Semestre Relatório do 3º Guião Laboratorial de Avaliação: TCP
10
2010/2011 Rev. 1.0
2. Assumindo que não há problemas de congestão no instante t=13 s, qual será o tamanho da rajada
transmitida?

O tamanho da próxima rajada a ser transmitida irá ser de SM’s = 5, visto que o limiar passa a ser metade
do tamanho máximo da janela antes do time-out anterior (que ocorreu em t=9 e SM’s = 10) e a
transmissão está em slow-start até esse limiar.

___________________________________________________________________________________
1º Semestre Relatório do 3º Guião Laboratorial de Avaliação: TCP
11
2010/2011 Rev. 1.0

Você também pode gostar