Aller au contenu principal

Modèle TCP/IP

#Modèle TCP/IP

Le modèle TCP/IP est un ensemble de protocoles de communication qui permet l'interconnexion de réseaux hétérogènes. Il est organisé en quatre couches principales.

#Couches du modèle TCP/IP

#1. Couche Application

  • Protocoles : HTTP, FTP, SMTP, DNS, etc.
  • Responsabilités : Fournir des services réseau aux applications utilisateur.

#2. Couche Transport

  • Protocoles : TCP (fiable) et UDP (rapide).
  • Responsabilités :
    • TCP : Contrôle de flux, correction d'erreurs, segmentation.
    • UDP : Transmission rapide sans garantie.

#3. Couche Internet (IP)

  • Protocole principal : IP (IPv4/IPv6).
  • Responsabilités : Routage des paquets entre réseaux, adressage logique.

#4. Couche Lien (ou Accès réseau)

  • Protocoles : Ethernet, WiFi, PPP, etc.
  • Responsabilités : Transmission physique, adressage matériel (MAC).

#Encapsulation

L'encapsulation est le processus par lequel chaque couche ajoute ses propres en-têtes (et parfois une queue) aux données reçues de la couche supérieure.

  1. Données applicatives (message)
  2. Couche Transport : Ajout en-tête TCP/UDP → Segment
  3. Couche Internet : Ajout en-tête IP → Paquet
  4. Couche Lien : Ajout en-tête Ethernet → Trame
  5. Transmission sur le support physique → Bits

#Exercice : Simulation d'encapsulation/décapsulation

Simulez le processus d'encapsulation et de décapsulation d'un message à travers les couches TCP/IP.

#Instructions

  1. Créez une classe pour chaque couche du modèle TCP/IP.
  2. Implémentez la méthode encapsuler(donnees) qui ajoute l'en-tête approprié.
  3. Implémentez la méthode decapsuler(trame) qui extrait les données et l'en-tête.
  4. Simulez l'envoi d'un message simple à travers toutes les couches.

#Exemple de code

pythonpython
1class CoucheApplication:2    def encapsuler(self, message):3        print("Couche Application: Message original")4        return f"[DONNEES]{message}[/DONNEES]"5    6    def decapsuler(self, donnees):7        # Extraction simplifiée8        contenu = donnees.replace("[DONNEES]", "").replace("[/DONNEES]", "")9        print("Couche Application: Message extrait")10        return contenu11 12class CoucheTransport:13    def encapsuler(self, donnees):14        print("Couche Transport: Ajout en-tête TCP")