Universidade Federal do Paraná
Departamento de Informática
Bacharelado em Ciência da Computação
Prof. Elias P. Duarte Jr.

Trabalho Prático de Redes de Computadores II - Turma 2024/2

TCP versus UDP: A Verdade

Entrega: Todos os trabalhos deverão estar disponibilizados até quinta-feira dia 28 de novembro de 2023; não serão aceitos trabalhos disponibilizados após esta data. Atenção, são 3 semanas de prazo, organize-se! Termine antes da data limite!

Os alunos devem informar por e-mail a URL do trabalho, usando o subject "TP REDES II 2024-2"

O trabalho deve ser feito em dupla; o código, os testes e o relatório devem ser feitos por ambos os membros da dupla. Use esta oportunidade para melhorar sua habilidade de trabalhar em equipe.

Descrição do Trabalho

Sabemos que o protocolo TCP oferece um excelente desempenho: o esperado é que seja aproximadamente 90% da taxa nominal da rede. Por exemplo, executando uma aplicação sobre TCP/IP em uma rede 100Gbps obtemos uma vazão efetiva (para a aplicação!) de 90Gbps. Tendo em vista todos os controles que o TCP faz, este desempenho pode ser considerado surpreendente.

Entretanto, sabemos que em situações em que necessitamos de desempenho extremo, o UDP deve ser utilizado. O UDP não faz nenhum controle, apenas acrescenta portas ao IP. Isto é: permite a comunicação de processos sobre o IP. Tem também o checksum completo, mas até este é opcional.

Neste trabalho você vai responder à seguinte pergunta: na prática, quanto o TCP é melhor que o UDP?

Como fazer esta medida? Pois cada dupla vai definir :-) A dupla pode fazer transferência de arquivo com TCP e UDP. A dupla pode fazer transferência de dados em memória principal com TCP e UDP. A dupla pode considerar casos em que o UDP vai causar fragmentação, versus casos em que não vai levar. A dupla pode considerar casos em que o UDP tem o checksum desabilitado: isso faz diferença?

Veja: o UDP não detecta a perda de pacotes (que podem ocorrer inclusive em buffer local!) Assim é importante verificar se algo se perdeu. Sugiro fazer esta verificação depois de contar o tempo, para que não atrapalhe. Outra possibilidade é fazer também a verificação no recebimento, para identificar o quanto impacta no desempenho da rede.

Cada dupla pode fazer a implementação na linguagem que escolher, como Python, C, C++, Java ou qualquer outra linguagem.

ENTREGA DO TRABALHO

Deve ser construída uma página Web, que contém em documentos HTML, os seguintes itens:

  1. Relatório de como foi feito o trabalho e quais foram os resultados obtidos. Use desenhos, diagramas, figuras, todos os recursos que permitam ao professor compreender como a dupla estruturou o trabalho e quais resultados obteve. O objetivo é o professor entender como a dupla fez o trabalho, como o trabalho funciona.
  2. Código Fonte comentado. ATENÇÃO: acrescente a todo programa a terminação ".txt" para que possa ser diretamente aberto em um browser. Exemplos: cliente.py.txt ou servidor.c.txt
  3. Logs de execução dos processos cliente/servidores, que demonstrem a execução correta destes processos. Os testes devem ser exaustivos até o ponto que demonstrem com clareza a funcionalidade correta do sistema.

Observações:




Prof. Elias P. Duarte Jr.     Departamento de Informática     UFPR