O documento contém as respostas para uma lista de exercícios sobre redes de computadores. Aborda tópicos como protocolos de transporte UDP e TCP, números de porta, conexões, temporizadores, checksums e técnicas de recuperação de erros como retransmissão seletiva e volta-N.
1. Nome________________________________________________________________
LISTA DE EXERCÍCIOS – Respostas
1) Cite pelo menos dois motivos para o programador na camada da aplicação escolher o
protocolo UDP em vez do TCP.
• Manter uma taxa de transmissão constante.
• A não necessidade de envio de segmentos perdidos, por exemplo, em uma
comunicação de voz sobre IP (VoIP).
2) É possível conseguir uma transmissão confiável através do uso do protocolo UDP. Caso
positivo diga como. Caso negativo, diga o porquê.
• Sim é possível. Pode-se implementar mecanismos de transmissão confiável na
Aplicação.
3) O que é um round trip time (RTT)?
• É o tempo de ida+volta de um pacote, ou seja, o tempo que leva para um
pequeno pacote viajar do cliente ao servidor e de volta ao cliente
4) Considerando os “protocolos” apresentados em aula (“pare e espere”), calcule a vazão e
a taxa de utilização do recurso físico, considerando:
• Enlace de 100 Mbps
• Transmissão de pacotes de 1 kB ~ 8000 bits
• Retardo fim a fim = 10 ms (tempo de propagação)
• Vazão = 794 kb/s
• Taxa de utilização 0,79%
5) Considere uma conexão TCP entre o hospedeiro A e o hospedeiro B. Suponha que os
segmentos TCP que trafegam do hospedeiro A para o hospedeiro B tenham número de
porta da fonte x e número de porta destino y. Quais são os números de porta da fonte e
do destino para os segmentos que trafegam do hospedeiro B para o hospedeiro A?
• Porta fonte y
• Porta destino x
6) Descreva por que um desenvolvedor de aplicação pode escolher rodar uma aplicação
sobre UDP em vez de sobre TCP.
• O tráfego UDP não é regulado. Uma aplicação que usa transporte UDP pode
enviar tráfego à taxa que quiser, pelo tempo que quiser.
• O tamanho do cabeçalho é menor, portanto, haverá menos tráfego.
7) É 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?
• Mesma resposta da questão 2.
2. 8) Suponha que um processo no Computador C possua um socket UDP com número de
porta 6789 e que o computador A e o computador B, individualmente, enviem um
segmento UDP ao computador C com número de porta de destino 6789. Esses dois
segmentos serão encaminhados para o mesmo socket no computador C? Se sim, como o
processo no computador C saberá que esses dois segmentos vieram de computadores
diferentes?
• Sim os dois segmentos serão encaminhados para o mesmo socket no computador C,
como são dois computadores diferentes o processo no computador C identificará
pelo endereço IP, que é diferente nos dois computadores (A e B). O número da
porta fonte também é utilizado na diferenciação.
9) Suponha que um servidor Web seja executado no computador C na porta 80. Esse
servidor utiliza conexões contínuas e, no momento, está recebendo solicitações de dois
computadores diferentes, A e B. Todas as solicitações estão sendo enviadas através do
mesmo socket no computador C? Se eles estão passando por diferentes sockets, dois
desses sockets possuem porta 80? Discuta e explique.
• Na verdade, os servidores Web de alto desempenho atuais muitas vezes utilizam
somente um processo, mas criam uma nova thread com um novo socket de conexão
para cada nova conexão cliente. (Uma thread pode ser considerada um subprocesso
leve). Para um servidor desses, a qualquer dado instante podem haver muitos
sockets de conexão (com identificadores diferentes) ligados ao mesmo processo.
10) Nos protocolos “rdt” apresentados em aula, por que precisamos introduzir números de
seqüência?
• Para que o receptor possa distinguir se o segmento que está recebendo é um novo
segmento ou é uma retransmissão.
11) Nos protocolos “rdt” apresentados em aula, por que precisamos 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.
12) Suponha que o atraso de viagem de ida e volta entre o emissor e o receptor seja
constante e conhecido para o emissor. Ainda seria necessário um temporizador no
protocolo “rdt 3.0”, supondo que os pacotes podem ser perdidos? Explique.
• O tempo ainda será necessário. Se o RTT é conhecimento a vantagem será que o
emissor terá a certeza que o segmento ou o ACK foi realmente perdido após este
tempo.
13) Para que serve o DNS? Ele usa o protocolo TCP ou UDP?
• O serviço de DNS faz uma conversão de nome do host para endereço IP e vice-versa.
Este serviço utiliza o UDP.
3. 14) Aplicações multimídia costumam usar o protocolo TCP ou UDP? Por quê?
• Costumam utilizar o UDP, principalmente, porque estas aplicações precisam de
uma taxa de envio de dados constante e toleram uma certa quantidade de perdas de
pacotes.
15) O que é um timeout?
• É um tempo estimado pelo protocolo TCP. Este tempo está relacionado com o RTT
e assume-se que após a expiração deste tempo ocorreu a perda de um pacote.
16) Como é estabelecido o valor de timeout em uma conexão TCP? É um valor fixo?
• Este valor é estimado e não é fixo, sendo atualizado a cada RTT de um pacote
transmitido. Ele é calculado pela seguinte fórmula:
TimeoutInterval = EstimatedRTT + 4*DevRTT
sendo:
EstimatedRTT = (1-a)*EstimatedRTT + a*SampleRTT
(Valor recomendado [RFC 2988]: a = 0,125)
DevRTT = (1-b)*DevRTT + b*|SampleRTT-EstimatedRTT
(Valor recomendado, b = 0.25)
Onde:
SampleRTT: tempo medido da transmissão de um segmento até a respectiva
confirmação.
17) Para que serve um checksum em um segmento TCP ou UDP? Como ele é formado?
• O checksum serve para detectar “erros” (ex.: bits trocados) no segmento
transmitido. No TCP e no UDP o conteúdo do segmento é tratado como seqüência
de inteiros de 16-bits. Inicialmente, o campo checksum é zerado, posteriormente,
calcula-se o seu valor como a soma (adição usando complemento de 1) do
conteúdo do segmento e coloca-se o complemento do valor da soma no campo
checksum do TCP ou UDP.
18) Cite uma vantagem da abordagem Volta-N com relação à retransmissão seletiva.
• Não há buffer no receptor, portanto, o processo de implementação é mais simples.
19) Cite uma vantagem da abordagem Retransmissão Seletiva com relação ao Volta-N.
• Se houver somente um segmento perdido, transmite-se somente este segmento. Não
sendo necessário transmitir todos os outros já enviados e recebidos.
20) Qual é a grande desvantagem de uma transmissão do tipo “pare e espera” com relação a
uma do tipo “janelas deslizantes”
4. • A vazão da rede é muito baixa, pois, é necessário receber a confirmação de um
segmento anteriormente enviado antes de enviar o próximo.
21) O TCP oferece garantias de banda e de tempo real?
• Não. O TCP garante somente a transmissão confiável dos dados.
22) A camada de transporte coloca a informação de Porta de Emissor e Porta do Receptor
em cada segmento enviado. Para que serve a informação de porta?
• Serve para identificar cada conexão.