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 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.
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.
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.
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 :
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