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 2013/1

Uma Aplicação Confiável sobre UDP

Entrega: Todos os trabalhos serão acessados na terça-feira dia 9 de julho de 2013; não serão aceitos trabalhos disponibilizados após esta data. Atenção, são 4 semanas de prazo, organize-se!

O trabalho deve preferencialmente 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.

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

Descrição do Trabalho

O programador de aplicações para a Internet que opta pelo UDP como seu protoco de transporte tem um trabalho adicional, se compararmos com o TCP. O UDP, bem como o IP, é um protocolo não- confiável, não-orientado à conexão. Assim o UDP permite que todos os problemas eventualmente surgidos na rede IP se estendam à camada de aplicação. O programador tem que, portanto, projetar sua aplicação para detectar se os dados (1) se perderam; (2) duplicaram; (3) chegaram fora de ordem, e tomar as medidas necessárias para resolver estes problemas.

Neste Trabalho Prático você vai implementar uma aplicação cliente-servidor sobre UDP. Cada datagrama UDP/IP carrega um número inteiro positivo que identifica a ordem sequencial do datagrama. O identificador do primeiro pacote é escolhido aleatoriamente. O último datagrama tem identificador -1. O cliente tem uma interface que permite que o usuário escolha se quer (1) perder dados; (2) duplicar dados; (3) embaralhar dados. Se a opção é perder ou duplicar dados, deve ser adotada uma estratégia aleatória para escolher quais dados são perdidos ou duplicados. Se a opção é perder os dados, o servidor deve fazer um pedido explícito de retransmissão.

O servidor deve imprimir os dados que recebeu (com dados perdidos, duplicados, fora de ordem) bem como os dados corretos, com todos os problemas resolvidos.

A linguagem de programação permitida é de livre escolha dos alunos. Sugere-se Python. Todos os detalhes, como configuração, mensagens e o que não estiver especificado aqui deve ser definido e documentado no relatório. Interface, organização, criatividade são valorizadas! Capriche!

ENTREGA DO TRABALHO

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

  • 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.
  • 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 ou dispatcher.py.txt
  • 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:

  • Não serão aceitos trabalhos impressos, nem em meio ótico/magnético.
  • Alguns trabalhos serão defendidos no laboratório, portanto certifique-se que seu trabalho funciona aqui.
  • Pode ser usada qualquer linguagem de programação. A diversidade é bem vinda! O professor recomenda que os alunos usem esta oportunidade para aprender a linguagem Python.


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