Exercício de fixação do Capitulo 03 1 – Suponha que uma camada de rede forneça o seguinte serviço. A camada de rede no computador fonte aceita um segmento de tamanho máximo de 1200 bytes e um endereço de computador alvo da camada de transporte. Esta, então, garante encaminhar encaminhar o segmento para a camada de transporte no computador computador alvo. Suponha que muitos processos de aplicação de rede possam estar sendo executados no computador alvo. (A) Crie, da forma mais simples, o protocolo da camada de transporte possível que levará os dados da aplicação para o processo desejado no computador alvo. Suponha que o sistema operacional do computador alvo determinou um número de porta de 4 bytes para cada processo de aplicação em execução. Primeiro vamos chamar o protocolo de STP (Simple Transport Protocol - Protocolo de Transporte Simples). Do lado do emissor, o STP aceita do processo emissor um bloco de dados que não exceda 1196 bytes, um endereço de host de destino e um número de porta de destino. O STP adiciona 4 bytes no cabeçalho para para cada bloco e insere o número de porta porta do processo de destino neste cabeçalho. O STP então dá então o endereço do host de destino e o segmento resultante para a camada de rede. A camada de rede entrega o segmento para o STP no host de destino. destino. O STP então examina o número de porta porta no segmento, extrai os dados do segmento e os repassa para o processo, identificado pelo número de porta. (Endereço de destino, porta de destino e os dados. ) b) Modifique este protocolo de modo que ele forneça um “endereço de retorno” para o processo -alvo. O segment agora possui 2 campos campos no cabeçalho: cabeçalho: um campo campo para a porta de origem e um campo para a porta de de destino. Do lado do emissor, STP aceita aceita um bloco de dados não excedendo 1192 bytes, um um endereço de host de destino, um número de porta de origem e um número de porta de destino. O STP cria um segment que contém os dados da aplicação, o número da porta de origem e o número da porta de destino. Ele então dá o segmento e o endereço endereço do host de destino para a camada de rede. Após receber o segmento, no host de destino, o STP devolve ao aplicativo os seus dados e também o número de porta de origem. c) Em seus protocolos, a camada de transporte “tem de fazer algo” no núcleo da rede de comp utadores? Não, a camada de transporte não faz nada no núcleo da rede (nos roteadores), ela está presente apenas nos hospedeiros (Sistemas finais). 2 – Considere um planeta onde todos possuam uma família com seis membros, cada família viva em sua própria
casa, cada casa possua um endereço único e cada pessoa em certa casa possua um único nome. Suponha que este planeta possua um serviço postal que entregue cartas da casa fonte à casa alvo. O serviço exige que (i) a carta esteja em um envelope e que (ii) o endereço da casa alvo (e nada mais) esteja escrito claramente no envelope. Suponha que cada família possua um membro representante que recebe e distribui cartas para outros membros da família. As cartas não apresentam necessariamente qualquer indicação dos destinatários das cartas. a) Utilizando a solução do problema 1 como inspiração, descreva um protocolo que os representantes possam utilizar para entregar cartas de um membro remetente de uma família para um membro destinatário de outra família.
Para enviar uma carta, um membro da família deve dar dar sua carta para o delegado (membro representante da família que envia/recebe/distribui as cartas para os outros membros), o endereço da casa de destino e o nome do destinatário. O delegado então escreve o nome nome do destinatário no topo da carta; coloca a carta em um envelope e escreve o endereço da casa de destino no envelope. O delegado então entrega a carta ao serviço postal planetário. Na casa da família destinatária, o delegado (da outra família) recebe a carta do serviço de correio, tira a carta do envelope e verifica o nome do destinatário escrito a parte superior da carta, entregando-a então ao membro da família com este nome.
b) Em seu protocolo, o serviço postal precisa abrir o envelope e verificar a carta para fornecer o serviço? Não, o serviço postal precisa apenas que o endereço esteja escrito corretamente para funcionar, para ele não importa o que esteja no pacote, ou no nosso caso, na carta.
3 – Considere uma conexão TCP entre o hospedeiro A e o hospedeiro B. Suponha que os segmentos TCP que trafegam do hospedeiro A tenham número de porta fonte x e o 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? Número de porta origem “Y” e número de porta destino “X”.
4 – Descreva por que um desenvolvedor de aplicação pode escolher rodar uma aplicação sobre UDP em vez de sobre o TCP. A escolha do UDP pode se dar ao fato de que o programador quer ter um melhor controle sobre quais dados vão ser enviados e quando, o UDP não estabelece a conexão, então, não sobre o atraso de conexão, não tem controle de congestionamento, ou seja, o UDP envia pacotes sem se controlar, e o UDP tem baixa sobrecarga no cabeçalho.
5 – Por que o tráfego de voz e de vídeo é frequentemente enviado por meio do UDP e não do TCP na Internet de hoje? (Dica: A resposta que procuramos não tem nenhuma relação com o mecanismo de controle de congestionamento no TCP) Como a maioria dos firewalls são configurados para bloquear o tráfego TCP, o uso do UDP para o tráfego de voz e vídeo permite que o tráfego atravesse os firewalls.
6 – É 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? Sim. O desenvolvedor da aplicação pode inserir transferência confiável de dados no protocolo da camada de aplicação; entretanto, isto vai exigir uma quantidade significativa de trabalho e testes.
7 – 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 pelo mesmo socket no Computador C? Se sim, como o processo no computador C saberá que esses dois segmentos vieram de dois computadores diferentes? Sim, ambos os segmentos serão direcionados para o mesmo socket. Entretanto, para cada segmento recebido, na interface socket, o Sistema Operacional irá fornecer ao processo o endereço IP para determinar a origem dos segmentos individuais.
8 – Suponha que um servidor da Web seja executado no Computador C na porta 80. Esse servidor utiliza conexões continuas 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 vão passando por diferentes sockets, dois desses sockets possuem a porta 80? Discuta e explique. Para cada conexão persistente, o servidor Web cria sockets separados. Cada socket é identificado cm uma tupla quádrupla: (endereço IP de origem, número da porta de origem, endereço IP de destino, número da porta de destino). Quando o host C recebe um datagrama IP ele examina estes quatro campos no datagrama/segmento para determinar a qual socket ele deve entregar os dados do segmento TCP. Assim, as requisições de A e B passam através de sockets diferentes. O identificador para ambos os sockets tem a porta 80 como destino, no entanto, os identificadores para estes sockets têm diferentes valores para o IP de origem. Ao contrário do UDP, quando a camada de transporte passa a carga de um segmento TCP para o processo da aplicação, ele não especifica o endereço IP de origem, já que isto está implicitamente especificado pelo identificador do socket.
9 – Nos nossos protocolos rdt, por que precisamos introduzir números de sequência? Os números de sequência são necessários para que o receptor possa saber se um pacote recebido contém novos dados ou é uma retransmissão.
10 - Nos nossos protocolos rdt, por que precisamos introduzir temporizadores? Para lidar com as perdas no canal. Se o ACK para um pacote transmitido não é recebido dentro do período de duração do temporizador para o pacote, o pacote (ou a sua ACK ou NACK) é assumido como tendo sido perdido. Assim, o pacote é retransmitido.
11 – 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. Um temporizador ainda seria necessário no protocolo rdt 3.0. Se o tempo de ida e volta (RTT) é conhecido então a única vantagem será que o emissor sabe com certeza que o pacote ou o ACK (ou NACK) para o pacote foi perdido em comparação com a situação real, onde esta informação pode estar a caminho para o remetente, após a expiração do timer. No entanto, para detectar a perda para cada pacote, um temporizador de duração constante.
14- Verdadeiro ou falso. (A) O hospedeiro A está enviando ao hospedeiro B um arquivo grande por uma conexão TCP. Suponha que o hospedeiro B não tenha dados para enviar para o hospedeiro A. O hospedeiro não enviará reconhecimentos para o hospedeiro A porque ele não pode dar carona aos reconhecimentos dos dados. (B) O tamanho de rwnd do TCP nunca muda enquanto dura a conexão. (C) Suponha que o hospedeiro A esteja enviando ao hospedeiro B um arquivo grande por uma conexão TCP. O número de bytes não reconhecidos que o hospedeiro A envia não pode exceder o tamanho do buffer de recepção. (D) Imagine que o hospedeiro A esteja enviando ao hospedeiro B um arquivo grande por uma conexão TCP. Se o número de sequência para um segmento dessa conexão for m, então o número de sequência para o segmento subsequente será necessariamente m + 1. (E) O segmento TCP tem um campo em seu cabeçalho para Rwnd. (F) Suponha que o último SampleRTT de uma conexão TCP seja igual a 1 segundo. Então, o valor corrente de TimeoutInterval para a conexão será necessariamente ajustado para um valor ≥ 1 segundo.
(G) Imagine que o hospedeiro A envie ao hospedeiro B, por uma conexão TCP, um segmento com o número de sequência 38 e 4 bytes de dados. Nesse mesmo segmento, o número de reconhecimento será necessariamente 42
A – Falso B – Falso. C – Verdadeiro D – Falso E – Verdadeiro F – Falso G
-
Falso
15 – 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? O primeiro segmento tem 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? O número de reconhecimento será 90, pois o hospedeiro B ainda está esperando o primeiro segmento.
16 – Considere o exemplo do Telnet discutido na Seção 3.5. Alguns segundos após o usuário digitar a letra „C‟, ele digitará „R‟. Depois disso, quantos segme ntos serão enviados e o que será colocado nos campos de número de sequência e de reconhecimento dos segmentos? 1° segmento, de A -> B, Seq=43, Ack=80; Dados=‟R‟. 2° segmento, de B -> A seq=80, Ack=44, dados „R‟; 3° segmento, de A -> B, seq=44, ack=81, dados Nothing.
17 - Suponha que duas conexões TCP estejam presentes em algum enlace congestionado de velocidade R bps. Ambas as conexões têm um arquivo imenso para enviar (na mesma direção, pelo enlace congestionado). As transmissões dos arquivos começam exatamente ao mesmo tempo. Qual é a velocidade de transmissão que o TCP gostaria de dar a cada uma das conexões? R/2,
a
equidade
da
conexão.
18 – Verdadeiro ou falso: considere o controle de congestionamento no TCP. Quando um temporizador expira no remetente, o “valor de ssthresh” é ajustado para a metade de seu valor anterior Falso, o ssthresh é atualizado para a metade do ultimo valor de cwnd.