Você está na página 1de 7

ICC309 Redes de Computadores

Segunda lista de exercícios

1. Qual a função básica da camada de transporte?


Fornece comunicação confiável e eficiente entre os processos de aplicação em
sistemas finais. Gerencia o controle de fluxo e o controle de congestionamento para
evitar sobrecarga da rede. Segmenta os dados recebidos da camada de aplicação
em unidades menores (segmentos) e garante a entrega desses segmentos de forma
ordenada, confiável e sem erros ao destinatário.

2. Qual a diferença entre os serviços de entrega da camada de transporte e da


camada de rede?
A camada de rede é responsável pela entrega de pacotes de dados (datagramas)
entre sistemas finais na rede. Seu serviço de entrega é não confiável e sem
conexão. Enquanto a camada de transporte oferece um serviço de entrega confiável
e orientado à conexão entre os processos de aplicação em sistemas finais. Ela
segmenta os dados recebidos da camada de aplicação em unidades menores
(segmentos) para transmissão pela rede.

3. Quais as duas categorias de protocolos de transporte?


As duas categorias de protocolos de transporte são os protocolos confiáveis (como o
TCP) e os protocolos não confiáveis (como o UDP).

4. Descreva o mecanismo de controle de fluxo.


É uma técnica utilizado na camada de transporte para evitar que o remetente
sobrecarregue o receptor com uma quantidade excessiva de dados. Evita
congestionamentos e garante que o receptor possa processar os dados recebidos
adequadamente.

5. Descreva o mecanismo de controle de congestionamento.


O controle de congestionamento é necessário quando há um aumento excessivo de
tráfego na rede, o que pode levar a atrasos, perda de pacotes e uma diminuição
geral no desempenho da rede. O objetivo do mecanismo de controle de
congestionamento é garantir que a rede seja utilizada de forma eficiente e justa,
evitando sobrecargas e mantendo a qualidade do serviço.

6. Quais os mecanismos que o TCP utiliza para garantir a confiabilidade na


comunicação entre processos?
- Números de sequência e reconhecimento: esses números são usados para
garantir a entrega correta e ordenada dos segmentos.
- Retransmissão: garante a entrega confiável dos segmentos mesmo em caso de
perdas na rede.
- Temporizadores: controla o tempo máximo de espera para receber um ACK
- Janelas de recepção e controle de fluxo: controla a quantidade de dados que o
receptor pode aceitar em um determinado momento.
- Verificação de erros: verifica a integridade dos segmentos.
7. No caso do UDP, é possível entregar, a um mesmo socket de destino,
segmentos provenientes de hospedeiros diferentes? Justifique.
Sim, pois do ponto de vista do UDP, todos os segmentos que chegam a um
determinado socket de destino são tratados como dados independentes e não há
diferenciação entre segmentos provenientes de hospedeiros diferentes. Isso significa
que é possível que segmentos de diferentes hospedeiros sejam entregues a um
mesmo socket de destino.

8. Qual a finalidade do número da porta de origem?


A finalidade do número da porta de origem é permitir a identificação do processo ou
aplicação de origem dos dados em um sistema final, possibilitando a correta entrega
dos dados recebidos ao processo ou aplicação correspondente.

9. Qual é o tamanho mínimo de um segmento UDP?


8 bytes.

10. Mostre as entradas de um cabeçalho UDP que transporta uma mensagem de um


cliente TFTP para um servidor TFTP. Preencha o campo de checksum com 0s.
Escolha um número apropriado de porta de origem e de número de porta de destino.
O comprimento dos dados é igual a 40 bytes. Mostre o pacote UDP, usando o
formato indicado na Figura do slide 15.

11. Um cliente usa UDP para transmitir dados a um servidor. Os dados têm 16 bytes.
Calcule a eficiência dessa transmissão no nível UDP (razão entre bytes úteis e o
total de bytes).

12. (NÃO FOI CHAT) O sistema de redes de computadores funciona através de


uma hierarquia de camadas, onde cada camada implementa um conjunto de
serviços diferentes para a comunicação. Em cada uma dessas camadas o
pacote de dados que queremos transmitir recebe um novo cabeçalho e,
consequentemente, um novo nome. Indique quais os nomes que os pacotes
recebem nas camadas de Aplicação, Transporte, Rede e Enlace.

Aplicação: dados. Transporte: segmentos. Rede: pacote. Elance: quadro.

13. Defina janela deslizante.


A janela deslizante é um mecanismo usado pelo TCP para controlar a quantidade de
dados que o remetente pode enviar sem aguardar confirmações. Ela permite um
fluxo eficiente de dados e é ajustada com base na capacidade do receptor para
garantir um controle adequado de fluxo e evitar congestionamentos.

14. (NÃO FOI CHAT) Descreva com suas palavras o protocolo Go-Back-N e o
protocolo Retransmissão Seletiva.
Go-Back-N: O emissor possui até n pacotes não-acks no duto. O receptor envia
somente acks acumulativos. Quando há a confirmação do recebimento de um
pacote implica que todos que antecederam foram recebidos corretamente.
Retransmissão seletiva: Armazena os pacotes recebidos corretamente no buffer
sempre que necessário para entregar de forma ordenada para a camada superior. O
transmissor só envia pacotes onde um ACK não foi recebido.
15. (NÃO FOI CHAT) Por que os elementos intermediários não mantêm o estado
de uma conexão TCP?
Porque o protocolo TCP roda somente nos sistemas finais, e não nos elementos
intermediários da rede (roteadores e comutadores da camada de enlace), os
elementos intermediários não mantem estado de conexão TCP. Na verdade, os
roteadores intermediários são completamente alheios às conexões TCP; eles
enxergam datagramas, e não conexões.

16. (NÃO FOI CHAT) Qual é a carga útil dos segmentos enviados no procedimento
de estabelecimento de conexão?
Dados da camada de aplicação.

17. (NÃO FOI CHAT) Quando o TCP deve de fato enviar dados que estão nos
buffers?
Segundo a especificação do TCP [RFC 793], o TCP deve enviar os dados em
segmentos segundo sua própria conveniência. A quantidade máxima de dados é
limitada pelo tamanho do MSS.

18. Como é estimado o tamanho do MSS?


Ocorre durante a negociação da conexão TCP e é baseada na capacidade do
receptor e na MTU da rede para evitar fragmentação e garantir uma comunicação
eficiente entre os hosts. O MSS é estimado para garantir que um segmento TCP
mais o comprimento do cabeçalho TCP/IP caibam no quadro da camada de enlace.

19. Consulte o RFC 854 e o RFC 1323 para conhecer mais detalhes sobre o campo
opções de um segmento TCP. Elabore sobre as opções “Você está aí” e “Escala de
Janela TCP”.

20. Qual é a causa mais provável da expiração do temporizador de um segmento?


A causa mais provável é o congestionamento da rede, ou seja, um grande número
de pacotes chegando em roteadores no caminho entre a origem e o destino.

21. Qual a diferença entre controle de fluxo e controle de congestionamento?


O controle de fluxo gerencia o fluxo de dados entre o remetente e o receptor,
enquanto o controle de congestionamento gerencia o congestionamento na rede. O
controle de fluxo se concentra em evitar a sobrecarga do receptor, enquanto o
controle de congestionamento visa evitar o congestionamento na rede.

22. (NÃO FOI CHAT) Quais são as três fases de uma comunicação orientada a
conexão?
Estabelecimento de conexão, transferência de dados, encerramento da conexão.

23. Quais campos estão presentes no cabeçalho TCP mas ausentes no UDP? Por
que eles não são necessários?
Número de sequência, Número de confirmação e Tamanho da janela. Não são
necessários porque o UDP é um protocolo de transporte simplificado, que oferece
uma comunicação mais leve e rápida, mas não garante a confiabilidade e o controle
de fluxo oferecidos pelo TCP.

24. É possível que uma aplicação desfrute de transferência confiável de dados


mesmo quando roda sobre UDP? Caso a resposta seja afirmativa, como isso
acontece?
Não, pois o UDP é um protocolo de transporte não confiável, o que significa que não
oferece garantia de entrega confiável, controle de fluxo ou controle de
congestionamento embutidos.

25. Nos protocolos rdt, por que é necessário introduzir números de sequência?
É essencial para garantir a confiabilidade e a correta ordenação dos pacotes durante
a transmissão de dados. Isso permite a detecção e a correção de erros, bem como a
entrega confiável dos dados ao receptor.

26. (NÃO FOI CHAT) Nos protocolos rdt, por que é necessário introduzir
temporizadores?
Para poder tratar as perdas de dados no canal. Se o ACK para um segmento
transmitido não é recebido durante um determinado tempo, assume-se que o
segmento está perdido. Neste caso, ocorre uma retransmissão.

27. (NÃO FOI CHAT) Suponha que o hospedeiro A envie dois segmentos TCP um
atrás do outro ao hospedeiro B sobre uma conexão TCP. O primeiro segmento
tem número de sequência 90 e o segundo, número de sequência 110.
a. Quantos dados tem o primeiro segmento?
20 bytes.

b. Suponha que o primeiro segmento seja perdido, mas o segundo


chegue a B. No reconhecimento que B envia a A, qual será o número de
reconhecimento?
ACK = 90

28. (NÃO FOI CHAT) O UDP e o TCP usam complementos de 1 para suas somas de
verificação. Suponha que você tenha as seguintes três palavras de 8 bits: 01010011,
01100110 e 01110100. Qual é o complemento de 1 para as somas dessas palavras?
(Note que, embora o UDP e o TCP usem palavras de 16 bits no cálculo da soma de
verificação, nesse problema solicitamos que você considere somas de 8 bits.)
Mostre todo o trabalho. Por que o UDP toma o complemento de 1 da soma, isto é,
por que não toma apenas a soma? Com o esquema de complemento de 1, como o
destinatário detecta erros? É possível que um erro de 1 bit passe despercebido? E
um erro de 2 bits?
01010011 + 01100110 = 10111001
10111001 + 01110100 = 100101101

Para detectar erros, o receptor adiciona as quatro palavras (as três palavras
originais e os checksum). Se a soma contém um zero, o receptor sabe que ocorreu
um erro. Todos um bit erros serão detectados, mas dois bits de erro não podem ser
detectados (por exemplo, se o último dígito da primeira palavra é convertido para um
Oeo último dígito da segunda palavra é convertido para um 1).
29. (NÃO FOI CHAT) Uma conexão TCP precisa transferir 5.000 bytes de um
arquivo. A numeração do primeiro byte é 10.001. Quais são os números de
sequência para cada segmento se os dados forem enviados em cinco
segmentos, cada um deles transportando 1.000 bytes?
Segmento 1 -> Número de sequência: 10,001 (intervalo: 10,001 a 11,000)
Segmento 2 -> Número de sequência: 11,001 (intervalo: 11,001 a 12,000)
Segmento 3 -> Número de sequência: 12,001 (intervalo: 12,001 a 13,000)
Segmento 4 -> Número de sequência: 13,001 (intervalo: 13,001 a 14,000)
Segmento 5-> Número de sequência: 14,001 (intervalo: 14,001 a 15,000)

30. Qual é o valor da janela de recepção (rwnd) para o hospedeiro A, se o


destinatário, o hospedeiro B, tiver um tamanho de buffer igual a 5.000 bytes e
1.000 bytes de dados recebidos e não processados?
rwnd = Tamanho do buffer - Dados recebidos e não processados
= 5.000 bytes - 1.000 bytes
= 4.000 bytes

31. Qual o tamanho da janela para o hospedeiro A se o valor de rwnd for 3.000
bytes e o valor de cwnd for 3.500 bytes?
Se o valor de rwnd for 3.000 bytes e o valor de cwnd for 3.500 bytes, o tamanho da
janela para o hospedeiro A será de 3.000 bytes, pois é o valor mínimo entre os dois.

32. O TCP do hospedeiro A abre uma conexão usando um número de sequência


inicial igual a 14.534. O TCP do hospedeiro B (receptor) abre a conexão com
um número de sequência inicial igual a 21.732. Mostre graficamente os três
segmentos TCP de estabelecimento da conexão.

33. Em uma conexão, o valor de cwnd é 3.000 e o valor de rwnd é 5.000. O


hospedeiro transmitiu 2.000 bytes que ainda não foram confirmados. Quantos
bytes mais podem ser transmitidos?
cwnd = 3.000 (valor da janela de congestionamento)
rwnd = 5.000 (valor da janela de recepção)
Bytes já transmitidos e não confirmados = 2.000 bytes

cwnd disponível = cwnd - Bytes já transmitidos e não confirmados


= 3.000 - 2.000
= 1.000 bytes

34. Um cliente usa TCP para enviar dados a um servidor. O total de dados é de 16
bytes. Calcule a eficiência dessa transmissão no nível TCP (razão entre os
bytes úteis e o total de bytes).
Total de bytes enviados = 20 bytes (cabeçalho TCP) + 16 bytes (dados) = 36 bytes

Eficiência = Bytes úteis / Total de bytes enviados


= 16 bytes / 36 bytes
Eficiência = 4/9 ≈ 0,4444 (ou aproximadamente 44,44%)
35. O TCP está transmitindo dados a 1 Mbyte/s. Se o número de sequência iniciar
com 7.000, quanto tempo levará até o número de sequência retornar a zero?
Taxa de transmissão: 1 Mbyte/s (ou 1.000.000 bytes/s)
Número de sequência inicial: 7.000
Intervalo de valores do número de sequência: 0 a 4.294.967.295 (2^32 - 1)

Tempo necessário = Número de bytes transmitidos / Taxa de transmissão


= ((2^32 - 1) - 7.000) / 1.000.000

Tempo necessário ≈ (4.294.967.295 - 7.000) / 1.000.000


≈ 4.294.960.295 / 1.000.000
≈ 4.294,96 segundos

36. (NÃO FOI CHAT) Os hospedeiros A e B estão diretamente conectados com um


enlace de 100 Mbits/s. Existe uma conexão TCP entre os dois hospedeiros, e A
está enviando a B um arquivo enorme por meio dessa conexão. O hospedeiro
A pode enviar seus dados da aplicação para o socket TCP a uma taxa que
chega a 120 Mbits/s, mas o hospedeiro B pode ler o buffer de recebimento TCP
a uma taxa de 50 Mbits/s. Descreva o efeito do controle de fluxo do TCP.
O controle de fluxo vai regular a taxa de A para que seja compatível com a taxa
de leitura de B, para que o buffer não estoure com os a quantidade de dados
enviados pelo A para o buffer de B.

37. Suponha que o buffer de recepção do hospedeiro B fique tão cheio que rwnd =
0. Após anunciar ao hospedeiro A que rwnd = 0, imagine que B não tenha nada
para enviar ao hospedeiro A. Enquanto o processo de aplicação em B esvazia
o buffer, o TCP não envia novos segmentos com novos valores rwnd para o
hospedeiro A. Na verdade, o TCP lhe enviará um segmento somente se tiver
dados ou um reconhecimento para enviar. Por conseguinte, o hospedeiro A
nunca será informado de que foi aberto algum espaço no buffer de recepção
do hospedeiro B: ele ficará bloqueado e não poderá transmitir mais dados!
Como resolver esse impasse?
O processo de aplicação no hospedeiro B esvazia o buffer de recepção e cria
espaço disponível, o TCP no hospedeiro B atualizará o valor de rwnd e enviará um
segmento TCP de confirmação (ACK) para o hospedeiro A. Esse segmento conterá
o novo valor de rwnd, informando ao hospedeiro A que agora há espaço disponível
para enviar mais dados.
Dessa forma, o hospedeiro A será informado sobre a abertura de espaço no buffer
de recepção do hospedeiro B e poderá retomar a transmissão de dados.
O TCP utiliza o controle de fluxo para resolver o impasse em que o hospedeiro A fica
bloqueado devido ao buffer de recepção do hospedeiro B estar cheio. O TCP
garante que o hospedeiro A seja notificado assim que houver espaço disponível para
enviar mais dados.

38. Suponha que os cinco valores de SampleRTT medidos sejam 106 ms, 120 ms,
140 ms, 90 ms e 115 ms. Calcule o EstimatedRTT depois que forem obtidos
cada um desses valores de SampleRTT, usando um valor de 𝜶= 0,125 e
supondo que o valor de EstimatedRTT seja 100 ms imediatamente antes que a
primeira dessas cinco amostras seja obtida. Calcule também o DevRTT após a
obtenção de cada amostra, considerando um valor de 𝜷= 0,25 e que o valor de
DevRTT seja 5 ms imediatamente antes que a primeira dessas cinco amostras
seja obtida. Por fim, calcule o TimeoutInterval do TCP após a obtenção de cada
uma dessas amostras.

Para SampleRTT = 106 ms:


EstimatedRTT = (1 - 0,125) * 100 ms + 0,125 * 106 ms = 100 ms + 13,25 ms =
113,25 ms
DevRTT = (1 - 0,25) * 5 ms + 0,25 * |106 ms - 113,25 ms| = 3,75 ms + 1,8125 ms =
5,5625 ms
TimeoutInterval = 113,25 ms + 4 * 5,5625 ms = 113,25 ms + 22,25 ms = 135,5 ms

Para SampleRTT = 120 ms:


EstimatedRTT = (1 - 0,125) * 113,25 ms + 0,125 * 120 ms = 113,25 ms + 1,53125
ms = 114,78125 ms
DevRTT = (1 - 0,25) * 5,5625 ms + 0,25 * |120 ms - 114,78125 ms| = 4,171875 ms +
1,3125 ms = 5,484375 ms
TimeoutInterval = 114,78125 ms + 4 * 5,484375 ms = 114,78125 ms + 21,9375 ms =
136,71875 ms

Para SampleRTT = 140 ms:


EstimatedRTT = (1 - 0,125) * 114,78125 ms + 0,125 * 140 ms = 114,78125 ms +
6,765625 ms = 121,546875 ms
DevRTT = (1 - 0,25) * 5,484375 ms + 0,25 * |140 ms - 121,546875 ms| = 4,11328125
ms + 4,6171875 ms = 8,73046875 ms
TimeoutInterval = 121,546875 ms + 4 * 8,73046875 ms = 121,546875 ms +
34,921875 ms = 156,46875 ms

Para SampleRTT = 90 ms:


EstimatedRTT = (1 - 0,125) * 121,546875 ms + 0,125 * 90 ms = 121,546875 ms +
2,90625 ms = 124,453125 ms
DevRTT = (1 - 0,25) * 8,73046875

Você também pode gostar