Aller au contenu

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 : oui
  • Create 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_tp04 ici. 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!.