TP3  Code détecteur/correcteur

Master 2 IISA (réseaux et protocoles)
IPST/ULP  2006 - 2007




Il s'agit dans ce tp d'ajouter des bits de controle aux données lors de la transmission d'un fichier.

Le lien suivant medium.tgz (www.3d-reconstruction.org) contient 3 programmes : emetteur, medium et recepteur qui s'utilisent de la manière suivante :

bash> emetteur port_emetteur fichier_a_transmettre
bash> recepteur port_recepteur fichier_recu
bash> medium localhost port_emetteur localhost port_recepteur taux_perte_trame taux_erreur

La communication s'effectue en udp (sock_dgram), emetteur et recepteur sont tout d'abord en attente d'un message. Le medium démarre par l'envoie d'un message à l'émetteur et au récepteur. Ce message a pour effet de "débloquer" l'émetteur qui va alors transmettre le fichier bloc après bloc au medium. Ce dernier le redirigera vers le récepteur.

Les blocs du fichier sont ici appelés "trames" et possèdent une taille de 8 octets (modifiable dans emetteur.c). Le medium perd certaines trames selon le taux indiqué en paramètre (le taux est compris entre 0 et 1). Pour les trames qui ne sont pas perdues, certaines d'entre elles, selon un taux donné en paramètre et compris entre 0 et 1, le medium modifie un caractère.

Dans ce tp, le taux de perte de trames sera toujours à 0.

Votre travail consiste à :

  1. récupérer l'archive, la compiler (make), lancer une exécution, examiner les différences entre le fichier émis et le fichier reçu (éventuellement avec la commande diff) puis se plonger dans le code de emetteur.c et recepteur.c pour en comprendre le fonctionnement.

  2. modifier les fichiers emetteur.c et recepteur.c en ajoutant un bit de parité à chaque caractère, le récepteur ne fait qu'afficher les caractères qu'il détecte comme erronés. Pour simplifier, chaque caractère sera doublé par un caractère de controle dont seul le premier bit sera utilisé (comme bit de parité).

  3. modifier les fichiers emetteur.c et recepteur.c afin d'introduire dans les données les bits de contrôle d'un code de Hamming (12, 8), chaque octet est donc recodé sur 12 bits. Suggestion : pour faciliter la programmation, on pourra mettre chaque code de Hamming dans un entier court (16 bits), 4 bits étant alors inutilisés.

  4. effectuer la correction du coté récepteur, celui-ci doit par ailleurs afficher les corrections qu'il effectue.

  5. réaliser des tests avec différents taux d'erreur

      Les fonctions du fichier bitABitToolbox.c sont gracieusement mis à votre disposition pour vous dégager des problèmes bassement techniques de manipulation de bits dans les octets.