Skip to: site menu | section menu | main content

Prof. Marlos Marques

marlos.uesb@gmail.com

DCET 0747 - Redes de Computadores II

Trabalho Prático

Objetivo:

  • Simular o funcionamento de uma rede de computadores, através da implementação das diversas camadas e dos seus respectivos protocolos

Regras:

  • Codificação:
    • O arquivo Principal.java deverá conter o método main
    • O trabalho deverá compilar com a linha de comando javac Principal.java

  • Estrutura de arquivos:
    • O diretório com o trabalho deverá ser chamado de redes2_trabalhoXX_numeroDeMatricula. Ex. redes2_trabalho01_200012345
    • Este diretório deverá conter o arquivo Principal.java na sua raiz
    • A partir deste diretório organize os arquivos conforme conveniência

  • Entrega dos trabalhos via e-mail:
    • O subject/assunto deverá ser [redes2][trabalhoXX][numeroDeMatricula]. Ex: [redes2][trabalho01][200012345]
    • Compactar (.zip ou .rar) o diretótio redes2_trabalhoXX_numeroDeMatricula (sem os arquivos .class). Ex. redes2_trabalho01_200012345.rar
    • Anexar o arquivo compactado a um NOVO email e enviar
Observações:

  • Cada trabalho será entregue via email até as 23h59m da data estipulada
  • Os prazos NÃO SERÃO prorrogados
  • Utilizar editores de texto simples (ASCII puro) para a codificação
  • Gerar código através de compiladores padrão (JRE ou GCC/G++ GNU/Linux)
  • Em caso de alguma incompatibilidade, os trabalhos deverão estar executando perfeitamente nos sistemas computacionais (leia-se Linux) do laboratório de redes
  • Os trabalhos deverão estar em conformidade com as especificações do arcabouço (esqueleto dos métodos) pré-definidos em sala de aula
  • Utilize boas técnicas de programação. Sugestões podem ser encontradas aqui ou aqui.
  • Os trabalhos serão desenvolvidos individualmente;
  • Não serão admitidos trabalhos iguais:
    • Ajuda entre alunos/equipes é permitida e saudável ao processo de aprendizado, a cópia pura e simples não
    • Serão DESCONSIDERADOS os trabalhos dos envolvidos em cópia
  • Com relação aos nomes:
    • XX é o número correspondente ao trabalho desenvolvido
    • numeroDeMatricula é o número de matrícula do aluno

Descrição

Trabalho #01:
Título: Camada de Rede - Algoritmo de Roteamento por Inundação
Data da entrega: até o dia 29/03/2026
Nota: parte da nota III Unidade
Descrição: Conforme explicações e exemplos vistos em aula, implementar o algoritmo de roteamento por inundação. Um esboço da etapa a ser desenvolvida poderá ser encontrado aqui.

Trabalho #02:
Título: Camada de Rede - Algoritmo de roteamento pelo caminho mais curto
Data da entrega: até o dia 12/04/2026
Nota: parte da nota III Unidade
Descrição: Conforme explicações e exemplos vistos em aula, implementar o algoritmo de rotemanto pelo caminho mais curto. Um esboço da etapa a ser desenvolvida poderá ser encontrado aqui.

Trabalho #03:
Título: Camada de Rede - Algoritmo de roteamento por vetor de distância
Data da entrega: até o dia 03/05/2026
Nota: parte da nota III Unidade
Descrição: Conforme explicações e exemplos vistos em aula. Um esboço da etapa a ser desenvolvida poderá ser encontrado aqui.

Trabalho #04:
Título: Camada de Rede - Algoritmo de roteamento por estado de enlace
Data da entrega: até o dia 31/05/2026
Nota: parte da nota III Unidade
Descrição: Conforme explicações e exemplos vistos em aula. Lembrar que a utilização de THREADS agora NÃO É mais opcional E as latências da sub-rede deverão ser geradas por uma função randômica no intervalo entre [1,500] milisegundos. PS1: Esta função deve ser chamada TODA VEZ que se desejar obter uma latência entre dois hosts, consequentemente o arquivo texto backbone.txt volta a ter o formato do trabalho #02

Trabalho #05: (ÚLTIMO TRABALHO DO SEMESTRE)
Título: Camada de Transporte/Aplicação - Aplicativo de Instant Messaging utilizando arquitetura cliente/servidor (mini WhatsZap)
Data da entrega: até o dia 28/06/2026
Nota: parte da nota III Unidade
Descrição: em Implementar um aplicativo do tipo mensageiro instantâneo utilizando a arquitetura cliente/servidor, conforme explicações e exemplos vistos em sala de aula. Utilizar GUI. Um esboço da etapa a ser desenvolvida poderá ser encontrado aqui. Exemplos de código para utilização dos sockets UDP e TCP podem ser encontrados aqui
OBS: As APDUs para o trabalho foram definidas e padronizadas para o projeto e NÃO DEVEM SER ALTERADAS:
JOIN(grupo,usuario) => implementada via TCP
SEND(grupo,usuario,mensagem) => implementada via UDP
LEAVE(grupo,usuario) => implementada via TCP
SENDTEMPORARIA(?????) => implementada via ???. Esta é a APDU que implementa as mensagens de visualização única do WhatsZap. Aqui apenas o nome da APDU foi padronizado. Você deve definir quais são as informações necessários que devem ser enviadas para a implementação deste recurso
Além da corretude dos serviços de rede, seu trabalho também deve fornecer um tratamento adequado aos dados para evitar inconsistências. Exemplos: não pode haver dois nomes de grupos iguais, não pode haver dois nomes de usuários iguais, etc (tem muita coisa nesse etc :-) )