1. A propos du cours
- Auteur : Ilyas Bambrik (Université de Tlemcen)
- Type : Support de Travaux Pratiques (TP) avec énoncés et codes (PDF)
- Langue : Français
- Licence : Non spécifiée (Document de cours universitaire pour "Réseaux Avancés M1 SIC - IA")
2. Prérequis
- Connaissances de base en programmation Python (syntaxe, structures de contrôle).
- Compréhension des concepts fondamentaux des réseaux informatiques (protocoles TCP/IP, modèles client-serveur, ports).
- Familiarité avec l'utilisation d'un terminal ou invite de commandes (CMD sous Windows, ou terminal sous Linux/Mac).
3. Publique cible
Ce TP s'adresse aux étudiants de Master 1 (M1) en informatique, spécialités Systèmes d'Information et de Communication (SIC) ou Intelligence Artificielle (IA), suivant un module de Réseaux Avancés. Il vise les étudiants souhaitant appliquer la programmation Python à la création et à l'analyse d'applications réseau.
4. Outils matériels et logiciels
4.1 Outils matériels
- Un ordinateur connecté à un réseau (même local) pour tester les connexions client-serveur.
4.2 Outils logiciels
- Une installation de Python 3 (la version 3.12.0 est spécifiquement mentionnée).
- Optionnel : Anaconda et Jupyter Notebook pour un environnement de développement intégré.
- L'accès à un terminal système (CMD sous Windows, ou équivalent).
- Les codes sources du TP, disponibles via un lien Google Drive fourni dans le document.
5. Champs d'applications
- Développement d'applications client-serveur en Python (chat, transfert de fichiers, jeux en réseau).
- Diagnostic et analyse réseau via des outils système comme netstat.
- Compréhension approfondie du cycle de vie d'une connexion TCP (établissement, transfert de données, terminaison).
- Programmation concurrente basique (gestion de plusieurs connexions).
- Sécurité informatique et analyse des ports ouverts sur une machine.
6. Courte description
Ce TP d'introduction à la programmation réseau en Python combine analyse pratique avec netstat et développement d'un client/serveur TCP simple. Il guide l'étudiant pour observer, créer et analyser des connexions réseau, en lien avec les états du protocole TCP.
7. Longue description du cours
Ce document est le premier travail pratique (TP1) du cours "Réseaux Avancés" destiné aux étudiants de Master 1 à l'Université de Tlemcen. Il a pour objectif principal de fournir une introduction pratique et concrète à la programmation réseau en utilisant le langage Python. L'approche est résolument expérimentale et pédagogique, liant étroitement l'observation du réseau via des outils système et l'implémentation de programmes réseau simples.
7.1 Analyse Réseau avec l'outil Netstat
La première partie du TP est dédiée à l'observation et à l'analyse de l'état des connexions réseau sur la machine de l'étudiant. Elle utilise l'outil en ligne de commande netstat, disponible sur la plupart des systèmes d'exploitation. Les étudiants apprennent à exécuter des commandes comme netstat -n pour afficher toutes les connexions actives (avec des adresses IP et des numéros de port) et netstat -n -b (sous Windows, en mode administrateur) pour afficher en plus le nom du processus à l'origine de chaque connexion.
Cette analyse permet de visualiser concrètement des concepts théoriques : les connexions établies (ESTABLISHED), les connexions en attente de fermeture (TIME_WAIT, CLOSE_WAIT), et le fait que de nombreuses connexions ont lieu en local (adresse 127.0.0.1) entre différents logiciels. Le TP guide également les étudiants pour rediriger la sortie de netstat dans un fichier et pour identifier et terminer un processus occupant un port spécifique à l'aide des commandes netstat -aon et taskkill.
7.2 Programmation Client-Serveur TCP en Python
Le cœur technique du TP est l'implémentation d'une application client-serveur basique utilisant le protocole TCP et le module socket de Python. Le document fournit deux programmes complets et commentés :
- Le Serveur (Serveur.py) : Ce programme crée un socket, le lie (bind) à l'adresse locale (127.0.0.1) et au port 9500, puis se met en écoute (listen). Dans une boucle infinie, il accepte (accept) les connexions entrantes des clients. Pour chaque client connecté, il entre dans une seconde boucle où il reçoit (recv) des messages de 1024 octets, les décode de bytes en chaîne de caractères (.decode()) et les affiche, jusqu'à recevoir le message "fin".
- Le Client (Client.py) : Ce programme crée un socket et tente de s'y connecter (connect) au serveur (adresse et port connus). Il invite ensuite l'utilisateur à saisir des messages au clavier. Chaque message est encodé (encode) en bytes et envoyé (send) au serveur. La boucle s'arrête et la connexion se ferme (close) lorsque l'utilisateur saisit "fin".
L'exécution de ces deux programmes permet de matérialiser une connexion TCP complète (SYN, SYN-ACK, ACK) et de vérifier son apparition dans la liste des connexions de netstat.
7.3 Lien Théorie/Pratique et Validation
La grande force de ce TP est de créer un dialogue constant entre la théorie des réseaux et la pratique de la programmation. Les étudiants sont invités à :
- Exécuter netstat avant de lancer leurs programmes pour établir un état de référence.
- Lancer le serveur, puis le client, et établir une communication (envoyer des messages "Bonjour", "Test").
- Exécuter à nouveau netstat pour observer la nouvelle connexion établie (ESTABLISHED) sur le port 9500 et vérifier le nom des processus (pythonw.exe, java.exe).
- Envoyer le message "fin" depuis le client pour terminer la connexion proprement.
- Observer l'état de la connexion après fermeture (par exemple, CLOSE_WAIT côté serveur), illustrant ainsi une phase de la terminaison en quatre temps de TCP.
Cette démarche permet de valider visuellement le bon fonctionnement du code et de comprendre comment les états abstraits du protocole TCP (ESTABLISHED, CLOSE_WAIT, etc.) se manifestent concrètement dans les outils système.
7.4 Pédagogie et Méthodologie de Travail
Le TP est conçu comme un guide pas-à-pas très détaillé. Chaque étape est une question ou une instruction claire. Le document insiste sur la nécessité de fournir des captures d'écran complètes comme preuve de travail, encourageant ainsi la rigueur et l'observation attentive. Les listings de code sont abondamment commentés en français, expliquant le rôle de chaque fonction (bind, listen, accept, recv/send, encode/decode).
En résumé, ce TP est une excellente première immersion dans la programmation réseau avec Python. Il ne cherche pas à créer une application complexe, mais à donner aux étudiants les fondamentaux pratiques et les réflexes d'analyse indispensables pour aborder des projets plus ambitieux, tout en consolidant leur compréhension des mécanismes sous-jacents des réseaux TCP/IP.
8. Aperçu du document
Voir ou télécharger le document sur le site d’origine
Ce document est hébergé par une source externe. Nous ne revendiquons aucun droit sur son contenu. Pour toute demande de retrait, veuillez contacter l’auteur ou l’hébergeur officiel.


