Infra-Estrutura de Comunicação (IF678) Prof.: Paulo Gonçalves Projeto – 2015-2 Peso: 30% Especificação: Versão 1.1 de 18/11/2015 Retspan? 1. Objetivo O objetivo deste projeto é o desenvolvimento de uma aplicação P2P que permita aos seus usuários baixarem arquivos de outros computadores (pares) participantes da rede P2P. Para isso, deverá haver um servidor que faça registro (login/senha) dos participantes e hospede referências de conteúdo compartilhado por eles. O cliente faz uma busca no servidor pelo arquivo de interesse e o servidor retorna os dados de contato do(s) par(es) que hospeda(m) o recurso desejado, a localização do conteúdo (caminho) e pasta raiz compartilhada por ele. Em posse desses dados, o cliente passa a se comunicar diretamente com um dos pares que hospeda o recurso a fim de iniciar o processo de download do arquivo. A Figura 1 ilustra uma rede P2P “Retspan?” O cliente também poderá navegar pela pasta compartilhada pelos pares, selecionar outros arquivos e fazer o download deles. Todo(s) o(s) protocolo(s) de comunicação deverá(deverão) ser construído(s) sobre o protocolo TCP. Os requisitos mínimos do projeto estão explicitados no texto que segue. Figura 1- Exemplo de Rede 2. Regras mínimas a serem observadas: i. a implementação poderá ser em qualquer linguagem; ii. a aplicação deverá possuir interface gráfica tanto do lado cliente quanto do lado servidor; iii. o servidor deverá mostrar em sua interface gráfica em tempo real, a lista de usuários conectados ao serviço, o endereço IP de cada um e o RTT estimado entre ele o cliente a cada 10 segundos, mas somente quando o cliente estiver conectado ao servidor; iv. o servidor deverá suportar ao menos 2 clientes simultaneamente; v. a aplicação cliente poderá solicitar, em paralelo, mais de um arquivo ao mesmo par; vi. a aplicação cliente deverá mostrar, em tempo real, uma barra indicando o percentual já baixado de cada arquivo solicitado, uma estimativa de tempo para término do download e uma estimativa do RTT para o par. A medida de RTT deverá ser atualizada a cada 10 segundos; vii. a aplicação cliente deverá permitir que o usuário configure através da interface gráfica o IP ou nome do servidor bem como a porta de comunicação dele; viii. a aplicação cliente deverá permitir ao usuário “iniciar/pausar/cancelar/reiniciar” o download. O cancelamento do download implica na deleção do trecho já baixado. O download deverá sempre continuar de onde parou quando reiniciado (ou do zero caso o trecho tenha sido apagado); ix. Um par só poderá aceitar no máximo 4 downloads simultâneos; x. O cliente não pode conseguir listar/acessar/manipular conteúdo que esteja fora da pasta compartilhada. Todo conteúdo da pasta compartilhada, incluindo subpastas e seus arquivos devem ser listados se o cliente acessar; xi. O cliente não pode manipular (mover, apagar, etc) pastas e arquivos dos pares; xii. o(s) protocolo(s) de comunicação para a camada aplicação a ser(em) usado(s) pelos processos deverá(deverão) ser proposto(s) pelo grupo; xiii. a aplicação deverá suportar a transferência de arquivos de até 1 Gbyte. xiv. serão aceitos grupos de até 6 integrantes. Para os que ainda não fizeram, uma lista citando os integrantes do grupo deverá ser entregue em sala de aula até o dia 20/11; xv. o trabalho deverá ser apresentado durante a aula do dia 16/12 (qualquer GRAD) e todos os integrantes deverão participar; xvi. entregar um relatório que: a) especifique as linguagens adotadas no projeto; b) detalhe todas as regras de funcionamento dos protocolos implementados como a máquina de estados (ou fluxo de mensagens para cada situação), o tipo, o formato e a semântica das mensagens; c) apresente claramente o overhead dos protocolos; d) mostre como foi feito o cálculo da estimativa de tempo para término da transferência de arquivos; e) mostre como foi feito o cálculo da estimativa de RTT pelo cliente e pelo servidor; f) explicite as diferenças entre o(s) protocolo(s) apresentado(s) no relatório e o(s) protocolo(s) efetivamente implementado(s); g) apresente as dificuldades encontradas ao longo do desenvolvimento do projeto. 3. Avaliação Serão observados os seguintes itens para a atribuição da nota ao projeto: Se o software está realmente funcional; Se os critérios mínimos definidos foram atendidos; A qualidade da apresentação (não é preciso fazer ppts); A qualidade da implementação; A qualidade do relatório; Acompanhamento do projeto pelo monitor do grupo; A presença e participação na apresentação do trabalho; A participação no desenvolvimento do trabalho. 4. Dicas Não deixe para começar o projeto mais tarde. Comece logo e no mais tardar dia 18/11/2015 :-) Impossível fazer o projeto de “virada” ... mesmo em duas semanas de “viradas” ;-) Fazer um cronograma de atividades de desenvolvimento do projeto. Considere que está na época de provas e potencialmente de desenvolvimento de outros projetos em outras disciplinas; Começar o trabalho definindo os protocolos de comunicação. Assim, fica mais fácil saber o que implementar e como. O tempo de implementação também é minimizado; Não esquecer de dar atenção ao relatório! A entrega do mesmo deverá ser no dia da apresentação, mas antes de começá-la; Os monitores acompanharão o desenvolvimento dos projetos. Para isso, cada grupo deverá procurar um dos monitores para apresentar o estágio de desenvolvimento do projeto conforme datas no item abaixo; São três acompanhamentos até a apresentação do projeto: o primeiro até o dia 30/11, o segundo até o dia 07/12 e o terceiro até o dia 14/12; A responsabilidade de ter acompanhamento no projeto é do grupo e não do monitor. Assim, não espere que os monitores vão “correr atrás” dos grupos. Cuidado ao dividir as tarefas de implementação do projeto entre os componentes do grupo. Será necessário integrar tudo depois e isso leva tempo (tipicamente não menos de 1 semana)! Lembrem-se da importância do projeto! São até 3 pontos na média parcial! Certamente a especificação apresentada deixa pontos em aberto. Dúvidas? Pergunte em sala! Suas dúvidas podem ser também as de outros alunos!