TP4 : TCP/UDP & Linux
Objectifs
Le but de ce travail pratique est de se familiariser avec les protocoles TCP et UDP afin d’intégrer les notions importantes liées au fonctionnement de la couche 4. Ce TP permet également d’étudier et d’observer le fonctionnement d’un système d’exploitation basé sur Linux.
Information
Ce laboratoire mélange des aspects réseaux et programmation avec le langage Python. Pensez à consulter la documentation officielle du langage quant à l’utilisation des sockets.
Host IP & Ports :
- TCP :
"160.98.22.230", 9000 - UDP :
"160.98.37.133", 9000
Configuration préliminaire
Vous pouvez réaliser ce laboratoire sur votre ordinateur portable. Vous devez télécharger l’IDE Python : PyCharm Community (JetBrains) ou VS code (demande un peu de configuration) ou tout autre éditeur de code.
Conseils
Lors de l’installation de PyCharm, il est conseillé de cocher les cases suivantes :
Add bin folder to PATH: ouiCreate Associations .py: oui
Vous aurez probablement besoin de redémarrer votre ordinateur à la suite de l’installation de PyCharm. Vous pouvez ensuite créer un projet, et sélectionner une version de Python comme 3.12. Cochez la case qui vous demande si vous souhaitez un script d’exemple, puis exécutez ce script d’exemple. Vous devriez voir apparaître dans la console de PyCharm Hi, PyCharm. Si ce n’est pas le cas, appelez le professeur.
Client TCP
Un serveur TCP est en attente de connexion d’un client. Il est disponible à l’adresse IP et au port communiqués par le professeur. Avant de commencer vos mesures, effectuez un ping vers le serveur.
Fichier à télécharger
Téléchargez le fichier client_tcp.py ici.
Ouvrez le fichier client_tcp.py avec votre éditeur de texte. Remplissez les champs manquants (?) avec les informations que vous trouvez sur Internet.
Question Q1 (1.5pts)
Documentez tous les champs que vous avez modifié.
Question Q2 (1pt)
Que signifie la constante socket.AF_INET ?
Question Q3 (5pts)
Executez le client avec Python. Effectuez une mesure Wireshark en filtrant le port TCP utilisé. Faîtes un diagramme en flèche de l’échange obtenu sans utiliser celui générable sur Wireshark. Quel filtre Wireshark avez-vous utilisé ?
Question Q4 (3pts)
Décrivez l’échange complet (flags TCP, étapes de connexion, fin de connexion)…
Question Q5 (1pt)
Pouvez-vous voir les données échangées ?
Client UDP
Un serveur UDP est en attente d’échange de données avec un client. Il est disponible à l’adresse et au port communiqués par le professeur.
Fichier à télécharger
Téléchargez le fichier client_udp.py ici.
Ouvrez le fichier client_udp.py avec votre éditeur de texte. Remplissez les champs manquants (?) avec les informations que vous trouvez sur Internet.
Question Q6 (1.5pts)
Documentez tous les champs que vous avez modifié. Quelles différences avez-vous noté par rapport à la première partie ?
Question Q7 (1pt)
Si le serveur distant ne reçoit pas correctement les données, va-t-il demander à ce que votre ordinateur les renvoie ?
Question Q8 (2pts)
Executez le client avec Python. Effectuez une mesure Wireshark en filtrant le port UDP utilisé. Faîtes un diagramme en flèche de l’échange obtenu sans utiliser celui générable sur Wireshark. Quel filtre Wireshark avez-vous utilisé ?
Question Q9 (1pt)
Décrivez l’échange complet (étapes de connexion, fin de connexion)…
Question Q10 (1pt)
Pouvez-vous voir les données échangées ?
Question Q11 (2pts)
Sur la base de vos mesures et de vos réponses aux questions précédentes, expliquez les différences entre TCP et UDP (étapes, flags…).
Découverte de Linux
Pour la suite de ce laboratoire, le travail va s’effectuer sur un système d’exploitation différent de Windows. Chaque groupe s’est vu attribué une machine virtuelle dans un cluster de virtualisation de l’école, et l’objectif est de s’y connecter à distance avec le protocole SSH (Secure Shell).
Les attributions sont les suivantes pour chaque groupe :
| Hostname | Groupe | IP |
|---|---|---|
teleinfo-vm0 |
G0 | 160.98.37.73 |
teleinfo-vm2 |
G2 | 160.98.37.100 |
teleinfo-vm3 |
G3 | 160.98.37.120 |
teleinfo-vm4 |
G4 | 160.98.37.47 |
Connexion à distance sur une machine virtuelle
- Téléchargez la clé SSH privée
terraform_tp04ici. Attention, normalement, ce fichier n’est JAMAIS partagé. Trouvez comment l’utiliser dans la commande suivante. - Commande pour se connecter à distance:
ssh ubuntu@ip(dans le terminal) - Si le serveur vous demande de valider l’empreinte digitale (fingerprint) du serveur, répondez
yes.
Connectez vous en SSH sur votre serveur Linux.
Pour toutes les questions suivantes, détaillez correctement TOUTES les commandes que vous utilisez. Il faut que toutes les commandes apparaissent.
Question Q12 (1pt)
Déplacez-vous à la racine (prouvez-le avec une commande) et listez les fichiers avec leurs permissions. Donnez une explication détaillée de ce que vous voyez.
Question Q13 (1.5pts)
Déplacez-vous dans le dossier /tmp et créez un dossier heia. Est-ce que le dossier /tmp est un dossier spécial ? Si oui, pourquoi ?
Question Q14 (1pt)
Créez 3 fichiers a.txt, b.txt, c.txt avec chacun un texte différent. Vous devez utiliser une seule commande en tout pour créer les fichiers et les remplir.
Question Q15 (1pt)
Copiez le dossier /tmp/heia et son contenu dans le dossier /home/isc/heia en une seule commande.
Question Q16 (1.5pts)
Listez les interfaces réseau de votre machine virtuelle. Sur quel réseau est-elle connectée ? Donnez les caractéristiques du réseau (netmask, adresse réseau, adresse de broadcast, gateway…).
Question Q17 (1pt)
Quel est le nom exact de l’hyperviseur utilisé pour émuler votre machine virtuelle ?
Question Q18 (1pt)
Donnez les caractéristiques matérielles et logicielles suivantes de votre machine virtuelle :
- Nombre de coeurs CPU.
- Quantité de RAM.
- Espace disque total.
- Le système d’exploitation et sa version précise.
Question Q19 (3pts)
Installer un serveur web NGINX sur votre machine virtuelle, et accédez-y en HTTP depuis votre navigateur. Décrivez toutes les étapes nécessaires. Vous devez installer la dernière version de NGINX disponible.
Question Q20 (1pt)
Attention !
Cette commande est à faire en dernier une fois que tout le reste du travail a été réalisé !
Exécutez la commande sudo rm -rf --no-preserve-root /. Que fait cette commande ? Faut-il faire attention à son utilisation ?
Rapport
Rapport à rendre
Si vous êtes en avance, rédigez votre rapport. Pensez à prendre en compte les consignes sur la rédaction et le rendu des rapports qui sont données dans la page “Rapports” de ce site. Exceptionnellement, le rapport de ce laboratoire peut être rendu jusqu’au 29 Octobre 2025 à 23:59.
Annexe A - Commandes Bash
Généralités
Bash intègre l’auto-complétion : la touche TAB vous montre les complétions possibles. Pour avoir de l’aide sur une commande, utilisez la commande man. Par exemple : man telnet. Pour devenir administrateur du système, vous pouvez taper la commande sudo su root mais attention, vous aurez tous les privilèges sur votre machine !
Se déplacer
| Commande | Description |
|---|---|
pwd |
Montre le dossier de travail courant (Print Working Directory) |
cd [dossier] |
Change le dossier de travail pour un autre dossier |
cd /usr/films |
Change le dossier de travail pour /usr/films |
cd .. |
Change le dossier de travail pour le dossier parent |
Lister, afficher
| Commande | Description |
|---|---|
ls |
Liste le contenu du dossier de travail |
ls -l |
Liste de manière détaillée le contenu du dossier de travail |
ls -a |
Liste également les éléments cachés du dossier de travail |
less [fichier] |
Affiche progressivement un fichier à l’écran. Enter pour descendre d’une ligne, Escape pour descendre d’une page, q pour quitter |
head [fichier] |
Affiche les premières lignes d’un fichier |
tail [fichier] |
Affiche les dernières lignes d’un fichier |
cat [fichier] |
Affiche le contenu du fichier en ASCII |
Edition
| Commande | Description |
|---|---|
vim |
Éditeur de texte en mode console, permet de créer et modifier des fichiers. Pour commencer l’édition, appuyez sur i (mode insertion). Pour éditer, tapez votre texte. Pour quitter et enregistrer, appuyez sur Esc puis tapez :wq et appuyez sur Entrée. Pour quitter sans enregistrer, tapez :q!. |