Redes de Computadores I – Trabalho B (Prático) Grupos: no máximo 4 alunos Data da entrega e apresentação: 24/novembro/2010, na segunda metade da aula Valor: 30% da nota do Grau B Definição No segundo trabalho da disciplina de Redes de Computadores I, você deve implementar um simulador para alguns aspectos da comunicação TCP vistos em aula. Estes aspectos são: - abertura de conexão - controle de fluxo - controle de erros - fechamento de conexão Neste sentido, você deverá implementar uma aplicação Java que envia um pacote TCP de uma máquina para outra, via sockets. O segmento a ser enviado trata-se de uma classe que contem os campos do cabeçalho TCP. Esta classe será disponibilizada na página da disciplina (classe PacoteTCP). O que você tem que fazer é preencher os campos de acordo com o que a mensagem se propõe. Por exemplo, para enviar uma solicitação de conexão, deve-se setar o campo SYN do cabeçalho. Para enviar um ACK de recebimento, o campo ACK deve ser indicado, e assim por diante. Os campos que não forem importantes e/ou não forem utilizados podem ser sempre setados todos em 0 (zero). Para o controle de fluxo, você pode escolher entre uma das opções: Go-Back-N ou Retransmissão Seletiva. Assim sendo, cada máquina deve ter um buffer de mensagens que podem ser recebidas antes de serem “entregues” para a aplicação (você deverá simular esta entrega para a aplicação, para liberar o buffer). Assim, nas mensagens, o tamanho da janela deve ser informado, conforme visto em aula. Para o controle de erros, crie estruturas e métodos que controlem toda a comunicação. Assim, você deve criar um método que calcule o checksum das mensagens recebidas, para verificar o recebimento correto. O cálculo do checksum pode ser realizado com Strings, com bits, como for desejado. O importante é simular o cálculo de maneira correta. (Não esqueça que deve ser criado o PseudoHeader para o cálculo do checksum. Não esqueça também de implementar um mecanismo de timeout para a retransmissão dos pacotes quando necessário). Você deve permitir ao usuário a opção de forçar erros, forçar perdas de pacotes, forçar perdas de ACK e a opção de entregar uma mensagem para a aplicação quando desejado (para liberar o buffer). Faça, então, seu programa ser executado PASSO-A-PASSO. A apresentação do trabalho será em sala de aula (somente para o professor no notebook), e você deve entregar via e-mail ([email protected]) os arquivos .java. Caso algum grupo precise de notebook para o dia da apresentação, informe com antecedência para o professor. A avaliação será como segue: - Abertura da conexão: 2,0pts - Encerramento da conexão: 2,0pts - Controle de erros (checksum): 3,0pts - Controle de fluxo: 3,0pts - Interface gráfica (útil): 1,0pt (extra) A apresentação pode tirar nota INDIVIDUALMENTE de componentes do grupo.