Projet de programmation réseau avec Java - IR2

PTFTP (Parametric Trivial File Transfert Protocol)

Ce document est accessible et pourra être mis à jour à partir de l'URL http://igm.univ-mlv.fr/~duris/RESEAU/JAVA/IR2/.

Dernière modification le 28/01/2005.

Le but du projet

Le but de ce projet est multiple. Tout d'abord, il consiste à fournir une implémentation en Java du protocole TFTP (Trivial File Transfert Protocol) tel qu'il est décrit par la RFC 1350. Plus exactement, on attend des implémentations pour la partie cliente et pour la partie serveur de ce protocole.

Ensuite, on veut pouvoir observer le comportement de ce protocole à travers ces implémentations (typiquement, savoir combien de paquets perdus ont dû être réémis, combien d'erreurs ont eu lieu, etc.). Pour tester ces fonctionnalités d'observation, on propose d'intercaler, entre l'application (serveur ou client TFTP) et le réseau, une autre application (appelée « filtre » dans la suite de cet énoncé), écrite en Java, qui simule des perturbations sur le réseau. Paramétrable, elle doit permettre de simuler et de quantifier tout type de comportement observable sur un réseau UDP sur IP (pertes de paquets, délais, inversion de l'ordre d'arrivée, etc.).

Enfin, munis de cet outil de simulation et d'observation et des implémentations TFTP de base, on souhaite que vous proposiez et implémentiez en Java des améliorations du protocole TFTP qui lui permettent d'être plus résistant aux perturbations simulées par le filtre.

Documents de spécification à prendre en compte

La référence officielle qui fait foi pour la spécification du protocole TFTP est la RFC 1350. Elle est d'ailleurs aussi enregistrée comme standard STD 33 (voir www.rfc-editor.org). Vous devrez initialement disposer au minimum d'un client et d'un serveur qui respectent cette spécification.

Ultérieurement, lorsque vous implémenterez des améliorations de ce protocole, vous devrez respecter la RFC la plus récente qui permet de spécifier des options d'extension dans le protocole TFTP. Il s'agit de la RFC 2347, et accessoirement des RFC 2348 et RFC 2349.

Spécificités des implémentations attendues

Comme déjà dit, on attend en premier lieu de disposer d'une implémentation d'un client et d'un serveur TFTP. Si, comme cela est requis, chacune de ces implémentations est conforme à la RFC 1350, elle doit donc être compatible avec les clients et serveurs TFTP disponibles sur la plupart des systèmes.

L'implémentation des « filtres » demande une réflexion. En effet, plusieurs solutions d'implémentation peuvent être choisies (relai indépendant, bibliothèque, implémentation spécifique des sockets, etc.). Pour guider votre choix, vous pourrez prendre en compte différents critères :

La dernière partie qui vous est demandée, concernant les améliorations du protocole TFTP, est déjà cadrée par la spécification des « options d'extension » décrite par la RFC 2347. Toute amélioration que vous proposerez et implémenterez devra se conformer à cette spécification. Vous vous attacherez à rendre l'introduction d'une nouvelle extension aussi simple et modulaire que possible, tant pour le client que pour le serveur. Vous disposez déjà de spécifications officielles pour deux options, la taille de bloc et l'intervalle de timeout, respectivement décrites par les RFC 2348 et RFC 2349.

Modalités

Ce projet est à réaliser en binôme. Les monômes sont interdits ; au plus, un seul trinôme est autorisé. Tout groupe ne respectant pas ces consignes verra son projet noté 0. Il doit être rendu au plus tard le lundi 28 février 2005, sous la forme d'un fichier d'archive zip qui devra contenir les fichiers et répertoires suivants :

  1. un fichier README contenant les noms et prénoms des membres du binôme, la manière d'installer et compiler les programme, ainsi qu'une description du contenu des répertoires ;
  2. un fichier build.xml, script de compilation ant ;
  3. un répertoire src contenant les sources Java (organisées dans un ou plusieurs paquetages) ;
  4. un répertoire classes contenant l'ensemble des classes du projet ;
  5. un répertoire lib contenant l'archive JAR ptftp.jar de l'ensemble des applications ;
  6. un répertoire docs contenant la documentation
  7. Un répertoire bin contenant des fichiers de script shell et .bat permettant de lancer les différents programmes, respectivement sous UNIX et sous windows (XP, NT, 95 etc.).

Le fichier d'archive compressé contenant ces différents documents sera envoyé par un mail convivial, indiquant les noms et prénoms des deux membres du binôme, avec comme sujet projet PTFTP, aux deux chargés de TD et au chargé de cours, c'est-à-dire Nicolas.Bedon@univ-mlv.fr, deleray@ifrance.com et Etienne.Duris@univ-mlv.fr

Vous présenterez ce projet à l'occasion d'une soutenance qui aura lieu sur machine (pas de transparents), devant un correcteur, l'après-midi du mardi 1er mars 2005. À cette occasion, vous préparerez différents jeux de tests permettant de mettre au mieux en évidence les qualités et les défauts de votre application. Les deux membres du binôme devront être prêts à répondre à toute question portant sur n'importe quelle partie de l'application.


Etienne Duris © Université de Marne-La-Vallée - Janvier 2005