Table of Contents

Trabalho com UDP.


O Protocolo UDP

Neste trabalho iremos explorar a implementação de uma aplicação rodando sobre UDP através da programação com sockets. Este trabalho tem a finalidade de trazer o conhecimento de programação e funcionamento básico do protocolo UDP, principalmente comparando o UDP com os serviços que o TCP fornece para a camada de aplicação. Baseado no primeiro trabalho, mas agora transformando o anterior em um Servidor UDP simplificado.

Fluxo do trabalho:

  1. Procurar um código “Hello word” usando servidor UDP e seu cliente.
    1. Este trabalho pode ser realizado em qualquer linguagem de programação, a escolha do aluno, mas lembre-se: não pode ser usado bibliotecas que manipulem o UDP, e sim usar o UDP diretamente através da criação e manipulação dos sockets.
  2. Servidor UDP (deve executar antes do cliente)
    1. Escolher um porta para comunicação (maior que 1024)
    2. Na recepção de dados :
      1. Tratar esses dados (requisição necessária - propor o seu próprio protocolo para substituir o HTTP )
        1. Ex.: GET /arquivo
        2. Transmitir o arquivo requisitado pelo cliente (deve ser grande > 1 MB)
          1. Dividir o arquivo em pedaços (tamanho do buffer ⇐ MTU ?)
            1. Qual o tamanho do buffer?
            2. Buffer cliente e servidor devem ser iguais?
            3. O valor do MTU influencia?
            4. Para que colocar checksum?
            5. Preciso numerar os pedaços?
            6. Se o arquivo não existir, como aviso o cliente?
  3. Cliente UDP (deve executar depois do servidor)
    1. Colocar o endereço da máquina e porta escolhida para o servidor
      1. @ip do servidor:(Porta servidor)/arquivo
    2. Requisitar um arquivo
    3. Dar a opção ao usuário (Professor) para descartar uma parte do arquivo
      1. Para simular a perda de dados e testar o mecanismo de recuperação de dados proposto pelo aluno.
    4. Receber, montar e conferir (checksums) o arquivo recebido do servidor
    5. Se arquivo OK:
      1. Apresentar o arquivo requisitado
    6. Se arquivo não OK
      1. Verificar quais pedaços faltam e pedir para re-enviar.
      2. Interpretar ERROS.
        1. Ex.: Arquivo não encontrado etc.
Para fazer a apresentação via video

Deve conter:

  1. Servidor UDP (obrigatório)
  2. ClienteUDP (obrigatório)
  3. Usar api sockets (obrigatório)
  4. Colocar o endereço e porta do servidor
  5. Propor protocolo Ex.: GET /arq
  6. Cliente pode requisitar diferentes arquivos
  7. Transmitir arquivo grande > 10MB
  8. Dividir o arquivo em pedaços(Chunk)? Qual tamanho do buffer usado?
  9. O tamanho do pedaço influencia? Qual a relação com o MTU?
  10. Preciso numerar os pedaços?
  11. Para que colocar checksum?
  12. Servidor tem opção de descartar aleatoriamente um pedaço do arquivo.
  13. Cliente recebe, monta e confere o arquivo recebido do servidor. Usa Hash ou checksum ?
  14. Cliente verifica se faltam partes do arquivo e avisa servidor para re-enviar. Por timer(tempo) e/ou ACK?
  15. Se o arquivo não existir, como avisa o cliente?
  16. Apresenta ERROS. Ex.: Arquivo não encontrado etc.
  17. Use dois clientes simultâneos requisitando arquivos diferentes.
  18. Cliente UDP pode executar antes do servidor?
  19. O que acontece se desligar o servidor durante a transmissão do arquivo e liga-lo depois?
  • O aluno deve usar Socket UDP e não pode usar bibliotecas que mascarem o trabalho.
  • Para agilizar a verificação de integridade são utilizadas somas de verificação (checksums) ou resumos criptográficos como o MD5 e SHA.