« INFO625 : Réseau » : différence entre les versions

De Wiki du LAMA (UMR 5127)
Aller à la navigation Aller à la recherche
Ligne 24 : Ligne 24 :
=== Compilation et analyse du programme initial ===
=== Compilation et analyse du programme initial ===


Le programme initial est constitué d'un seul fichier [http://lama.univ-savoie.fr/~raffalli/INFO521/chat.c chat.c]
Le programme initial est constitué d'un seul fichier [http://lama.univ-savoie.fr/~raffalli/INFO521/p2pchat.c p2pchat.c]
que vous pouvez compiler avec la commande:
que vous pouvez compiler avec la commande:


$ gcc -o chat -Wall -pedantic chat.c
$ gcc -o p2pchat -Wall -pedantic p2pchat.c


Lorque vous lancez le programme en tapant
Lorque vous lancez le programme en tapant


$ chat mon_pseudo_favori
$ ./p2pchat mon_pseudo_favori


Tout ce que vous tapez est vu par les autres sur le même sous-réseau et vice-versa (les messages sont envoyés ligne par ligne. Pour terminer la conversation, il faut taper <tt>Ctrl-D</tt> qui ferme le fichier d'entrée standard <tt>stdin</tt>.
Tout ce que vous tapez est vu par les autres sur le même sous-réseau et vice-versa (les messages sont envoyés ligne par ligne. Pour terminer la conversation, il faut taper <tt>Ctrl-D</tt> qui ferme le fichier d'entrée standard <tt>stdin</tt>.


Vous pouvez changer le port avec l'option <tt>--port numero_de_port</tt> si vous voulez pouvoir faire des salles de discussions séparées (chaque numéro de port correspondra à un port différent).
Vous pouvez changer le port avec l'option <tt>--port numero_de_port</tt> si vous voulez pouvoir faire des salles de discussions séparées (chaque numéro de port correspondra à une salle différente).


Ce programme d'un peu moins de 200 lignes contient quelques fonctions auxilliaires qui n'ont pas grand chose à voir avec le réseau et d'autres fonctions qui s'occupe de la communication. Voici un synopsis du mécanisme de communication via les ''socket'', dans le cas particulier d'UDP/IP:
Ce programme d'un peu moins de 200 lignes contient quelques fonctions auxilliaires qui n'ont pas grand chose à voir avec le réseau et d'autres fonctions qui s'occupe de la communication. Voici un synopsis du mécanisme de communication via les ''socket'', dans le cas particulier d'UDP/IP:


1. On crée un socket avec la fonction ''socket''. Un socket est un descripteur de fichier (un entier donc) dans lequel on peut lire et écrire, mais ces lectures et écritures correspondent respectivement à des réception et émission sur le réseau.
1. On crée un socket avec la fonction <tt>socket</tt>. Un socket est un descripteur de fichier (un entier donc) dans lequel on peut lire et écrire, mais ces lectures et écritures correspondent respectivement à des réception et émission sur le réseau. On peut changer quelques options de ce socket avec la fonction <tt>setsockopt</tt>.
2. On ....
2. On relie ce socket





Version du 2 décembre 2010 à 08:42

Plan détailé du cours

Non encore disponible

TP 1

Objectifs Globaux

Il s'agit de comprendre la programmation d'application réseau utilisant les protocoles TCP et UDP d'IPv4 (on ne s'intéressera pas malheureusement à IPv6 faute d'infrastructure réseau sur le site ... Il est pourtant possible d'adapter le code pour qu'il marche sur IPv4 et IPv6)

L'application sera une messagerie instantanée de paire-à-paire (Peer-to-Peer instant messagerie) utilisant UDP et implémentant la fiabilité de manière distribuée. On utilisera TCP pour la connexion initiale aux salles de discussion et, si le temps le permet, pour enregistrer les salles de discussions sur un serveur web afin de les rendre visibles.

Préliminaires

Utiliser les commandes Unix ifconfig, arp, ... pour connaître la configuration de votre machine. Utiliser ping et traceroute entre les machines fixes de la salle et les portables en vpn pour découvrir une partie de l'achitecture réseau de l'université. Notez vos conclusions.

Compilation et analyse du programme initial

Le programme initial est constitué d'un seul fichier p2pchat.c que vous pouvez compiler avec la commande:

$ gcc -o p2pchat -Wall -pedantic p2pchat.c

Lorque vous lancez le programme en tapant

$ ./p2pchat mon_pseudo_favori

Tout ce que vous tapez est vu par les autres sur le même sous-réseau et vice-versa (les messages sont envoyés ligne par ligne. Pour terminer la conversation, il faut taper Ctrl-D qui ferme le fichier d'entrée standard stdin.

Vous pouvez changer le port avec l'option --port numero_de_port si vous voulez pouvoir faire des salles de discussions séparées (chaque numéro de port correspondra à une salle différente).

Ce programme d'un peu moins de 200 lignes contient quelques fonctions auxilliaires qui n'ont pas grand chose à voir avec le réseau et d'autres fonctions qui s'occupe de la communication. Voici un synopsis du mécanisme de communication via les socket, dans le cas particulier d'UDP/IP:

1. On crée un socket avec la fonction socket. Un socket est un descripteur de fichier (un entier donc) dans lequel on peut lire et écrire, mais ces lectures et écritures correspondent respectivement à des réception et émission sur le réseau. On peut changer quelques options de ce socket avec la fonction setsockopt.

 2. On relie ce socket  


Identifiez ces différentes fonctions s'occupant du réseau et tentez à l'aide des pages de manuels d'anaysez ce qu'elle font, de manière assez surperficielle, car il y a de nombreux détails subtiles ... Notez vos conclusions.

Explication de quelques points de détails

1. en consultant les pages de manuels, analysez la fonction