Travaux pratiques de réseau (GIS3)
Xavier Redon
1 Introduction
Le but de ces travaux pratiques est de vous faire découvrir les réseaux
de données. Y sont abordées les notions d'encodage/décodage de données,
de partage de médium et les protocoles des principaux services d'Internet.
-
Le premier exercice concerne l'encodage des données sur un medium. Plus
précisément, il vous est demandé d'encoder un tableau d'octets, pour transmission
entre deux PC via leurs cartes son.
- Vous manipulerez ensuite des paquets Ethernet pour bien comprendre leur
format et le fonctionnement des commutateurs.
- L'exercice suivant consiste à écrire une couche de niveau liaison.
Vous connecterez les ports série de vos PC sur un bus grâce à un dispositif
électronique très simple. Vous devrez permettre aux PC de communiquer via ce bus
en gérant les éventuelles collisions.
- Enfin vous manipulerez les grands protocoles d'Internet en dialoguant
"à la main" avec des serveurs qui ne sont généralement adressés qu'au travers
d'applications (navigateur, client de messagerie, etc).
2 Encodage
2.1 Code fourni
Pour cette partie vous pouvez vous appuyer sur le code fourni dans l'archive
http://www.plil.net/~rex/Enseignement/Reseau/Tutorat.Reseau.GIS3/physicalEncodingStudents.tgz.
Une bibliothèque très basique de gestion de carte son est incluse. Il ne vous reste plus qu'à compléter
les sources encode.c et decode.c. La génération des exécutables se fait par une simple
exécution de la commande make dans le répertoire principal du projet.
2.2 Généralités sur les cartes son
Une carte son de PC permet de générer des sons et de faire l'acquisition de
sons. La génération de son se fait en envoyant un tableau d'échantillons
à la carte. Les valeurs des échantillons correspondent à des positions de la
membrane du haut-parleur connecté à la carte. Dans le cadre de ce TP, les
échantillons sont des octets et la position de repos de la membrane correspond
à la valeur 127. Si un échantillon est plus grand que le précédent, la
membrane est déplacée vers l'avant et provoque une surpression. Si un
échantillon est plus petit que le précédent, la membrane déplacée vers l'arrière
provoque une dépression. Envoyer une série d'échantillons identiques revient donc
à n'émettre aucun son. Une autre caractéristique de ce système est que faire
vibrer la membrane autour d'une position ou d'une autre génère le même son.
Un microphone opère de façon similaire, une surpression va conduire à un
échantillon de valeur supérieure à l'échantillon précédent, une dépression
va conduire à un échantillon de valeur inférieure à l'échantillon précédent.
Dans le cadre du TP les cartes sons sont directement reliées (sortie casque
sur entrée microphone) pour éviter les pertes de signal et les interférences
mais le principe reste le même. Enfin, toujours dans le cadre du TP, la fréquence
d'échantillonnage est de 48000 octets par seconde.
2.3 Bibliothèque pour les cartes son
Cette bibliothèque comprend quatre fonctions de gestion des cartes son dont
les prototypes sont définis dans le fichier d'entêtes libsndcard.h.
snd_pcm_t *openSoundCard(char *device,char mode,unsigned char blocking);
unsigned char play(snd_pcm_t * handle,unsigned char *buffer,int size);
unsigned char record(snd_pcm_t * handle,unsigned char *buffer,int *size);
void closeSoundCard(snd_pcm_t * handle);
La première fonction initialise la carte son. Pour une utilisation de type
capture de son, utilisez le mode 'r' et pour une utilisation de type
génération de son, utilisez le mode 'w'. Dans ce projet le paramètre
blocking n'est pas important, utilisez la valeur 1. La fonction
play permet de jouer les size échantillons du tableau d'octets
buffer. La fonction record permet d'enregister un maximum de
size échantillons acquis par la carte dans le tableau pré-alloué buffer.
Enfin la fonction closeSoundCard permet de relacher le contrôle sur la
carte son.
2.4 Encodage de données
Vous devez, ici, trouver une méthode pour envoyer un tableau d'octets, c'est
à dire une suite de bits, à l'aide d'une carte son. Il vous est suggéré de
générer des bruits de durées différentes selon l'information à transmettre.
Les différentes informations pourraient être le début de transmission,
un bit à zéro, un bit à un et la fin de transmission. Implantez votre
solution dans le fichier encode.c. Utilisez l'entrée standard pour
lire les octets sous la forme de nombre hexadécimaux sur deux chiffres
et séparés par des espaces.
2.5 Calibrage de la carte son
Pour faire les tests définitifs vous devrez régler votre carte son. Pour cela
compilez l'utilitaire showlevel en utilisant la commande make tune.
Reliez la sortie casque de votre carte son à l'entrée micro. Lancez l'utilitaire
showlevel puis votre exécutable d'encodage. Jouez avec les contrôles du
mixeur alsamixer jusqu'à ce que l'utilitaire showlevel montre un
étalement des échantillons sur une large plage de valeur dans l'intervalle
0 à 255, et ce sans saturation. Une fois les bons réglages obtenus vous pouvez
sauver votre configuration avec la commande
/usr/sbin/alsactl -f ~/sound.cfg store
La configuration peut ensuite être installée à nouveau avec la commande
/usr/sbin/alsactl -f ~/sound.cfg restore
2.6 Décodage de données
Bien entendu vous devez aussi trouver une méthode pour décoder les sons
émis par votre programme d'encodage et afficher le tableau d'octets reçu.
Le fichier source correspondant est decode.c. D'un point de vue
technique, votre exécutable doit écrire les octets reçus sur sa sortie
standard en hexadécimal avec des espaces comme séparateurs. Si vous
avez procédé comme suggéré pour l'encodage, le décodage se fait en
calculant la durée des bruits. La durée se calcule en comptant le nombre
d'échantillons de bruits précédant un silence suffisament long.
Il ne vous reste plus qu'à reconstituer le tableau d'octets en fonction
des durées détectées.
2.7 Tests
Dans un premier temps vous pouvez vous contenter de tester vos exécutables
sur une seule machine en connectant la sortie casque avec l'entrée microphone.
Dans un second temps, lorsque votre programme semble suffisament solide, faites
un test entre deux PC en connectant les deux cartes son entre elles.
Cherchez à optimiser la vitesse de transfert obtenue.
3 Manipulations avec Ethernet
Pour vous permettre d'émettre et de recevoir des paquets Ethernet sur le
réseau de Polytech'Lille, vous disposez d'un utilitaire ether
(le binaire se trouve dans /usr/local/bin et vous pouvez
trouver les sources complètes dans /usr/local/src/LSF).
3.1 Indications pratiques
L'utilitaire ether est utilisable dans deux modes différents :
un mode d'affichage où il affiche les paquets Ethernet reçus par
l'interface réseau et un mode pour envoyer un paquet Ethernet.
Vous laisserez donc une instance du programme tourner en mode affichage
et vous en utiliserez une autre pour envoyer vos propres paquets.
En mode affichage vous pouvez demander à l'utilitaire de n'afficher
que les paquets à destination d'une certaine adresse Ethernet, vous
pouvez même demander à ne pas afficher les paquets de diffusion
(broadcast). Tapez ether --help pour obtenir la syntaxe des
différentes options. Essayez d'utiliser directement le programme
ether. Que se passe-t-il ? Par la suite vous utiliserez le
programme en passant par la commande super (regardez la page
de manuel de super et son fichier de configuration).
3.2 Envoi en diffusion totale
Forgez et envoyez une trame Ethernet de type 1111 à destination
de l'adresse de diffusion totale ff:ff:ff:ff:ff:ff. Utilisez des
octets caractéristiques dans les données pour vérifier que les machines
des autres binômes recoivent bien la trame.
3.3 Envoi à une machine précise
Déterminez l'adresse Ethernet de la machine d'un autre binôme. Forgez
et envoyez ensuite une trame Ethernet de type 1111 à destination
de cette machine. Assurez vous que la trame a bien été reçue.
3.4 Fonctionnement des commutateurs
Cette fois envoyez une trame Ethernet de type 1111 à destination
d'une adresse Ethernet que vous savez inutilisée sur le réseau local
(et avec une adresse Ethernet source elle aussi inutilisée). Que
constatez-vous ? Associez-vous avec un autre binôme, envoyez une réponse à
leur paquet Ethernet pendant qu'ils font de même avec le vôtre. Envoyez à nouveau
votre paquet initial, que constatez-vous ?
4 Gestion de collisions
Pour bien comprendre la notion de gestion de collision, il vous est demandé
de réaliser une couche de niveau liaison. Vous devrez gérer les collisions
pouvant se produire lors de la communication de plusieurs PC sur un bus série.
Si vous désirez aller jusqu'au bout de l'exercice, vous pourrez faire en sorte
que le port série du PC se comporte comme une interface réseau Ethernet. Ainsi,
il sera possible de tester l'efficacité de votre application en utilisant les
utilitaires TCP/IP classiques (en particulier ping et ssh).
4.1 Dispositif matériel
Ce projet est basé sur un dispositif matériel qui implante un bus série. Ce dispositif
ne comporte, comme composant électronique, que des diodes. Voici le schéma d'un dispositif
à 4 ports :
Une réalisation de ce dispositif par Thierry Flamen de la plateforme électronique est
visible sur ces deux photos. Vous y trouvez aussi le câble utilisé pour connecter le
port série du PC au dispositif (câble avec un connecteur DB9 femelle et un connecteur
RJ45 mâle).
4.2 Code fourni
Pour cette partie vous pouvez vous appuyer sur le code fourni dans l'archive
http://www.plil.net/~rex/Enseignement/Reseau/Tutorat.Reseau.GIS3/linkCollisionsStudents.tgz.
Il ne vous reste plus qu'a compléter les fichiers du sous-répertoire Programs.
La génération des exécutables se fait par un simple make.
4.2.1 Bibliothèque série
Vous avez à votre disposition une bibliothèque permettant de gérer le port série.
Cette bibliothéque ne comporte les fonctions décrites ci-après.
int serialOpen(char *device,int speed,int mode);
void serialClose(int fd);
La première fonction permet d'ouvrir le port série correspondant au périphérique
device. Le port est configuré pour une vitesse de speed bauds. Il
existe 3 modes d'ouverture :
-
SERIAL_READ
- : possibilité de lire des octets sur le port série,
- SERIAL_WRITE
- : possibilité d'écrire des octets sur le port série,
- SERIAL_BOTH
- : possibilité de lire et d'écrire des octets sur le port série.
La seconde fonction ferme le port série. Dans le cadre du TP, le port série est
représenté par le fichier spécial /dev/ttyS0 et il est conseillé de commencer
par utiliser une vitesse faible (9600 bauds par exemple). Attention, par défaut vous
n'avez pas accès au port série de votre PC de TP (affichez les permissions du fichier
spécial). Pour obtenir l'accès au port série, utilisez la commande super serial.
4.2.2 Utilitaire de gestion d'interface Ethernet virtuelle
Pour ceux qui souhaitent aller plus loin il est possible de créer une
interface Ethernet virtuelle. La création s'effectue avec la commande
super addtap <@IP> <mask>, la destruction avec la commande
super deltap. Une fois l'interface tap0 créée, il est possible
de lancer l'utilitaire ethercat disponible dans le répertoire
Utilities. Cet utilitaire utilise la bibliothèque du répertoire
Ethernet pour se connecter sur l'interface Ethernet virtuelle.
L'utilitaire ethercat affiche sur sa sortie standard les paquets
reçus sur l'interface tap0 et envoi sur l'interface tap0
les paquets lus sur l'entrée standard. Les paquets lus sur l'entrée
et affichés sur la sortie sont au même format : des octets en hexadécimal
sur deux chiffres sans séparateur. Un paquet est terminé par un saut de
ligne. L'utilitaire ethercat peut être utilisé, en conjonction
avec les programmes d'envoi et de réception sur le port série, pour simuler
une connexion Ethernet entre plusieurs machines.
4.3 Communication simple
Nous allons commencer par établir une communication entre deux PC via leurs
ports série. Les deux ports série sont connectés par un bus série comme décrit
en 4.1.
4.3.1 Procédure d'envoi sur le bus
Dans le fichier source serialWrite.c, écrivez un programme capable de
lire des chaînes de caractères sur son entrée standard et de les envoyer
sur le port série caractère par caractère. Attention le port série est ouvert
en mode non bloquant. Ceci signifie qu'un appel à la primitive write peut
échouer avec l'erreur EAGAIN pour cause de port série non immédiatemment
prêt à envoyer un caractère. Dans ce cas, il convient d'attendre un cours instant
avec la fonction usleep et de retenter l'envoi. N'oubliez pas de prévoir
un mécanisme pour séparer les tableaux d'octets (chaînes de caractères). Vous pouvez
par exemple transmettre les sauts de lignes. Si vous le souhaitez, vous pouvez aussi
envoyer un caractère de début d'envoi.
4.3.2 Procédure de réception sur le bus
Dans le fichier source serialRead.c, écrivez un programme récupérant les
octets sur le port série et affichant les tableaux d'octets sur la sortie standard.
Attention, l'ouverture du port série en mode non bloquant influe aussi sur la
lecture. Vous devez vérifier le retour de la primitive read, l'erreur de
type EAGAIN ne doit conduire qu'à une attente courte suivie par une nouvelle
tentative de lecture. Les octets ne doivent pas être affichés un par un mais stockés
en mémoire et affichés uniquement sur réception de la marque de fin. Le programme doit
aussi accepter des paramètres. Chaque paramètre est un préfixe permettant de
filtrer les tableaux d'octets. Ne sont affichés que les tableaux commencant par
l'un des préfixes. Ce filtrage permet, à terme, de ne laisser passer que les
paquets dont l'adresse de destination concerne notre interface Ethernet virtuelle.
4.3.3 Premiers tests
Pour faire le premier test, connectez deux PC via un bus série. Lancez votre exécutable
serialWrite sur un PC et votre exécutable serialRead sur l'autre PC. Tapez
une chaîne de caractères sur l'entrée standard de serialWrite, elle devrait
s'afficher sur la sortie standard de serialRead. Vous pouvez tester la gestion
des préfixes en lançant serialRead avec des préfixes en paramètres et en
vérifiant que les chaînes affichées sont bien celles commençant par ces préfixes.
Le second test vérifie le bon fonctionnement du bus série. Lancez aussi l'exécutable
serialRead sur le premier PC. Vous devriez constater que les caractères envoyés
par serialWrite arrivent sur tous les PC connectés au bus série. Essayez aussi
avec un troisième PC.
Le troisième test consiste à lancer un serialRead sur un PC et deux
serialWrite sur deux autres PC. Le but est d'effectuer un envoi simultané
sur le bus série. Si vous avez du mal à synchroniser vos envois vous pouvez
écrire une boucle d'affichage en shell et rediriger la sortie de cette boucle
sur l'entrée de votre exécutable serialWrite. Que constatez-vous sur la
sortie standard de votre exécutable serialRead ?
4.4 Somme de contrôle
Pour éviter d'afficher des tableaux d'octets corrompus, vous allez ajouter
une somme de contrôle aux tableaux d'octets transmis sur le bus série.
4.4.1 Calcul de la somme de contrôle
Modifiez votre programme d'émission pour calculer une somme de contrôle
et l'insérer en fin de tableau d'octets. Il vous est suggéré d'utiliser
l'addition classique sur les octets et de tronquer la somme aux 16 bits
de poids faibles. Pour insérer la somme de contrôle, vous pouvez, par
exemple, utiliser la fonction sprintf avec un format du type "%04x".
4.4.2 Vérification de la somme de contrôle
Modifiez votre programme de réception pour vérifier la somme de contrôle
une fois le paquet reçu. Pour lire la somme de contrôle vous pouvez utiliser
la fonction sscanf avec le format "%x". Le paquet ne doit pas être
affiché sur la sortie standard si la somme de contrôle n'est pas correcte.
4.4.3 Test de la somme de contrôle
Générez à nouveau des collisions avec des émissions simultanées. Vérifiez
qu'aucun tableau d'octets n'est affiché. Arrêtez l'un des processus d'émission
vérifiez que les tableaux d'octets sont affichés à nouveau.
4.5 Détection de collisions
Pour éviter les pertes de tableaux d'octets, vous allez mettre en place
divers mécanismes déjà utilisé par le protocole Ethernet.
4.5.1 Ecoute de porteuse
Dans votre programme d'émission, ajoutez une fonction permettant
d'attendre le silence sur le bus série avant d'envoyer un tableau d'octets.
Il va donc falloir ouvrir le port série en lecture et écriture. Il faut
aussi trouver un dispositif pour arrêter le programme de lecture sur
le port série s'il est lancé sur la même machine. En effet si deux programmes
lisent le port série en même temps, le résultat est indéterminé. Il vous est
proposé de passer un paramètre optionnel à serialWrite pour lui communiquer
le PID du serialRead. Avant l'envoi d'un tableau d'octets le processus
serialWrite doit envoyer, en utilisant la primitive kill, un signal
SIGSTOP au processus de PID passé en paramètre. Aprés l'envoi, qu'il y
ait eu collision ou non, un signal SIGCONT doit être envoyé au même processus.
4.5.2 Détection de collision
Lors de l'envoi d'un tableau d'octets, vérifiez que les octets sont correctement
envoyés. Pour cela, il faut faire autant de lectures que d'écritures en comparant
les octets pour s'assurer qu'ils sont passés intacts. Si vous souhaitez avoir des
performances correctes il ne faut pas essayer de vérifier chaque octet après l'avoir
envoyé à cause de la latence entre émission et réception. Cela dit il ne faut non
plus faire trop d'écritures avant les premières vérifications car cela conduit à
une perte de bande passante en cas de collision. En cas de collision il faut arrêter
l'émission immédiatement.
4.5.3 Retransmissions après collision
Lorsqu'une collision est détectée, une retransmission du tableau d'octets doit
être retentée après une attente. Utilisez le même algorithme que pour Ethernet,
à savoir 16 retransmissions avec des temps d'attentes tirés au hasard entre
0 et (2n)-1 unités où n est le numéro de la tentative. Réduisez l'intervalle
à [0,1024] s'il est plus large. A vous de spécifier l'unité d'attente en fonction
du temps nécessaire pour envoyer un petit tableau d'octets. N'oubliez pas de relancer
l'éventuel processus serialRead avant l'attente. Utilisez la fonction usleep
pour réaliser l'attente.
4.5.4 Test de détection de collisions
Générez à nouveau des collisions avec des émissions simultanées. Vérifiez
que les tableaux s'affichent à nouveau, bien qu'éventuellement dans le
désordre. Attention a ne pas saturer la bande passante avec des envois trop
rapides.
4.6 Interface Ethernet virtuelle
Si vous souhaitez aller plus loin vous pouvez utiliser des interfaces
Ethernet virtuelles pour tester votre couche liaison avec les utilitaires
habituels comme ping et ssh. Regardez le script shell
launch.sh qui vous montre comment combiner vos exécutables et
l'utilitaire ethercat. Créez une interface Ethernet virtuelle
par PC connecté au bus série en lui donnant une adresse IP d'un réseau
IP commun (par exemple 192.168.0.0/24). Lancez ensuite le script
launch.sh sur chaque PC. Enfin utilisez ping pour vérifier
que votre couche liaison est capable de transporter des paquets IP. Vous
pouvez aussi lancer des ping simultanés voire des ssh pour
des tests exhaustifs.
5 Installation d'un système d'exploitation
Pour les exercices suivants nous allons avoir besoin d'un système Linux sur lequel vous serez administrateur.
Nous allons utiliser la distribution professionnelle Debian. Pour ne pas interférer avec le fonctionnement
normal de la machine de TP, vous allez créer une machine virtuelle dans laquelle vous installerez le système
d'exploitation. Vous utiliserez pour cela kvm, qui émule une machine physique de type PC.
La première opération à réaliser consiste à créer un fichier qui sera utilisé par la machine virtuelle comme
disque dur. Dans le répertoire /usr/local1/tmp commencez par créer un répertoire dont le nom est
votre login. Puis créez le fichier en utilisant la commande :
qemu-img create /usr/local1/tmp/<login>/disk 10G
5.1 Installation réseau
Une fois que votre disque virtuel est créé, vous allez pouvoir lancer l'installation dans la machine virtuelle.
Mais avant cela un pilote de virtualisation doit être chargé, tapez super pilote-kvm. L'installation
se lance avec la commande :
kvm -net nic,model=ne2k_pci -net user -hda /usr/local1/tmp/<login>/disk -cdrom /usr/local1/debian/debian-7.0.0-i386-DVD-1.iso
Cette commande lance la machine virtuelle en lui indiquant le fichier servant de disque dur
(option -hda /usr/local1/tmp/<login>/disk) et en lui indiquant que votre machine
virtuelle aura un lecteur DVD. Ce lecteur DVD pointe sur l'image iso d'un DVD d'installation
de Debian. Nous n'utilisons ici que le premier DVD de la distribution (à la question "avez vous
d'autres DVD ?" répondez non). Lorsque l'on vous demande si vous souhaitez utiliser un miroir
Debian en complément, répondez par l'affirmative et sélectionnez le miroir Debian de l'école.
Les éléments de configuration sont précisés dans la section suivante.
5.2 Configuration de Linux
Le reste de la section donne des indications pour l'installation de la
Debian, si vous êtes un peu perdu vous pouvez trouver de l'aide à l'URL
http://www.debian.org/releases/stable/i386.
Pour configurer le réseau lors de l'installation, laissez faire la configuration par DHCP. Prenez comme nom
de machine network suivi du numéro de votre machine réelle. Vous pouvez utiliser deule.net
comme domaine Internet.
Choisissez glopglop comme mot de passe de root et ajoutez un compte d'utilisateur normal
(spécifiez l'identifiant pifou et le mot de passe pasglop).
Utilisez le disque virtuel entier pour Linux en utilisant le schéma de partitionnement recommandé pour les utilisateurs débutants.
Une fois le système de base installé, il va vous être proposé d'utiliser un miroir de la distribution Debian.
Comme miroir spécifiez celui de l'école (ftp://debian.polytech-lille.fr). Faites en sorte d'utiliser le serveur
mandataire (proxy in english) de l'école (http://proxy.polytech-lille.fr:3128). Enfin choisissez la configuration
"Environnement graphique de bureau", "Serveur SSH" et "Utilitaires usuels" puis laissez le système choisir les paquetages
correspondants.
L'installation finale est un peu longue, iconifiez la machine virtuelle et passez à un autre exercice.
À la fin de l'installation, n'oubliez pas de laisser installer le lanceur GRUB sur votre disque virtuel
et ajoutez les paquetage suivants :
-
le client de messagerie icedove,
- l'analyseur de réseau wireshark,
- le service telnet (paquetage telnetd),
- le service ssh (paquetage openssh-server),
- le logiciel nc (paquetage netcat).
6 Configuration et utilisation de services Internet
Dans cette partie vous devez configurer des applications pour utiliser
les services Internet les plus courants dans votre machine virtuelle
installée en TP de systèmes d'exploitation.
6.1 Configuration des applications firefox et thunderbird
Configurez votre navigateur Web pour accéder à Internet (le proxy web
de l'école est proxy.polytech-lille.fr et écoute sur le port 3128).
Vous utiliserez thunderbird pour lire les messages de votre
boite aux lettres Polytech'Lille et pour en envoyer (le serveur IMAP
de l'école est imap.polytech-lille.fr et le serveur SMTP est
mail.polytech-lille.fr). Commencez par utiliser les protocoles
IMAP et SMTP en mode non sécurisé. Pour utiliser la version
sécurisée (SSL) de ces protocoles, vous devez récupérer les certificats
de imap.polytech-lille.fr et de mail.polytech-lille.fr sur
le site http://ca.polytech-lille.fr et les importer dans icedove.
Il est aussi possible d'utiliser un serveur LDAP sous thunderbird et de
s'en servir comme annuaire. Vous allez donc déclarer le serveur LDAP
de l'école (annuaire.polytech-lille.fr sur le port 389 en utilisant le
DN de ou=people,dc=polytech-lille.fr) et l'utiliser pour
rechercher toutes personnes ayant le même prénom que vous.
6.2 Utilisation de X11
Utilisez la procédure sécurisée permettant d'afficher l'application
xeyes lancé de votre machine virtuelle sur l'écran X11 de votre
machine réelle (sans utiliser l'option -X de ssh et en
utilisant l'utilitaire xauth).
Si vous souhaitez réaliser l'affichage des applications de la machine
réelle sur l'écran de la machine virtuelle, il faut que le serveur X
de la machine virtuelle démarre sans l'option nolisten. Modifiez
le fichier de configuration /etc/gdm3/daemon.conf pour qu'il contienne :
[security]
DisallowTCP = false
Il faut aussi supprimer l'option nolisten dans le script
/etc/X11/xinit/xserverrc.
6.3 Comparaison des protocoles TELNET et SSH
Dans une fenêtre de votre machine virtuelle lancez un analyseur réseau
comme wireshark. Utilisez une autre fenêtre pour vous connecter de votre
machine virtuelle vers l'extérieur. Commencez par une connexion telnet
vers la machine weppes. Testez ensuite ssh.
Que constatez-vous au niveau de la sécurité des différentes commandes vis à
vis d'un éventuel pirate ?
6.4 Comparaison des protocoles HTTP et HTTPS
Faites le même type de comparaison entre les protocoles HTTP
et HTTPS. Commencez par capturer les paquets quand vous vous
identifiez pour accéder au site http://rex.plil.fr/gis3. Que
constatez-vous ? Faites de même lorsque vous vous identifiez pour
accéder cet autre site d'URL http://twiki.polytech-lille.fr.
6.5 Connexion SSH sans mot de passe
Faites en sorte de pouvoir vous connecter avec ssh sur weppes
de votre machine virtuelle (compte pifou) sans avoir à taper de mot
de passe. Essayez de vous connecter de la même façon sur d'autres machines
de TP, que constatez-vous ? pourquoi ?
7 Manipulation de protocoles de services Internet
7.1 Protocole HTTP
En utilisant une connexion par nc, trouvez quel type de serveur web
utilisent les sites www.polytech-lille.fr, www.univ-lille1.fr,
www.microsoft.com, www.orange.fr et www.labanquepostale.fr.
Essayez pour les 3 derniers sites à partir de la machine weppes,
que constatez-vous ? Comment pouvez-vous tout de même effectuer le test à partir
de cette machine ?
7.2 Protocole SMTP
Envoyez un message sur la boite aux lettres de votre binôme sans utiliser
de client de messagerie autre que nc. Récupérez ce message via
les protocoles pop puis imap en utilisant le même nc.
7.3 Protocole FTP
Commencez par étudier le protocole FTP en lançant, sur votre machine
virtuelle, un renifleur réseau et en vous connectant sur le serveur de votre
machine de TP. Regardez comment FTP implante le listage de répertoires
et la récupération des fichiers.
Récupérez la liste des fichiers du répertoire /pub/linux/kernel/v2.6
sur le serveur FTP ftp.polytech-lille.fr sans utiliser de client
FTP. Vous aurez besoin de deux instances de l'utilitaire nc pour
réaliser cet exploit. Utilisez la même méthode pour déposer un fichier dans
votre répertoire racine par FTP.
Utilisez uniquement deux connexions avec nc pour transférer un fichier
du serveur FTP ftp.polytech-lille.fr vers votre répertoire racine
en utilisant le serveur FTP de votre machine.
This document was translated from LATEX by
HEVEA.