Projet de programmation réseau avec Java
Implantation du protocole TFTP
Le but du projet
Le but de ce projet est de fournir une implantation en Java du
protocole TFTP de transfert de fichiers au dessus du protocole UDP. Le
protocole TFTP (Trivial File Transfert Protocol) est, comme son
nom l'indique, un protocole de transfert de fichier très simple. Il
est pensé pour être implanté facilement au dessus du protocole
UDP.
Outre les fonctionalités, assez simples, de programmation réseau avec
Java qu'il demande de mettre en oeuvre, ce projet présente l'intérêt
majeur de devoir répondre à un besoin spécifique décrit par une RFC,
c'est-à-dire dans le formalisme utilisé pour décrire tous les
protocoles de la couche de l'IETF. La RFC du protocole TFTP est
disponible à l'url http://www.ietf.org/rfc/rfc1350.txt
et est accessible localement en texte ou en pdf.
L'implantation que vous devez développer doit être capable de
communiquer avec n'importe quelle autre outil respectant le protocole
TFTP. Par exemple, vous pourrez tester entre binômes que vos
implantations sont compatibles.
Comme tout protocole fonctionnant sur le mode client/serveur, votre
implantation devra comprendre deux parties, qui auront
vraissemblablement des choses en commun: d'une part un client, capable
d'initier et de réaliser des transferts de fichiers avec un serveur,
et d'autre part le serveur lui-même, en attente de requête de clients.
NOTES et RESTRICTIONS
-
La RFC prévoit différents modes de transfert: il ne vous est
demandé d'implanter dans ce projet que deux d'entre-eux:
le mode netascii et le mode octet.
-
Le numéro de port d'écoute officiellement affecté par l'IANA au
protocole TFTP est 69. Pour des raisons de droits, ce numéro
sera paramétrable dans votre serveur et dans vos clients. Vous
pourrez par exemple utiliser le numéro de port 6969 pour vos
tests.
Comment procéder
-
Vous vous attacherez pour commencer à bien comprendre la
spécification donnée par la RFC 1350.
-
Ensuite, vous étudierez l'architecture logicielle requise pour le
client et pour le serveur qui devront être développés. Vous
réfléchirez en particulier à faciliter le partage des classes
communes aux deux programmes.
-
Vous réaliserez ensuite une version itérative du serveur et un
client. Dans cette version simplifiée, lorsqu'un client réalise un
transfert de fichier avec le serveur, ce dernier ne peut rien faire
d'autre (en particulier, il ne peut pas traiter les requêtes d'un
autre client.
-
Lorsque cette version simplifiée sera opérationnelle (et seulement à
ce moment là), vous pourrez développer un serveur concurrent,
permettant de gérer les transferts avec plusieurs clients
simultanément.
Ce que vous devez rendre
Ce projet est à réaliser en binôme (deux personnes). Il doit
être rendu au plus tard le vendredi 24 février, sous la forme d'un
fichier ZIP contenant:
-
le programme exécutable (éventuellement sous la forme d'un jar);
-
les fichiers sources
-
un rapport succint (une quinzaine de pages maximum) expliquant
comment installer le serveur et comment s'en servir, les choix de
conception que vous avez fait et les problèmes que vous avez
rencontré.
Le fichier ZIP contenant ces différents documents sera
envoyé par mail à
Etienne.Duris@univ-mlv.fr au plus tard le 24/02/2006.
http://www-igm.univ-mlv.fr/~duris/TTT/
- © Université de Marne-La-Vallée - Février 2006