Redes de Computadores I – Trabalho B (Prático) Grupos: no

Propaganda
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.
Download