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.
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.
Prof. Elias P. Duarte Jr.     Departamento de Informática     UFPR