1a Prova de Comunicação de Dados IV 26/10/2001
1a Prova de Redes de Computadores/Redes de Computadores I
Prof Michael Stanton
GABARITO
(A soma máxima das notas indicadas é 4 - multiplica-se por 2,5 para obter a nota oficial)
RESPONDA A 4 das 5 QUESTÕES
- Explique porque o protocolo de transporte confiável que utiliza apenas um bit para numerar os segmentos sofre com problemas de desempenho. Descreva uma maneira de contornar este problema. (0,5 pts)
RESPOSTA: O uso de apenas um bit para numerar os segmentos permite distinguir entre apenas dois pacotes (de numeração "0" e "1"), e permite que exista no máximo um pacote em trânsito a cada vez. Para transmitir o próximo, é necessário que seja recebido antes o reconhecimento do anterior. Isto significa que a taxa de transmissão tem um limite superior de 1 pacote por TIV (tempo ida e volta), que é geralmente muito baixo. Para aumentar o desempenho, será necessário que existam múltiplos pacotes (N) em trânsito simultaneamente, o que permite aumentar para N pacotes por TIV. Para tanto, é necessário aumentar o espaço de numeração dos pacotes, o que por sua vez requer maior número de bits.
- Explique sucintamente o funcionamento dos algoritmos "Volta-N" e "Retransmissão seletiva", dando destaque aos aspectos de utilização eficiente do canal de transmissão e de memória no receptor. (0,5 pts)
RESPOSTA: Ambos estes algoritmos se aplicam ao caso de existirem múltiplos pacotes em trânsito simultaneamente, e diz como deve agir o receptor perante irregularidades de seqüência de chegada. No "Volta-N", o receptor apenas aceita e reconhece o próximo pacote na seqüência. Se vier um pacote fora de seqüência, causado por perda ou atraso, o receptor reenvia o último reconhecimento e descarta o pacote recebido. Ao receber pelo segunda vez um mesmo reconhecimento, o remetente deve reenviar todos os pacotes já enviados depois do pacote duplamente reconhecido. No algoritmo "Retransmissão seletiva", ao receber um pacote fora de ordem, ele é guardado num buffer de recepção, e é enviado para o remetente mensagem de reconhecimento informando o pacote que (ainda) está faltando na seqüência. O remetente deve reenviar apenas os pacotes assim reclamados. Quando chegam estes no receptor, este o entrega para o usuário, junto com os seguintes, que haviam sido guardados no seu buffer de recepção. A "Retransmissão seletiva" otimiza a utilização do canal de transmissão, eliminando retransmissão desnecessária, ao custo de ter que prover memória para o buffer. Já o "Volta-N" dispensa o buffer, mas pode retransmitir pacotes já devidamente entregues sem problema.
- O que é congestionamento e quais são suas conseqüências? (0,4 pts)
RESPOSTA: Congestionamento é a contenção para uso de recursos de transmissão e comutação, causada por excesso de demanda. Ela se manifesta na forma de filas nas portas de entrada e saída de equipamentos de comutação, e pode levar à perda de pacotes, caso se esgotem os recursos de memória disponíveis para as filas.
- Descreva o funcionamento do algoritmo de controle de congestionamento utilizado no protocolo TCP. (0,4 pts)
RESPOSTA: O TCP utiliza controle adaptativo da taxa de transmissão de segmentos, determinada pelo tamanho do buffer de retransmissão, tentando ajustar esta taxa à capacidade do canal de transmissão disponível. O esgotamento desta capacidade é indicado pela ocorrência de congestionamento, manifestada através do atraso na chegada de mensagens de reconhecimento enviados pelo receptor, ou pela simples não chegada destas mensagens. O procedimento usa dois algoritmos distintos: o de partida lenta, o outro de evitar congestionamento. O de partida lenta inicia com o buffer de retransmissão de tamanho 1 (segmento). Cada vez que é recebido um reconhecimento, é aumentado em 1 o tamanho do buffer. Isto causa um crescimento exponencial no seu tamanho e na taxa de transmissão. Em algum momento, este crescimento congestionará o canal, indicado por atraso na chegada dos reconhecimentos. Quando isto ocorrer, se reduz na metade o tamanho do buffer ("limiar de congestionamento") e passa para o outro algoritmo de evitar congestionamento. Neste, enquanto chegam normalmente as mensagens de reconhecimento, o buffer se aumenta em 1 segmento por TIV (aumento aditivo). Se houver atraso na chegada de reconhecimentos, volta-se ao novo limiar de congestionamento (metade do buffer atual - diminuição multiplicativa). Se houver perda de reconhecimentos, volta-se ao início da partida lenta.
- Mostre porque este algoritmo é considerado ser justo. (0,2 pts)
RESPOSTA: Pode-se mostrar que havendo dois fluxos TCP passando pelo mesmo gargalo, o funcionamento do algoritmo de evitar congestionamento tende a dividir igualmente a banda entre os dois fluxos (v. transparência 3b-29 - abaixo).

- Descreva como são usados os protocolos SMTP e POP3 no processo de entrega de mensagens de correio eletrônico da sua origem ao seu destino final. Não esqueça de mencionar a natureza dos locais intermediários onde são armazenadas temporariamente as mensagens. (0,6 pts)
RESPOSTA: SMTP é usado para enviar uma mensagem de correio para um servidor SMTP, que poderá ser o destino final ou um ponto intermediário. O remetente compõe sua mensagem no seu próprio sistema, e então usa SMTP para enviar a mensagem para um servidor intermediário para reencaminhamento. Tipicamente, o ponto intermediário é um servidor "próximo" do remetente, que este usa para passar-lhe a tarefa de determinar o destino final das mensagens a serem remetidas. Nele, as mensagens são armazenadas temporariamente, e então processados por um cliente SMTP, que as envia para os servidores SMTP indicados pelo endereço DNS do destinatário (registro do tipo MX). No servidor destino, as mensagens destinadas para usuários locais são guardadas em caixas de correio individuais. Elas podem ser recuperadas (copiadas) destas pelo sistema pessoal do destinatário final, usando o protocolo POP3.
- Explique qual é e como funciona o mecanismo do correio eletrônico usado na Internet para o envio de "attachments", de natureza arbitrária. (0,4 pts)
RESPOSTA: O protocolo SMTP se encarrega de transmitir apenas textos codificados usando o código ASCII, escritos em linhas curtas, terminadas por CR LF (RFC 822). Para poder ser enviado qualquer outro formato de mensagem, ela precisa primeiro ser convertida em ASCII. Tradicionalmente isto era feito usando as conversores uuencode e uudecode. Em 1992, a IETF adotou o esquema MIME (Multipurpose Internet Mail Extensions), que define uma série de formatos de documentos que possam compor uma mensagem de correio, juntamente com alternativas de codificação para ASCII, para permitir seu envio usando SMTP. MIME representa uma extensão do RFC 822, e é extensível, para permitir a futura inclusão de novos formatos de documento. Um agente de correio que implementa MIME permite compor mensagens não ASCII, e ainda incluir "attachments", que fazem parte de uma mensagem com múltiplas partes. Ao ser recebida uma mensagem MIME por um agente que implementa MIME, é feita a conversão inversa, permitindo a visualização correta das mensagens e seus componentes pelo destinatário.
- Justifique a adoção de uma implementação distribuída para o serviço de nomes DNS. (0,5 pts)
RESPOSTA: As vantagens de uma implementação distribuída incluem a eliminação de um ponto único de falha, a eliminação de um gargalo de desempenho, e a possibilidade de distribuir o trabalho de manutenção da base de dados por delegação de responsabilidades.
- Quais características do DNS aumentam sua disponibilidade e rapidez de resposta? Explique sua resposta. (0,5 pts)
RESPOSTA: A disponibilidade é aumentado pela replicação de servidores, sendo obrigatório a existência de pelo menos um servidor secundário em todos os níveis. No nível raiz, hoje tem 12 servidores. A rapidez depende principalmente de uso de cache pelo servidor local: nele são guardadas, tipicamente por alguns dias, as respostas às consultas. Logo, se forem repetidas as consultas, elas poderão vir a ser atendidas pelo servidor local, com grande economia de tempo. O DNS também usa UDP, o que poderá dar um tempo de resposta mais curto do que o uso de TCP, mas esta contribuição é menos significativo.
- Juntas, as camadas de transporte e rede são responsáveis por mover dados entre pares de computadores ligados a uma rede. Explique quais as funções que precisam ser implementadas nestas duas camadas e justifique a separação entre as duas camadas observadas na Internet. (0,5 pts)
RESPOSTA: Para uma aplicação distribuída funcionar, é necessário cada componente dela poder enviar suas mensagens para as demais componentes relevantes. Entre as funções que poderiam ser fornecidas por uma rede para dar suporte a esta comunicação estão: o endereçamento e roteamento das mensagens ao sistema remoto, e, dentro deste, para a aplicação remota, a confiabilidade da entrega, o controle de desempenho e do congestionamento, os serviços com e sem conexão. Na Internet, decidiu-se que a primeira função, por ser a mais complexa, seria a única confiada à camada de rede: com isto esta camada implementa um serviço não confiável, sem garantias de desempenho. As demais funções foram confiadas para a camada de transporte, e são realizadas apenas nas pontas extremas da comunicação, simplificando assim a implementação.
- Explique a diferença entre a "borda" de uma rede e seu "núcleo", dando destaque à funcionalidade implementada em cada parte. Você deverá relacionar isto às camadas de protocolo implementadas nas diferentes partes. (0,5 pts)
RESPOSTA: A borda consiste dos sistemas onde são executadas as aplicações, enquanto o núcleo se dedica a resolver problemas de roteamento de mensagens. Com isto as camadas superiores (aplicação e transporte) estão presentes apenas na borda da rede (v. tb a parte (a)).