============================================================================
# [LIVRE] RÉSEAUX INFORMATIQUES - GUIDE ULTRA-COMPLET POUR DÉBUTANTS
# ============================================================================

---

# [WEB] **Programme Ultra-Complet — Réseaux Informatiques (Débutant -> Expert)**

*(40 chapitres très détaillés)*

---

# [MODULE] **PARTIE I — Fondations du Réseau (Bases Absolues)**

## **1. Introduction aux réseaux**

* Définition d’un réseau
* Pourquoi utiliser un réseau ?
* Types de réseaux : LAN, WAN, MAN, WLAN, PAN
* Architecture client/serveur
* Architecture pair à pair (P2P)

## **2. Matériel réseau de base**

* Carte réseau (NIC)
* Switch
* Routeur
* Point d’accès
* Câbles (Ethernet, fibre, coaxial)
* Patch Panel, baie de brassage

## **3. Numérisation & transmission**

* Bit, signal, bande passante
* Types de transmissions : parallèle, série
* Half-duplex / full-duplex
* Débit vs throughput vs latence

---

# [MODULE] **PARTIE II — Modèles de Communication**

## **4. Modèle OSI (7 couches)**

* Rôle de chaque couche
* Encapsulation / décapsulation
* En-têtes et données (PDU)

## **5. Modèle TCP/IP (4 couches)**

* Comparaison OSI vs TCP/IP
* Où se situent TCP, IP, HTTP…

---

# [MODULE] **PARTIE III — Adressage & Réseaux locaux**

## **6. Adressage MAC**

* Structure 48 bits
* OUI Vendor
* Pourquoi MAC ≠ IP

## **7. Introduction à IPv4**

* Structure IPv4
* Classes A, B, C
* Réseaux privés vs publics
* Loopback

## **8. Masque de sous-réseau**

* Notation /24 /16 /8
* Calcul réseau + broadcast
* Nombre d’hôtes

## **9. Sous-réseaux (Subnetting)**

* Découpage d’un réseau
* VLSM
* Subnetting de A à Z avec exercices

## **10. Adressage IPv6**

* Structure sur 128 bits
* Compression
* Types d’adresses (Global, Link-local, Unique Local)
* Pourquoi IPv6 est nécessaire

---

# [MODULE] **PARTIE IV — Protocoles de la couche Réseau**

## **11. ARP**

* Résolution IP -> MAC
* Cache ARP
* ARP poisoning (conceptuel)

## **12. ICMP**

* Ping, traceroute
* Codes et types ICMP
* Dépannage réseaux

## **13. Routage IP**

* Table de routage
* Route par défaut
* Saut (hop)
* Métrique

---

# [MODULE] **PARTIE V — Protocoles de Transport**

## **14. TCP**

* Handshake 3-way
* Ports
* Contrôle de flux
* Fenêtre glissante
* ACK/SYN/FIN

## **15. UDP**

* Différences avec TCP
* Cas d’usage (DNS, streaming)
* Fiabilité vs rapidité

---

# [MODULE] **PARTIE VI — Couches hautes (Applications réseau)**

## **16. DNS**

* Résolution de nom
* Types d’enregistrements : A, AAAA, MX, CNAME
* Serveur DNS récursif, faisant autorité
* Zone, domaine, sous-domaine

## **17. DHCP**

* DORA : Discover, Offer, Request, ACK
* Bail DHCP
* Réservation MAC
* Pool d’adresses

## **18. HTTP / HTTPS**

* Méthodes : GET, POST, PUT…
* Codes 200–500
* TLS / chiffrement

## **19. FTP / SFTP**

* Mode actif vs passif
* Sécurisation

## **20. SMTP / IMAP / POP3**

* Fonctionnement d’un mail
* Ports
* Sécurité

---

# [MODULE] **PARTIE VII — Réseaux LAN avancés**

## **21. VLAN**

* Pourquoi VLAN ?
* Isolation
* VLAN tagging (802.1Q)

## **22. Trunk vs Access**

* Ports VLAN
* Switch niveau 2 ou 3

## **23. Spanning Tree Protocol (STP)**

* Boucles réseau
* Root Bridge
* États du port

## **24. Agrégation de liens (LACP)**

* Bonding
* Load balancing
* Haute disponibilité

---

# [MODULE] **PARTIE VIII — Routage avancé**

## **25. Routage statique**

* Routes spécifiques
* Routes par défaut
* Scénarios de redondance

## **26. Routage dynamique**

* RIP, OSPF, BGP
* Distance administrative
* Métrique
* Voisins

---

# [MODULE] **PARTIE IX — Sécurité réseau**

## **27. Pare-feu (Firewall)**

* Stateful vs stateless
* Filtrage IP/port
* NAT / PAT

## **28. NAT (Network Address Translation)**

* DNAT, SNAT
* PAT (Port Address Translation)
* Masquerading

## **29. VPN**

* IPSec, OpenVPN, WireGuard
* Tunnelisation
* Chiffrement

## **30. IDS / IPS**

* Détection d’intrusion
* Snort / Suricata
* Signature vs anomalie

---

# [MODULE] **PARTIE X — Wi-Fi & Communications sans-fil**

## **31. Technologies Wi-Fi**

* Normes 802.11 a/b/g/n/ac/ax
* Canaux et bandes (2.4 / 5 / 6 GHz)
* Débit théorique vs réel

## **32. Sécurité Wi-Fi**

* WPA2 / WPA3
* PSK / Enterprise
* Auth 802.1X

## **33. Roaming & Mesh**

* Contrôleur Wi-Fi
* AP mesh
* Handoff

---

# [MODULE] **PARTIE XI — Réseaux WAN & Entreprise**

## **34. MPLS**

* Label switching
* Transport opérateur
* QoS

## **35. Fibre optique**

* Monomode, multimode
* Atténuation, connecteurs

## **36. Liaison télécom**

* xDSL
* 4G / 5G
* Métro Ethernet

---

# [MODULE] **PARTIE XII — Supervision & Diagnostic**

## **37. Outils de diagnostic**

* ping
* traceroute
* dig / nslookup
* ip a / ip r
* tcpdump
* netstat / ss

## **38. SNMP**

* MIB
* Monitoring réseau
* Zabbix / PRTG / Nagios

---

# [MODULE] **PARTIE XIII — Architecture réseau et bonnes pratiques**

## **39. Topologies réseau**

* Étoile
* Anneau
* Bus
* Mesh
* Architecture 3 tiers (Core – Distribution – Access)

## **40. Construction d’un réseau complet**

* Adressage
* VLAN
* DHCP
* DNS
* NAT
* Sécurité
* Haute disponibilité

---
#
# [OBJECTIF] GUIDE COMPLET POUR MAÎTRISER LES RÉSEAUX DE ZÉRO À EXPERT
#
# Ce guide est organisé en 40 chapitres progressifs couvrant :
# - Fondations du réseau (concepts de base)
# - Modèles de communication (OSI, TCP/IP)
# - Adressage et sous-réseaux (IPv4, IPv6)
# - Protocoles réseau (ARP, ICMP, DNS, DHCP, etc.)
# - Réseaux LAN avancés (VLAN, STP, etc.)
# - Routage (statique et dynamique)
# - Sécurité réseau (Firewall, VPN, IDS/IPS)
# - Wi-Fi et communications sans-fil
# - Réseaux WAN et Enterprise
# - Supervision et diagnostic
# - Architecture et bonnes pratiques
#
# [TEMPS] TEMPS DE LECTURE TOTAL : ~30-35 heures
# [DOCS] PRÉREQUIS : Aucun - conçu pour grands débutants
#
# [IDEE] COMMENT UTILISER CE GUIDE :
# 1. Lisez les chapitres dans l'ordre
# 2. Pratiquez TOUS les exemples
# 3. Faites les exercices pratiques (2 par chapitre)
# 4. Créez vos propres labs et expérimentations
#
# ============================================================================

"""
[OBJECTIF] PHILOSOPHIE DE CE GUIDE

COMMENT ? -> Explications pas à pas avec schémas ASCII
POURQUOI ? -> Raisons et contexte de chaque concept
QUAND ? -> Cas d'usage concrets et réels
PRATIQUE -> Exemples, commandes, et 2 projets par chapitre

Ce guide vise à être VOTRE SEULE RÉFÉRENCE Réseaux !
"""

# ============================================================================
# [NOTE] CONVENTIONS UTILISÉES DANS CE GUIDE
# ============================================================================

"""
[IDEE] Information importante
[REFLEXION] Question / Réflexion  
[OK] Bonne pratique
[X] Mauvaise pratique
[ATTENTION] Attention / Avertissement
[CLE] Point clé à retenir
[COURS] Exercice pratique
[DOCS] Résumé
[OBJECTIF] Objectif
[TEMPS] Temps estimé
[RAPIDE] Prêt pour la suite
[OUTIL] Configuration / Commande
[GRAPHIQUE] Schéma / Diagramme
"""


# ============================================================================
# [MODULE] PARTIE I — FONDATIONS DU RÉSEAU (BASES ABSOLUES)
# ============================================================================


# ============================================================================
# [GUIDE] CHAPITRE 1 : INTRODUCTION AUX RÉSEAUX
# ============================================================================

"""
[OBJECTIF] OBJECTIFS D'APPRENTISSAGE

À la fin de ce chapitre, vous saurez :
[OK] Ce qu'est un réseau informatique
[OK] Pourquoi utiliser un réseau
[OK] Les différents types de réseaux (LAN, WAN, MAN, etc.)
[OK] Architecture client/serveur vs pair-à-pair
[OK] Les composants de base d'un réseau
[OK] Comment les données circulent dans un réseau
"""


# ----------------------------------------------------------------------------
# [REFLEXION] QU'EST-CE QU'UN RÉSEAU INFORMATIQUE ?
# ----------------------------------------------------------------------------

"""
DÉFINITION SIMPLE

Un réseau informatique est un ensemble d'ordinateurs et d'équipements 
connectés entre eux pour partager des ressources et communiquer.

[IDEE] ANALOGIE SIMPLE

Pensez au réseau routier :
- Routes = Câbles réseau
- Voitures = Données
- Panneaux = Protocoles (règles de circulation)
- Adresses = Adresses IP
- Carrefours = Switchs/Routeurs

Tout comme les voitures circulent sur les routes pour aller d'un point A 
à un point B, les données circulent sur le réseau pour aller d'un ordinateur 
à un autre.


COMPOSANTS DE BASE D'UN RÉSEAU

1. PÉRIPHÉRIQUES TERMINAUX (End Devices)
   - Ordinateurs (PC, laptops)
   - Smartphones et tablettes
   - Imprimantes réseau
   - Serveurs
   - IoT (objets connectés)

2. ÉQUIPEMENTS RÉSEAU (Network Devices)
   - Switchs (commutateurs)
   - Routeurs
   - Points d'accès Wi-Fi
   - Modems
   - Firewalls

3. MÉDIAS DE TRANSMISSION
   - Câbles Ethernet (cuivre)
   - Fibre optique
   - Ondes radio (Wi-Fi)
   - Satellites

4. LOGICIELS ET PROTOCOLES
   - Systèmes d'exploitation réseau
   - Applications (navigateurs, email, etc.)
   - Protocoles (règles de communication)


[GRAPHIQUE] SCHÉMA : RÉSEAU SIMPLE

┌──────────────┐          ┌──────────────┐
│  Ordinateur  │          │  Ordinateur  │
│      A       │          │      B       │
└──────┬───────┘          └──────┬───────┘
       │                         │
       │  Câble Ethernet        │
       │                         │
       └─────────┬───────────────┘
                 │
           ┌─────[BLACK_DOWN-POINTING_TRIANGLE]──────┐
           │   Switch   │
           │            │
           └─────┬──────┘
                 │
         ┌───────[BLACK_DOWN-POINTING_TRIANGLE]────────┐
         │   Imprimante   │
         │    Réseau      │
         └────────────────┘

Dans cet exemple :
- Les ordinateurs A et B peuvent communiquer entre eux
- Les deux ordinateurs peuvent utiliser l'imprimante
- Le switch relie tous les équipements
"""


# ----------------------------------------------------------------------------
# [OBJECTIF] POURQUOI UTILISER UN RÉSEAU ?
# ----------------------------------------------------------------------------

"""
AVANTAGES DES RÉSEAUX

1. PARTAGE DE RESSOURCES [SAUVEGARDE]
   ────────────────────────
   
   MATÉRIELLES :
   - Imprimantes partagées
   - Scanners
   - Serveurs de stockage (NAS)
   - Connexion Internet
   
   Exemple concret :
   Au lieu d'acheter 10 imprimantes pour 10 ordinateurs,
   vous achetez 1 imprimante réseau accessible par tous.
   -> Économie : ~90% du coût
   
   LOGICIELLES :
   - Applications centralisées
   - Licences partagées
   - Bases de données communes
   
   Exemple :
   Une entreprise avec un logiciel de comptabilité sur serveur :
   - Tous les employés y accèdent simultanément
   - Données toujours à jour
   - Pas besoin d'installer sur chaque PC


2. COMMUNICATION [EMAIL]
   ────────────────
   
   - Email (messagerie électronique)
   - Messagerie instantanée (Slack, Teams)
   - Visioconférence (Zoom, Meet)
   - Téléphonie IP (VoIP)
   
   Sans réseau :
   [X] Déplacement physique pour échanger des infos
   [X] Supports physiques (clés USB, disques)
   [X] Perte de temps
   
   Avec réseau :
   [OK] Communication instantanée
   [OK] Collaboration en temps réel
   [OK] Productivité accrue


3. CENTRALISATION DES DONNÉES [ARCHIVE]
   ──────────────────────────────
   
   AVANT (sans réseau) :
   Fichier client.xlsx sur PC de Marie
   -> Marie absente = fichier inaccessible
   -> Multiples versions du fichier
   -> Risque de perte
   
   APRÈS (avec réseau) :
   Fichier client.xlsx sur serveur central
   -> Accessible de partout
   -> Version unique (source de vérité)
   -> Sauvegarde automatique
   -> Sécurité renforcée


4. ACCÈS À INTERNET [WEB]
   ───────────────────
   
   Un seul abonnement Internet partagé par tous
   
   Sans réseau :
   - 1 abonnement par appareil
   - Coût : 50€ × 10 appareils = 500€/mois
   
   Avec réseau :
   - 1 abonnement partagé via routeur
   - Coût : 50€/mois
   - Économie : 450€/mois !


5. SÉCURITÉ CENTRALISÉE [VERROUILLE]
   ───────────────────────
   
   - Firewall unique protégeant tout le réseau
   - Antivirus centralisé
   - Politiques de sécurité uniformes
   - Surveillance du trafic
   - Contrôle d'accès (qui peut accéder à quoi)


6. FACILITÉ D'ADMINISTRATION [PERSONNE][PRO]
   ──────────────────────────────
   
   Sans réseau :
   - Mise à jour sur chaque PC individuellement
   - Configuration manuelle partout
   - Temps : des heures/jours
   
   Avec réseau :
   - Déploiement centralisé
   - Configuration automatique
   - Temps : quelques minutes


[IDEE] CAS D'USAGE CONCRETS

ENTREPRISE :
- 50 employés partageant imprimantes, serveurs
- Messagerie interne
- Accès bases de données clients
- Collaboration sur projets

DOMICILE :
- Plusieurs appareils (PC, smartphones, TV)
- Partage connexion Internet
- Streaming vidéo (Netflix sur TV)
- Imprimante Wi-Fi

ÉCOLE :
- Salles informatiques
- Accès ressources pédagogiques
- Système de notes en ligne
- Wi-Fi étudiant
"""


# ----------------------------------------------------------------------------
# [GRAPHIQUE] TYPES DE RÉSEAUX
# ----------------------------------------------------------------------------

"""
CLASSIFICATION PAR TAILLE GÉOGRAPHIQUE


1. PAN (Personal Area Network) - Réseau Personnel
   ───────────────────────────────────────────────
   
   PORTÉE : 1 à 10 mètres
   TECHNOLOGIE : Bluetooth, USB, Infrarouge
   
   [GRAPHIQUE] SCHÉMA PAN :
   
      [UTILISATEUR] Utilisateur
       │
   ┌───┴────┬──────┬───────┐
   │        │      │       │
  [MOBILE]     [WATCH]   [AUDIO]    [CODE]
  Phone  Watch Headset Laptop
   
   EXEMPLES :
   - Smartphone <-> Écouteurs Bluetooth
   - Ordinateur <-> Souris sans fil
   - Laptop <-> Smartwatch
   - Téléphone <-> Enceinte Bluetooth
   
   CARACTÉRISTIQUES :
   [OK] Très courte portée
   [OK] Faible consommation
   [OK] Mobilité
   [X] Débit limité


2. LAN (Local Area Network) - Réseau Local
   ────────────────────────────────────────
   
   PORTÉE : Un bâtiment ou campus (jusqu'à ~1 km)
   TECHNOLOGIE : Ethernet, Wi-Fi
   VITESSE : 100 Mbps à 10 Gbps
   
   [GRAPHIQUE] SCHÉMA LAN :
   
   Étage 2 :  [CODE]─┐
   Étage 1 :  [CODE]─┼─[Switch]─┐
   RDC :      [CODE]─┘          │
                      [Routeur]─── Internet
                            │
   Bureau A : [CODE]─┐          │
   Bureau B : [CODE]─┼─[Switch]─┘
   Bureau C : [CODE]─┘
   
   EXEMPLES :
   - Réseau d'une maison (Home LAN)
   - Réseau d'un bureau/entreprise
   - Réseau d'une école
   - Réseau d'un hôpital
   
   COMPOSANTS TYPIQUES :
   - Switchs (commutateurs)
   - Points d'accès Wi-Fi
   - Serveurs locaux
   - Câbles Ethernet
   
   CARACTÉRISTIQUES :
   [OK] Haut débit
   [OK] Faible latence
   [OK] Contrôle total
   [OK] Sécurité maîtrisée
   [X] Portée limitée


3. MAN (Metropolitan Area Network) - Réseau Métropolitain
   ───────────────────────────────────────────────────────
   
   PORTÉE : Une ville (jusqu'à ~50 km)
   TECHNOLOGIE : Fibre optique, WiMAX
   
   [GRAPHIQUE] SCHÉMA MAN :
   
   ┌─────────────────────────────────────────┐
   │           Ville de Paris                │
   │                                         │
   │  [Campus Nord]────[Backbone]────[Campus Sud]
   │       │              │              │   │
   │   [Building A]  [Building B]  [Building C]
   │                                         │
   └─────────────────────────────────────────┘
   
   EXEMPLES :
   - Réseau d'une université multi-campus
   - Réseau municipal (ville connectée)
   - Réseau opérateur télécoms en ville
   - Réseau bancaire local (succursales d'une ville)
   
   CARACTÉRISTIQUES :
   [OK] Couvre une ville entière
   [OK] Interconnecte plusieurs LANs
   [OK] Bon débit (grâce à la fibre)
   [X] Coût élevé d'infrastructure


4. WAN (Wide Area Network) - Réseau Étendu
   ────────────────────────────────────────
   
   PORTÉE : Pays, continent, monde entier
   TECHNOLOGIE : Fibre, satellite, liaisons louées
   
   [GRAPHIQUE] SCHÉMA WAN :
   
   ┌─────────────────────────────────────────────────┐
   │                    Internet                     │
   │    (Plus grand WAN du monde)                    │
   └──┬───────┬──────────┬──────────┬──────────┬────┘
      │       │          │          │          │
   [Paris] [New York] [Tokyo]  [Sydney] [São Paulo]
      │       │          │          │          │
   [LAN]   [LAN]      [LAN]      [LAN]      [LAN]
   
   EXEMPLES :
   - Internet (le WAN public)
   - Réseau d'une multinationale (sites monde entier)
   - Réseau bancaire international
   - Réseau opérateur télécoms
   
   COMPOSANTS :
   - Routeurs de bordure
   - Liaisons satellite
   - Fibres optiques sous-marines
   - VPN (tunnels sécurisés)
   
   CARACTÉRISTIQUES :
   [OK] Portée mondiale
   [OK] Interconnecte les LANs/MANs
   [X] Latence plus élevée
   [X] Coût très élevé
   [X] Complexité de gestion


5. WLAN (Wireless LAN) - Réseau Local Sans Fil
   ────────────────────────────────────────────
   
   TYPE : Variante de LAN utilisant le Wi-Fi
   PORTÉE : ~30-100 mètres en intérieur
   TECHNOLOGIE : Wi-Fi (802.11a/b/g/n/ac/ax)
   
   [GRAPHIQUE] SCHÉMA WLAN :
   
        [RESEAU] Point d'Accès Wi-Fi
             │
       ╱─────┼─────╲
      [MOBILE]    [CODE]    [MOBILE]
   Phone  Laptop Tablet
   
   EXEMPLES :
   - Wi-Fi maison
   - Wi-Fi entreprise
   - Hotspot café/aéroport
   - Wi-Fi public (ville)
   
   CARACTÉRISTIQUES :
   [OK] Mobilité totale
   [OK] Pas de câbles
   [OK] Facile à déployer
   [X] Moins sécurisé que câblé
   [X] Interférences possibles
   [X] Débit variable selon distance


[GRAPHIQUE] TABLEAU RÉCAPITULATIF

┌──────────┬─────────────┬──────────────┬─────────────┬──────────────┐
│  Type    │   Portée    │  Technologie │    Débit    │  Coût        │
├──────────┼─────────────┼──────────────┼─────────────┼──────────────┤
│  PAN     │  1-10 m     │  Bluetooth   │  1-24 Mbps  │  Très faible │
│  LAN     │  < 1 km     │  Ethernet    │  100M-10G   │  Faible      │
│  WLAN    │  ~100 m     │  Wi-Fi       │  54M-10G    │  Faible      │
│  MAN     │  < 50 km    │  Fibre       │  10M-100G   │  Moyen       │
│  WAN     │  Mondial    │  Diverse     │  Variable   │  Élevé       │
└──────────┴─────────────┴──────────────┴─────────────┴──────────────┘


[IDEE] QUELLE TAILLE CHOISIR ?

Maison/Petit bureau -> LAN (+ Wi-Fi pour mobilité)
Entreprise mono-site -> LAN
Entreprise multi-sites (même ville) -> MAN
Entreprise internationale -> WAN
Appareils personnels -> PAN
"""


# ----------------------------------------------------------------------------
# [CONSTRUCTION] ARCHITECTURES RÉSEAU
# ----------------------------------------------------------------------------

"""
1. ARCHITECTURE CLIENT/SERVEUR
   ────────────────────────────

DÉFINITION :
Architecture où des clients (demandeurs) se connectent à un serveur 
(fournisseur de services) central.

[GRAPHIQUE] SCHÉMA CLIENT/SERVEUR :

      ┌──────────────┐
      │   Serveur    │ <- Fournit services
      │   Central    │    (fichiers, web, mail, etc.)
      └──────┬───────┘
             │
    ┌────────┼────────┬────────┐
    │        │        │        │
┌───[BLACK_DOWN-POINTING_TRIANGLE]───┐ ┌─[BLACK_DOWN-POINTING_TRIANGLE]────┐ ┌─[BLACK_DOWN-POINTING_TRIANGLE]────┐ ┌─[BLACK_DOWN-POINTING_TRIANGLE]────┐
│Client │ │Client│ │Client│ │Client│ <- Demandent services
│   1   │ │  2   │ │  3   │ │  4   │
└───────┘ └──────┘ └──────┘ └──────┘


RÔLES :

SERVEUR :
- Centralisé et toujours actif (24/7)
- Puissant (CPU, RAM, stockage)
- Héberge ressources et services
- Gère authentification et sécurité
- Répond aux requêtes des clients

CLIENT :
- Initie les connexions
- Demande des services
- Moins puissant que serveur
- Peut être éteint sans problème


EXEMPLES CONCRETS :

1. WEB (HTTP/HTTPS)
   Client : Navigateur (Chrome, Firefox)
   Serveur : Serveur Web (Apache, Nginx)
   
   Flux :
   Client -> "Je veux voir www.google.com"
   Serveur -> Envoie la page HTML
   Client -> Affiche la page

2. EMAIL (SMTP/IMAP)
   Client : Outlook, Gmail app
   Serveur : Serveur de messagerie
   
   Flux :
   Client -> "Envoie cet email à bob@example.com"
   Serveur -> Route et délivre l'email
   Client -> "Donne-moi mes nouveaux emails"
   Serveur -> Envoie liste des emails

3. FICHIERS (SMB/NFS)
   Client : Explorateur Windows
   Serveur : Serveur de fichiers
   
   Flux :
   Client -> "Ouvre le fichier rapport.docx"
   Serveur -> Envoie le fichier
   Client -> Affiche/modifie le fichier

4. BASE DE DONNÉES (MySQL/PostgreSQL)
   Client : Application métier
   Serveur : Serveur de BD
   
   Flux :
   Client -> "SELECT * FROM clients WHERE ville='Paris'"
   Serveur -> Exécute requête et renvoie résultats


AVANTAGES [OK] :
- Centralisation (facile à gérer)
- Sécurité renforcée (un point à sécuriser)
- Sauvegardes centralisées
- Évolutivité (ajouter clients facilement)
- Performances (serveur optimisé)

INCONVÉNIENTS [X] :
- Point de défaillance unique (serveur down = tout down)
- Coût serveur (matériel puissant)
- Complexité administration
- Bande passante (beaucoup de clients = saturation)


2. ARCHITECTURE PAIR-À-PAIR (P2P - Peer-to-Peer)
   ──────────────────────────────────────────────

DÉFINITION :
Architecture où chaque ordinateur (peer) peut être à la fois client ET serveur.
Pas de hiérarchie, tous les nœuds sont égaux.

[GRAPHIQUE] SCHÉMA P2P :

    ┌─────────┐         ┌─────────┐
    │  Peer 1 │[BLACK_LEFT-POINTING_POINTER]───────[BLACK_RIGHT-POINTING_POINTER]│  Peer 2 │
    │ ([CODE][DOSSIER])  │         │ ([CODE][DOSSIER]) │
    └────┬────┘         └────┬────┘
         │                   │
         │    ┌─────────┐    │
         └───[BLACK_RIGHT-POINTING_POINTER]│  Peer 3 │[BLACK_LEFT-POINTING_POINTER]───┘
              │ ([CODE][DOSSIER])  │
              └────┬────┘
                   │
              ┌────[BLACK_DOWN-POINTING_TRIANGLE]────┐
              │  Peer 4 │
              │ ([CODE][DOSSIER])  │
              └─────────┘

Chaque peer peut :
- Demander des fichiers (client)
- Partager des fichiers (serveur)


EXEMPLES CONCRETS :

1. PARTAGE DE FICHIERS
   - BitTorrent : télécharger films/logiciels
   - eMule / eDonkey (anciens)
   
   Fonctionnement :
   - Vous téléchargez un film
   - Pendant le téléchargement, vous partagez déjà
     les morceaux téléchargés avec d'autres
   - Plus il y a de peers, plus c'est rapide

2. BLOCKCHAIN / CRYPTOMONNAIES
   - Bitcoin, Ethereum
   - Chaque nœud stocke toute la blockchain
   - Pas de serveur central
   - Consensus distribué

3. MESSAGERIE P2P
   - Skype (ancien mode P2P)
   - Tox
   - Briar
   
   Messages passent directement entre utilisateurs

4. RÉSEAUX LOCAUX SIMPLES
   - Groupe résidentiel Windows (obsolète)
   - Partage de fichiers macOS
   - 2 PCs connectés en direct


AVANTAGES [OK] :
- Pas de serveur coûteux
- Pas de point de défaillance unique
- Évolutivité (plus de peers = plus de ressources)
- Décentralisation (pas de censure possible)
- Bande passante distribuée

INCONVÉNIENTS [X] :
- Sécurité complexe (chaque peer doit être sécurisé)
- Pas de contrôle centralisé
- Performances variables (selon peers disponibles)
- Complexité technique
- Difficile de garantir disponibilité


[GRAPHIQUE] COMPARAISON CLIENT/SERVEUR vs P2P

┌───────────────────┬────────────────────┬──────────────────┐
│   Critère         │  Client/Serveur    │      P2P         │
├───────────────────┼────────────────────┼──────────────────┤
│ Centralisation    │  Oui               │  Non             │
│ Coût serveur      │  Élevé             │  Faible          │
│ Évolutivité       │  Limitée           │  Excellente      │
│ Sécurité          │  Facile            │  Complexe        │
│ Administration    │  Centrale          │  Distribuée      │
│ Fiabilité         │  Dépend serveur    │  Haute           │
│ Performances      │  Prévisibles       │  Variables       │
│ Cas d'usage       │  Entreprise        │  Partage public  │
└───────────────────┴────────────────────┴──────────────────┘


[IDEE] QUAND UTILISER QUOI ?

CLIENT/SERVEUR :
[OK] Entreprise (contrôle nécessaire)
[OK] Applications critiques
[OK] Sécurité prioritaire
[OK] Gestion centralisée voulue

P2P :
[OK] Partage communautaire
[OK] Décentralisation nécessaire
[OK] Budget limité (pas de serveur)
[OK] Résilience importante


3. ARCHITECTURE HYBRIDE
   ─────────────────────

Combine les deux approches.

Exemple : SKYPE MODERNE
- Serveur central pour authentification
- P2P pour appels vidéo
-> Avantages des deux mondes
''')</parameter>

create_file('python_cheats/cheatsheets/reseaux_ch1_suite.txt', '''# ============================================================================
# CHAPITRE 1 (SUITE) : INTRODUCTION AUX RÉSEAUX
# ============================================================================


# ----------------------------------------------------------------------------
# [SYNC] COMMENT LES DONNÉES CIRCULENT DANS UN RÉSEAU ?
# ----------------------------------------------------------------------------

"""
CONCEPT DE BASE : LA COMMUNICATION

Pour que deux appareils communiquent, il faut :
1. Un émetteur (qui envoie)
2. Un récepteur (qui reçoit)
3. Un support de transmission (câble, Wi-Fi)
4. Un langage commun (protocole)


[GRAPHIQUE] SCHÉMA : FLUX DE DONNÉES SIMPLE

┌──────────────┐                           ┌──────────────┐
│ Ordinateur A │                           │ Ordinateur B │
│              │                           │              │
│  "Salut!"    │                           │              │
└──────┬───────┘                           └──────[BLACK_UP-POINTING_TRIANGLE]───────┘
       │                                          │
       │ ① Conversion en bits                     │
       [BLACK_DOWN-POINTING_TRIANGLE]                                          │
    01010011 01100001 01101100 01110101 01110100  │
       │                                          │
       │ ② Encapsulation (ajout d'infos réseau)   │
       [BLACK_DOWN-POINTING_TRIANGLE]                                          │
    [En-tête][Données "Salut!"][Contrôle]         │
       │                                          │
       │ ③ Transmission sur le câble              │
       [BLACK_DOWN-POINTING_TRIANGLE]                                          │
    ═══════════════════════════════════════════[BLACK_RIGHT-POINTING_POINTER]  │
        Signal électrique/optique/radio           │
                                                  │
                              ④ Réception et décodage
                                                  │
                              ⑤ "Salut!" affiché


ÉTAPES DÉTAILLÉES :

1. PRÉPARATION DES DONNÉES
   ─────────────────────────
   
   - L'application crée le message : "Salut!"
   - Conversion en binaire : 01010011...
   - Découpage si trop gros (fragmentation)
   
   Exemple :
   Fichier de 10 MB -> Découpé en ~7000 paquets de 1500 octets


2. ENCAPSULATION
   ──────────────
   
   Ajout d'informations à chaque niveau :
   
   Application  : [Données]
                    v
   Transport    : [Port src/dst][Données]
                    v
   Réseau       : [IP src/dst][Port src/dst][Données]
                    v
   Liaison      : [MAC src/dst][IP src/dst][Port][Données][CRC]
   
   [PACKAGE] Paquet final = Enveloppe avec adresse + contenu
   
   Analogie postale :
   - Lettre = Données
   - Enveloppe = En-têtes réseau
   - Adresse = IP
   - Code postal = Réseau


3. TRANSMISSION
   ─────────────
   
   Le paquet traverse le réseau :
   
   PC A -> Switch -> Routeur -> Internet -> Routeur -> Switch -> PC B
   
   À chaque étape :
   - Vérification de l'adresse
   - Décision de routage
   - Transmission au prochain saut


4. RÉCEPTION ET DÉSENCAPSULATION
   ──────────────────────────────
   
   Processus inverse :
   
   Liaison      : Vérifie MAC, retire en-tête liaison
                    v
   Réseau       : Vérifie IP, retire en-tête réseau
                    v
   Transport    : Vérifie port, retire en-tête transport
                    v
   Application  : Traite les données
   
   Résultat : "Salut!" arrive intact


[IDEE] TYPES DE TRANSMISSION

1. UNICAST (Un-à-Un)
   ──────────────────
   
   Un émetteur -> Un récepteur
   
   [GRAPHIQUE] Schéma :
   
   [PC A] ────────[BLACK_RIGHT-POINTING_POINTER] [PC B]
   
   Exemples :
   - Navigation web (vous -> serveur web)
   - Email (vous -> destinataire)
   - Appel téléphonique
   
   Avantages :
   [OK] Privé
   [OK] Efficace
   
   Inconvénient :
   [X] Si 100 destinataires -> 100 transmissions


2. BROADCAST (Un-à-Tous)
   ──────────────────────
   
   Un émetteur -> Tous les récepteurs du réseau
   
   [GRAPHIQUE] Schéma :
   
          [PC A]
            │
      ┌─────┼─────┬─────┐
      [BLACK_DOWN-POINTING_TRIANGLE]     [BLACK_DOWN-POINTING_TRIANGLE]     [BLACK_DOWN-POINTING_TRIANGLE]     [BLACK_DOWN-POINTING_TRIANGLE]
   [PC B][PC C][PC D][PC E]
   
   Exemples :
   - DHCP Discover (cherche serveur DHCP)
   - ARP Request (cherche adresse MAC)
   - Wake-on-LAN (réveiller un PC)
   
   Adresse broadcast : 255.255.255.255 (IPv4)
   
   Avantages :
   [OK] Atteint tout le monde
   
   Inconvénients :
   [X] Surcharge réseau
   [X] Pas de confidentialité


3. MULTICAST (Un-à-Plusieurs)
   ───────────────────────────
   
   Un émetteur -> Groupe spécifique de récepteurs
   
   [GRAPHIQUE] Schéma :
   
          [Serveur Vidéo]
                │
      ┌─────────┼─────────┐
      │         │         │
   [Abonné] [Abonné] [Abonné]
   
   Exemples :
   - IPTV (télévision IP)
   - Visioconférence (plusieurs participants)
   - Mises à jour logicielles (groupe de PCs)
   
   Adresses multicast : 224.0.0.0 à 239.255.255.255
   
   Avantages :
   [OK] Efficace (une seule transmission)
   [OK] Ciblé (seulement intéressés)
   
   Inconvénient :
   [X] Configuration plus complexe


4. ANYCAST (Un-au-Plus-Proche)
   ────────────────────────────
   
   Un émetteur -> Le plus proche d'un groupe
   
   [GRAPHIQUE] Schéma :
   
   [Client Paris] ──[BLACK_RIGHT-POINTING_POINTER] [Serveur Paris]    (pas New York)
   
   Exemples :
   - DNS (serveur DNS le plus proche)
   - CDN (Content Delivery Network)
   - Services géodistribués
   
   Avantages :
   [OK] Performances (faible latence)
   [OK] Résilience (si un tombe, autre prend relais)


[GRAPHIQUE] COMPARAISON DES TYPES

┌───────────┬──────────────┬─────────────┬────────────────┐
│   Type    │ Destinataires│  Efficacité │  Cas d'usage   │
├───────────┼──────────────┼─────────────┼────────────────┤
│ Unicast   │      1       │    Haute    │  Navigation    │
│ Broadcast │     Tous     │    Basse    │  Découverte    │
│ Multicast │   Groupe     │    Haute    │  Streaming     │
│ Anycast   │ Plus proche  │  Très haute │  DNS, CDN      │
└───────────┴──────────────┴─────────────┴────────────────┘
"""


# ----------------------------------------------------------------------------
# [OUTIL] COMPOSANTS RÉSEAU DÉTAILLÉS
# ----------------------------------------------------------------------------

"""
1. CARTE RÉSEAU (NIC - Network Interface Card)
   ────────────────────────────────────────────

RÔLE :
Interface entre l'ordinateur et le réseau.
Convertit données numériques <-> signaux électriques/optiques.

[GRAPHIQUE] SCHÉMA :

┌────────────────────────────────────┐
│        Ordinateur                  │
│                                    │
│  [CPU] <--> [RAM] <--> [Carte Réseau] │
│                         │          │
│                      [Port RJ45]   │
└─────────────────────────┼──────────┘
                          │
                    Câble Ethernet
                          │
                      [Réseau]

COMPOSANTS :
- Puce réseau (contrôleur)
- Connecteur (RJ45 pour Ethernet, antenne pour Wi-Fi)
- Mémoire tampon (buffer)
- Voyants LED (activité/lien)

CARACTÉRISTIQUES :
- Adresse MAC unique (ex: 00:1A:2B:3C:4D:5E)
- Vitesse : 10/100/1000 Mbps (Fast/Gigabit Ethernet)
- Full-duplex (émission et réception simultanées)

TYPES :
- Ethernet filaire (RJ45)
- Wi-Fi (antenne)
- Fibre optique (connecteur SC/LC)

[IDEE] Chaque appareil réseau a au moins une carte réseau.


2. SWITCH (Commutateur)
   ────────────────────

RÔLE :
Relie plusieurs appareils dans un réseau local (LAN).
Achemine les données vers le bon destinataire.

[GRAPHIQUE] SCHÉMA :

         ┌──────────┐
         │  Switch  │
         │          │
         │ [Ports]  │
         └─┬─┬─┬─┬──┘
           │ │ │ │
    ┌──────┘ │ │ └──────┐
    │   ┌────┘ └────┐   │
   [CODE]  [CODE]       [CODE]  [IMPRIMANTE]
   PC1 PC2      PC3 Printer

FONCTIONNEMENT :
1. Reçoit trame (paquet niveau 2)
2. Lit adresse MAC de destination
3. Consulte table MAC (qui est sur quel port ?)
4. Envoie uniquement sur le port du destinataire

Exemple :
PC1 (port 1) veut envoyer à PC3 (port 3)
-> Switch envoie seulement sur port 3
-> PC2 et Printer ne reçoivent rien (efficace !)

TABLE MAC (CAM Table) :

┌──────────────────┬───────┬────────┐
│   Adresse MAC    │ Port  │  Age   │
├──────────────────┼───────┼────────┤
│ 00:11:22:33:44:55│   1   │  10s   │
│ AA:BB:CC:DD:EE:FF│   3   │  5s    │
│ 11:22:33:44:55:66│   4   │  15s   │
└──────────────────┴───────┴────────┘

Le switch apprend automatiquement :
- Il voit un paquet venant de port 1
- Il note l'adresse MAC source sur port 1
- Table se construit toute seule !

TYPES DE SWITCHS :
- Non manageable : Plug & play, pas de config
- Manageable : Configuration avancée (VLAN, QoS, etc.)

CARACTÉRISTIQUES :
- Nombre de ports : 5, 8, 16, 24, 48...
- Vitesse : 100 Mbps, 1 Gbps, 10 Gbps
- Niveau : Layer 2 (MAC) ou Layer 3 (IP)

[IDEE] Switch ≠ Hub
Hub (ancien) : Envoie à tout le monde (broadcast)
Switch : Envoie seulement au destinataire (unicast)


3. ROUTEUR
   ───────

RÔLE :
Connecte différents réseaux entre eux.
Achemine les données entre réseaux (routage).

[GRAPHIQUE] SCHÉMA :

   Internet (WAN)
        │
   ┌────[BLACK_DOWN-POINTING_TRIANGLE]─────┐
   │ Routeur  │
   │          │
   └────┬─────┘
        │
   Réseau Local (LAN)
    192.168.1.0/24
        │
    ┌───┴───┬──────┬──────┐
   [CODE]     [CODE]    [CODE]    [CODE]
   .10    .11   .12   .13

FONCTIONNEMENT :
1. Reçoit paquet IP
2. Lit adresse IP de destination
3. Consulte table de routage
4. Détermine prochaine étape (next hop)
5. Envoie vers le bon réseau

TABLE DE ROUTAGE :

┌────────────────┬─────────────┬─────────────┬───────┐
│ Réseau dest.   │   Masque    │  Passerelle │ Iface │
├────────────────┼─────────────┼─────────────┼───────┤
│ 0.0.0.0        │ 0.0.0.0     │  FAI        │ WAN   │ <- Route par défaut
│ 192.168.1.0    │ 255.255.255.0│ Local      │ LAN   │ <- Réseau local
│ 10.0.0.0       │ 255.0.0.0   │ 10.0.0.1    │ VPN   │ <- Réseau distant
└────────────────┴─────────────┴─────────────┴───────┘

Exemple de routage :
- Paquet pour 192.168.1.50 -> Réseau local (LAN)
- Paquet pour 8.8.8.8 (Google DNS) -> Route par défaut (Internet)
- Paquet pour 10.0.5.100 -> Via VPN

FONCTIONS SUPPLÉMENTAIRES :
- NAT (partage IP publique)
- DHCP (distribution adresses IP)
- Firewall (sécurité)
- VPN (tunnels sécurisés)

TYPES :
- Routeur domestique (box Internet)
- Routeur d'entreprise (Cisco, Juniper)
- Routeur de cœur de réseau (opérateurs)

[IDEE] Switch vs Routeur :
Switch : Relie appareils d'un MÊME réseau (niveau 2)
Routeur : Relie DIFFÉRENTS réseaux (niveau 3)


4. POINT D'ACCÈS (Access Point - AP)
   ──────────────────────────────────

RÔLE :
Permet connexions sans fil (Wi-Fi) au réseau câblé.

[GRAPHIQUE] SCHÉMA :

      [Switch] ──┐
         │       │
    ┌────┘       │
   [CODE]         ┌──[BLACK_DOWN-POINTING_TRIANGLE]────┐
   PC câblé   │  AP   │ [RESEAU] Wi-Fi
              └───────┘
                  │
           ╱──────┼──────╲
         [MOBILE]      [CODE]      [MOBILE]
       Phone   Laptop  Tablet

FONCTIONNEMENT :
- Convertit signaux câblés <-> Wi-Fi
- Gère authentification Wi-Fi (WPA2/WPA3)
- Attribue bande passante
- Peut gérer plusieurs SSID (réseaux Wi-Fi)

CARACTÉRISTIQUES :
- Norme : 802.11ac (Wi-Fi 5), 802.11ax (Wi-Fi 6)
- Fréquences : 2.4 GHz et/ou 5 GHz
- Débit : jusqu'à 10 Gbps (Wi-Fi 6E)
- Portée : 30-100 mètres selon obstacles

MODES :
- Autonome : Configuration indépendante
- Contrôlé : Géré par contrôleur central

[IDEE] AP ≠ Routeur Wi-Fi :
AP : Juste un pont Wi-Fi <-> réseau câblé
Routeur Wi-Fi : AP + routeur + switch intégrés


5. MODEM
   ──────

RÔLE :
Convertit signaux numériques <-> analogiques.
Permet connexion au réseau de l'opérateur (FAI).

[GRAPHIQUE] SCHÉMA :

   [Internet]
      │
   Ligne téléphonique / Câble / Fibre
      │
   ┌──[BLACK_DOWN-POINTING_TRIANGLE]────┐
   │ Modem │ <- Modulation/Démodulation
   └───┬───┘
       │
   Réseau local

TYPES :
- Modem ADSL (ligne téléphonique)
- Modem câble (câble coaxial)
- ONT (fibre optique)

[IDEE] Box Internet = Modem + Routeur + Switch + AP
Tout-en-un !


[GRAPHIQUE] RÉCAPITULATIF DES COMPOSANTS

┌──────────────┬─────────────┬───────────────────┬──────────┐
│  Équipement  │   Niveau    │      Rôle         │  Portée  │
├──────────────┼─────────────┼───────────────────┼──────────┤
│ NIC          │ Physique/L2 │ Interface réseau  │ Local    │
│ Switch       │ L2 (MAC)    │ Relie LAN         │ LAN      │
│ Routeur      │ L3 (IP)     │ Relie réseaux     │ WAN      │
│ AP           │ L2 (Wi-Fi)  │ Sans fil -> câblé  │ ~100m    │
│ Modem        │ Physique    │ Accès Internet    │ Opérateur│
└──────────────┴─────────────┴───────────────────┴──────────┘
"""


# ----------------------------------------------------------------------------
# [DOCS] RÉSUMÉ DU CHAPITRE 1
# ----------------------------------------------------------------------------

"""
[CLE] POINTS CLÉS À RETENIR

1. DÉFINITION
   Un réseau = ordinateurs connectés pour partager ressources

2. AVANTAGES
   - Partage ressources (matérielles et logicielles)
   - Communication (email, messagerie, visio)
   - Centralisation données
   - Accès Internet partagé
   - Sécurité et administration centralisées

3. TYPES DE RÉSEAUX (par taille)
   PAN : Personnel (1-10m) - Bluetooth
   LAN : Local (< 1km) - Ethernet, Wi-Fi
   MAN : Métropolitain (< 50km) - Fibre
   WAN : Étendu (mondial) - Internet

4. ARCHITECTURES
   Client/Serveur : Centralisé, contrôle, entreprise
   P2P : Décentralisé, résilient, partage communautaire

5. TRANSMISSION
   Unicast : 1 -> 1
   Broadcast : 1 -> Tous
   Multicast : 1 -> Groupe
   Anycast : 1 -> Plus proche

6. COMPOSANTS
   NIC : Interface ordinateur <-> réseau
   Switch : Relie appareils d'un LAN
   Routeur : Relie différents réseaux
   AP : Wi-Fi <-> câblé
   Modem : Accès Internet


[OBJECTIF] VOUS SAVEZ MAINTENANT :
[OK] Ce qu'est un réseau et pourquoi c'est utile
[OK] Les différents types de réseaux
[OK] Les architectures réseau
[OK] Comment les données circulent
[OK] Les composants de base


-> PROCHAIN CHAPITRE : Matériel réseau de base
Vous allez approfondir les équipements réseau et leurs caractéristiques.
"""


# ============================================================================
# [COURS] EXERCICES PRATIQUES - CHAPITRE 1
# ============================================================================

"""
[IDEE] IMPORTANT
Ces exercices sont conçus pour :
- Appliquer les concepts théoriques
- Développer votre réflexion réseau
- Vous préparer aux chapitres suivants

Faites-les TOUS pour bien comprendre !
"""


# ----------------------------------------------------------------------------
# [COURS] EXERCICE 1 : CONCEPTION D'UN RÉSEAU PME
# ----------------------------------------------------------------------------

"""
[LISTE] ÉNONCÉ

Vous êtes consultant réseau pour une PME de 30 employés.
L'entreprise loue un bâtiment sur 2 étages :

RDC (Rez-de-chaussée) :
- Accueil : 2 postes
- Comptabilité : 5 postes
- Direction : 3 postes
- 1 imprimante partagée
- 1 serveur de fichiers

ÉTAGE 1 :
- Commercial : 10 postes
- Technique : 8 postes
- 1 imprimante partagée
- Salle de réunion (Wi-Fi pour visiteurs)

BESOINS :
- Tous les postes doivent accéder à Internet
- Accès serveur fichiers pour tous
- Impression depuis n'importe quel poste vers imprimante de son étage
- Wi-Fi salle de réunion isolé du réseau interne
- Sécurité : comptabilité et direction doivent être protégées


[OBJECTIF] QUESTIONS

1. Quel type de réseau recommandez-vous ? (PAN/LAN/MAN/WAN)
   Justifiez votre choix.

2. Quelle architecture choisiriez-vous ? (Client/Serveur ou P2P)
   Justifiez.

3. Dessinez un schéma du réseau avec :
   - Placement des équipements (PCs, imprimantes, serveur)
   - Équipements réseau nécessaires (switchs, routeur, AP)
   - Connexions entre équipements

4. De combien de switchs avez-vous besoin ? Où les placer ?

5. Combien de points d'accès Wi-Fi ? Où ?

6. Comment isoler le Wi-Fi visiteurs du réseau interne ?

7. Listez TOUS les équipements réseau à acheter avec quantités.


[IDEE] CONSEILS AVANT DE COMMENCER
- Réfléchissez à la topologie (comment relier les étages)
- Pensez à la redondance (que se passe-t-il si un switch tombe ?)
- Considérez la sécurité dès la conception


[OK] CORRECTION DÉTAILLÉE

1. TYPE DE RÉSEAU : LAN (Local Area Network)

   JUSTIFICATION :
   - Portée : Un bâtiment sur 2 étages (< 100 mètres)
   - Tous les appareils au même endroit
   - Besoin de haut débit (partage fichiers)
   - Contrôle total nécessaire (sécurité)
   
   [X] Pourquoi pas PAN ? Trop limité (1-10m, Bluetooth)
   [X] Pourquoi pas MAN ? Pas besoin (pas multi-sites en ville)
   [X] Pourquoi pas WAN ? Pas besoin (tout sur un site)


2. ARCHITECTURE : CLIENT/SERVEUR

   JUSTIFICATION :
   - Serveur de fichiers central [OK]
   - Sécurité centralisée nécessaire [OK]
   - Administration facilitée (30 postes) [OK]
   - Sauvegardes centralisées [OK]
   - Authentification unique [OK]
   
   [X] Pourquoi pas P2P ?
   - Pas de contrôle centralisé
   - Sécurité difficile à gérer
   - Pas adapté pour 30+ utilisateurs
   - Pas de serveur de fichiers central


3. SCHÉMA DU RÉSEAU

   [GRAPHIQUE] PLAN ÉTAGE 1 :
   
   ┌─────────────────────────────────────────────┐
   │              ÉTAGE 1                        │
   │                                             │
   │  Commercial (10 postes)                     │
   │  [CODE][CODE][CODE][CODE][CODE]                               │
   │  [CODE][CODE][CODE][CODE][CODE] ──┐                           │
   │                 │                           │
   │  Technique (8 postes)  │                    │
   │  [CODE][CODE][CODE][CODE]      │                           │
   │  [CODE][CODE][CODE][CODE] ─────┼───[BLACK_RIGHT-POINTING_POINTER] [Switch Étage 1]      │
   │                 │        24 ports           │
   │  [IMPRIMANTE] Imprimante ─┘            │              │
   │                              │              │
   │  Salle Réunion               │              │
   │  [RESEAU] [AP Wi-Fi] ──────────────┘              │
   │                                             │
   └───────────────────────┬─────────────────────┘
                           │
                     Liaison inter-étage
                      (câble réseau)
                           │
   ┌───────────────────────[BLACK_DOWN-POINTING_TRIANGLE]─────────────────────┐
   │              RDC                            │
   │                                             │
   │  Accueil (2)       ┌──────────────┐         │
   │  [CODE][CODE] ────────────[BLACK_RIGHT-POINTING_POINTER]│              │         │
   │                    │              │         │
   │  Comptabilité (5)  │   Switch     │         │
   │  [CODE][CODE][CODE] ──────────[BLACK_RIGHT-POINTING_POINTER]│     RDC      │         │
   │  [CODE][CODE]              │   24 ports   │         │
   │                    │              │         │
   │  Direction (3)     │              │         │
   │  [CODE][CODE][CODE] ──────────[BLACK_RIGHT-POINTING_POINTER]│              │         │
   │                    └──────┬───────┘         │
   │  [IMPRIMANTE] Imprimante ───────────┘ │               │
   │                             │               │
   │  [ECRAN] Serveur ────────────────┤               │
   │  Fichiers                   │               │
   │                             │               │
   │                    ┌────────[BLACK_DOWN-POINTING_TRIANGLE]──────┐        │
   │                    │   Routeur     │        │
   │                    │   Firewall    │        │
   │                    └───────┬───────┘        │
   │                            │                │
   └────────────────────────────┼────────────────┘
                                │
                           [Internet]
                            FAI/ISP


4. NOMBRE DE SWITCHS ET PLACEMENT

   BESOIN EN PORTS :
   
   RDC :
   - 2 (Accueil) + 5 (Compta) + 3 (Direction) = 10 postes
   - + 1 imprimante
   - + 1 serveur
   - + 1 liaison vers Étage 1
   - + 1 liaison vers Routeur
   = 14 ports nécessaires
   
   -> Switch 24 ports (marge pour évolution)
   
   ÉTAGE 1 :
   - 10 (Commercial) + 8 (Technique) = 18 postes
   - + 1 imprimante
   - + 1 AP Wi-Fi
   - + 1 liaison vers RDC
   = 21 ports nécessaires
   
   -> Switch 24 ports
   
   TOTAL : 2 switchs de 24 ports
   
   [IDEE] Pourquoi 24 ports et pas juste le nécessaire ?
   - Marge pour croissance (nouveaux employés)
   - Prix : Switch 24p ≈ Switch 16p
   - Standard du marché


5. POINTS D'ACCÈS WI-FI

   BESOIN : 1 AP pour salle de réunion
   
   EMPLACEMENT : Plafond salle de réunion (couverture optimale)
   
   CONFIGURATION :
   - SSID : "Visiteurs_PME"
   - Sécurité : WPA2/WPA3
   - Mot de passe temporaire (changé régulièrement)
   - Isolé du réseau interne (VLAN séparé)
   
   [IDEE] Optionnel : AP au RDC pour accueil
   Si besoin d'accès Wi-Fi pour tablettes/smartphones employés


6. ISOLATION WI-FI VISITEURS

   MÉTHODE 1 : VLAN (Virtual LAN)
   ──────────────────────────────
   
   Réseau interne : VLAN 10 (192.168.10.0/24)
   Wi-Fi visiteurs : VLAN 20 (192.168.20.0/24)
   
   Configuration :
   - AP configuré sur VLAN 20
   - Routeur/Firewall bloque communication VLAN 20 -> VLAN 10
   - VLAN 20 accès Internet uniquement
   
   [GRAPHIQUE] Schéma logique :
   
   [Réseau interne]     [Wi-Fi visiteurs]
      VLAN 10               VLAN 20
         │                     │
         └────[Routeur]────────┘
                  │
              [Internet] [OK]
   
   VLAN 20 -> VLAN 10 : [X] BLOQUÉ
   VLAN 20 -> Internet : [OK] AUTORISÉ
   
   
   MÉTHODE 2 : RÉSEAU INVITÉ (Guest Network)
   ──────────────────────────────────────────
   
   Configuration sur AP :
   - Activer mode "Guest Network"
   - Isolation client (clients Wi-Fi ne se voient pas)
   - Pas d'accès réseau local
   - Internet uniquement
   
   
   MÉTHODE 3 : FIREWALL
   ────────────────────
   
   Règles sur routeur/firewall :
   - DENY : Wi-Fi visiteurs -> Réseau local
   - ALLOW : Wi-Fi visiteurs -> Internet
   - ALLOW : Réseau local -> Tout
   
   
   [IDEE] RECOMMANDATION : Combiner méthodes 1 + 2 + 3
   - VLAN pour séparation réseau
   - Guest mode pour isolation clients
   - Firewall pour sécurité supplémentaire
   
   = Défense en profondeur !


7. LISTE COMPLÈTE DES ÉQUIPEMENTS

   ÉQUIPEMENTS RÉSEAU :
   ┌──────────────────────────┬─────────┬──────────┬─────────┐
   │ Équipement               │ Qté     │ Specs    │ Prix €  │
   ├──────────────────────────┼─────────┼──────────┼─────────┤
   │ Switch 24 ports Gigabit  │   2     │ Managed  │ 300×2   │
   │ Routeur/Firewall         │   1     │ 1 Gbps   │ 500     │
   │ Point d'accès Wi-Fi 6    │   1     │ Dual-band│ 150     │
   │ Serveur fichiers         │   1     │ 16GB RAM │ 2000    │
   ├──────────────────────────┼─────────┼──────────┼─────────┤
   │ TOTAL                    │         │          │ 3250    │
   └──────────────────────────┴─────────┴──────────┴─────────┘
   
   CÂBLAGE :
   ┌──────────────────────────┬─────────┬──────────┬─────────┐
   │ Câble Ethernet Cat6      │ 500m    │ Bobine   │ 150     │
   │ Connecteurs RJ45         │ 100     │ Pack     │ 30      │
   │ Panneau brassage 24p     │   2     │          │ 100     │
   │ Baie réseau murale       │   2     │ 12U      │ 400     │
   ├──────────────────────────┼─────────┼──────────┼─────────┤
   │ TOTAL                    │         │          │ 680     │
   └──────────────────────────┴─────────┴──────────┴─────────┘
   
   SÉCURITÉ :
   ┌──────────────────────────┬─────────┬──────────┬─────────┐
   │ Onduleur (UPS) serveur   │   1     │ 1500VA   │ 200     │
   │ Onduleur switchs/routeur │   2     │ 750VA    │ 200     │
   ├──────────────────────────┼─────────┼──────────┼─────────┤
   │ TOTAL                    │         │          │ 400     │
   └──────────────────────────┴─────────┴──────────┴─────────┘
   
   
   BUDGET TOTAL : ~4330 € HT
   
   
   [IDEE] JUSTIFICATIONS :
   
   Switchs "Managed" :
   - Configuration VLANs (sécurité)
   - QoS (prioriser trafic VoIP si besoin)
   - Monitoring (voir qui utilise bande passante)
   
   Routeur/Firewall dédié :
   - Sécurité renforcée vs box opérateur
   - Filtrage avancé
   - VPN pour accès distant
   - QoS pour optimiser Internet
   
   Onduleurs (UPS) :
   - Protègent contre coupures électriques
   - Évitent corruption données serveur
   - Équipements critiques restent actifs
   
   Cat6 vs Cat5e :
   - Support 10 Gbps (évolution future)
   - Moins d'interférences
   - Norme actuelle


[GRAPHIQUE] SCHÉMA LOGIQUE FINAL

┌──────────────────────────────────────────────────────┐
│                    INTERNET                          │
└─────────────────────┬────────────────────────────────┘
                      │
                ┌─────[BLACK_DOWN-POINTING_TRIANGLE]──────┐
                │  Routeur   │
                │  Firewall  │
                └─────┬──────┘
                      │
         ┌────────────┼────────────┐
         │                         │
    ┌────[BLACK_DOWN-POINTING_TRIANGLE]─────┐            ┌─────[BLACK_DOWN-POINTING_TRIANGLE]────┐
    │ Switch   │            │ Switch   │
    │   RDC    │[BLACK_LEFT-POINTING_POINTER]───────────┤ Étage 1  │
    └────┬─────┘   Trunk    └─────┬────┘
         │                         │
    ┌────┼─────┬────┬────┐    ┌───┼─────┬────┐
    │    │     │    │    │    │   │     │    │
   PC  PC  Srv Imp  PC   PC  Imp  AP   PC  PC
   Accueil │  Dir Compta    Commercial │ Technique
         Compta                      Réunion


[OBJECTIF] POINTS CLÉS DE CETTE SOLUTION

1. ÉVOLUTIVITÉ [OK]
   - Ports libres pour croissance
   - Cat6 pour upgrades futures

2. SÉCURITÉ [OK]
   - Firewall dédié
   - Wi-Fi isolé (VLAN)
   - Serveur protégé

3. FIABILITÉ [OK]
   - Onduleurs sur équipements critiques
   - Switchs managed (monitoring)

4. PERFORMANCE [OK]
   - Gigabit partout
   - QoS possible
   - Bande passante suffisante

5. COÛT MAÎTRISÉ [OK]
   - ~145€ par poste
   - ROI rapide (productivité)


[IDEE] AMÉLIORATIONS POSSIBLES (Budget supérieur)

- Switch core redondant (haute disponibilité)
- Serveur en RAID (protection données)
- Firewall Next-Gen (IDS/IPS)
- Wi-Fi supplémentaire pour employés
- VPN pour télétravail
- Caméras IP (sécurité physique)
"""


# ----------------------------------------------------------------------------
# [COURS] EXERCICE 2 : DIAGNOSTIC DE RÉSEAU DOMESTIQUE
# ----------------------------------------------------------------------------

"""
[LISTE] ÉNONCÉ

Vous aidez un ami à comprendre et optimiser son réseau domestique.

SITUATION ACTUELLE :
- Appartement 3 pièces (salon, 2 chambres)
- Box Internet (Freebox/Livebox) dans le salon
- 2 PC (chambre 1 et 2)
- 2 smartphones
- 1 tablette
- 1 Smart TV (salon)
- 1 console de jeu (salon)
- 1 imprimante Wi-Fi (bureau chambre 1)

PROBLÈMES RAPPORTÉS :
- Wi-Fi faible dans chambre 2
- Lenteurs lors du streaming Netflix
- Console de jeu lag en ligne
- Imprimante pas toujours détectée


[OBJECTIF] QUESTIONS

1. Dessinez le schéma actuel du réseau tel que décrit.

2. Identifiez le type de réseau (PAN/LAN/MAN/WAN).

3. Quelle architecture est utilisée ? (Client/Serveur ou P2P)

4. Analysez chaque problème :
   a) Wi-Fi faible chambre 2 : Causes possibles ? Solutions ?
   b) Lenteurs streaming : Causes ? Solutions ?
   c) Lag console : Causes ? Solutions ?
   d) Imprimante non détectée : Causes ? Solutions ?

5. Proposez un plan d'amélioration avec :
   - Changements à apporter
   - Équipements à ajouter
   - Configuration recommandée

6. Quel budget approximatif pour ces améliorations ?


[OK] CORRECTION DÉTAILLÉE

1. SCHÉMA RÉSEAU ACTUEL

   [GRAPHIQUE] PLAN APPARTEMENT :
   
   ┌──────────────────────────────────────────┐
   │                                          │
   │  Chambre 1          Chambre 2            │
   │  ┌──────────┐      ┌──────────┐         │
   │  │          │      │          │         │
   │  │  [CODE] PC1  │      │  [CODE] PC2  │         │
   │  │          │      │          │         │
   │  │  [IMPRIMANTE] Imp. │      │          │         │
   │  │ (Wi-Fi)  │      │          │         │
   │  └──────────┘      └──────────┘         │
   │       ╱                  ╱               │
   │      ╱Wi-Fi          Wi-Fi              │
   │     ╱                  ╱                 │
   │    ╱                  ╱                  │
   │  Salon              ╱                    │
   │  ┌────────────────╱─────────┐           │
   │  │                          │           │
   │  │  [RESEAU] [Box Internet]       │           │
   │  │      │   │               │           │
   │  │   Ethernet                │           │
   │  │      │   │               │           │
   │  │   [TELEVISION] TV  [VIDEO_GAME] Console      │           │
   │  │                          │           │
   │  └──────────────────────────┘           │
   │           ╲      ╲                      │
   │         Wi-Fi   Wi-Fi                   │
   │            ╲      ╲                     │
   │             [MOBILE]    [MOBILE]                     │
   │         Phone1  Phone2  [MOBILE] Tablette     │
   │                                          │
   └──────────────────────────────────────────┘
   
   CONNEXIONS :
   - Box -> TV : Ethernet [OK]
   - Box -> Console : Ethernet [OK]
   - Box -> PC1 : Wi-Fi [ATTENTION]
   - Box -> PC2 : Wi-Fi [ATTENTION]
   - Box -> Imprimante : Wi-Fi [ATTENTION]
   - Box -> Phones/Tablette : Wi-Fi [OK]


2. TYPE DE RÉSEAU : LAN (+ WLAN)

   JUSTIFICATION :
   - Portée : Un appartement (~100m²)
   - Tous les appareils au même endroit
   - Réseau local privé
   
   Plus précisément : WLAN (Wireless LAN)
   - Majorité des connexions en Wi-Fi
   - Quelques connexions Ethernet (TV, console)


3. ARCHITECTURE : HYBRIDE (Principalement P2P)

   ANALYSE :
   
   P2P pour :
   - Partage imprimante (direct PC -> Imprimante)
   - Pas de serveur central
   - Appareils communiquent directement
   
   Client/Serveur pour :
   - Streaming Netflix (TV/PC -> Serveurs Netflix)
   - Jeu en ligne (Console -> Serveurs jeu)
   - Navigation web (All -> Serveurs web)
   
   -> Architecture domestique typique :
     P2P en local + Client/Serveur pour Internet


4. ANALYSE DES PROBLÈMES

   a) WI-FI FAIBLE CHAMBRE 2
      ──────────────────────
      
      CAUSES POSSIBLES :
      
      1. Distance trop grande
         - Box dans salon
         - Chambre 2 à l'autre bout
         - Signal s'atténue avec distance
         
      2. Obstacles
         - Murs en béton/plâtre
         - Portes métalliques
         - Miroirs (réfléchissent ondes)
         
      3. Interférences
         - Wi-Fi voisins sur même canal
         - Micro-ondes (2.4 GHz)
         - Téléphones sans fil DECT
         - Bluetooth
         
      4. Bande 2.4 GHz saturée
         - Tous les appareils sur 2.4 GHz
         - Portée meilleure mais débit faible
         
      
      SOLUTIONS :
      
      [OK] SOLUTION 1 : Répéteur Wi-Fi (20-50€)
         - Placer à mi-chemin (couloir)
         - Amplifie signal vers chambre 2
         - Facile à installer (plug & play)
         
         [ATTENTION] Inconvénients :
         - Divise débit par 2
         - Latence supplémentaire
      
      [OK] SOLUTION 2 : CPL (Courant Porteur en Ligne) (50-80€)
         - Adaptateur CPL près Box (Ethernet)
         - Adaptateur CPL dans chambre 2
         - Utilise câblage électrique
         
         Avantages :
         - Débit stable
         - Pas d'interférences
         - Facile installation
         
         [ATTENTION] Nécessite :
         - Prises sur même phase électrique
         - Pas de multiprises/parasurtenseurs
      
      [OK] SOLUTION 3 : Câble Ethernet (10-30€)
         - Tirer câble Cat6 salon -> chambre 2
         - Connexion filaire (meilleure solution)
         
         Avantages :
         - Débit maximum
         - Latence minimale
         - Stable
         
         [ATTENTION] Inconvénients :
         - Installation (perçage murs ?)
         - Esthétique (câble visible ?)
      
      [OK] SOLUTION 4 : Passer sur 5 GHz
         - Si box supporte
         - Moins d'interférences
         - Débit supérieur
         
         [ATTENTION] Portée réduite vs 2.4 GHz
      
      
      [IDEE] RECOMMANDATION :
      CPL (50€) = Meilleur compromis
      - Débit stable
      - Pas de câbles apparents
      - Facile à installer
   
   
   b) LENTEURS STREAMING NETFLIX
      ───────────────────────────
      
      CAUSES POSSIBLES :
      
      1. Bande passante insuffisante
         - Plusieurs appareils en même temps
         - Netflix 4K = 25 Mbps
         - Abonnement Internet trop faible
         
      2. Wi-Fi saturé
         - Trop d'appareils connectés
         - Interférences
         
      3. Box surchargée
         - CPU/RAM box saturés
         - Trop de connexions simultanées
         
      4. QoS absent
         - Pas de priorisation trafic
         - Jeu en ligne utilise toute la BP
      
      
      SOLUTIONS :
      
      [OK] SOLUTION 1 : Connexion filaire TV
         [OK] DÉJÀ EN PLACE !
         - TV déjà en Ethernet
         - Vérifier câble (Cat5e minimum)
         - Vérifier pas de dégâts câble
      
      [OK] SOLUTION 2 : QoS sur box
         - Prioriser streaming vidéo
         - Configuration :
           1. Interface web box
           2. Paramètres avancés
           3. QoS / Priorité
           4. Haut : Streaming
              Moyen : Navigation
              Bas : Téléchargements
      
      [OK] SOLUTION 3 : Upgrade abonnement Internet
         - Vérifier débit actuel
         - Netflix 4K multi-stream :
           2 streams 4K = 50 Mbps
           + Navigation = 10 Mbps
           + Jeu = 5 Mbps
           = 65 Mbps minimum
         
         Recommandation : 100 Mbps ou Fibre
      
      [OK] SOLUTION 4 : Limiter autres utilisations
         - Pas de téléchargements pendant streaming
         - Fermer applications en arrière-plan
      
      
      [IDEE] DIAGNOSTIC :
      Test de débit :
      1. Aller sur fast.com ou speedtest.net
      2. Noter débit download
      3. Si < 50 Mbps -> Problème débit
      4. Si > 50 Mbps -> Problème Wi-Fi/QoS
   
   
   c) LAG CONSOLE DE JEU
      ──────────────────
      
      CAUSES :
      
      1. Latence (ping) élevée
         - Distance serveurs jeu
         - Qualité connexion Internet
         
      2. Paquets perdus
         - Wi-Fi instable
         - Saturation réseau
         
      3. Bande passante partagée
         - Streaming en même temps
         - Téléchargements
      
      
      SOLUTIONS :
      
      [OK] SOLUTION 1 : Déjà en Ethernet [OK]
         - Console déjà câblée
         - Optimal pour jeu
      
      [OK] SOLUTION 2 : QoS - Prioriser jeu
         - Dédier bande passante au jeu
         - Configuration box :
           Très haute priorité : Jeu en ligne (UDP ports jeu)
           Haute : Streaming
           Normale : Web
           Basse : Téléchargements
      
      [OK] SOLUTION 3 : DNS optimisés
         - Changer DNS box :
           Google : 8.8.8.8 / 8.8.4.4
           Cloudflare : 1.1.1.1 / 1.0.0.1
         - Améliore résolution noms -> IPs
         - Peut réduire ping de 5-10ms
      
      [OK] SOLUTION 4 : Vérifier pas de téléchargements
         - Pause téléchargements console
         - Pause mises à jour système
         - Fermer applications arrière-plan
      
      
      [IDEE] TEST :
      - Ping google.com
        < 20ms : Excellent
        20-50ms : Bon
        50-100ms : Moyen
        > 100ms : Problème
      
      - Jitter (variation ping)
        < 10ms : Bon
        > 30ms : Problème
   
   
   d) IMPRIMANTE NON DÉTECTÉE
      ────────────────────────
      
      CAUSES :
      
      1. Imprimante en veille
         - Mode économie d'énergie
         - Wi-Fi coupé après inactivité
         
      2. Adresse IP changée (DHCP)
         - Bail DHCP expiré
         - Nouvelle IP attribuée
         - PC cherche ancienne IP
         
      3. Wi-Fi instable
         - Déconnexions intermittentes
         - Signal faible chambre 1
         
      4. Isolation client Wi-Fi
         - Paramètre box bloque communication client <-> client
         - Sécurité trop stricte
      
      
      SOLUTIONS :
      
      [OK] SOLUTION 1 : IP statique imprimante
         - Réserver IP dans box
         - Configuration :
           1. Noter MAC address imprimante
           2. Interface web box
           3. DHCP -> Réservations
           4. Ajouter : MAC -> 192.168.1.50 (ex)
         
         -> Imprimante aura toujours même IP
      
      [OK] SOLUTION 2 : Désactiver veille Wi-Fi
         - Paramètres imprimante
         - Réseau -> Paramètres avancés
         - Désactiver "Mode économie Wi-Fi"
      
      [OK] SOLUTION 3 : Connexion Ethernet (si possible)
         - Switch supplémentaire chambre 1
         - Imprimante en filaire
         - Plus fiable
      
      [OK] SOLUTION 4 : Désactiver isolation client
         - Interface box
         - Wi-Fi -> Paramètres avancés
         - Désactiver "Isolation client" ou "AP Isolation"
         
         [ATTENTION] Impact sécurité minime en réseau domestique
      
      
      [IDEE] DIAGNOSTIC :
      Sur PC :
      - ping [IP_imprimante]
      - Si timeout -> Problème réseau
      - Si réponse -> Problème pilote/config PC


5. PLAN D'AMÉLIORATION COMPLET

   [OBJECTIF] OBJECTIFS :
   - Wi-Fi stable partout
   - Streaming fluide
   - Gaming sans lag
   - Imprimante toujours accessible
   
   
   [LISTE] PLAN D'ACTION :
   
   PHASE 1 : OPTIMISATIONS GRATUITES (0€)
   ────────────────────────────────────────
   
   1. Configuration QoS box
      - Priorités :
        ① Jeu (console)
        ② Streaming (TV)
        ③ Navigation (PC/phones)
        ④ Téléchargements
   
   2. IP statique imprimante
      - Réservation DHCP
   
   3. Optimiser canaux Wi-Fi
      - Analyser avec app (WiFi Analyzer)
      - Choisir canal le moins encombré
        2.4 GHz : Canal 1, 6 ou 11
        5 GHz : Canaux DFS si disponibles
   
   4. DNS rapides
      - Cloudflare : 1.1.1.1
   
   5. Désactiver isolation client
   
   6. Firmware box à jour
   
   
   PHASE 2 : ÉQUIPEMENTS (150-200€)
   ─────────────────────────────────
   
   1. Kit CPL (80€)
      - 2 adaptateurs CPL AV2 1000 Mbps
      - 1 près box (Ethernet)
      - 1 dans chambre 2
      - PC2 connecté en Ethernet au CPL
      
      Modèle recommandé : TP-Link TL-PA7017 KIT
   
   2. Switch Gigabit 5 ports (20€)
      - Dans chambre 1
      - PC1 + Imprimante en Ethernet
      - Connecté à box via câble ou CPL
      
      Modèle recommandé : Netgear GS305
   
   3. Câbles Ethernet Cat6 (30€)
      - 2× 5m pour chambre 1
      - 1× 10m box -> chambre 2 (si possible)
   
   4. Support mural box (20€)
      - Placer box en hauteur
      - Améliore couverture Wi-Fi
   
   
   PHASE 3 (OPTIONNEL) : UPGRADE (100-300€)
   ────────────────────────────────────────
   
   Si problèmes persistent :
   
   1. Routeur Wi-Fi 6 (150€)
      - Remplace box en mode pont
      - Meilleure couverture
      - Meilleur QoS
      - Plus d'appareils simultanés
      
      Modèle recommandé : TP-Link Archer AX50
   
   2. Système Mesh (200-300€)
      - 2-3 points d'accès
      - Couverture complète
      - Roaming transparent
      
      Modèles : TP-Link Deco, Google Nest WiFi
   
   
   [GRAPHIQUE] SCHÉMA RÉSEAU AMÉLIORÉ :
   
   ┌──────────────────────────────────────────┐
   │  Chambre 1          Chambre 2            │
   │  ┌──────────┐      ┌──────────┐         │
   │  │          │      │          │         │
   │  │  [CODE]──┐   │      │  [CODE]      │         │
   │  │      │   │      │  │       │         │
   │  │  [IMPRIMANTE]──┤   │      │  │       │         │
   │  │      │   │      │  │       │         │
   │  │   [SW]───┼──────┼──[CPL]   │         │
   │  │      │   │      │          │         │
   │  └──────┼───┘      └──────────┘         │
   │         │Ethernet                        │
   │         │                                │
   │  Salon  │                                │
   │  ┌──────┼──────────────────┐            │
   │  │      │                  │            │
   │  │  [Box/Routeur]──[CPL]   │            │
   │  │      │   │              │            │
   │  │   Ethernet               │            │
   │  │      │   │              │            │
   │  │   [TELEVISION] TV  [VIDEO_GAME] Console     │            │
   │  │                         │            │
   │  └─────────────────────────┘            │
   │         [RESEAU] Wi-Fi                        │
   │         │  │  │                         │
   │        [MOBILE] [MOBILE] [MOBILE]                        │
   │                                          │
   └──────────────────────────────────────────┘
   
   AMÉLIORATIONS :
   [OK] PC2 : Wi-Fi -> CPL (débit stable)
   [OK] PC1 : Wi-Fi -> Ethernet via switch
   [OK] Imprimante : Wi-Fi -> Ethernet via switch
   [OK] Moins d'appareils Wi-Fi (bande passante libérée)
   [OK] Connexions critiques filaires


6. BUDGET DÉTAILLÉ

   ┌────────────────────────────┬──────────┬──────────┐
   │ Équipement                 │ Priorité │ Prix     │
   ├────────────────────────────┼──────────┼──────────┤
   │ Kit CPL 1000 Mbps (2 adap.)│ HAUTE    │ 80 €     │
   │ Switch 5 ports Gigabit     │ MOYENNE  │ 20 €     │
   │ Câbles Ethernet Cat6 (×3)  │ MOYENNE  │ 30 €     │
   │ Support mural box          │ BASSE    │ 20 €     │
   ├────────────────────────────┼──────────┼──────────┤
   │ TOTAL RECOMMANDÉ           │          │ 150 €    │
   ├────────────────────────────┼──────────┼──────────┤
   │ Routeur Wi-Fi 6 (optionnel)│ BASSE    │ 150 €    │
   │ Système Mesh (optionnel)   │ BASSE    │ 250 €    │
   └────────────────────────────┴──────────┴──────────┘
   
   
   [IDEE] PRIORISATION PAR BUDGET :
   
   Budget 80€ :
   -> Kit CPL seulement
   -> Résout chambre 2
   
   Budget 150€ :
   -> CPL + Switch + Câbles
   -> Résout tous problèmes principaux
   
   Budget 300€+ :
   -> Tout + Routeur Wi-Fi 6
   -> Réseau optimal


[GRAPHIQUE] RÉSULTATS ATTENDUS APRÈS AMÉLIORATIONS

AVANT :
[X] Wi-Fi faible chambre 2 (10 Mbps)
[X] Streaming saccadé
[X] Lag jeu 80-150ms
[X] Imprimante 50% du temps

APRÈS :
[OK] Chambre 2 : 200+ Mbps (CPL)
[OK] Streaming 4K fluide (QoS + Ethernet TV)
[OK] Jeu 15-30ms (QoS + déjà Ethernet)
[OK] Imprimante 100% détectée (IP statique + Ethernet)


[OBJECTIF] POINTS CLÉS DE CETTE SOLUTION

1. DIAGNOSTIC MÉTHODIQUE [OK]
   - Identifier causes racines
   - Pas de suppositions
   - Tests pour confirmer

2. SOLUTIONS GRADUÉES [OK]
   - Gratuit d'abord (config)
   - Petit budget ensuite (CPL/switch)
   - Gros budget si nécessaire (Mesh)

3. PRIORISER FILAIRE [OK]
   - Appareils fixes -> Ethernet
   - Mobiles -> Wi-Fi
   - Meilleure stratégie

4. QoS ESSENTIEL [OK]
   - Prioriser trafic critique
   - Évite saturation

5. DOCUMENTÉ [OK]
   - Schémas avant/après
   - Budget clair
   - Résultats mesurables


[IDEE] LEÇONS POUR VOS PROPRES RÉSEAUX

[OK] Toujours câbler si possible
[OK] QoS = amélioration gratuite
[OK] IP statiques pour équipements fixes
[OK] Tester avant acheter
[OK] Investir par étapes
"""


# ============================================================================
# [OBJECTIF] FIN DU CHAPITRE 1
# ============================================================================

"""
[BRAVO] FÉLICITATIONS !

Vous avez terminé le Chapitre 1 : Introduction aux Réseaux

[DOCS] CE QUE VOUS AVEZ APPRIS :
[OK] Définition et avantages des réseaux
[OK] Types de réseaux (PAN, LAN, WLAN, MAN, WAN)
[OK] Architectures (Client/Serveur, P2P)
[OK] Flux de données et types de transmission
[OK] Composants réseau de base
[OK] Application pratique (2 exercices complets)


[COURS] COMPÉTENCES ACQUISES :
[OK] Concevoir un réseau PME
[OK] Diagnostiquer problèmes réseau domestique
[OK] Choisir équipements adaptés
[OK] Optimiser un réseau existant
[OK] Budgétiser un projet réseau


-> PROCHAINE ÉTAPE : CHAPITRE 2 - MATÉRIEL RÉSEAU DE BASE

Dans le chapitre 2, vous approfondirez :
- Câbles et connecteurs en détail
- Switchs avancés
- Routeurs professionnels
- Points d'accès Wi-Fi
- Équipements spécialisés


[RAPIDE] VOUS ÊTES PRÊT POUR LA SUITE !

N'hésitez pas à :
- Relire les sections complexes
- Refaire les exercices
- Créer vos propres scénarios
- Pratiquer sur un vrai réseau


CONSEIL : Avant de continuer, assurez-vous de bien comprendre :
- La différence Switch/Routeur
- Les types de réseaux par taille
- Comment choisir une architecture
- Comment diagnostiquer un problème réseau

Si ce n'est pas clair, relisez le chapitre ! [GUIDE]
"""
''')

# ============================================================================
# [GUIDE] CHAPITRE 2 : MATÉRIEL RÉSEAU DE BASE
# ============================================================================

"""
[OBJECTIF] OBJECTIFS D'APPRENTISSAGE

À la fin de ce chapitre, vous saurez :
[OK] Différencier les types de câbles réseau
[OK] Choisir le bon câble pour chaque situation
[OK] Comprendre les connecteurs et standards
[OK] Maîtriser les switchs (fonctionnement, types, configuration)
[OK] Comprendre les routeurs en profondeur
[OK] Connaître les équipements spécialisés
[OK] Installer et configurer du matériel réseau
"""


# ----------------------------------------------------------------------------
# [PLUGIN] CÂBLES RÉSEAU
# ----------------------------------------------------------------------------

"""
INTRODUCTION

Le câble = support physique de transmission des données.
Qualité du câble = qualité de la transmission.

[IDEE] ANALOGIE : Tuyaux d'eau
- Gros tuyau (Cat6) = beaucoup de débit
- Petit tuyau (Cat5) = débit limité
- Tuyau percé (câble endommagé) = pertes


TYPES DE CÂBLES PRINCIPAUX

1. CÂBLE PAIRE TORSADÉE (Twisted Pair) - Le plus courant
2. CÂBLE COAXIAL - Ancien, encore utilisé
3. FIBRE OPTIQUE - Haut débit, longue distance


Nous allons les détailler un par un.
"""


# ----------------------------------------------------------------------------
# [RESEAU] 1. CÂBLE PAIRE TORSADÉE (TWISTED PAIR)
# ----------------------------------------------------------------------------

"""
DÉFINITION

Câble composé de paires de fils de cuivre torsadés ensemble.
La torsion réduit les interférences électromagnétiques.

[GRAPHIQUE] SCHÉMA : STRUCTURE CÂBLE ETHERNET

   Vue en coupe :
   
   ┌─────────────────────────────────────┐
   │   Gaine externe (PVC)               │
   │  ┌───────────────────────────────┐  │
   │  │ 4 paires torsadées            │  │
   │  │                               │  │
   │  │  [BLEU][BLEU]  Paire 1 (Bleu)         │  │
   │  │  [VERT][VERT]  Paire 2 (Vert)         │  │
   │  │  [ORANGE][ORANGE]  Paire 3 (Orange)       │  │
   │  │  [MARRON][MARRON]  Paire 4 (Marron)       │  │
   │  │                               │  │
   │  │  (Chaque paire torsadée)      │  │
   │  └───────────────────────────────┘  │
   └─────────────────────────────────────┘

   8 fils au total = 4 paires
   
   Couleurs standard (T568B) :
   1. Blanc/Orange - Orange
   2. Blanc/Vert - Vert
   3. Blanc/Bleu - Bleu
   4. Blanc/Marron - Marron


[REFLEXION] POURQUOI TORSADER ?

Sans torsade :
- Interférences électromagnétiques
- Diaphonie (crosstalk) entre câbles
- Perte de signal

Avec torsade :
- Annulation du bruit
- Signal stable
- Portée accrue


TYPES : UTP vs STP vs FTP

1. UTP (Unshielded Twisted Pair) - Non blindé
   ────────────────────────────────────────────
   
   Structure :
   ┌──────────────────┐
   │ Gaine PVC        │
   │  ┌────────────┐  │
   │  │ 4 paires   │  │ <- Pas de blindage
   │  └────────────┘  │
   └──────────────────┘
   
   Caractéristiques :
   [OK] Moins cher
   [OK] Flexible
   [OK] Facile à installer
   [X] Sensible aux interférences
   [X] Portée limitée (~100m)
   
   Usage :
   - Réseau bureau
   - Domicile
   - Environnement peu bruité


2. STP (Shielded Twisted Pair) - Blindé
   ─────────────────────────────────────
   
   Structure :
   ┌──────────────────┐
   │ Gaine PVC        │
   │  ┌────────────┐  │
   │  │ Blindage   │  │ <- Feuille métallique
   │  │  [BLEU][BLEU][VERT][VERT]  │  │
   │  └────────────┘  │
   └──────────────────┘
   
   Caractéristiques :
   [OK] Protection interférences
   [OK] Meilleur signal
   [OK] Plus longue portée
   [X] Plus cher
   [X] Plus rigide
   [X] Installation complexe
   
   Usage :
   - Environnement industriel
   - Proximité équipements électriques
   - Réseaux critiques


3. FTP (Foiled Twisted Pair) - Blindage global
   ────────────────────────────────────────────
   
   Structure :
   ┌──────────────────┐
   │ Gaine PVC        │
   │  ┌────────────┐  │
   │  │ Feuille alu│  │ <- Blindage autour de toutes les paires
   │  │  [BLEU][BLEU][VERT][VERT]  │  │
   │  └────────────┘  │
   └──────────────────┘
   
   Caractéristiques :
   - Compromis UTP/STP
   - Protection correcte
   - Prix modéré
   
   Usage :
   - Bureau avec équipements électriques
   - Réseau d'entreprise standard


CATÉGORIES DE CÂBLES

Les câbles sont classés par "Catégorie" (Cat) selon leurs performances.

[GRAPHIQUE] TABLEAU COMPARATIF

┌──────────┬──────────┬──────────┬──────────┬──────────────────┐
│ Catégorie│  Débit   │ Fréquence│ Distance │  Usage           │
├──────────┼──────────┼──────────┼──────────┼──────────────────┤
│ Cat 5    │ 100 Mbps │ 100 MHz  │  100 m   │ Obsolète         │
│ Cat 5e   │ 1 Gbps   │ 100 MHz  │  100 m   │ Réseau basique   │
│ Cat 6    │ 1 Gbps   │ 250 MHz  │  100 m   │ Standard actuel  │
│          │ 10 Gbps  │          │   55 m   │                  │
│ Cat 6a   │ 10 Gbps  │ 500 MHz  │  100 m   │ Entreprise       │
│ Cat 7    │ 10 Gbps  │ 600 MHz  │  100 m   │ Data center      │
│ Cat 8    │ 40 Gbps  │ 2000 MHz │   30 m   │ Serveurs         │
└──────────┴──────────┴──────────┴──────────┴──────────────────┘


DÉTAILS PAR CATÉGORIE

CAT 5 (Catégorie 5) - OBSOLÈTE [X]
──────────────────────────────────

Spécifications :
- Débit : 100 Mbps (Fast Ethernet)
- Fréquence : 100 MHz
- Norme : TIA/EIA-568-B
- Année : 1995

Problèmes :
- Trop lent pour aujourd'hui
- Ne supporte pas Gigabit de manière fiable
- Sensible aux interférences

[IDEE] À éviter pour nouvelles installations !


CAT 5e (Catégorie 5 enhanced) - MINIMUM
────────────────────────────────────────

Spécifications :
- Débit : 1 Gbps (Gigabit Ethernet)
- Fréquence : 100 MHz
- Diaphonie réduite vs Cat 5
- Année : 2001

Avantages :
[OK] Pas cher (0.20-0.30€/m)
[OK] Suffisant pour domicile
[OK] Supporte Gigabit

Inconvénients :
[X] Ne supporte pas 10 Gigabit
[X] Sera bientôt dépassé

Usage recommandé :
- Domicile (si budget limité)
- Réseau temporaire
- Connexion périphériques lents

[IDEE] Si vous câblez aujourd'hui, passez à Cat 6 directement !


CAT 6 (Catégorie 6) - RECOMMANDÉ [OK]
───────────────────────────────────

Spécifications :
- Débit : 1 Gbps (100m)
         10 Gbps (55m)
- Fréquence : 250 MHz
- Séparateur entre paires (réduit diaphonie)
- Année : 2002

Structure améliorée :
┌────────────────────┐
│  Gaine PVC         │
│  ┌──────────────┐  │
│  │ Séparateur   │  │ <- Plastique séparant les paires
│  │   │  │  │  │ │  │
│  │  [BLEU][VERT][ORANGE][MARRON]  │  │
│  └──────────────┘  │
└────────────────────┘

Avantages :
[OK] Débit élevé
[OK] Prêt pour 10 Gbps (courte distance)
[OK] Prix raisonnable (0.40-0.60€/m)
[OK] Standard actuel

Inconvénients :
[X] 10 Gbps limité à 55m

Usage recommandé :
- Domicile (câblage durable)
- Entreprise
- Nouvelle construction
- Tout réseau moderne

[IDEE] MEILLEUR CHOIX qualité/prix 2024 !


CAT 6a (Catégorie 6 augmented) - ENTREPRISE
────────────────────────────────────────────

Spécifications :
- Débit : 10 Gbps (100m complet)
- Fréquence : 500 MHz
- Blindage amélioré
- Plus épais que Cat 6
- Année : 2008

Avantages :
[OK] 10 Gbps sur 100m
[OK] Très faible diaphonie
[OK] Futur-proof

Inconvénients :
[X] Plus cher (0.80-1.20€/m)
[X] Plus épais (rayon de courbure)
[X] Installation plus difficile

Usage recommandé :
- Entreprise (réseau haute performance)
- Data center
- Backbone réseau
- Environnement bruité

[IDEE] Si vous voulez du 10 Gbps partout, c'est le choix !


CAT 7 (Catégorie 7) - SPÉCIALISÉ
─────────────────────────────────

Spécifications :
- Débit : 10 Gbps
- Fréquence : 600 MHz
- Blindage individuel + global (S/FTP)
- Connecteurs spéciaux (GG45, TERA)
- Année : 2010

Structure :
┌────────────────────┐
│  Gaine PVC         │
│  ┌──────────────┐  │
│  │ Blindage     │  │ <- Blindage global
│  │  ┌─┐┌─┐┌─┐┌─┐│  │
│  │  │[BLEU]││[VERT]││[ORANGE]││[MARRON]││ <- Chaque paire blindée
│  │  └─┘└─┘└─┘└─┘│  │
│  └──────────────┘  │
└────────────────────┘

Avantages :
[OK] Excellente protection EMI
[OK] Performances élevées

Inconvénients :
[X] Très cher
[X] Nécessite connecteurs spéciaux
[X] Peu compatible avec RJ45 standard
[X] Peu utilisé en pratique

Usage :
- Installations très spécifiques
- Environnement extrêmement bruité

[IDEE] Cat 6a souvent meilleur choix qu'Cat 7


CAT 8 (Catégorie 8) - DATA CENTER
──────────────────────────────────

Spécifications :
- Débit : 25/40 Gbps
- Fréquence : 2000 MHz
- Distance : 30m maximum
- Blindage S/FTP
- Année : 2016

Avantages :
[OK] Très haut débit
[OK] Futur-proof

Inconvénients :
[X] Distance limitée (30m)
[X] Très cher
[X] Complexe

Usage :
- Connexions serveur à serveur
- Top-of-rack data center
- Stockage haute vitesse

[IDEE] Pas pour usage général !


[IDEE] QUEL CÂBLE CHOISIR ?

Domicile :
-> Cat 6 (meilleur compromis)

Entreprise standard :
-> Cat 6 ou Cat 6a

Entreprise haute performance :
-> Cat 6a

Data center :
-> Cat 6a ou Cat 8 (courtes distances)

Budget très limité :
-> Cat 5e (minimum acceptable)

[GRAPHIQUE] SCHÉMA DÉCISIONNEL

Besoin 10 Gbps ?
    │
    ├─ NON ─-> Cat 6 (1 Gbps suffit)
    │
    └─ OUI ─-> Sur quelle distance ?
               │
               ├─ < 55m ─-> Cat 6
               │
               └─ > 55m ─-> Cat 6a


TYPES DE CÂBLAGE : DROIT vs CROISÉ

CÂBLE DROIT (Straight-Through)
───────────────────────────────

Les deux extrémités ont le même ordre de fils.

[GRAPHIQUE] Brochage identique aux 2 bouts :

Bout 1 (RJ45)          Bout 2 (RJ45)
Pin 1: Blanc/Orange    Pin 1: Blanc/Orange
Pin 2: Orange          Pin 2: Orange
Pin 3: Blanc/Vert      Pin 3: Blanc/Vert
Pin 4: Bleu            Pin 4: Bleu
Pin 5: Blanc/Bleu      Pin 5: Blanc/Bleu
Pin 6: Vert            Pin 6: Vert
Pin 7: Blanc/Marron    Pin 7: Blanc/Marron
Pin 8: Marron          Pin 8: Marron

Usage :
- PC -> Switch
- Switch -> Routeur
- Routeur -> Modem

[IDEE] 99% des câbles Ethernet sont droits


CÂBLE CROISÉ (Crossover)
────────────────────────

Les paires TX et RX sont croisées.

[GRAPHIQUE] Brochage différent :

Bout 1 (T568B)         Bout 2 (T568A)
Pin 1: Blanc/Orange    Pin 1: Blanc/Vert
Pin 2: Orange          Pin 2: Vert
Pin 3: Blanc/Vert      Pin 3: Blanc/Orange
Pin 4: Bleu            Pin 4: Bleu
Pin 5: Blanc/Bleu      Pin 5: Blanc/Bleu
Pin 6: Vert            Pin 6: Orange
Pin 7: Blanc/Marron    Pin 7: Blanc/Marron
Pin 8: Marron          Pin 8: Marron

Usage :
- PC -> PC (direct)
- Switch -> Switch (sans uplink)

[IDEE] AUJOURD'HUI : Auto-MDIX rend câble croisé obsolète
Les équipements récents détectent et s'adaptent automatiquement.


STANDARDS DE BROCHAGE : T568A vs T568B

T568B (Standard USA) - Plus courant
────────────────────────────────────

Ordre des couleurs :
1. Blanc/Orange
2. Orange
3. Blanc/Vert
4. Bleu
5. Blanc/Bleu
6. Vert
7. Blanc/Marron
8. Marron

T568A (Standard Europe)
───────────────────────

Ordre des couleurs :
1. Blanc/Vert
2. Vert
3. Blanc/Orange
4. Bleu
5. Blanc/Bleu
6. Orange
7. Blanc/Marron
8. Marron

[IDEE] IMPORTANT :
- Utilisez le MÊME standard aux 2 bouts
- T568B plus courant en pratique
- Pas de différence de performance

[ATTENTION] NE PAS MÉLANGER T568A et T568B sur même câble
(sauf pour faire un câble croisé intentionnellement)


CONNECTEUR RJ45

RJ45 = Registered Jack 45
Connecteur standard pour câble Ethernet

[GRAPHIQUE] SCHÉMA CONNECTEUR RJ45

Vue de face (languette vers le bas) :

    ┌─────────────┐
    │  8 7 6 5 4 3 2 1  │ <- Pins
    ├─────────────┤
    │             │
    │   Clip      │
    └──────┬──────┘
           │
        Languette

Pin 1 = Extrême gauche
Pin 8 = Extrême droite

Paires utilisées :
- Pins 1-2 : TX+ TX- (Transmission)
- Pins 3-6 : RX+ RX- (Réception)
- Pins 4-5 : Non utilisés (10/100 Mbps)
- Pins 7-8 : Non utilisés (10/100 Mbps)

[IDEE] Gigabit Ethernet utilise les 8 pins


TYPES DE CONNECTEURS RJ45

1. RJ45 standard (8P8C)
   - Le plus courant
   - Pour câble souple

2. RJ45 blindé
   - Pour câble STP/FTP
   - Connexion métal-métal

3. RJ45 pour câble rigide
   - Pour câble installation permanente
   - Dents pénétrantes

4. RJ45 keystone (prise murale)
   - Pour installation fixe
   - Connexion via punch-down


SERTISSAGE D'UN CÂBLE RJ45

[OUTIL] MATÉRIEL NÉCESSAIRE :
- Pince à sertir (crimping tool)
- Connecteurs RJ45
- Câble Ethernet
- Pince coupante
- Dénudeur (stripper)
- Testeur de câble

[LISTE] ÉTAPES :

1. COUPER LE CÂBLE
   - Longueur souhaitée + 10cm marge

2. DÉNUDER
   - Retirer 2-3cm de gaine externe
   - [ATTENTION] Ne pas couper les fils intérieurs

3. DÉTORSADER
   - Détorsader les paires
   - ~1.5cm seulement

4. ORDONNER
   - Suivre ordre T568B :
     1. Blanc/Orange
     2. Orange
     3. Blanc/Vert
     4. Bleu
     5. Blanc/Bleu
     6. Vert
     7. Blanc/Marron
     8. Marron

5. COUPER À LONGUEUR
   - Fils bien alignés
   - Couper à ~1.5cm du début de la gaine

6. INSÉRER DANS RJ45
   - Pousser à fond
   - Gaine externe doit entrer dans connecteur

7. SERTIR
   - Placer dans pince à sertir
   - Presser fermement
   - Un "clic" indique sertissage réussi

8. TESTER
   - Testeur de câble
   - Vérifier continuité 8 pins
   - Vérifier pas de court-circuit


[IDEE] CONSEILS SERTISSAGE :

[OK] Coupez proprement (coupe nette)
[OK] Minimisez détorsadage (< 1.5cm)
[OK] Fils doivent toucher le fond du RJ45
[OK] Gaine externe maintenue par clip
[X] Ne pas trop détorsader (interférences)
[X] Fils coupés en biais (mauvais contact)


TESTEUR DE CÂBLE

Appareil pour vérifier intégrité du câble.

Tests effectués :
- Continuité (8 fils passent)
- Ordre correct
- Pas de court-circuit
- Pas de coupure

Types :
1. Testeur simple (LEDs)
   - Vérifie continuité
   - ~20€

2. Testeur avancé
   - Mesure longueur
   - Détecte position défaut
   - Mesure atténuation
   - ~100-500€

3. Certificateur
   - Certification installation
   - Respect normes
   - ~2000€+


LONGUEUR MAXIMALE

[GRAPHIQUE] DISTANCES STANDARDS

┌─────────────┬──────────────┬────────────────────┐
│  Débit      │   Distance   │   Remarques        │
├─────────────┼──────────────┼────────────────────┤
│ 10 Mbps     │    100 m     │ Ethernet classique │
│ 100 Mbps    │    100 m     │ Fast Ethernet      │
│ 1 Gbps      │    100 m     │ Gigabit (Cat 5e+)  │
│ 10 Gbps     │     55 m     │ Cat 6              │
│ 10 Gbps     │    100 m     │ Cat 6a             │
└─────────────┴──────────────┴────────────────────┘

[REFLEXION] POURQUOI 100m MAXIMUM ?

Raisons :
1. Atténuation signal (perte en puissance)
2. Délai de propagation
3. Collisions (ancien Ethernet)
4. Norme IEEE 802.3

[IDEE] Au-delà de 100m :
- Switch intermédiaire (répéteur)
- Fibre optique


DIAGNOSTIC PROBLÈMES CÂBLE

SYMPTÔMES vs CAUSES

Pas de lien (pas de voyant) :
├─ Câble coupé
├─ Mauvais sertissage
├─ Connecteur défectueux
└─ Port défectueux

Lien à 100 Mbps au lieu de 1 Gbps :
├─ Câble Cat 5 (pas Cat 5e+)
├─ Câble endommagé
├─ Fils 4-5 ou 7-8 coupés
└─ Équipement pas Gigabit

Déconnexions intermittentes :
├─ Connecteur mal serti
├─ Câble pincé/écrasé
├─ Interférences (pas blindé)
└─ Câble trop long

Débit faible / perte paquets :
├─ Interférences
├─ Câble de mauvaise qualité
├─ Trop détorsadé
└─ Proximité source EMI

[OUTIL] DÉPANNAGE :

1. Tester avec autre câble
2. Testeur de câble
3. Vérifier voyants (port switch/NIC)
4. Tester autre port
5. Refaire sertissage
"""


# ----------------------------------------------------------------------------
# [TELEVISION] 2. CÂBLE COAXIAL
# ----------------------------------------------------------------------------

"""
DÉFINITION

Câble avec conducteur central entouré d'isolant, blindage et gaine.
Utilisé historiquement pour Ethernet (10BASE2, 10BASE5).
Aujourd'hui : TV câble, Internet câble.

[GRAPHIQUE] STRUCTURE CÂBLE COAXIAL

Vue en coupe :

┌──────────────────────────────┐
│ Gaine externe (PVC noir)     │
│  ┌────────────────────────┐  │
│  │ Blindage (tresse cuivre)│  │
│  │  ┌──────────────────┐  │  │
│  │  │ Isolant (mousse) │  │  │
│  │  │  ┌────────────┐  │  │  │
│  │  │  │Conducteur  │  │  │  │
│  │  │  │  central   │  │  │  │
│  │  │  └────────────┘  │  │  │
│  │  └──────────────────┘  │  │
│  └────────────────────────┘  │
└──────────────────────────────┘

Composants :
1. Conducteur central (cuivre massif)
2. Isolant diélectrique (plastique/mousse)
3. Blindage (tresse ou feuille aluminium)
4. Gaine externe (protection)


TYPES DE COAXIAL

RG-6 (Radio Guide 6)
────────────────────

Caractéristiques :
- Diamètre : 6.9mm
- Impédance : 75 Ω
- Fréquence : jusqu'à 3 GHz

Usage :
- TV câble
- Internet câble (DOCSIS)
- Satellite

Avantages :
[OK] Atténuation faible
[OK] Longue distance (300-500m)
[OK] Peu d'interférences

RG-59
─────

Caractéristiques :
- Diamètre : 6.1mm
- Impédance : 75 Ω
- Plus fin que RG-6

Usage :
- CCTV (caméras surveillance)
- Courtes distances

[IDEE] RG-6 a remplacé RG-59 pour la plupart des usages


CONNECTEURS COAXIAL

F-Connector (TV/Cable)
──────────────────────

Connecteur vissé, le plus courant.

   ┌──────┐
   │ ╱╲   │
   │╱  ╲  │ <- Partie vissée
   ││  ││ │
   │╲  ╱  │
   │ ╲╱   │
   └──┬───┘
      │
  Conducteur

BNC (Bayonet Neill-Concelman)
──────────────────────────────

Connecteur à baïonnette (twist-lock).

Usage :
- Ancien réseau Ethernet (10BASE2)
- Caméras surveillance
- Équipements vidéo


USAGE RÉSEAU COAXIAL (Historique)

10BASE2 (Thin Ethernet)
───────────────────────

- Débit : 10 Mbps
- Distance : 185m max
- Topologie : Bus
- Connecteur : BNC
- Années 80-90

[GRAPHIQUE] Schéma bus :

[PC]──┬──[PC]──┬──[PC]──┬──[PC]
      │        │        │
   Terminateur        Terminateur
      50Ω                50Ω

[X] Obsolète ! Remplacé par Ethernet paire torsadée.


COAXIAL POUR INTERNET (DOCSIS)

Modem câble utilise coaxial pour Internet.

Flux :
Internet <-> Opérateur <-> Coaxial <-> Modem câble <-> Ethernet <-> PC

Débits DOCSIS :
- DOCSIS 3.0 : jusqu'à 1 Gbps download
- DOCSIS 3.1 : jusqu'à 10 Gbps download

[IDEE] Coaxial encore très utilisé pour Internet câble !


AVANTAGES vs INCONVÉNIENTS

Avantages [OK] :
- Peu sensible aux interférences
- Longue distance
- Pas de diaphonie
- Bande passante élevée

Inconvénients [X] :
- Plus cher que paire torsadée
- Moins flexible
- Installation plus complexe
- Obsolète pour réseau local
"""


# ----------------------------------------------------------------------------
# [IDEE] 3. FIBRE OPTIQUE
# ----------------------------------------------------------------------------

"""
DÉFINITION

Câble transmettant données par signaux lumineux (laser/LED).
Cœur en verre ou plastique.

[REFLEXION] POURQUOI FIBRE ?

Vs Cuivre :
[OK] Très haut débit (100+ Gbps)
[OK] Très longue distance (40+ km)
[OK] Immunité totale aux interférences électromagnétiques
[OK] Sécurité (difficile à écouter)
[OK] Pas de perte par diaphonie

[X] Plus cher
[X] Installation délicate
[X] Connecteurs fragiles


[GRAPHIQUE] STRUCTURE FIBRE OPTIQUE

Vue en coupe :

┌────────────────────────────────┐
│ Gaine externe (PVC)            │
│  ┌──────────────────────────┐  │
│  │ Renforcement (Kevlar)    │  │
│  │  ┌────────────────────┐  │  │
│  │  │ Gaine primaire     │  │  │
│  │  │  ┌──────────────┐  │  │  │
│  │  │  │  Gaine       │  │  │  │
│  │  │  │  (cladding)  │  │  │  │
│  │  │  │  ┌────────┐  │  │  │  │
│  │  │  │  │ Cœur   │  │  │  │  │ <- Lumière voyage ici
│  │  │  │  └────────┘  │  │  │  │   (verre ultra-pur)
│  │  │  └──────────────┘  │  │  │
│  │  └────────────────────┘  │  │
│  └──────────────────────────┘  │
└────────────────────────────────┘

Diamètres :
- Cœur : 9 µm (monomode) ou 50/62.5 µm (multimode)
- Gaine : 125 µm
- Total avec protections : 2-3 mm


PRINCIPE DE FONCTIONNEMENT

Réflexion interne totale :
- Lumière entre dans le cœur
- Angle d'incidence > angle critique
- Lumière rebondit sur la gaine
- Voyage sur toute la longueur

[GRAPHIQUE] Schéma réflexion :

    Émetteur (LED/Laser)
         │
         [BLACK_DOWN-POINTING_TRIANGLE]
    ┌────────────────────────────┐
    │ ╱╲    ╱╲    ╱╲    ╱╲       │
    │╱  ╲  ╱  ╲  ╱  ╲  ╱  ╲      │ <- Lumière rebondit
    │    ╲╱    ╲╱    ╲╱    ╲     │
    └────────────────────────────┘
         Cœur fibre
              │
              [BLACK_DOWN-POINTING_TRIANGLE]
         Récepteur (Photodiode)


TYPES DE FIBRE

1. FIBRE MONOMODE (Single-Mode - SMF)
   ───────────────────────────────────

Caractéristiques :
- Cœur : 9 µm (très fin)
- Un seul chemin lumineux
- Laser comme source
- Couleur : jaune

[GRAPHIQUE] Schéma :
    ┌──────────────┐
    │ ─────────->   │ <- Un seul mode
    └──────────────┘
         9 µm

Performances :
- Distance : 40+ km (jusqu'à 100+ km)
- Débit : 10/40/100 Gbps+
- Atténuation : ~0.5 dB/km

Usage :
- Longue distance (WAN)
- Opérateurs télécoms
- Backbone Internet
- Connexions inter-bâtiments

Avantages :
[OK] Très longue portée
[OK] Très haut débit
[OK] Faible atténuation

Inconvénients :
[X] Plus cher
[X] Équipements laser coûteux


2. FIBRE MULTIMODE (Multi-Mode - MMF)
   ───────────────────────────────────

Caractéristiques :
- Cœur : 50 ou 62.5 µm (plus large)
- Plusieurs chemins lumineux
- LED comme source
- Couleur : orange (OM1/OM2) ou aqua (OM3/OM4/OM5)

[GRAPHIQUE] Schéma :
    ┌──────────────┐
    │ ╱╲  ╱╲  ╱╲   │ <- Plusieurs modes
    │╱  ╲╱  ╲╱  ╲  │
    └──────────────┘
      50/62.5 µm

Performances :
- Distance : 300m à 2km (selon OM)
- Débit : 10/40/100 Gbps
- Atténuation : ~3 dB/km

Catégories multimode :

┌──────┬─────────┬────────────┬──────────────┬──────────┐
│  OM  │ Cœur    │ Bande pass.│ Distance max │  Débit   │
├──────┼─────────┼────────────┼──────────────┼──────────┤
│ OM1  │ 62.5 µm │ 200 MHz·km │    300 m     │  1 Gbps  │
│ OM2  │ 50 µm   │ 500 MHz·km │    550 m     │  1 Gbps  │
│ OM3  │ 50 µm   │ 2000 MHz·km│    300 m     │  10 Gbps │
│ OM4  │ 50 µm   │ 4700 MHz·km│    550 m     │  10 Gbps │
│ OM5  │ 50 µm   │ 4700 MHz·km│    550 m     │  40 Gbps │
└──────┴─────────┴────────────┴──────────────┴──────────┘

Usage :
- Campus / bâtiments
- Data centers
- LAN haute performance
- Connexions backbone locales

Avantages :
[OK] Moins cher que monomode
[OK] Équipements LED abordables
[OK] Suffisant pour LAN

Inconvénients :
[X] Distance limitée vs monomode
[X] Dispersion modale (atténuation)


[IDEE] QUELLE FIBRE CHOISIR ?

Courte distance (< 2km) + Budget limité :
-> Multimode (OM3/OM4)

Longue distance (> 2km) :
-> Monomode

Data center moderne :
-> OM4/OM5 (40/100 Gbps)

Opérateur / WAN :
-> Monomode


CONNECTEURS FIBRE

LC (Lucent Connector) - Le plus courant
───────────────────────────────────────

Caractéristiques :
- Petit format (SFF - Small Form Factor)
- Système push-pull
- Duplex (2 fibres)

   ┌─────┐ ┌─────┐
   │ LC  │ │ LC  │
   └─────┘ └─────┘
     TX      RX

Usage :
- Standard actuel
- Switchs, serveurs
- Transceivers SFP/SFP+


SC (Subscriber Connector)
─────────────────────────

Caractéristiques :
- Format moyen
- Système push-pull
- Connexion/déconnexion facile

   ┌────────┐
   │   SC   │
   └────────┘

Usage :
- Ancien standard
- Encore utilisé
- Panels de brassage


ST (Straight Tip)
─────────────────

Caractéristiques :
- Format rond
- Système baïonnette (twist)
- Robuste

     ╱───╲
    │ ST  │
     ╲───╱

Usage :
- Ancien (années 90)
- Réseaux legacy
- Rarement pour nouveau


MPO/MTP (Multi-Fiber Push-On)
──────────────────────────────

Caractéristiques :
- 12 ou 24 fibres dans un connecteur
- Haute densité
- Push-pull

  ┌────────────┐
  │  MPO/MTP   │
  │ (12 fibres)│
  └────────────┘

Usage :
- Data centers
- 40/100 Gbps Ethernet
- Backbone


TRANSCEIVER (Émetteur-Récepteur)

Module convertissant signaux électriques <-> optiques.

Types :

SFP (Small Form-factor Pluggable)
──────────────────────────────────

Débit : 1 Gbps
Format : Petit
Usage : Gigabit Ethernet

┌────────┐
│  SFP   │  <- Se branche dans port SFP du switch
└───┬────┘
    │
  Fibre


SFP+ (Enhanced SFP)
───────────────────

Débit : 10 Gbps
Format : Identique à SFP
Usage : 10 Gigabit Ethernet


QSFP+ (Quad SFP+)
─────────────────

Débit : 40 Gbps (4×10)
Format : Plus large
Usage : 40 Gbps Ethernet


QSFP28
──────

Débit : 100 Gbps
Format : Identique QSFP+
Usage : 100 Gbps Ethernet


[GRAPHIQUE] SCHÉMA CONNEXION FIBRE

Switch A                    Switch B
┌────────┐                 ┌────────┐
│ Port 1 │                 │ Port 1 │
│  SFP   │                 │  SFP   │
└───┬────┘                 └───┬────┘
    │                          │
  ┌─[BLACK_DOWN-POINTING_TRIANGLE]──┐                    ┌─[BLACK_DOWN-POINTING_TRIANGLE]──┐
  │ TX ├─────Fibre TX───────┤ RX │
  │ RX ├─────Fibre RX───────┤ TX │
  └────┘                    └────┘

[IDEE] 2 fibres nécessaires : une pour TX, une pour RX
(sauf BiDi - Bidirectionnel sur une fibre)


TYPES DE FIBRE PAR USAGE

┌────────────────┬─────────┬───────────┬────────────┐
│     Usage      │  Type   │  Distance │   Coût     │
├────────────────┼─────────┼───────────┼────────────┤
│ LAN (bureau)   │ OM3/OM4 │  < 1 km   │   Moyen    │
│ Campus         │ OM3/OM4 │  1-2 km   │   Moyen    │
│ Data center    │ OM4/OM5 │  < 500 m  │   Élevé    │
│ MAN (ville)    │ Monomode│  2-40 km  │   Élevé    │
│ WAN (pays)     │ Monomode│  40+ km   │ Très élevé │
└────────────────┴─────────┴───────────┴────────────┘


AVANTAGES ET INCONVÉNIENTS RÉSUMÉS

Fibre optique :

Avantages [OK] :
- Très haut débit (100+ Gbps)
- Très longue distance (40+ km)
- Immunité EMI totale
- Léger (vs cuivre)
- Sécurisé (pas d'écoute facile)
- Pas de diaphonie
- Faible atténuation

Inconvénients [X] :
- Coût (câble + équipements)
- Installation délicate
- Connecteurs fragiles
- Nécessite compétences spécifiques
- Équipements actifs chers


[IDEE] TENDANCES

[OK] Fibre devient standard pour :
- Connexions backbone
- Data centers
- Inter-bâtiments
- FTTH (Fiber To The Home)

[X] Cuivre reste pour :
- Postes de travail
- Courtes distances
- Budget limité


[GRAPHIQUE] COMPARAISON GLOBALE DES CÂBLES

┌──────────┬────────────┬────────────┬─────────────┬────────┐
│   Type   │   Débit    │  Distance  │  Immunité   │  Coût  │
│          │    max     │    max     │     EMI     │        │
├──────────┼────────────┼────────────┼─────────────┼────────┤
│ UTP Cat6 │   10 Gbps  │    100 m   │   Moyenne   │ Faible │
│ STP Cat6a│   10 Gbps  │    100 m   │    Haute    │ Moyen  │
│ Coaxial  │    1 Gbps  │   500 m    │    Haute    │ Moyen  │
│ MM Fiber │  100 Gbps  │    2 km    │   Totale    │ Élevé  │
│ SM Fiber │  100+ Gbps │   40+ km   │   Totale    │ Élevé  │
└──────────┴────────────┴────────────┴─────────────┴────────┘
"""


# ----------------------------------------------------------------------------
# [OUTIL] PANEL DE BRASSAGE (PATCH PANEL)
# ----------------------------------------------------------------------------

"""
DÉFINITION

Panneau de brassage = Panneau fixe avec connecteurs femelles RJ45.
Centralise toutes les prises réseau d'un bâtiment.

[GRAPHIQUE] SCHÉMA INSTALLATION STRUCTURÉE

Postes de travail              Baie de brassage
     │                              │
     │  Câble mural permanent       │
     [BLACK_DOWN-POINTING_TRIANGLE]                              [BLACK_DOWN-POINTING_TRIANGLE]
┌─────────┐                    ┌─────────┐
│ Prise   │[BLACK_LEFT-POINTING_POINTER]───────────────────┤ Panel   │
│ murale  │   (câble fixe)     │brassage │
│ RJ45    │                    │  (48p)  │
└─────────┘                    └────┬────┘
                                    │
                              Câble patch
                               (amovible)
                                    │
                               ┌────[BLACK_DOWN-POINTING_TRIANGLE]────┐
                               │ Switch  │
                               │  48p    │
                               └─────────┘

AVANTAGES :

1. ORGANISATION [OK]
   - Tous les câbles au même endroit
   - Identifiés et étiquetés
   - Gestion facilitée

2. FLEXIBILITÉ [OK]
   - Changer connexion = changer câble patch
   - Pas besoin toucher câbles muraux
   - Réorganisation facile

3. PROTECTION [OK]
   - Câbles muraux jamais manipulés
   - Durée de vie accrue
   - Moins de pannes

4. PROFESSIONNALISME [OK]
   - Installation propre
   - Maintenance aisée
   - Traçabilité


TYPES DE PANELS

1. Panel cuivre (RJ45)
   - 24 ou 48 ports
   - Cat 5e, Cat 6, Cat 6a
   - Montage 19" rack

2. Panel fibre
   - 12, 24, 48+ fibres
   - Connecteurs LC, SC
   - Cassettes amovibles

3. Panel mixte
   - Cuivre + fibre
   - Polyvalent


ORGANISATION BAIE DE BRASSAGE

[GRAPHIQUE] Baie 42U (Rack standard)

┌───────────────────────┐
│ 1U  - Panel 24p RJ45  │  Étage 2
│ 1U  - Panel 24p RJ45  │  Étage 1
│ 1U  - Panel 24p RJ45  │  RDC
│ 1U  - Organis. câbles │
├───────────────────────┤
│ 1U  - Switch 24p #1   │
│ 1U  - Switch 24p #2   │
│ 1U  - Switch 24p #3   │
├───────────────────────┤
│ 2U  - Routeur/FW      │
│ 1U  - Organis. câbles │
├───────────────────────┤
│ 4U  - Serveur 1       │
│ 4U  - Serveur 2       │
│ 1U  - Organis. câbles │
├───────────────────────┤
│ 2U  - UPS (onduleur)  │
└───────────────────────┘

U = Unité de rack (1U = 44.45mm)
Rack 42U = ~2m de hauteur


CÂBLAGE STRUCTURÉ

Norme TIA/EIA-568

Composants :

1. CÂBLE HORIZONTAL
   - Poste travail -> Panel brassage
   - Permanent (dans murs/faux-plafond)
   - 90m maximum

2. PANEL DE BRASSAGE
   - Terminaison câbles horizontaux

3. CÂBLE PATCH
   - Panel -> Switch
   - Amovible
   - 5m maximum recommandé

4. CÂBLE BACKBONE (Vertical)
   - Entre étages
   - Fibre optique généralement

5. LOCAL TECHNIQUE
   - Baie de brassage
   - Équipements actifs
   - Climatisé


ÉTIQUETAGE

[IDEE] ESSENTIEL pour maintenance !

Conventions :

Panel :
- Bât-Étage-Numéro
- Exemple : B1-E2-024
  (Bâtiment 1, Étage 2, Port 24)

Câbles :
- Origine-Destination
- Exemple : E2-Bureau205_Panel-P24

Couleurs :
- Bleu : Horizontal
- Orange : Backbone
- Jaune : DMZ/Sécurité
- Vert : VoIP
- Rouge : Critique


OUTILS NÉCESSAIRES

Pour câblage structuré :

1. Pince à dénuder (Stripper)
2. Pince à sertir (Crimping tool)
3. Outil punch-down (pour keystone)
4. Testeur de câble
5. Étiqueteuse
6. Organisateurs de câbles (Velcro)
7. Tire-câble (pour passages difficiles)

[ARGENT] Kit complet : 100-300€
"""


# ============================================================================
# [DOCS] RÉSUMÉ CÂBLES RÉSEAU
# ============================================================================

"""
[CLE] POINTS CLÉS

1. CÂBLE PAIRE TORSADÉE (Ethernet)
   ──────────────────────────────
   [OK] Standard actuel pour LAN
   [OK] Cat 6 = meilleur choix qualité/prix
   [OK] UTP suffisant pour la plupart des usages
   [OK] 100m maximum
   [OK] Pas cher et flexible

   Choisir Cat 6 pour nouvelle installation !

2. FIBRE OPTIQUE
   ─────────────
   [OK] Haute performance (100+ Gbps)
   [OK] Longue distance (40+ km)
   [OK] Immunité EMI totale
   [X] Plus cher
   [X] Installation délicate

   Multimode : Campus, data center
   Monomode : WAN, longue distance

3. COAXIAL
   ────────
   [OK] Encore utilisé pour TV/Internet câble
   [X] Obsolète pour réseau local

4. INFRASTRUCTURE
   ──────────────
   [OK] Câblage structuré avec panel brassage
   [OK] Étiquetage essentiel
   [OK] Organiser dès le départ


[GRAPHIQUE] AIDE AU CHOIX

Poste de travail -> Switch : Cat 6 UTP
Switch -> Switch (courte distance) : Cat 6/6a
Switch -> Switch (longue distance) : Fibre multimode
Building -> Building : Fibre monomode
Data center : Fibre OM4/OM5
Domicile : Cat 6 UTP


[OBJECTIF] VOUS SAVEZ MAINTENANT :
[OK] Différencier types de câbles
[OK] Choisir le bon câble pour chaque besoin
[OK] Sertir un câble RJ45
[OK] Organiser câblage structuré
[OK] Diagnostiquer problèmes câbles


-> SUITE : SWITCHS EN DÉTAIL

Dans la prochaine section, nous approfondirons :
- Fonctionnement interne des switchs
- Table MAC et apprentissage
- Switchs manageables vs non-manageables
- Configuration de base
- VLANs (aperçu)
"""

# ============================================================================
# [GUIDE] CHAPITRE 2 (SUITE) : SWITCHS EN DÉTAIL
# ============================================================================


# ----------------------------------------------------------------------------
# [MELANGE] SWITCHS (COMMUTATEURS)
# ----------------------------------------------------------------------------

"""
RAPPEL : QU'EST-CE QU'UN SWITCH ?

Switch = Équipement réseau qui relie plusieurs appareils dans un LAN.
Achemine intelligemment les trames vers le bon destinataire.

[GRAPHIQUE] SCHÉMA BASIQUE

         ┌──────────┐
         │  Switch  │
         │  8 ports │
         └─┬─┬─┬─┬──┘
           │ │ │ │
    ┌──────┘ │ │ └──────┐
    │   ┌────┘ └────┐   │
   [CODE]  [CODE]          [CODE]  [IMPRIMANTE]
   PC1 PC2         PC3 Printer


ÉVOLUTION : HUB -> SWITCH

ANCIEN : HUB (Concentrateur)
────────────────────────────

Fonctionnement :
- Reçoit trame sur port 1
- Répète sur TOUS les autres ports
- Broadcast permanent

[GRAPHIQUE] Schéma flux Hub :

    [Hub]
      │
  ┌───┼───┬───┐
  [BLACK_DOWN-POINTING_TRIANGLE]   [BLACK_DOWN-POINTING_TRIANGLE]   [BLACK_DOWN-POINTING_TRIANGLE]   [BLACK_DOWN-POINTING_TRIANGLE]
 PC1 PC2 PC3 PC4

PC1 envoie à PC3 -> Tous reçoivent (PC2, PC3, PC4)

Problèmes [X] :
- Collisions (domaine de collision unique)
- Pas de confidentialité
- Performance dégradée
- Half-duplex obligatoire

[IDEE] Hub = "multiprises réseau stupide"


MODERNE : SWITCH
────────────────

Fonctionnement :
- Lit adresse MAC destination
- Envoie UNIQUEMENT sur port concerné
- Pas de collision

[GRAPHIQUE] Schéma flux Switch :

    [Switch]
      │
  ┌───┼───┬───┐
  │   │   [BLACK_DOWN-POINTING_TRIANGLE]   │  <- Trame va seulement vers PC3
 PC1 PC2 PC3 PC4

PC1 envoie à PC3 -> Seulement PC3 reçoit

Avantages [OK] :
- Pas de collision (domaine de collision par port)
- Confidentialité
- Full-duplex possible
- Performance maximale

[IDEE] Switch = "aiguilleur intelligent"


COMPARAISON HUB vs SWITCH

┌───────────────┬─────────────┬──────────────────┐
│  Critère      │    Hub      │     Switch       │
├───────────────┼─────────────┼──────────────────┤
│ Niveau OSI    │ Physique(1) │ Liaison(2)       │
│ Adresse       │ Aucune      │ MAC              │
│ Transmission  │ Broadcast   │ Unicast          │
│ Collisions    │ Oui         │ Non (par port)   │
│ Duplex        │ Half        │ Full             │
│ Performance   │ Partagée    │ Dédiée par port  │
│ Sécurité      │ Nulle       │ Meilleure        │
│ Prix          │ Très bas    │ Bas à élevé      │
│ Utilisation   │ Obsolète    │ Standard         │
└───────────────┴─────────────┴──────────────────┘

[IDEE] Aujourd'hui, acheter un hub = mauvaise idée !
"""


# ----------------------------------------------------------------------------
# [CONFIG] FONCTIONNEMENT INTERNE D'UN SWITCH
# ----------------------------------------------------------------------------

"""
PRINCIPE DE BASE

Le switch apprend dynamiquement quels appareils sont sur quels ports.

ÉTAPES :

1. RÉCEPTION TRAME
   Switch reçoit trame Ethernet sur un port

2. LECTURE ADRESSES MAC
   - MAC Source (émetteur)
   - MAC Destination (destinataire)

3. APPRENTISSAGE (Learning)
   Enregistre "MAC Source est sur port X"

4. CONSULTATION TABLE MAC
   Cherche port du MAC Destination

5. TRANSMISSION (Forwarding)
   - Si trouvé -> Envoie sur ce port uniquement
   - Si pas trouvé -> Broadcast (flooding)


[GRAPHIQUE] EXEMPLE DÉTAILLÉ

Situation initiale :

Switch vide (table MAC vide)
Ports : 1, 2, 3, 4
Appareils connectés :
- PC1 (MAC: AA:AA:AA:AA:AA:AA) sur port 1
- PC2 (MAC: BB:BB:BB:BB:BB:BB) sur port 2
- PC3 (MAC: CC:CC:CC:CC:CC:CC) sur port 3
- PC4 (MAC: DD:DD:DD:DD:DD:DD) sur port 4


ÉTAPE 1 : PC1 envoie à PC3
───────────────────────────

Trame :
┌─────────────────────────────────────┐
│ MAC Src : AA:AA:AA:AA:AA:AA (PC1)  │
│ MAC Dst : CC:CC:CC:CC:CC:CC (PC3)  │
│ Données : "Hello PC3"               │
└─────────────────────────────────────┘

Switch reçoit sur port 1 :

1. APPRENTISSAGE
   Table MAC :
   ┌─────────────────┬──────┐
   │   MAC Address   │ Port │
   ├─────────────────┼──────┤
   │ AA:AA (PC1)     │  1   │ <- Nouveau !
   └─────────────────┴──────┘
   
   "Je sais maintenant que PC1 est sur port 1"

2. RECHERCHE DESTINATION
   MAC Dst = CC:CC (PC3)
   Table MAC : Pas d'entrée pour CC:CC
   
3. FLOODING (Inondation)
   Ne sait pas où est PC3 -> Envoie sur TOUS les ports sauf port 1
   
   [GRAPHIQUE] Flux :
   Port 1 (source) : [X] Pas de retour
   Port 2 : [OK] Envoie vers PC2
   Port 3 : [OK] Envoie vers PC3 <- Destinataire !
   Port 4 : [OK] Envoie vers PC4


ÉTAPE 2 : PC3 répond à PC1
───────────────────────────

Trame :
┌─────────────────────────────────────┐
│ MAC Src : CC:CC:CC:CC:CC:CC (PC3)  │
│ MAC Dst : AA:AA:AA:AA:AA:AA (PC1)  │
│ Données : "Hello PC1, got your msg"│
└─────────────────────────────────────┘

Switch reçoit sur port 3 :

1. APPRENTISSAGE
   Table MAC :
   ┌─────────────────┬──────┐
   │   MAC Address   │ Port │
   ├─────────────────┼──────┤
   │ AA:AA (PC1)     │  1   │
   │ CC:CC (PC3)     │  3   │ <- Nouveau !
   └─────────────────┴──────┘
   
   "Je sais maintenant que PC3 est sur port 3"

2. RECHERCHE DESTINATION
   MAC Dst = AA:AA (PC1)
   Table MAC : Port 1 [OK]
   
3. FORWARDING (Transmission)
   Sait où est PC1 -> Envoie UNIQUEMENT sur port 1
   
   [GRAPHIQUE] Flux :
   Port 1 : [OK] Envoie vers PC1 <- Destinataire !
   Port 2 : [X] Pas envoyé
   Port 3 : [X] Pas envoyé (source)
   Port 4 : [X] Pas envoyé


ÉTAPE 3 : PC1 envoie de nouveau à PC3
──────────────────────────────────────

Trame :
┌─────────────────────────────────────┐
│ MAC Src : AA:AA (PC1)               │
│ MAC Dst : CC:CC (PC3)               │
│ Données : "Thanks!"                 │
└─────────────────────────────────────┘

Switch reçoit sur port 1 :

1. APPRENTISSAGE
   AA:AA déjà connu sur port 1 -> Pas de changement

2. RECHERCHE DESTINATION
   MAC Dst = CC:CC (PC3)
   Table MAC : Port 3 [OK]
   
3. FORWARDING
   Sait où est PC3 -> Envoie sur port 3 uniquement
   
   [GRAPHIQUE] Flux :
   Port 1 : [X] (source)
   Port 2 : [X] Pas envoyé
   Port 3 : [OK] Envoie vers PC3
   Port 4 : [X] Pas envoyé

[IDEE] PLUS DE FLOODING !
Le switch a appris, communication efficace.


TABLE MAC (CAM TABLE)

CAM = Content Addressable Memory
Mémoire spéciale ultra-rapide pour chercher MAC addresses.

Structure :
┌─────────────────┬──────┬──────────┐
│   MAC Address   │ Port │   Age    │
├─────────────────┼──────┼──────────┤
│ AA:AA:AA:AA:... │  1   │   10s    │
│ BB:BB:BB:BB:... │  2   │   25s    │
│ CC:CC:CC:CC:... │  3   │   5s     │
│ DD:DD:DD:DD:... │  4   │   120s   │
└─────────────────┴──────┴──────────┘

Champs :
- MAC Address : Adresse MAC de l'appareil
- Port : Port du switch où il est connecté
- Age : Temps depuis dernière trame vue

VIEILLISSEMENT (Aging)
──────────────────────

Timeout par défaut : 300 secondes (5 minutes)

Si aucune trame de AA:AA pendant 300s :
-> Entrée supprimée de la table

Raison :
- Appareil peut avoir déménagé
- Appareil peut être éteint
- Évite entrées obsolètes

Exemple :
PC1 débranché du port 1, rebranché sur port 5
-> Après 300s, ancienne entrée supprimée
-> Prochaine trame de PC1 -> Apprentissage sur port 5

[IDEE] Commande pour voir table MAC (Cisco) :
show mac address-table


TAILLE TABLE MAC

Varie selon modèle switch :

Switch SOHO (5-8 ports) : 1 000 - 2 000 entrées
Switch PME (24-48 ports) : 8 000 - 16 000 entrées
Switch Entreprise : 32 000+ entrées
Switch Data Center : 128 000+ entrées

[REFLEXION] Que se passe-t-il si table pleine ?
-> Plus d'apprentissage
-> Flooding pour nouvelles adresses
-> Performance dégradée

[IDEE] Bien dimensionner le switch selon nombre d'appareils !


DOMAINE DE COLLISION vs DOMAINE DE BROADCAST

DOMAINE DE COLLISION
────────────────────

Zone où collisions peuvent se produire.

Avec Hub : Un seul domaine (tous les ports)
Avec Switch : Un domaine PAR PORT

[GRAPHIQUE] Schéma :

Hub :
┌────────────────────────────┐
│   Domaine de collision     │ <- Un seul
│  [PC1]──[Hub]──[PC2]       │
└────────────────────────────┘

Switch :
┌──────┐  ┌──────┐  ┌──────┐
│ DC 1 │  │ DC 2 │  │ DC 3 │ <- Un domaine par port
│[PC1]─┤  ├─[PC2]│  │─[PC3]│
└──────┴──┴──────┴──┴──────┘
     [Switch]

Avantage : Pas de collision entre ports
Performance : Chaque port a la bande passante complète


DOMAINE DE BROADCAST
────────────────────

Zone où broadcast est propagé.

Switch : Tous les ports = un domaine de broadcast

[GRAPHIQUE] Schéma :

     [Switch]
        │
  ┌─────┼─────┬─────┐
  [BLACK_DOWN-POINTING_TRIANGLE]     [BLACK_DOWN-POINTING_TRIANGLE]     [BLACK_DOWN-POINTING_TRIANGLE]     [BLACK_DOWN-POINTING_TRIANGLE]
 PC1   PC2   PC3   PC4
  │                   │
  └───────────────────┘
    Domaine de broadcast

PC1 envoie broadcast (FF:FF:FF:FF:FF:FF)
-> Tous (PC2, PC3, PC4) reçoivent

[IDEE] Pour séparer domaines de broadcast :
-> Routeur (niveau 3)
-> VLANs (chapitre dédié)


MODES DE TRANSMISSION

1. STORE-AND-FORWARD (Stocker-et-Transmettre)
   ───────────────────────────────────────────

Fonctionnement :
- Reçoit trame COMPLÈTE
- Vérifie FCS (checksum)
- Si OK -> Transfère
- Si erreur -> Jette

Avantages :
[OK] Fiable (pas de trames corrompues)
[OK] Détecte erreurs

Inconvénient :
[X] Latence plus élevée (doit attendre trame complète)

Latence typique : 10-40 µs

Usage : Standard sur switchs modernes


2. CUT-THROUGH (Coupe-au-travers)
   ────────────────────────────────

Fonctionnement :
- Lit seulement adresse MAC destination
- Transfère immédiatement
- Ne vérifie PAS erreurs

Avantages :
[OK] Latence très faible
[OK] Rapide

Inconvénients :
[X] Propage trames corrompues
[X] Pas de détection erreur

Latence typique : <10 µs

Usage : Switchs haute performance (data center, trading)


3. FRAGMENT-FREE (Sans-Fragment)
   ──────────────────────────────

Compromis entre les deux.

Fonctionnement :
- Lit 64 premiers octets
- Vérifie collisions (erreurs communes)
- Transfère

Avantages :
[OK] Latence basse
[OK] Détecte la plupart des erreurs

[IDEE] 64 octets = Taille minimum Ethernet
   Erreurs de collision se voient dans ces 64 octets


[GRAPHIQUE] COMPARAISON MODES

┌────────────────┬──────────────┬──────────────┬────────────┐
│     Mode       │   Latence    │   Fiabilité  │   Usage    │
├────────────────┼──────────────┼──────────────┼────────────┤
│Store-Forward   │   Moyenne    │   Excellente │  Standard  │
│Cut-Through     │   Très basse │   Faible     │Haute perf. │
│Fragment-Free   │    Basse     │    Bonne     │ Compromis  │
└────────────────┴──────────────┴──────────────┴────────────┘


FONCTIONS AVANCÉES

1. SPANNING TREE PROTOCOL (STP)
   ────────────────────────────

Évite boucles réseau.
-> Chapitre dédié plus tard

2. VLAN (Virtual LAN)
   ──────────────────

Segmentation logique du réseau.
-> Chapitre dédié plus tard

3. QoS (Quality of Service)
   ────────────────────────

Priorisation du trafic.
Exemple : VoIP prioritaire sur téléchargement

4. PORT MIRRORING (SPAN)
   ──────────────────────

Copie trafic d'un port vers un autre.
Usage : Analyse, monitoring (Wireshark)

5. LINK AGGREGATION (LACP)
   ────────────────────────

Groupe plusieurs ports en un seul lien logique.
Usage : Bande passante accrue, redondance

6. JUMBO FRAMES
   ────────────

Trames jusqu'à 9000 octets (vs 1500 standard)
Usage : Performance (moins d'overhead)
"""


# ----------------------------------------------------------------------------
# [LABEL] TYPES DE SWITCHS
# ----------------------------------------------------------------------------

"""
CLASSIFICATION PAR GESTION

1. SWITCH NON-MANAGEABLE (Unmanaged)
   ──────────────────────────────────

Caractéristiques :
- Plug & Play
- Aucune configuration
- Fonctionne immédiatement
- Pas d'interface admin

[GRAPHIQUE] Aspect physique :
┌──────────────────────────┐
│ [BLEU][BLEU][BLEU][BLEU][BLEU][BLEU][BLEU][BLEU]        │ <- Voyants LEDs
│  1  2  3  4  5  6  7  8  │ <- Ports RJ45
└──────────────────────────┘
  Pas de boutons ni écran

Avantages :
[OK] Très simple
[OK] Pas cher (30-80€)
[OK] Fiable
[OK] Pas de compétences requises

Inconvénients :
[X] Pas de VLANs
[X] Pas de QoS
[X] Pas de monitoring
[X] Pas de contrôle

Usage :
- Domicile
- Petite entreprise basique
- Extension simple réseau

Modèles populaires :
- Netgear GS108 (8 ports)
- TP-Link TL-SG108 (8 ports)
- D-Link DGS-1008G (8 ports)

[IDEE] "Multiprises réseau intelligentes"


2. SWITCH SMART (Administrable limité)
   ────────────────────────────────────

Caractéristiques :
- Interface web simple
- Configuration de base
- Fonctions essentielles
- Compromis prix/features

Fonctions typiques :
[OK] VLANs basiques
[OK] QoS simple
[OK] Link aggregation
[OK] Port mirroring
[OK] Monitoring limité
[X] Pas de CLI avancée
[X] Pas de routage L3

Avantages :
[OK] Prix modéré (100-300€)
[OK] Facile à configurer
[OK] Fonctions essentielles

Inconvénients :
[X] Limité vs fully managed
[X] Pas évolutif

Usage :
- PME
- Petits bureaux
- Segments réseau

Modèles populaires :
- Netgear GS308T (8 ports)
- TP-Link TL-SG2008 (8 ports)
- Ubiquiti UniFi Switch Lite (8/16 ports)


3. SWITCH MANAGEABLE (Fully Managed)
   ──────────────────────────────────

Caractéristiques :
- Configuration complète
- Interface CLI + Web
- Toutes fonctionnalités
- Professionnel

Fonctions :
[OK] VLANs avancés
[OK] QoS complet
[OK] STP/RSTP/MSTP
[OK] LACP
[OK] Port security
[OK] ACLs
[OK] SNMP monitoring
[OK] Routage L3 (certains)
[OK] Stacking

Interface :
- CLI (Command Line Interface) via SSH/Telnet
- Interface Web (GUI)
- Console (port série)

Avantages :
[OK] Contrôle total
[OK] Évolutif
[OK] Professionnel
[OK] Features complètes

Inconvénients :
[X] Cher (300-5000€+)
[X] Complexe (compétences requises)

Usage :
- Entreprise
- Data center
- Campus
- Réseaux critiques

Marques professionnelles :
- Cisco Catalyst
- HP/Aruba
- Juniper
- Dell
- Extreme Networks

Modèles populaires :
- Cisco Catalyst 2960 (24/48 ports)
- HP Aruba 2530 (24/48 ports)


[GRAPHIQUE] COMPARAISON GESTION

┌──────────────┬────────────┬──────────┬────────────┬─────────┐
│    Type      │    Prix    │   VLANs  │    QoS     │  Usage  │
├──────────────┼────────────┼──────────┼────────────┼─────────┤
│ Unmanaged    │  30-80 €   │    [X]    │     [X]     │Domicile │
│ Smart        │ 100-300 €  │    [OK]    │  Basique   │  PME    │
│ Managed      │ 300-5000 € │    [OK]    │  Complet   │Entreprise│
└──────────────┴────────────┴──────────┴────────────┴─────────┘


CLASSIFICATION PAR NIVEAU OSI

1. SWITCH LAYER 2 (L2) - Niveau Liaison
   ──────────────────────────────────────

Fonctionnement :
- Commutation basée sur MAC addresses
- Table MAC/CAM
- VLANs

Caractéristiques :
- Standard
- Pas de routage IP
- Un domaine de broadcast par VLAN

Usage : 95% des switchs

Exemple : Switch de bureau classique


2. SWITCH LAYER 3 (L3) - Niveau Réseau
   ──────────────────────────────────────

Fonctionnement :
- Commutation L2 + Routage L3
- Table MAC + Table de routage
- Routage inter-VLAN

[GRAPHIQUE] Schéma :

┌────────────────────────┐
│   Switch L3            │
│                        │
│  VLAN 10 (192.168.10.x)│
│  VLAN 20 (192.168.20.x)│
│                        │
│  Route entre VLANs     │ <- Pas besoin routeur externe
└────────────────────────┘

Avantages :
[OK] Routage rapide (matériel)
[OK] Pas de routeur externe
[OK] Performance élevée

Inconvénients :
[X] Plus cher
[X] Plus complexe

Usage :
- Cœur de réseau (core)
- Distribution
- Campus
- Data center

Exemple : Cisco Catalyst 3850 (L3)


[IDEE] Quand choisir L3 ?

Besoin routage inter-VLAN performant :
-> Switch L3

Routage Internet / WAN :
-> Routeur dédié

Simple commutation :
-> Switch L2


CLASSIFICATION PAR VITESSE

1. FAST ETHERNET (100 Mbps)
   ────────────────────────

Ports : 10/100 Mbps auto-négociation
Usage : Ancien, peu utilisé aujourd'hui

[IDEE] À éviter pour nouvelle installation


2. GIGABIT ETHERNET (1 Gbps)
   ──────────────────────────

Ports : 10/100/1000 Mbps
Standard actuel

Tous les switchs modernes sont Gigabit.

Prix : Très abordable


3. 10 GIGABIT ETHERNET (10 Gbps)
   ───────────────────────────────

Ports : SFP+ (fibre) ou 10GBASE-T (cuivre)

Usage :
- Uplinks (connexions backbone)
- Serveurs
- Stockage réseau (NAS/SAN)
- Agrégation

Configuration typique :
- 24 ports Gigabit (postes de travail)
- 2-4 ports 10G SFP+ (uplinks)

Prix : Plus élevé


4. 25/40/100 GIGABIT ETHERNET
   ───────────────────────────

Ports : QSFP+, QSFP28
Usage : Data centers exclusivement

[IDEE] Pour utilisateur normal : Gigabit suffit amplement


CLASSIFICATION PAR FORMAT

1. DESKTOP (Bureau)
   ────────────────

Format :
- Petit boîtier
- 5, 8, 16 ports
- Plastique
- Pose sur bureau

Alimentation : Adaptateur externe

Usage : Domicile, petit bureau

Prix : 30-150€

Exemple : Netgear GS108


2. RACK-MOUNTABLE (Montable en rack)
   ──────────────────────────────────

Format :
- 19 pouces (standard rack)
- 1U de hauteur
- 24 ou 48 ports
- Métal
- Oreilles de fixation

Alimentation : Interne (IEC C14)

Usage : Entreprise, data center

Prix : 200-5000€

Exemple : Cisco Catalyst 2960


3. CHASSIS (Châssis modulaire)
   ───────────────────────────

Format :
- Très gros (plusieurs U)
- Slots pour modules
- Centaines de ports
- Redondance PSU/fans

Usage : Cœur réseau entreprise, data center

Prix : 10 000€+

Exemple : Cisco Catalyst 6500

Avantages :
[OK] Évolutif (ajout modules)
[OK] Haute disponibilité
[OK] Haute densité

[IDEE] Pour 99% des cas, switch fixe suffit


POE (POWER OVER ETHERNET)

DÉFINITION

PoE = Alimentation électrique via câble Ethernet.

Principe :
- Câble Ethernet transporte données + électricité
- Appareil alimenté sans prise électrique

[GRAPHIQUE] Schéma :

┌──────────────┐
│ Switch PoE   │
│   +power     │
└──────┬───────┘
       │
   Ethernet
   (data+power)
       │
┌──────[BLACK_DOWN-POINTING_TRIANGLE]───────┐
│ Point d'accès│ <- Alimenté par câble réseau
│    Wi-Fi     │   Pas de prise électrique
└──────────────┘


STANDARDS PoE

┌──────────────┬─────────────┬──────────┬────────────┐
│   Standard   │    Nom      │Puissance │   Usage    │
├──────────────┼─────────────┼──────────┼────────────┤
│ 802.3af      │ PoE         │ 15.4 W   │VoIP, AP bas│
│ 802.3at      │ PoE+        │ 30 W     │AP, caméras │
│ 802.3bt Type3│ PoE++/UPOE  │ 60 W     │AP Wi-Fi 6  │
│ 802.3bt Type4│ PoE++       │ 100 W    │Écrans, PTZ │
└──────────────┴─────────────┴──────────┴────────────┘

[IDEE] PoE+ (802.3at) = le plus courant aujourd'hui


APPAREILS PoE

Typiquement alimentés par PoE :
[OK] Points d'accès Wi-Fi
[OK] Téléphones IP (VoIP)
[OK] Caméras IP
[OK] Contrôleurs d'accès (badges)
[OK] Détecteurs (capteurs IoT)
[OK] Écrans/Afficheurs
[OK] Petits switchs (PoE passthrough)

[X] PCs, imprimantes (trop gourmands)


SWITCH PoE

Types :

1. Switch PoE complet
   - Tous les ports PoE
   - Budget power élevé (250-740W)
   - Prix : +50-100% vs non-PoE

2. Switch PoE partiel
   - Ex : 24 ports, dont 12 PoE
   - Budget limité
   - Prix : +30-50%

Budget PoE :
- Switch 24 ports PoE+ (30W/port)
- Budget total : 370-740W
- Pas tous les ports au max simultanément

Exemple :
Switch 24p PoE+ budget 370W
-> Max ~12 appareils à 30W simultanés
-> OU 24 appareils à 15W

[IDEE] Bien calculer besoins PoE !


AVANTAGES PoE

[OK] Installation simplifiée
   - Pas de prise électrique nécessaire
   - Pas d'électricien
   
[OK] Flexibilité emplacement
   - AP au plafond
   - Caméra en extérieur
   
[OK] Coût réduit
   - Moins de câblage électrique
   
[OK] Gestion centralisée
   - Redémarrage à distance (reboot PoE)
   - Monitoring consommation

[OK] Onduleur unique
   - Switch sur UPS -> Tous appareils PoE protégés


INJECTEUR PoE

Appareil pour ajouter PoE sur switch non-PoE.

[GRAPHIQUE] Schéma :

[Switch]──Ethernet──[Injecteur PoE]──Ethernet+Power──[AP]
 non-PoE                │
                    [Adaptateur
                     électrique]

Usage :
- Switch existant non-PoE
- Alimenter 1-2 appareils

Prix : 15-40€ par injecteur

[IDEE] Si >4 appareils PoE -> Acheter switch PoE plus rentable
"""


# ----------------------------------------------------------------------------
# [OUTIL] CONFIGURATION DE BASE D'UN SWITCH MANAGEABLE
# ----------------------------------------------------------------------------

"""
CONNEXION AU SWITCH

Méthodes :

1. PORT CONSOLE (Première config)
   ──────────────────────────────

Matériel :
- Câble console (RJ45 vers DB9 ou USB)
- PC avec logiciel terminal (PuTTY, Tera Term)

Configuration port série :
- Baud rate : 9600
- Data bits : 8
- Parity : None
- Stop bits : 1
- Flow control : None

[IDEE] Appelé "9600 8N1"


2. TELNET (Non sécurisé) [X]
   ───────────────────────

telnet 192.168.1.1

[ATTENTION] Mot de passe en clair -> NE PAS UTILISER


3. SSH (Sécurisé) [OK]
   ─────────────────

ssh admin@192.168.1.1

[IDEE] Toujours préférer SSH à Telnet


4. INTERFACE WEB (GUI)
   ───────────────────

https://192.168.1.1

Plus facile pour débutants


CONFIGURATION INITIALE (Exemple Cisco)

[OUTIL] PREMIÈRE CONNEXION

Switch>                           <- Mode utilisateur
Switch> enable                    <- Passer en mode privilégié
Switch#                           <- Mode privilégié (prompt #)


[OUTIL] MODE CONFIGURATION

Switch# configure terminal        <- Entrer mode configuration
Switch(config)#                   <- Mode config globale


[OUTIL] NOM DU SWITCH

Switch(config)# hostname SW-Bureau-01
SW-Bureau-01(config)#            <- Nom changé


[OUTIL] MOT DE PASSE CONSOLE

SW-Bureau-01(config)# line console 0
SW-Bureau-01(config-line)# password MonMotDePasse
SW-Bureau-01(config-line)# login
SW-Bureau-01(config-line)# exit


[OUTIL] MOT DE PASSE ENABLE (Privilégié)

SW-Bureau-01(config)# enable secret MotDePasseSecret


[OUTIL] ADRESSE IP DU SWITCH

! Interface de gestion (VLAN 1 par défaut)
SW-Bureau-01(config)# interface vlan 1
SW-Bureau-01(config-if)# ip address 192.168.1.10 255.255.255.0
SW-Bureau-01(config-if)# no shutdown
SW-Bureau-01(config-if)# exit


[OUTIL] PASSERELLE PAR DÉFAUT

SW-Bureau-01(config)# ip default-gateway 192.168.1.1


[OUTIL] ACTIVER SSH

! Générer clés RSA
SW-Bureau-01(config)# crypto key generate rsa
How many bits in the modulus [512]: 2048

! Configurer SSH
SW-Bureau-01(config)# ip domain-name monentreprise.local
SW-Bureau-01(config)# line vty 0 15
SW-Bureau-01(config-line)# transport input ssh
SW-Bureau-01(config-line)# login local
SW-Bureau-01(config-line)# exit

! Créer utilisateur
SW-Bureau-01(config)# username admin privilege 15 secret AdminPass123


[OUTIL] SAUVEGARDER CONFIGURATION

SW-Bureau-01# copy running-config startup-config
! ou
SW-Bureau-01# write memory
! ou
SW-Bureau-01# wr

[IDEE] IMPORTANT : Toujours sauvegarder après modifications !


COMMANDES DE BASE (Cisco)

[RECHERCHE] AFFICHAGE

! Voir configuration actuelle
show running-config

! Voir configuration sauvegardée
show startup-config

! Voir table MAC
show mac address-table

! Voir interfaces
show interfaces status
show interfaces gigabitEthernet 0/1

! Voir VLANs
show vlan brief

! Voir version IOS
show version

! Voir spanning-tree
show spanning-tree


[OUTIL] CONFIGURATION PORT

! Configurer un port
interface gigabitEthernet 0/10
 description PC-Comptabilite-01
 switchport mode access
 switchport access vlan 10
 no shutdown


[OUTIL] PORT RANGE (Plusieurs ports)

! Configurer ports 1 à 24
interface range gigabitEthernet 0/1-24
 switchport mode access
 switchport access vlan 10


[OUTIL] DÉSACTIVER PORT

interface gigabitEthernet 0/5
 shutdown                           <- Désactive le port

! Réactiver
interface gigabitEthernet 0/5
 no shutdown


[OUTIL] PORT SECURITY

! Limiter nombre de MAC sur port
interface gigabitEthernet 0/10
 switchport port-security
 switchport port-security maximum 2           <- Max 2 MACs
 switchport port-security violation shutdown  <- Action si violation
 switchport port-security mac-address sticky  <- Apprend MACs auto


[IDEE] MODES CLI CISCO

Switch>                      Mode utilisateur (lecture seule)
Switch> enable              -> Passer en mode privilégié

Switch#                      Mode privilégié
Switch# configure terminal  -> Passer en mode config

Switch(config)#              Mode config globale
Switch(config)# interface g0/1 -> Config interface

Switch(config-if)#           Mode config interface
Switch(config-if)# exit     -> Retour config globale


COMMANDES ÉQUIVALENTS AUTRES MARQUES

HP/Aruba :
show mac-address             <- Table MAC
show vlans                   <- VLANs
show run                     <- Config

Dell :
show mac address-table
show vlan
show running-config


[IDEE] Syntaxe varie selon constructeur, mais concepts identiques


MONITORING

[RECHERCHE] VOYANTS LED

Switch typique :

[VERT] Power : Alimenté
[VERT] Link/Act (par port) : Liaison active
[ORANGE] Speed (par port) : 
   - Éteint : 10 Mbps
   - Orange : 100 Mbps  
   - Vert : 1000 Mbps (Gigabit)
[ROUGE] PoE (si PoE) : Alimentation PoE active


[GRAPHIQUE] LECTURE VOYANTS

Port 1 : [VERT] Vert stable        -> Liaison 1 Gbps, pas de trafic
Port 2 : [VERT] Vert clignotant   -> Liaison 1 Gbps, trafic actif
Port 3 : [ORANGE] Orange clignotant -> Liaison 100 Mbps, trafic actif
Port 4 : [NOIR] Éteint             -> Pas de liaison (câble débranché)

[IDEE] Clignotement = Trafic réseau


SNMP (Simple Network Management Protocol)

Protocole pour monitoring réseau.

Fonctionnement :
- Switch = Agent SNMP
- Logiciel = Manager SNMP
- Manager interroge agent
- Agent répond avec données (CPU, trafic, erreurs)

Configuration SNMP (Cisco) :

snmp-server community public RO      <- Community string (lecture)
snmp-server community private RW     <- Community string (écriture)
snmp-server location "Bureau Paris"
snmp-server contact "admin@entreprise.fr"

[ATTENTION] Versions SNMP :
- SNMPv1/v2c : Pas sécurisé (community strings en clair)
- SNMPv3 : Sécurisé (authentification + chiffrement)

[IDEE] Toujours utiliser SNMPv3 si possible


LOGICIELS MONITORING

Gratuits :
- PRTG (gratuit jusqu'à 100 capteurs)
- Zabbix
- Cacti
- LibreNMS
- Observium

Payants :
- SolarWinds
- PRTG (version complète)
- ManageEngine OpManager

[IDEE] Monitoring essentiel pour réseau professionnel
"""


# ============================================================================
# [COURS] EXERCICES PRATIQUES - CHAPITRE 2
# ============================================================================


# ----------------------------------------------------------------------------
# [COURS] EXERCICE 1 : CHOIX ET DIMENSIONNEMENT SWITCHS
# ----------------------------------------------------------------------------

"""
[LISTE] ÉNONCÉ

Une entreprise souhaite équiper son nouveau bureau.

CONFIGURATION :
- 1 étage, 4 salles
- Salle A : 12 postes de travail
- Salle B : 8 postes de travail  
- Salle C : 6 postes de travail (comptabilité)
- Salle D : Salle de réunion (5 postes + 1 écran)

ÉQUIPEMENTS SUPPLÉMENTAIRES :
- 3 imprimantes réseau (une par salle A/B/C)
- 2 points d'accès Wi-Fi (PoE requis)
- 1 serveur (dans salle technique)
- 1 NAS (stockage)
- 1 routeur/firewall

BESOINS :
- Segmentation comptabilité (sécurité)
- Wi-Fi pour visiteurs (isolé)
- Évolution : +20% postes dans 2 ans
- Monitoring réseau souhaité
- Budget : 2000€ pour switchs


[OBJECTIF] QUESTIONS

1. Calculez le nombre total de ports nécessaires.

2. Proposez une architecture switchs :
   - Combien de switchs ?
   - Quel type (manageable/non-manageable) ?
   - Quelles capacités (24p, 48p) ?
   - PoE nécessaire ?

3. Schématisez l'architecture réseau.

4. Listez les équipements avec modèles et prix estimés.

5. Justifiez chaque choix technique.

6. Configuration basique du switch principal (nom, IP, SSH).


[OK] CORRECTION DÉTAILLÉE

1. CALCUL PORTS NÉCESSAIRES
   ────────────────────────

Postes de travail :
- Salle A : 12
- Salle B : 8
- Salle C : 6
- Salle D : 5
Total PCs : 31 ports

Équipements :
- Imprimantes : 3
- APs Wi-Fi : 2 (PoE requis)
- Serveur : 1
- NAS : 1
- Routeur : 1

Total équipements : 8 ports

Liaisons inter-switchs :
- Estimer 2-4 liens

TOTAL ACTUEL : 31 + 8 + 3 = 42 ports

Évolution +20% : 
42 × 1.20 = 50 ports

Marge sécurité 10% :
50 × 1.10 = 55 ports

[GRAPHIQUE] BESOIN : ~55 ports


2. ARCHITECTURE PROPOSÉE
   ─────────────────────

OPTION 1 : Switch central unique
─────────────────────────────────

[X] PROBLÈME : Distance
- Salle A, B, C, D réparties
- Câbles trop longs (>100m possible)
- Coût câblage élevé

-> Pas optimal


OPTION 2 : Switch par salle (4 switchs)
────────────────────────────────────────

[X] PROBLÈME : Budget et gestion
- 4 switchs × 500€ = 2000€
- Pas de switch central
- Gestion complexe
- Pas de budget pour switch core

-> Pas optimal


OPTION 3 : Switch central + Switchs d'accès [OK]
───────────────────────────────────────────────

Architecture :

                ┌──────────────┐
                │ Switch CORE  │
                │  Manageable  │
                │   24 ports   │
                │   4× PoE+    │
                └──────┬───────┘
                       │
         ┌─────────────┼─────────────┬──────────┐
         │             │             │          │
    ┌────[BLACK_DOWN-POINTING_TRIANGLE]────┐   ┌───[BLACK_DOWN-POINTING_TRIANGLE]────┐   ┌───[BLACK_DOWN-POINTING_TRIANGLE]────┐  ┌──[BLACK_DOWN-POINTING_TRIANGLE]───┐
    │ SW-A    │   │ SW-B   │   │ SW-C   │  │Router│
    │ 16p     │   │ 8p     │   │ 8p     │  └──────┘
    │Unmanaged│   │Unmanaged│  │Unmanaged│
    └────┬────┘   └───┬────┘   └───┬────┘
         │            │            │
    Salle A       Salle B      Salle C
    12 PCs        8 PCs        6 PCs
    + Printer     + Printer    + Printer

Salle D (réunion) : Directement sur switch central

Justification :
[OK] Switch central manageable (VLANs, monitoring)
[OK] Switchs d'accès pas chers (unmanaged OK)
[OK] Câblage court depuis chaque salle
[OK] Évolutif
[OK] Budget respecté


OPTION 4 : 2 Switchs centraux (MEILLEUR) [OK]
────────────────────────────────────────────

Architecture :

                ┌──────────────┐
                │ Switch CORE  │
                │  Manageable  │
                │   48 ports   │
                │   8× PoE+    │
                └──────┬───────┘
                       │
         ┌─────────────┼─────────────┬──────────┐
         │             │             │          │
    ┌────[BLACK_DOWN-POINTING_TRIANGLE]────┐   ┌───[BLACK_DOWN-POINTING_TRIANGLE]────┐   ┌───[BLACK_DOWN-POINTING_TRIANGLE]────┐  ┌──[BLACK_DOWN-POINTING_TRIANGLE]───┐
    │ SW-ACC  │   │ SW-ACC │   │ Serveur│  │Router│
    │ 24p     │   │ 24p    │   │ + NAS  │  └──────┘
    │Unmanaged│   │Unmanaged│  └────────┘
    └────┬────┘   └───┬────┘
         │            │
    ┌────┼────┬───────┼────┬─────┐
    │    │    │       │    │     │
  Salle  A  Printer  Salle B  Printer

Répartition :
- SW-ACC-1 : Salle A (12) + Salle C (6) + 2 imprimantes + 1 AP
- SW-ACC-2 : Salle B (8) + Salle D (5) + 1 imprimante + 1 AP
- Switch Core : Serveur, NAS, Routeur, uplinks vers SW-ACC

Avantages :
[OK] Plus simple (moins de switchs)
[OK] Tous les câbles convergent vers local technique
[OK] Switch central a PoE pour APs
[OK] Évolutif (ports libres)


3. SCHÉMA DÉTAILLÉ
   ───────────────

[GRAPHIQUE] ARCHITECTURE RETENUE (Option 4)

Local Technique :
┌─────────────────────────────────────────┐
│                                         │
│  ┌──────────────────────────────────┐   │
│  │  Switch Core (Manageable)        │   │
│  │  48 ports Gigabit + 8 PoE+       │   │
│  │  - VLAN 10 : Général             │   │
│  │  - VLAN 20 : Comptabilité (C)    │   │
│  │  - VLAN 30 : Wi-Fi Visiteurs     │   │
│  └───┬──┬──┬──┬──┬──┬──┬──┬──┬─────┘   │
│      │  │  │  │  │  │  │  │  │         │
│      1  2  3  4  47 48 ...             │
│      │  │  │  │  │  │                  │
│      │  │  │  │  │  │                  │
│      │  │  │  │  │  └─[Routeur]        │
│      │  │  │  │  │                     │
│      │  │  │  │  └────[Serveur]        │
│      │  │  │  └───────[NAS]            │
│      │  │  │                           │
│      │  │  └──────────[SW-ACC-2] 24p   │
│      │  │                (Unmanaged)   │
│      │  └─────────────[SW-ACC-1] 24p   │
│      │                 (Unmanaged)     │
│      │                                 │
│      └────────────────[AP Wi-Fi #1]    │ <- PoE
│                                         │
└─────────────────────────────────────────┘

Via SW-ACC-1 :
├─ Salle A : 12 PCs
├─ Salle C : 6 PCs (VLAN 20)
└─ Imprimantes A, C

Via SW-ACC-2 :
├─ Salle B : 8 PCs
├─ Salle D : 5 PCs (réunion)
├─ Imprimante B
└─ AP Wi-Fi #2


4. LISTE ÉQUIPEMENTS ET BUDGET
   ───────────────────────────

┌────────────────────────────────┬─────┬────────┬──────────┐
│ Équipement                     │ Qté │ Prix U.│  Total   │
├────────────────────────────────┼─────┼────────┼──────────┤
│ Switch 48p Gigabit Manageable  │  1  │ 800 €  │  800 €   │
│ avec 8 ports PoE+              │     │        │          │
│ (ex: Netgear GS752TPv2)        │     │        │          │
├────────────────────────────────┼─────┼────────┼──────────┤
│ Switch 24p Gigabit Unmanaged   │  2  │ 150 €  │  300 €   │
│ (ex: Netgear GS324)            │     │        │          │
├────────────────────────────────┼─────┼────────┼──────────┤
│ Câble Ethernet Cat6 (100m)     │  6  │  60 €  │  360 €   │
├────────────────────────────────┼─────┼────────┼──────────┤
│ Panel de brassage 48p Cat6     │  1  │  80 €  │   80 €   │
├────────────────────────────────┼─────┼────────┼──────────┤
│ Connecteurs RJ45 (boîte 100)   │  1  │  30 €  │   30 €   │
├────────────────────────────────┼─────┼────────┼──────────┤
│ Baie de brassage murale 12U    │  1  │ 150 €  │  150 €   │
├────────────────────────────────┼─────┼────────┼──────────┤
│ Onduleur (UPS) 1000VA          │  1  │ 200 €  │  200 €   │
├────────────────────────────────┼─────┼────────┼──────────┤
│ TOTAL                          │     │        │ 1920 €   │
└────────────────────────────────┴─────┴────────┴──────────┘

Budget switchs : 800 + 300 = 1100€ [OK]
Budget total infrastructure : 1920€ [OK] (sous les 2000€)


5. JUSTIFICATIONS TECHNIQUES
   ─────────────────────────

SWITCH CORE MANAGEABLE
──────────────────────

Pourquoi manageable ?
[OK] VLANs nécessaires (isoler comptabilité + Wi-Fi)
[OK] Monitoring (SNMP pour supervision)
[OK] QoS (prioriser VoIP si ajouté plus tard)
[OK] Port security (sécurité)
[OK] Évolutif

Pourquoi 48 ports ?
[OK] Uplinks vers 2 switchs d'accès (2 ports)
[OK] Serveur + NAS + Routeur (3 ports)
[OK] APs Wi-Fi via PoE (2 ports)
[OK] Salle D direct (5 PCs + écran = 6 ports)
[OK] Total utilisé : ~15 ports
[OK] Marge : 33 ports libres (évolution +20% OK)

Pourquoi PoE ?
[OK] APs Wi-Fi alimentés par switch
[OK] Pas besoin prises électriques au plafond
[OK] Installation simplifiée
[OK] 2 APs × 15W = 30W (8 ports PoE+ suffisent)


SWITCHS D'ACCÈS UNMANAGED
──────────────────────────

Pourquoi unmanaged ?
[OK] Moins cher (150€ vs 500€)
[OK] Suffisant pour postes de travail
[OK] VLANs gérés par switch core
[OK] Plug & play (pas de config)

Pourquoi 24 ports ?
[OK] SW-ACC-1 : 12 + 6 + 2 + 1 = 21 ports (marge)
[OK] SW-ACC-2 : 8 + 5 + 1 + 1 = 15 ports (marge)


CÂBLAGE CAT6
────────────

Pourquoi Cat6 ?
[OK] Support Gigabit (1 Gbps)
[OK] Prêt 10 Gbps courte distance
[OK] Standard actuel
[OK] Pérenne (10+ ans)
[OK] Prix raisonnable


INFRASTRUCTURE
──────────────

Panel de brassage :
[OK] Centralisation câbles
[OK] Organisation professionnelle
[OK] Maintenance facilitée

Baie de brassage :
[OK] Protection équipements
[OK] Organisation verticale
[OK] Ventilation

Onduleur (UPS) :
[OK] Protection coupure électrique
[OK] Évite perte données serveur
[OK] Switch core reste actif


6. CONFIGURATION SWITCH CORE
   ─────────────────────────

[OUTIL] CONNEXION INITIALE (Console)

Switch> enable
Switch# configure terminal


[OUTIL] CONFIGURATION DE BASE

! Nom du switch
Switch(config)# hostname SW-CORE-01
SW-CORE-01(config)#

! Bannière
SW-CORE-01(config)# banner motd #
***********************************************
*  SWITCH CORE - Acces Autorise Uniquement  *
*  Contact: admin@entreprise.fr             *
***********************************************
#


[OUTIL] MOTS DE PASSE

! Mot de passe console
SW-CORE-01(config)# line console 0
SW-CORE-01(config-line)# password Console123
SW-CORE-01(config-line)# login
SW-CORE-01(config-line)# logging synchronous
SW-CORE-01(config-line)# exit

! Mot de passe enable
SW-CORE-01(config)# enable secret Admin456

! Chiffrement mots de passe
SW-CORE-01(config)# service password-encryption


[OUTIL] CONFIGURATION IP

! Interface de gestion (VLAN 1)
SW-CORE-01(config)# interface vlan 1
SW-CORE-01(config-if)# ip address 192.168.1.10 255.255.255.0
SW-CORE-01(config-if)# description Management-Interface
SW-CORE-01(config-if)# no shutdown
SW-CORE-01(config-if)# exit

! Passerelle par défaut
SW-CORE-01(config)# ip default-gateway 192.168.1.1


[OUTIL] CRÉATION VLANs

! VLAN 10 : Général
SW-CORE-01(config)# vlan 10
SW-CORE-01(config-vlan)# name Utilisateurs-General
SW-CORE-01(config-vlan)# exit

! VLAN 20 : Comptabilité (sécurisé)
SW-CORE-01(config)# vlan 20
SW-CORE-01(config-vlan)# name Comptabilite-Secure
SW-CORE-01(config-vlan)# exit

! VLAN 30 : Wi-Fi Visiteurs (isolé)
SW-CORE-01(config)# vlan 30
SW-CORE-01(config-vlan)# name WiFi-Visiteurs
SW-CORE-01(config-vlan)# exit

! VLAN 99 : Management
SW-CORE-01(config)# vlan 99
SW-CORE-01(config-vlan)# name Management
SW-CORE-01(config-vlan)# exit


[OUTIL] AFFECTATION PORTS

! Ports vers switchs d'accès (trunk)
SW-CORE-01(config)# interface range gigabitEthernet 1/0/1-2
SW-CORE-01(config-if-range)# description Uplinks-SW-Access
SW-CORE-01(config-if-range)# switchport mode trunk
SW-CORE-01(config-if-range)# switchport trunk allowed vlan 10,20,30
SW-CORE-01(config-if-range)# exit

! Port vers routeur
SW-CORE-01(config)# interface gigabitEthernet 1/0/48
SW-CORE-01(config-if)# description Routeur-Firewall
SW-CORE-01(config-if)# switchport mode access
SW-CORE-01(config-if)# switchport access vlan 99
SW-CORE-01(config-if)# exit

! Ports serveurs (VLAN 10)
SW-CORE-01(config)# interface range gigabitEthernet 1/0/45-46
SW-CORE-01(config-if-range)# description Serveur-NAS
SW-CORE-01(config-if-range)# switchport mode access
SW-CORE-01(config-if-range)# switchport access vlan 10
SW-CORE-01(config-if-range)# exit

! Ports APs Wi-Fi avec PoE (VLAN 30 pour visiteurs)
SW-CORE-01(config)# interface range gigabitEthernet 1/0/3-4
SW-CORE-01(config-if-range)# description Access-Points-WiFi
SW-CORE-01(config-if-range)# switchport mode access
SW-CORE-01(config-if-range)# switchport access vlan 30
SW-CORE-01(config-if-range)# power inline auto
SW-CORE-01(config-if-range)# exit


[OUTIL] CONFIGURATION SSH

! Domaine
SW-CORE-01(config)# ip domain-name entreprise.local

! Générer clés RSA
SW-CORE-01(config)# crypto key generate rsa
How many bits: 2048

! VTY (Telnet/SSH)
SW-CORE-01(config)# line vty 0 15
SW-CORE-01(config-line)# transport input ssh
SW-CORE-01(config-line)# login local
SW-CORE-01(config-line)# exit

! Utilisateur admin
SW-CORE-01(config)# username admin privilege 15 secret AdminSSH789


[OUTIL] SNMP (Monitoring)

SW-CORE-01(config)# snmp-server community MonitPublic RO
SW-CORE-01(config)# snmp-server location "Local Technique - Bureau Paris"
SW-CORE-01(config)# snmp-server contact "admin@entreprise.fr"


[OUTIL] SAUVEGARDER

SW-CORE-01(config)# exit
SW-CORE-01# write memory
Building configuration...
[OK]


[OUTIL] VÉRIFICATIONS

! Voir VLANs
SW-CORE-01# show vlan brief

! Voir config ports
SW-CORE-01# show interfaces status

! Voir table MAC
SW-CORE-01# show mac address-table

! Voir PoE
SW-CORE-01# show power inline

! Tester SSH depuis PC
PC> ssh admin@192.168.1.10


[GRAPHIQUE] RÉSUMÉ CONFIGURATION

Ports utilisés :
- 1-2 : Uplinks switchs accès (Trunk VLANs 10,20,30)
- 3-4 : APs Wi-Fi (Access VLAN 30, PoE)
- 45-46 : Serveur + NAS (Access VLAN 10)
- 48 : Routeur (Access VLAN 99)

VLANs :
- VLAN 10 : Utilisateurs général + serveurs
- VLAN 20 : Comptabilité (isolée)
- VLAN 30 : Wi-Fi visiteurs (isolé)
- VLAN 99 : Management

Sécurité :
- SSH uniquement (pas de Telnet)
- Mots de passe chiffrés
- Utilisateur local pour SSH

Monitoring :
- SNMP activé
- IP management : 192.168.1.10


[OBJECTIF] POINTS CLÉS SOLUTION

1. ARCHITECTURE ÉVOLUTIVE [OK]
   - 33 ports libres sur core
   - Switchs accès extensibles

2. SEGMENTATION SÉCURITÉ [OK]
   - VLAN 20 comptabilité isolé
   - VLAN 30 Wi-Fi visiteurs isolé

3. POE INTÉGRÉ [OK]
   - APs alimentés par switch
   - Installation simplifiée

4. MANAGEMENT PROFESSIONNEL [OK]
   - Switch core manageable
   - Monitoring SNMP
   - SSH sécurisé

5. BUDGET RESPECTÉ [OK]
   - 1920€ total
   - Sous les 2000€ demandés

6. ÉVOLUTIVITÉ +20% [OK]
   - Ports libres suffisants
   - Infrastructure pérenne
"""


# ----------------------------------------------------------------------------
# [COURS] EXERCICE 2 : DIAGNOSTIC PROBLÈMES SWITCH
# ----------------------------------------------------------------------------

"""
[LISTE] ÉNONCÉ

Vous êtes technicien réseau. Plusieurs problèmes sont rapportés :

PROBLÈME 1 : PC ne se connecte pas
──────────────────────────────────

Situation :
- PC nouvellement installé bureau 205
- Câble Ethernet branché
- Voyant LAN carte réseau : éteint
- ipconfig : "Média déconnecté"

PROBLÈME 2 : Lenteurs réseau généralisées
──────────────────────────────────────────

Situation :
- Tous les utilisateurs se plaignent
- Lenteurs depuis ce matin
- Hier tout fonctionnait
- Switch 24 ports, 20 utilisateurs

PROBLÈME 3 : PC se connecte mais pas d'Internet
────────────────────────────────────────────────

Situation :
- PC se connecte au réseau local
- Ping vers autres PCs : OK
- Ping vers 8.8.8.8 (Google DNS) : Échec
- Autres PCs ont Internet normalement

PROBLÈME 4 : Déconnexions intermittentes
─────────────────────────────────────────

Situation :
- PC bureau 310 perd connexion régulièrement
- Toutes les 10-30 minutes
- Dure 1-2 minutes puis revient
- Câble neuf installé la semaine dernière


[OBJECTIF] QUESTIONS

Pour chaque problème :

1. Identifiez les causes possibles (au moins 3).

2. Proposez un diagnostic méthodique (étapes).

3. Pour chaque cause, donnez la solution.

4. Commandes/outils de diagnostic à utiliser.


[OK] CORRECTION DÉTAILLÉE

PROBLÈME 1 : PC NE SE CONNECTE PAS
══════════════════════════════════

[RECHERCHE] CAUSES POSSIBLES

1. CÂBLE DÉFECTUEUX/DÉBRANCHÉ
   ───────────────────────────
   
   - Câble coupé
   - Connecteurs mal sertis
   - Câble débranché côté switch
   - Mauvais câble (croisé au lieu de droit)

2. PORT SWITCH DÉSACTIVÉ
   ─────────────────────
   
   - Administrateur a désactivé (shutdown)
   - Port automatiquement désactivé (err-disabled)
   - Port security violation

3. PORT SWITCH DÉFECTUEUX
   ──────────────────────
   
   - Panne matérielle port
   - Port endommagé physiquement

4. CARTE RÉSEAU PC DÉFECTUEUSE
   ────────────────────────────
   
   - Driver carte réseau corrompu
   - Carte réseau désactivée dans Windows
   - Panne matérielle NIC

5. MAUVAISE PRISE MURALE
   ──────────────────────
   
   - Prise non raccordée au panel
   - Câblage mural défectueux


[LISTE] DIAGNOSTIC MÉTHODIQUE

ÉTAPE 1 : VÉRIFICATION VISUELLE BASIQUE
────────────────────────────────────────

Actions :
[OK] Vérifier câble bien branché des 2 côtés
[OK] Vérifier pas de dégât visible câble
[OK] Vérifier voyant carte réseau PC
[OK] Vérifier voyant port switch

Résultat attendu :
- Voyant LAN PC : Vert/Orange (liaison)
- Voyant port switch : Vert/Orange (liaison + trafic)

Si voyants éteints -> Pas de liaison physique


ÉTAPE 2 : TEST CARTE RÉSEAU PC
───────────────────────────────

Sur PC :

Windows :
1. Panneau de configuration
2. Réseau et Internet
3. Centre Réseau et partage
4. Modifier paramètres carte
5. Vérifier carte réseau activée

Ou :
devmgmt.msc -> Cartes réseau -> Vérifier pas de [ATTENTION]

ipconfig /all

Si "Média déconnecté" -> Carte détecte pas de liaison


ÉTAPE 3 : TEST AVEC AUTRE CÂBLE
────────────────────────────────

Remplacer par câble fonctionnel connu.

Si fonctionne -> Câble défectueux
Si ne fonctionne pas -> Problème ailleurs


ÉTAPE 4 : TEST AUTRE PORT SWITCH
─────────────────────────────────

Brancher sur port voisin du switch.

Si fonctionne -> Port switch défectueux
Si ne fonctionne pas -> Problème câble mural ou PC


ÉTAPE 5 : TEST PC SUR AUTRE PRISE
──────────────────────────────────

Amener PC vers prise fonctionnelle connue.

Si fonctionne -> Problème câblage bureau 205
Si ne fonctionne pas -> Problème carte réseau PC


ÉTAPE 6 : VÉRIFIER CONFIG SWITCH (si manageable)
─────────────────────────────────────────────────

Connexion switch :
ssh admin@192.168.1.10

Commandes :

! Voir status port (exemple port 12)
show interface gigabitEthernet 0/12

Vérifier :
- Status : up ou down ?
- Protocol : up ou down ?
- err-disabled ?

! Si shutdown :
configure terminal
interface gigabitEthernet 0/12
no shutdown
exit

! Si err-disabled (port security) :
show port-security interface gigabitEthernet 0/12
! Voir raison

! Réactiver :
configure terminal
interface gigabitEthernet 0/12
shutdown
no shutdown
exit


[GRAPHIQUE] ARBRE DE DÉCISION

Voyants éteints PC + Switch ?
│
├─ OUI -> Pas de liaison physique
│        │
│        ├─ Tester autre câble
│        │  │
│        │  ├─ Fonctionne -> Câble défectueux
│        │  │               SOLUTION : Remplacer câble
│        │  │
│        │  └─ Ne fonctionne pas -> Tester autre port switch
│        │                          │
│        │                          ├─ Fonctionne -> Port switch HS
│        │                          │               SOLUTION : Utiliser autre port
│        │                          │
│        │                          └─ Ne fonctionne pas -> Problème câblage mural ou PC
│        │                                                 SOLUTION : Tester PC ailleurs
│
└─ NON -> Problème configuration


[OUTIL] SOLUTIONS PAR CAUSE

CAUSE : Câble défectueux
SOLUTION : 
- Remplacer câble
- Si câble mural : Tester continuité, refaire sertissage

CAUSE : Port switch désactivé
SOLUTION :
configure terminal
interface gigabitEthernet 0/X
no shutdown

CAUSE : Port err-disabled
SOLUTION :
interface gigabitEthernet 0/X
shutdown
no shutdown

Ou désactiver port-security si pas nécessaire :
interface gigabitEthernet 0/X
no switchport port-security

CAUSE : Port switch HS
SOLUTION :
- Utiliser autre port
- RMA switch si sous garantie

CAUSE : Carte réseau désactivée
SOLUTION :
- Windows : Activer carte dans paramètres réseau
- Réinstaller driver

CAUSE : Câblage mural défectueux
SOLUTION :
- Tester avec testeur câble
- Refaire sertissage prise murale
- Tirer nouveau câble si nécessaire


[OUTILS] OUTILS DIAGNOSTIC

[OK] Testeur de câble (15-50€)
[OK] Câble patch de rechange
[OK] Laptop pour tests
[OK] Accès SSH au switch
[OK] Console câble (si switch pas accessible réseau)



PROBLÈME 2 : LENTEURS GÉNÉRALISÉES
═══════════════════════════════════

[RECHERCHE] CAUSES POSSIBLES

1. BOUCLE RÉSEAU
   ─────────────
   
   Câble branché 2 fois entre mêmes switchs
   -> Tempête de broadcast
   -> Switch saturé

2. SWITCH SATURÉ (CPU/RAM)
   ───────────────────────
   
   - Trop de trafic
   - Table MAC pleine
   - Attaque DoS

3. PORT DÉFECTUEUX EN HALF-DUPLEX
   ────────────────────────────────
   
   - Auto-négociation échouée
   - Collisions constantes
   -> Performance dégradée

4. BROADCAST STORM (Tempête broadcast)
   ────────────────────────────────────
   
   - Appareil défectueux inonde réseau
   - Malware

5. NOUVEAU PC/SERVEUR GOURMAND
   ──────────────────────────────
   
   - Mise à jour Windows massive
   - Backup réseau
   - Téléchargement

6. STP RECALCULE
   ──────────────
   
   - Changement topologie
   - Spanning-tree converge
   -> Latence temporaire


[LISTE] DIAGNOSTIC MÉTHODIQUE

ÉTAPE 1 : VÉRIFIER VOYANTS SWITCH
──────────────────────────────────

Observer switch physiquement :

Voyants anormaux ?
- Clignotent tous en même temps -> Probable boucle/broadcast storm
- Un port clignote énormément -> Appareil sur ce port génère trafic

LED collision (si présente) :
- Allumée -> Problème duplex


ÉTAPE 2 : VÉRIFIER UTILISATION CPU/MÉMOIRE SWITCH
──────────────────────────────────────────────────

Connexion switch :

show processes cpu
show memory

CPU > 80% -> Switch surchargé
Mémoire > 90% -> Problème


ÉTAPE 3 : VÉRIFIER TABLE MAC
─────────────────────────────

show mac address-table count

Nombre d'entrées proche du maximum ?
-> Table MAC pleine
-> Switch en mode flooding permanent


ÉTAPE 4 : IDENTIFIER PORTS À FORT TRAFIC
─────────────────────────────────────────

show interfaces
show interfaces counters

Chercher :
- Taux d'erreurs élevé (errors, CRC)
- Trafic anormalement élevé
- Collisions (half-duplex)


ÉTAPE 5 : VÉRIFIER SPANNING TREE
─────────────────────────────────

show spanning-tree

État normal : Forwarding
État anormal : Blocking/Learning (reconverge)


ÉTAPE 6 : DÉSACTIVER PORTS UN PAR UN
─────────────────────────────────────

Méthode d'élimination :

Si problème apparu ce matin :
1. Lister changements depuis hier
2. Nouveau PC ? Nouvel équipement ?
3. Désactiver port du nouvel équipement
4. Problème persiste ?

Ou désactiver ports par blocs :
1. Désactiver ports 1-12
2. Problème persiste ?
3. Si non -> Coupable dans ports 1-12
4. Réactiver ports 1-6, désactiver 7-12
5. Etc. (dichotomie)


[GRAPHIQUE] SCÉNARIOS ET SOLUTIONS

SCÉNARIO 1 : Boucle réseau
──────────────────────────

Symptômes :
- Tous voyants clignotent frénétiquement
- CPU switch 100%
- Réseau quasi inutilisable

Diagnostic :
show spanning-tree
! Vérifier pas de boucle

show interfaces | include duplex
! Vérifier pas de ports en half-duplex anormal

show mac address-table | include Gi0/1
! Si même MAC sur plusieurs ports -> Boucle

Solution :
1. Identifier les 2 ports formant boucle
2. Désactiver un des 2 ports
interface gigabitEthernet 0/X
shutdown

3. Activer STP si pas déjà fait
spanning-tree mode rapid-pvst

Prévention :
[OK] Toujours activer STP
[OK] Documenter câblage
[OK] Étiqueter câbles


SCÉNARIO 2 : Appareil défectueux génère broadcast
──────────────────────────────────────────────────

Symptômes :
- Lenteurs progressives
- Un port clignote constamment
- show mac address-table : Une MAC sur un port change constamment

Diagnostic :
show interfaces gigabitEthernet 0/X
! in broadcast (reçus) et out broadcast très élevés

show interfaces gigabitEthernet 0/X | include minute
! X packets par minute anormal

Solution :
1. Identifier port :
show interfaces | include broadcast

2. Désactiver temporairement :
interface gigabitEthernet 0/X
shutdown

3. Réseau revient normal -> C'est ce port

4. Identifier appareil sur port :
show mac address-table interface gigabitEthernet 0/X

5. Vérifier appareil physiquement
   (driver réseau corrompu ? malware ?)


SCÉNARIO 3 : Duplex mismatch
─────────────────────────────

Symptômes :
- Lenteurs sur un ou plusieurs PCs
- Beaucoup de collisions

Diagnostic :
show interfaces gigabitEthernet 0/X

Chercher :
Half-duplex <===> Full-duplex (mismatch)
Collisions : nombreuses

Solution :
Forcer duplex :
interface gigabitEthernet 0/X
duplex full
speed 1000

Ou laisser auto :
duplex auto
speed auto


SCÉNARIO 4 : Mise à jour Windows massive
─────────────────────────────────────────

Symptômes :
- Lenteurs depuis ce matin
- Entreprise a PCs sous Windows
- Premier mardi du mois (Patch Tuesday Microsoft)

Diagnostic :
- Identifier PCs Windows
- Vérifier si mises à jour en cours

Solution temporaire :
QoS pour limiter trafic mises à jour

Solution permanente :
- Serveur WSUS local (mises à jour centralisées)
- Limiter bande passante Windows Update


[OUTIL] COMMANDES DIAGNOSTIC

! Vue d'ensemble
show interfaces status
show interfaces counters errors

! Erreurs par port
show interfaces gigabitEthernet 0/X
! Chercher : errors, CRC, collisions

! Trafic par port
show interfaces gigabitEthernet 0/X | include packets
show interfaces gigabitEthernet 0/X | include rate

! Table MAC
show mac address-table dynamic
show mac address-table count

! CPU et mémoire
show processes cpu sorted
show memory

! Spanning-tree
show spanning-tree
show spanning-tree summary

! Réinitialiser compteurs (après résolution)
clear counters


[OUTILS] OUTILS

[OK] Wireshark (capture trafic)
[OK] SNMP (monitoring graphique)
[OK] Port mirroring (analyser trafic port spécifique)



PROBLÈME 3 : PAS D'INTERNET (réseau local OK)
══════════════════════════════════════════════

[RECHERCHE] CAUSES POSSIBLES

1. PAS DE PASSERELLE PAR DÉFAUT
2. PASSERELLE INCORRECTE
3. MAUVAIS DNS
4. FIREWALL BLOQUE
5. ROUTEUR HORS LIGNE
6. PROBLÈME NAT SUR ROUTEUR
7. PAS D'ACCÈS INTERNET (FAI)


[LISTE] DIAGNOSTIC MÉTHODIQUE

ÉTAPE 1 : VÉRIFIER CONFIGURATION IP PC
───────────────────────────────────────

Windows :
ipconfig /all

Vérifier :
- Adresse IP : 192.168.1.X (ex)
- Masque : 255.255.255.0
- Passerelle par défaut : 192.168.1.1 (ex)
- DNS : 8.8.8.8, 1.1.1.1 (ex)

Si pas de passerelle -> PROBLÈME
Si passerelle incorrecte -> PROBLÈME


ÉTAPE 2 : TESTER PASSERELLE (routeur)
──────────────────────────────────────

ping 192.168.1.1

[OK] Répond -> Routeur accessible
[X] Timeout -> Routeur injoignable ou down


ÉTAPE 3 : TESTER INTERNET PAR IP
─────────────────────────────────

ping 8.8.8.8

[OK] Répond -> Connexion Internet OK (problème DNS)
[X] Timeout -> Pas de connexion Internet


ÉTAPE 4 : TESTER DNS
─────────────────────

nslookup google.com

[OK] Résout -> DNS OK
[X] Échec -> Problème DNS


ÉTAPE 5 : TRACEROUTE
─────────────────────

tracert 8.8.8.8

Résultats possibles :

  1    <1 ms    <1 ms    <1 ms  192.168.1.1 (passerelle)
  2     *        *        *     Request timed out.

-> Routeur ne route pas vers Internet


[GRAPHIQUE] ARBRE DE DÉCISION

Ping passerelle (routeur) ?
│
├─ NON -> Routeur injoignable
│        │
│        ├─ Vérifier câble PC <-> Switch <-> Routeur
│        ├─ Vérifier routeur allumé
│        └─ Vérifier IP passerelle correcte (ipconfig /all)
│
└─ OUI -> Routeur accessible
         │
         Ping 8.8.8.8 ?
         │
         ├─ NON -> Pas de connexion Internet
         │        │
         │        ├─ Vérifier NAT routeur
         │        ├─ Vérifier firewall routeur
         │        ├─ Vérifier connexion FAI
         │        └─ Tester depuis autre PC
         │
         └─ OUI -> Internet accessible
                  │
                  Ping google.com ?
                  │
                  ├─ NON -> Problème DNS
                  │        │
                  │        ├─ Vérifier DNS dans ipconfig /all
                  │        └─ Changer DNS (8.8.8.8 / 1.1.1.1)
                  │
                  └─ OUI -> Problème navigateur
                           (pas un problème réseau)


[OUTIL] SOLUTIONS PAR CAUSE

CAUSE : Pas de passerelle configurée
SOLUTION :
Windows :
1. Panneau de configuration
2. Réseau -> Propriétés carte
3. IPv4 -> Propriétés
4. Configurer passerelle : 192.168.1.1

Ou renouveler DHCP :
ipconfig /release
ipconfig /renew


CAUSE : Passerelle incorrecte
SOLUTION :
Corriger IP passerelle (voir ci-dessus)


CAUSE : Problème DNS
SOLUTION :
Changer serveurs DNS :
- Google : 8.8.8.8 / 8.8.4.4
- Cloudflare : 1.1.1.1 / 1.0.0.1

ipconfig /flushdns


CAUSE : Routeur ne route pas
SOLUTION :
Vérifier config routeur :
- NAT activé ?
- Firewall bloque ?
- Connexion WAN UP ?


CAUSE : FAI down
SOLUTION :
- Contacter FAI
- Vérifier voyants modem
- Redémarrer modem/routeur



PROBLÈME 4 : DÉCONNEXIONS INTERMITTENTES
═════════════════════════════════════════

[RECHERCHE] CAUSES POSSIBLES

1. CÂBLE ENDOMMAGÉ (pincement, torsion)
2. CONNECTEUR MAL SERTI
3. INTERFÉRENCES ÉLECTROMAGNÉTIQUES
4. PORT SWITCH INSTABLE
5. PORT SECURITY VIOLATIONS
6. SPANNING TREE INSTABLE
7. DRIVER CARTE RÉSEAU
8. ÉCONOMIE D'ÉNERGIE


[LISTE] DIAGNOSTIC MÉTHODIQUE

ÉTAPE 1 : OBSERVER PATTERN
───────────────────────────

Quand déconnexions ?
- À heures fixes ? (économie énergie, tâche planifiée)
- Aléatoire ?
- Lors d'utilisation intensive ?


ÉTAPE 2 : EXAMINER PHYSIQUEMENT CÂBLE
──────────────────────────────────────

Actions :
[OK] Suivre câble de A à Z
[OK] Chercher pincements (porte, meuble)
[OK] Chercher torsions
[OK] Vérifier connecteurs bien enfoncés
[OK] Chercher proximité sources EMI (transfo, moteur)


ÉTAPE 3 : VÉRIFIER LOGS SWITCH
───────────────────────────────

show logging | include Gi0/X

Chercher :
- Link down / Link up répétés
- err-disabled
- Port security violations


ÉTAPE 4 : VÉRIFIER STATISTIQUES PORT
─────────────────────────────────────

show interfaces gigabitEthernet 0/X

Chercher :
- Input errors élevé
- CRC errors
- Runts (trames trop courtes)
- Giants (trames trop longues)
- Collisions (si half-duplex)


ÉTAPE 5 : TESTER AVEC AUTRE CÂBLE
──────────────────────────────────

Remplacer câble par un neuf.

Problème persiste ?
-> Pas le câble
-> Continuer investigation


ÉTAPE 6 : TESTER SUR AUTRE PORT
────────────────────────────────

Brancher sur port voisin.

Problème résolu ?
-> Port switch défectueux


ÉTAPE 7 : VÉRIFIER ÉCONOMIE D'ÉNERGIE
──────────────────────────────────────

Windows :
1. Gestionnaire périphériques
2. Cartes réseau -> Propriétés
3. Gestion alimentation
4. Décocher "Autoriser extinction pour économiser"


[GRAPHIQUE] SCÉNARIOS ET SOLUTIONS

SCÉNARIO 1 : Câble pincé
────────────────────────

Symptômes :
- Déconnexions quand porte ouvre/ferme
- Câble passe sous porte

Solution :
- Refaire passage câble (goulotte, faux-plafond)
- Utiliser câble plus résistant (FTP)


SCÉNARIO 2 : Connecteur mal serti
──────────────────────────────────

Symptômes :
- Déconnexions aléatoires
- Connecteur bouge légèrement

Diagnostic :
- Testeur de câble : erreurs intermittentes

Solution :
- Refaire sertissage
- Remplacer connecteur


SCÉNARIO 3 : Interférences EMI
───────────────────────────────

Symptômes :
- Déconnexions quand certain équipement démarre
- Câble près transformateur / moteur

Diagnostic :
show interfaces Gi0/X
-> Erreurs CRC élevées

Solution :
- Éloigner câble de source EMI
- Utiliser câble blindé (STP/FTP)
- Réduire longueur câble


SCÉNARIO 4 : Port security violations
──────────────────────────────────────

Symptômes :
- Déconnexions exactement toutes les X minutes
- PC puis reconneté automatiquement

Diagnostic :
show port-security interface Gi0/X

Security violation count > 0 ?
-> Port security activé et MAC change

Solution :
Désactiver ou ajuster :
interface gigabitEthernet 0/X
no switchport port-security

Ou augmenter limite :
switchport port-security maximum 3


SCÉNARIO 5 : Économie d'énergie Windows
────────────────────────────────────────

Symptômes :
- Déconnexions après inactivité
- Réseau revient dès utilisation PC

Solution :
Désactiver économie énergie carte réseau (voir ÉTAPE 7)


SCÉNARIO 6 : Driver carte réseau
─────────────────────────────────

Symptômes :
- Déconnexions depuis mise à jour Windows
- Observatoire événements : Erreurs driver

Solution :
1. Désinstaller driver
2. Télécharger driver fabricant (pas Windows Update)
3. Installer manuellement
4. Redémarrer


[OUTIL] SOLUTIONS GÉNÉRALES

[OK] Tester avec câble neuf de qualité (Cat6)
[OK] Refaire sertissage connecteurs
[OK] Éloigner sources EMI
[OK] Désactiver économie énergie
[OK] Mettre à jour/réinstaller driver
[OK] Changer de port switch
[OK] Vérifier logs switch
[OK] Désactiver port security si pas nécessaire


[OUTILS] OUTILS

[OK] Testeur de câble
[OK] Logs switch (show logging)
[OK] Observateur événements Windows
[OK] Wireshark (capture déconnexions)
[OK] ping -t (surveillance continue)


[GRAPHIQUE] RÉSUMÉ DIAGNOSTIC SWITCHS

PROBLÈME              DIAGNOSTIC RAPIDE              SOLUTION
────────────────────────────────────────────────────────────
Pas de liaison        Voyants éteints                Test câble/port
Lenteurs              Voyants tous clignotent        Chercher boucle
Pas Internet          Ping passerelle puis 8.8.8.8   Vérifier route/NAT
Déconnexions          Logs switch + test câble       Remplacer câble

COMMANDES ESSENTIELLES :
- show interfaces
- show mac address-table
- show spanning-tree
- show logging
- show processes cpu
"""


# ============================================================================
# [DOCS] RÉSUMÉ CHAPITRE 2 - MATÉRIEL RÉSEAU
# ============================================================================

"""
[CLE] POINTS CLÉS À RETENIR

1. CÂBLES RÉSEAU
   ─────────────
   [OK] Cat6 = standard actuel
   [OK] Fibre pour longue distance/haut débit
   [OK] 100m max pour cuivre
   [OK] Sertissage correct critique
   [OK] T568B standard le plus utilisé

2. SWITCHS
   ───────
   [OK] Apprentissage automatique (table MAC)
   [OK] Commutation niveau 2 (adresses MAC)
   [OK] Full-duplex, pas de collision
   [OK] Manageable pour entreprise
   [OK] PoE pour APs/VoIP/caméras

3. TYPES SWITCHS
   ─────────────
   - Unmanaged : Domicile, simple
   - Smart : PME, features basiques
   - Managed : Entreprise, contrôle total
   - L2 : Commutation MAC
   - L3 : Commutation + routage IP

4. DIAGNOSTIC
   ──────────
   [OK] Méthodologie systématique
   [OK] Élimination par tests
   [OK] Logs et statistiques switch
   [OK] Outils : testeur câble, ping, show commands


[OBJECTIF] VOUS SAVEZ MAINTENANT :
[OK] Choisir et sertir câbles
[OK] Comprendre fonctionnement switch
[OK] Choisir type de switch adapté
[OK] Configurer switch manageable
[OK] Diagnostiquer problèmes courants
[OK] Concevoir infrastructure réseau


-> PROCHAIN CHAPITRE : ROUTEURS ET ROUTAGE

Vous allez apprendre :
- Fonctionnement des routeurs
- Tables de routage
- Routage statique et dynamique
- NAT et PAT
- Configuration routeur
"""


# ============================================================================
# [OBJECTIF] FIN DU CHAPITRE 2
# ============================================================================

"""
[BRAVO] FÉLICITATIONS !

Vous avez terminé le Chapitre 2 : Matériel Réseau de Base

[DOCS] COMPÉTENCES ACQUISES :
[OK] Maîtrise câblage réseau (cuivre et fibre)
[OK] Compréhension fonctionnement switchs
[OK] Choix équipements adaptés
[OK] Configuration switch manageable
[OK] Diagnostic et résolution problèmes
[OK] Conception infrastructure complète


[RAPIDE] PRÊT POUR LA SUITE !

Le Chapitre 3 abordera la numérisation et transmission,
puis nous entrerons dans les modèles de communication (OSI et TCP/IP).

Excellente progression ! Continuez ! [FORCE]
"""

# ============================================================================
# CHAPITRE 2 (SUITE) : ROUTEURS ET POINTS D'ACCÈS
# ============================================================================


# ----------------------------------------------------------------------------
# [WEB] ROUTEURS
# ----------------------------------------------------------------------------

"""
DÉFINITION

Routeur = Équipement réseau de niveau 3 (couche réseau) qui interconnecte 
différents réseaux IP et achemine les paquets entre eux.

[GRAPHIQUE] SCHÉMA BASIQUE

   Internet (WAN)
        │
   ┌────[BLACK_DOWN-POINTING_TRIANGLE]─────┐
   │ ROUTEUR  │
   └────┬─────┘
        │
   Réseau Local (LAN)
    192.168.1.0/24
        │
    ┌──┴───┬──────┬──────┐
   [CODE]      [CODE]    [CODE]    [CODE]


DIFFÉRENCE SWITCH vs ROUTEUR

┌───────────┬──────────────┬─────────────────┐
│  Critère  │   SWITCH     │    ROUTEUR      │
├───────────┼──────────────┼─────────────────┤
│ Niveau OSI│ 2 (Liaison)  │ 3 (Réseau)      │
│ Adresse   │ MAC          │ IP              │
│ Rôle      │ Relie LAN    │ Relie réseaux   │
│ Décision  │ MAC dest     │ IP dest         │
│ Portée    │ Locale       │ WAN possible    │
│ Broadcast │ Propagé      │ Non propagé     │
└───────────┴──────────────┴─────────────────┘

[IDEE] Switch = Niveau 2, même réseau
   Routeur = Niveau 3, réseaux différents


RÔLE DU ROUTEUR

1. ROUTAGE
   -------
   Déterminer le meilleur chemin vers destination.

2. INTERCONNEXION RÉSEAUX
   ----------------------
   Relier LAN <-> WAN
   Relier LAN1 <-> LAN2

3. ISOLATION BROADCAST
   -------------------
   Broadcast ne traverse PAS le routeur.

4. NAT (Network Address Translation)
   --------------------------------
   Partager une IP publique pour plusieurs appareils.

5. SÉCURITÉ
   --------
   Firewall intégré souvent.


FONCTIONNEMENT DÉTAILLÉ

Scénario : PC1 (192.168.1.10) veut accéder à google.com (8.8.8.8)


ÉTAPE 1 : PC1 VÉRIFIE DESTINATION
──────────────────────────────────

PC1 compare :
- Mon IP : 192.168.1.10/24
- Destination : 8.8.8.8
- Même réseau ? NON (8.8.8.8 pas dans 192.168.1.0/24)

-> Doit passer par passerelle (routeur)

PC1 envoie paquet à 192.168.1.1 (passerelle)


ÉTAPE 2 : SWITCH ACHEMINE VERS ROUTEUR
───────────────────────────────────────

Switch voit :
- MAC destination = MAC du routeur
- Envoie au routeur


ÉTAPE 3 : ROUTEUR REÇOIT PAQUET
────────────────────────────────

Paquet IP :
┌─────────────────────────────────────┐
│ IP Source      : 192.168.1.10       │
│ IP Destination : 8.8.8.8            │
│ Données        : Requête HTTP       │
└─────────────────────────────────────┘

Routeur lit IP destination : 8.8.8.8


ÉTAPE 4 : CONSULTATION TABLE DE ROUTAGE
────────────────────────────────────────

Routeur consulte sa table de routage :

┌────────────────┬─────────────┬─────────────┬───────┐
│ Réseau dest.   │   Masque    │  Passerelle │ Iface │
├────────────────┼─────────────┼─────────────┼───────┤
│ 0.0.0.0        │ 0.0.0.0     │  FAI        │ WAN   │ <- Route par défaut
│ 192.168.1.0    │ 255.255.255.0│ Direct     │ LAN   │ <- Réseau local
└────────────────┴─────────────┴─────────────┴───────┘

8.8.8.8 n'est pas dans 192.168.1.0
-> Utilise route par défaut (0.0.0.0/0)
-> Envoie vers WAN (Internet)


ÉTAPE 5 : NAT (SI CONFIGURÉ)
─────────────────────────────

Le routeur modifie le paquet :

AVANT NAT :
┌─────────────────────────────────────┐
│ IP Source      : 192.168.1.10       │ <- IP privée
│ IP Destination : 8.8.8.8            │
└─────────────────────────────────────┘

APRÈS NAT :
┌─────────────────────────────────────┐
│ IP Source      : 203.0.113.50       │ <- IP publique
│ IP Destination : 8.8.8.8            │
└─────────────────────────────────────┘

Le routeur mémorise la correspondance :
192.168.1.10:5678 <-> 203.0.113.50:5678

[IDEE] Détail NAT au Chapitre 10


ÉTAPE 6 : TRANSMISSION INTERNET
────────────────────────────────

Le paquet part vers Internet via connexion WAN.


ÉTAPE 7 : RÉPONSE
─────────────────

Google (8.8.8.8) répond :

┌─────────────────────────────────────┐
│ IP Source      : 8.8.8.8            │
│ IP Destination : 203.0.113.50       │
└─────────────────────────────────────┘

Routeur reçoit, consulte table NAT :
203.0.113.50:5678 -> 192.168.1.10:5678

Modifie paquet :
┌─────────────────────────────────────┐
│ IP Source      : 8.8.8.8            │
│ IP Destination : 192.168.1.10       │ <- IP privée restaurée
└─────────────────────────────────────┘

Envoie vers LAN -> PC1 reçoit réponse !


[GRAPHIQUE] SCHÉMA COMPLET

[PC1]          [Routeur]         [Internet]
192.168.1.10   192.168.1.1       8.8.8.8
                203.0.113.50
     │              │                │
     ├─ Paquet ────[BLACK_RIGHT-POINTING_POINTER]│                │
     │   Src: .1.10 │                │
     │   Dst: 8.8.8.8                │
     │              │                │
     │              ├─ NAT ─────────[BLACK_RIGHT-POINTING_POINTER]│
     │              │  Src: 203...50 │
     │              │  Dst: 8.8.8.8  │
     │              │                │
     │              │[BLACK_LEFT-POINTING_POINTER]─ Réponse ─────┤
     │              │  Src: 8.8.8.8  │
     │              │  Dst: 203...50 │
     │              │                │
     │[BLACK_LEFT-POINTING_POINTER]─ NAT inv.  ─┤                │
     │   Src: 8.8.8.8                │
     │   Dst: .1.10 │                │


TABLE DE ROUTAGE EN DÉTAIL

Composants d'une entrée :

1. RÉSEAU DESTINATION
   - 192.168.10.0/24
   - 0.0.0.0/0 (route par défaut)

2. MASQUE
   - 255.255.255.0
   - 0.0.0.0

3. PASSERELLE (Next Hop)
   - Prochain routeur vers destination
   - "Direct" si réseau directement connecté

4. INTERFACE
   - eth0, eth1 (Linux)
   - WAN, LAN (Box)
   - GigabitEthernet 0/0 (Cisco)

5. MÉTRIQUE
   - Coût de la route
   - Plus petit = préféré


Exemple table de routage complète :

┌────────────────┬──────────────┬──────────────┬───────┬────────┐
│ Réseau dest.   │   Masque    v│  Passerelle  │ Iface │Métrique│
├────────────────┼──────────────┼──────────────┼───────┼────────┤
│ 0.0.0.0        │ 0.0.0.0      │ 10.0.0.1     │ WAN   │   10   │
│ 10.0.0.0       │ 255.255.255.0│ Direct       │ WAN   │    0   │
│ 192.168.1.0    │ 255.255.255.0│ Direct       │ LAN   │    0   │
│ 192.168.10.0   │ 255.255.255.0│ 192.168.1.254│ LAN   │    5   │
└────────────────┴──────────────┴──────────────┴───────┴────────┘

Lecture :
- Route 1 : Par défaut -> WAN (Internet)
- Route 2 : Réseau WAN directement connecté
- Route 3 : Réseau LAN directement connecté
- Route 4 : Réseau 192.168.10.0 via routeur 192.168.1.254


TYPES DE ROUTES

1. ROUTE CONNECTÉE (Connected)
   ---------------------------
   
   Réseau directement connecté au routeur.
   
   Exemple :
   Interface LAN : 192.168.1.1/24
   -> Route : 192.168.1.0/24 via Direct

2. ROUTE STATIQUE (Static)
   -----------------------
   
   Configurée manuellement par admin.
   
   Configuration :
   ```
   ip route 192.168.10.0 255.255.255.0 192.168.1.254
   ```
   
   Avantages :
   [OK] Contrôle total
   [OK] Pas de bande passante (vs dynamique)
   [OK] Simple pour petits réseaux
   
   Inconvénients :
   [X] Pas de fail-over automatique
   [X] Administration manuelle

3. ROUTE PAR DÉFAUT (Default Route)
   --------------------------------
   
   Catch-all pour destinations inconnues.
   
   Notation : 0.0.0.0/0
   
   Usage : Vers Internet (ISP)
   
   Configuration :
   ```
   ip route 0.0.0.0 0.0.0.0 10.0.0.1
   ```

4. ROUTE DYNAMIQUE (Dynamic)
   -------------------------
   
   Apprise via protocoles de routage.
   
   Protocoles :
   - RIP (Routing Information Protocol)
   - OSPF (Open Shortest Path First)
   - BGP (Border Gateway Protocol)
   
   [IDEE] Détail au Chapitre 19-20


TYPES DE ROUTEURS

1. ROUTEUR DOMESTIQUE (SOHO)
   --------------------------

Caractéristiques :
- Tout-en-un (routeur + switch + AP + modem)
- Configuration simple (web)
- NAT obligatoire
- Fonctions basiques

[GRAPHIQUE] Exemple Box Internet :

┌────────────────────────────┐
│    Box Internet            │
│                            │
│  [Modem] <--> [Routeur]      │
│               v            │
│          [Switch 4p]       │
│               v            │
│          [AP Wi-Fi]        │
└────────────────────────────┘

Fonctions typiques :
[OK] Routage basique
[OK] NAT
[OK] DHCP serveur
[OK] Firewall simple
[OK] Wi-Fi
[X] Pas de VLANs avancés
[X] Pas de protocoles routage dynamique

Prix : Gratuit (fourni ISP) ou 50-150€

Exemples :
- Freebox
- Livebox Orange
- TP-Link Archer C7


2. ROUTEUR PME
   -----------

Caractéristiques :
- Dédié au routage
- VPN intégré
- Firewall avancé
- QoS
- Configuration avancée

Fonctions :
[OK] Multi-WAN (failover)
[OK] VPN (IPsec, OpenVPN)
[OK] Firewall avancé
[OK] VLANs
[OK] QoS complet
[OK] Monitoring

Prix : 200-1000€

Exemples :
- Ubiquiti EdgeRouter
- pfSense (PC + logiciel)
- Cisco RV series
- Mikrotik


3. ROUTEUR ENTREPRISE
   ------------------

Caractéristiques :
- Haute performance
- Protocoles de routage avancés
- Redondance
- Carrier-grade

Fonctions :
[OK] OSPF, BGP
[OK] MPLS
[OK] QoS avancé
[OK] IPv6 complet
[OK] Haute disponibilité
[OK] Throughput élevé (1-10+ Gbps)

Prix : 2,000-50,000€+

Exemples :
- Cisco ISR 4000
- Juniper MX series
- HP/Aruba


4. ROUTEUR OPÉRATEUR (Carrier)
   ---------------------------

Caractéristiques :
- Très haute performance (100+ Gbps)
- BGP
- MPLS
- IPv6
- Carrier-grade NAT

Usage :
- Cœur de réseau ISP
- Points d'échange Internet (IXP)

Prix : 100,000-1,000,000€+

Exemples :
- Cisco CRS
- Juniper MX960
- Nokia 7750


INTERFACES ROUTEUR

1. WAN (Wide Area Network)
   -----------------------
   
   Connexion vers Internet ou réseau distant.
   
   Types :
   - Ethernet (fibre, câble)
   - DSL (ADSL, VDSL)
   - 3G/4G/5G (cellulaire)
   - Satellite
   
   Configuration IP :
   - IP publique (fournie par ISP)
   - Ou IP privée + NAT chez ISP

2. LAN (Local Area Network)
   ------------------------
   
   Connexion vers réseau local.
   
   Configuration :
   - IP privée (192.168.x.x, 10.x.x.x)
   - Passerelle par défaut pour PCs

3. DMZ (DeMilitarized Zone)
   ------------------------
   
   Zone semi-publique (serveurs accessibles Internet).
   
   Usage :
   - Serveur web
   - Serveur mail
   - VPN

4. CONSOLE
   -------
   
   Port série pour configuration initiale.


NAT (Network Address Translation)

POURQUOI NAT ?

Problème :
- IPv4 limité (4.3 milliards d'adresses)
- Entreprises/particuliers ont plusieurs appareils
- Pas assez d'IPs publiques pour tout le monde

Solution :
- Utiliser IPs privées en interne
- Routeur traduit privé <-> public


PLAGES IP PRIVÉES (RFC 1918)

Non routables sur Internet :
- 10.0.0.0/8       (10.0.0.0 - 10.255.255.255)
- 172.16.0.0/12    (172.16.0.0 - 172.31.255.255)
- 192.168.0.0/16   (192.168.0.0 - 192.168.255.255)


TYPES DE NAT

1. NAT STATIQUE (Static NAT)
   -------------------------
   
   1 IP privée <-> 1 IP publique (mapping fixe)
   
   Usage :
   - Serveurs (web, mail)
   - Accès de l'extérieur
   
   Exemple :
   192.168.1.100 <-> 203.0.113.10 (toujours)

2. NAT DYNAMIQUE (Dynamic NAT)
   ---------------------------
   
   Pool d'IPs publiques partagé.
   
   Exemple :
   Pool : 203.0.113.10-20 (10 IPs)
   Utilisateurs : 50
   
   Premier arrivé, premier servi (FCFS)

3. PAT (Port Address Translation) / NAT Overload
   ----------------------------------------------
   
   1 IP publique partagée par TOUS (most common).
   
   Distinction par port source.
   
   [GRAPHIQUE] Exemple :
   
   PC1 (192.168.1.10:5678) -> 203.0.113.50:10001
   PC2 (192.168.1.11:5679) -> 203.0.113.50:10002
   PC3 (192.168.1.12:5680) -> 203.0.113.50:10003
   
   Table NAT :
   ┌──────────────────┬───────────────────┐
   │ Interne          │ Externe           │
   ├──────────────────┼───────────────────┤
   │ 192.168.1.10:5678│ 203.0.113.50:10001│
   │ 192.168.1.11:5679│ 203.0.113.50:10002│
   │ 192.168.1.12:5680│ 203.0.113.50:10003│
   └──────────────────┴───────────────────┘
   
   Avantages :
   [OK] Économise IPs publiques
   [OK] 1 IP = des milliers d'appareils
   
   Inconvénients :
   [X] Connexions entrantes difficiles
   [X] Certains protocoles (FTP actif, SIP) compliqués


REDIRECTION DE PORTS (Port Forwarding)

= Autoriser connexions entrantes vers serveur interne

Exemple : Serveur web interne

Configuration :
Port externe 80 -> 192.168.1.100:80

[GRAPHIQUE] Flux :

Internet              Routeur           Serveur
  │                      │                 │
  ├─ http://myip:80 ────[BLACK_RIGHT-POINTING_POINTER]│                 │
  │                      │                 │
  │                      ├─ NAT ──────────[BLACK_RIGHT-POINTING_POINTER]│
  │                      │ 192.168.1.100:80│
  │                      │                 │
  │                      │[BLACK_LEFT-POINTING_POINTER]─ Réponse ──────┤
  │                      │                 │
  │[BLACK_LEFT-POINTING_POINTER]─ Page web  ─────────┤                 │

Configuration routeur :
```
ip nat inside source static tcp 192.168.1.100 80 interface WAN 80
```


FONCTIONS SUPPLÉMENTAIRES ROUTEURS

1. DHCP SERVEUR
   ------------
   
   Attribution automatique IPs aux clients.
   
   Configuration :
   - Plage : 192.168.1.100-200
   - Masque : 255.255.255.0
   - Passerelle : 192.168.1.1
   - DNS : 8.8.8.8, 1.1.1.1
   - Bail : 24h

2. DNS FORWARDER/CACHE
   -------------------
   
   Routeur relaie requêtes DNS vers serveurs DNS.
   Cache réponses (performance).

3. FIREWALL
   --------
   
   Filtrage trafic entrant/sortant.
   
   Types règles :
   - Allow (autoriser)
   - Deny (bloquer)
   - Log (enregistrer)
   
   Exemple :
   - Allow LAN -> WAN (sortant)
   - Deny WAN -> LAN (entrant)
   - Allow WAN -> DMZ:80 (web)

4. VPN (Virtual Private Network)
   ------------------------------
   
   Tunnel sécurisé pour accès distant.
   
   Types :
   - IPsec : Site-to-site
   - OpenVPN : Remote access
   - L2TP/IPsec
   - WireGuard
   
   [IDEE] Détail au Chapitre 26

5. QoS (Quality of Service)
   ------------------------
   
   Priorisation trafic (bande passante limitée).
   
   Priorités :
   1. VoIP (téléphonie)
   2. Visio
   3. Web
   4. Téléchargements

6. MULTI-WAN
   ---------
   
   Plusieurs connexions Internet.
   
   Modes :
   - Load balancing (répartition)
   - Failover (backup)
   - Policy-based (par règle)
   
   Exemple :
   WAN1 : Fibre 1 Gbps (principal)
   WAN2 : 4G (backup)
   
   Si WAN1 tombe -> Bascule sur WAN2

7. DMZ HOST
   --------
   
   Expose un PC complètement vers Internet.
   
   [ATTENTION] Dangereux ! Préférer port forwarding.
"""


# ----------------------------------------------------------------------------
# [RESEAU] POINTS D'ACCÈS WI-FI (ACCESS POINTS)
# ----------------------------------------------------------------------------

"""
DÉFINITION

Point d'accès (AP) = Équipement qui permet connexions sans fil (Wi-Fi) 
au réseau câblé.

[GRAPHIQUE] SCHÉMA

      [Switch] ──Ethernet──[BLACK_RIGHT-POINTING_POINTER] [AP] [RESEAU] Wi-Fi ──[BLACK_RIGHT-POINTING_POINTER] [MOBILE][CODE][MOBILE]
                                    [BLACK_DOWN-POINTING_TRIANGLE]
                               Clients Wi-Fi


DIFFÉRENCE AP vs ROUTEUR WI-FI

┌──────────────┬─────────────┬─────────────────┐
│  Critère     │     AP      │  Routeur Wi-Fi  │
├──────────────┼─────────────┼─────────────────┤
│ Fonction     │ Wi-Fi <-> LAN │ Tout-en-un      │
│ Routage      │ Non         │ Oui             │
│ NAT          │ Non         │ Oui             │
│ DHCP         │ Non*        │ Oui             │
│ Switch       │ Non         │ Oui (4p typi.)  │
│ Usage        │ Entreprise  │ Domicile        │
└──────────────┴─────────────┴─────────────────┘

* Peut avoir DHCP mais rarement utilisé

[IDEE] AP = Juste un pont Wi-Fi <-> Ethernet
   Routeur Wi-Fi = AP + Routeur + Switch


FONCTIONNEMENT

Le point d'accès :
1. Reçoit paquets via Ethernet
2. Convertit en signaux radio (Wi-Fi)
3. Diffuse via antennes
4. Reçoit signaux radio des clients
5. Convertit en paquets Ethernet
6. Envoie sur réseau câblé

= Pont transparent entre sans fil et câblé


NORMES WI-FI (802.11)

┌─────────┬──────┬───────────┬──────────┬────────┐
│ Norme   │ Année│ Fréquence │  Débit   │  Portée│
├─────────┼──────┼───────────┼──────────┼────────┤
│ 802.11a │ 1999 │ 5 GHz     │ 54 Mbps  │ Faible │
│ 802.11b │ 1999 │ 2.4 GHz   │ 11 Mbps  │ Bonne  │
│ 802.11g │ 2003 │ 2.4 GHz   │ 54 Mbps  │ Bonne  │
│ 802.11n │ 2009 │ 2.4/5 GHz │ 600 Mbps │ Bonne  │ Wi-Fi 4
│ 802.11ac│ 2013 │ 5 GHz     │ 6.9 Gbps │ Moyenne│ Wi-Fi 5
│ 802.11ax│ 2019 │ 2.4/5/6GHz│ 9.6 Gbps │ Bonne  │ Wi-Fi 6
└─────────┴──────┴───────────┴──────────┴────────┘

[IDEE] Wi-Fi 6 (802.11ax) = Standard actuel (2024)
   Wi-Fi 6E = Wi-Fi 6 + bande 6 GHz


FRÉQUENCES WI-FI

1. BANDE 2.4 GHz
   -------------

Canaux : 1-14 (1-11 aux USA)
Bande passante : 20 MHz par canal

Avantages :
[OK] Meilleure portée
[OK] Traverse mieux obstacles (murs)
[OK] Compatible tous appareils

Inconvénients :
[X] Saturé (voisins, Bluetooth, micro-ondes)
[X] Débits plus faibles
[X] 3 canaux non-chevauchants seulement (1, 6, 11)

Usage :
- Compatibilité anciens appareils
- Grande portée nécessaire


2. BANDE 5 GHz
   -----------

Canaux : Beaucoup plus (jusqu'à 24)
Bande passante : 20, 40, 80, 160 MHz

Avantages :
[OK] Moins saturé
[OK] Débits plus élevés
[OK] Nombreux canaux

Inconvénients :
[X] Portée réduite
[X] Traverse mal obstacles

Usage :
- Streaming vidéo HD
- Gaming
- Transferts rapides


3. BANDE 6 GHz (Wi-Fi 6E)
   ----------------------

Canaux : Énormément
Totalement libre (nouveau)

Avantages :
[OK] Pas de saturation
[OK] Débits très élevés
[OK] Faible latence

Inconvénients :
[X] Nécessite matériel récent
[X] Portée encore plus réduite

[IDEE] Futur du Wi-Fi !


TYPES DE POINTS D'ACCÈS

1. AP AUTONOME (Standalone)
   ------------------------

Configuration individuelle (web).

Avantages :
[OK] Simple pour 1-3 APs
[OK] Pas de contrôleur

Inconvénients :
[X] Config manuelle par AP
[X] Pas de roaming fluide
[X] Gestion complexe si >5 APs

Prix : 50-300€

Exemples :
- Ubiquiti UniFi AP
- TP-Link EAP


2. AP CONTRÔLÉ (Controller-based)
   ------------------------------

Contrôleur central gère tous les APs.

Avantages :
[OK] Config centralisée
[OK] Roaming fluide
[OK] Monitoring global
[OK] Scalable (10-1000+ APs)

Inconvénients :
[X] Nécessite contrôleur (logiciel/matériel)
[X] Plus complexe
[X] Plus cher

Prix AP : 100-500€
Prix contrôleur : Gratuit (logiciel) à 5000€+ (appliance)

Exemples :
- Cisco Wireless LAN Controller + Aironet APs
- Aruba Mobility Controller + Aruba APs
- Ubiquiti UniFi Controller + UniFi APs


3. AP MESH
   -------

APs communiquent entre eux sans fil.

Usage :
- Étendre couverture sans câbler
- Extérieur

Exemple :
AP1 ──Ethernet──[BLACK_RIGHT-POINTING_POINTER] [Switch]
     [RESEAU]
     [BLACK_DOWN-POINTING_TRIANGLE]
    AP2 (Mesh, pas de câble)
     [RESEAU]
     [BLACK_DOWN-POINTING_TRIANGLE]
    AP3 (Mesh, pas de câble)

[IDEE] Performance réduite vs câblé


SSID (Service Set Identifier)

= Nom du réseau Wi-Fi

Exemple : "MonWiFi", "Guest-Network"

Caractéristiques :
- Longueur : 0-32 caractères
- Sensible à la casse
- Peut être caché (Hidden SSID)

Multi-SSID :
Un AP peut diffuser plusieurs SSIDs.

Exemple :
- "Entreprise" (VLAN 10, WPA2-Enterprise)
- "Invites" (VLAN 20, WPA2-PSK, isolé)
- "IoT" (VLAN 30, WPA2-PSK)


SÉCURITÉ WI-FI

ÉVOLUTION :

1. WEP (Wired Equivalent Privacy) [X]
   --------------------------------
   
   Ancien, cassable en minutes.
   NE JAMAIS UTILISER !

2. WPA (Wi-Fi Protected Access) [X]
   -------------------------------
   
   Amélioration de WEP, mais encore vulnérable.

3. WPA2-PSK (Pre-Shared Key) [OK]
   ----------------------------
   
   Clé partagée (mot de passe).
   Standard actuel domestique.
   
   Chiffrement : AES
   
   Usage :
   - Domicile
   - Petits bureaux

4. WPA2-Enterprise (802.1X) [OK]
   ----------------------------
   
   Authentification par utilisateur.
   Serveur RADIUS requis.
   
   Usage :
   - Entreprise
   - Campus
   
   Avantages :
   [OK] Credentials individuels
   [OK] Révocation utilisateur possible
   [OK] Audit (qui se connecte ?)

5. WPA3 [OK]
   -------
   
   Dernière norme (2018).
   Améliore sécurité vs WPA2.
   
   Fonctions :
   [OK] Protection attaques brute-force
   [OK] Forward secrecy
   [OK] Opportunistic Wireless Encryption
   
   [IDEE] Adopter si matériel compatible


[IDEE] RECOMMANDATION : WPA2-PSK minimum, WPA3 idéal


CONFIGURATION AP

Paramètres essentiels :

1. SSID
   ----
   Nom du réseau : "MonReseau"

2. SÉCURITÉ
   --------
   Type : WPA2-PSK
   Mot de passe : MotDePasseComplexe123!

3. CANAL
   -----
   Auto ou manuel (1, 6, 11 pour 2.4 GHz)

4. PUISSANCE TX
   ------------
   Auto ou manuel (mW)
   
   [IDEE] Ne pas mettre au max !
   Trop puissant = interférences

5. VLAN
   ----
   VLAN ID : 10 (ex)

6. ISOLATION CLIENT
   ----------------
   Empêche clients Wi-Fi de communiquer entre eux.
   
   Usage : Réseau invités

7. BAND STEERING
   -------------
   Force clients 5 GHz capables vers 5 GHz.

8. ROAMING
   -------
   Fast roaming (802.11r, 802.11k, 802.11v)
   Permet changement AP transparent.


PUISSANCE ET PORTÉE

Puissance typique : 20-30 dBm (100-1000 mW)

Portée :
- Intérieur : 30-50m (2.4 GHz)
            : 15-30m (5 GHz)
- Extérieur : 100-300m (conditions idéales)

Facteurs réduisant portée :
[X] Murs béton
[X] Métal
[X] Eau (aquariums)
[X] Micro-ondes
[X] Interférences


DENSITÉ D'APS

Règles générales :

Bureau :
- 1 AP pour 100-150 m²
- Ou 1 AP pour 30-50 utilisateurs

Haute densité (salle de conférence) :
- 1 AP pour 25 utilisateurs

Extérieur :
- Selon puissance TX et obstacles


PLACEMENT OPTIMAL

[OK] Central dans zone
[OK] En hauteur (plafond)
[OK] Loin sources interférences
[OK] Éviter coins morts
[OK] Chevaucher couverture 10-15% (roaming)

[GRAPHIQUE] Exemple étage bureau :

┌─────────────────────────────┐
│    Étage (30m × 20m)        │
│                             │
│         AP1 [RESEAU]              │
│                             │
│                             │
│                  AP2 [RESEAU]     │
│                             │
└─────────────────────────────┘

2 APs pour 600 m² (OK)


POE POUR APS

Quasiment tous les APs professionnels supportent PoE.

Avantages :
[OK] Installation flexible (plafond, murs)
[OK] Pas de prise électrique nécessaire
[OK] Gestion centralisée (switch PoE)

Standards :
- 802.3af (PoE) : 15.4W -> APs basiques
- 802.3at (PoE+) : 30W -> APs modernes
- 802.3bt (PoE++) : 60-100W -> APs Wi-Fi 6 haute perf.

[IDEE] Vérifier consommation AP vs budget PoE switch !


MONITORING ET DIAGNOSTICS

Outils :

1. SITE SURVEY
   -----------
   
   Analyse couverture et interférences.
   
   Logiciels :
   - Ekahau Site Survey (pro, payant)
   - NetSpot (gratuit/payant)
   - WiFi Analyzer (Android)

2. HEATMAP
   -------
   
   Carte thermique de couverture.
   Visualise zones faibles.

3. CANAL ANALYZER
   --------------
   
   Voit réseaux voisins et canaux utilisés.
   Aide choisir canal optimal.

4. SNMP
   ----
   
   Monitoring via logiciels (PRTG, Zabbix).

5. SYSLOG
   ------
   
   Logs centralisés.


PROBLÈMES COURANTS

1. COUVERTURE FAIBLE
   -----------------
   
   Causes :
   - AP trop loin
   - Obstacles (murs béton)
   - Puissance TX trop basse
   
   Solutions :
   - Ajouter APs
   - Déplacer AP
   - Augmenter puissance

2. INTERFÉRENCES
   -------------
   
   Causes :
   - Voisins sur même canal
   - Micro-ondes
   - Bluetooth
   
   Solutions :
   - Changer canal
   - Passer sur 5 GHz
   - Réduire puissance TX (évite déborder)

3. ROAMING LENT
   ------------
   
   Causes :
   - Pas de 802.11r
   - Client "colle" à AP faible
   
   Solutions :
   - Activer fast roaming (802.11r/k/v)
   - Réduire puissance APs (force changement)
   - Client device steering

4. VITESSES FAIBLES
   ----------------
   
   Causes :
   - Trop de clients sur un AP
   - Canal saturé
   - Client loin (faible signal)
   
   Solutions :
   - Ajouter APs (réduire charge)
   - Passer 5 GHz
   - Band steering
"""


# ============================================================================
# [DOCS] RÉSUMÉ ROUTEURS ET APS
# ============================================================================

"""
[CLE] POINTS CLÉS

ROUTEURS
────────
[OK] Niveau 3 (IP addresses)
[OK] Interconnecte réseaux différents
[OK] Table de routage
[OK] NAT pour partager IP publique
[OK] Firewall, VPN, DHCP

POINTS D'ACCÈS
───────────────
[OK] Pont Wi-Fi <-> Ethernet
[OK] Normes 802.11 (Wi-Fi 4/5/6)
[OK] 2.4 GHz (portée) vs 5 GHz (débit)
[OK] WPA2/WPA3 pour sécurité
[OK] PoE pour installation flexible
[OK] Contrôleur pour grande infrastructure


[OBJECTIF] VOUS SAVEZ MAINTENANT :
[OK] Différence switch/routeur
[OK] Fonctionnement routage et NAT
[OK] Types de routeurs
[OK] Fonctionnement Wi-Fi
[OK] Placement et configuration APs
[OK] Sécurité Wi-Fi


-> SUITE : EXERCICES PRATIQUES CHAPITRE 2

Deux exercices complets pour mettre en pratique :
1. Conception réseau PME
2. Diagnostic problèmes matériel
"""

# ============================================================================
# [COURS] EXERCICES PRATIQUES - CHAPITRE 2
# ============================================================================

"""
[IDEE] OBJECTIFS DES EXERCICES

Ces exercices vous permettront de :
[OK] Appliquer les concepts de câblage
[OK] Dimensionner une infrastructure réseau
[OK] Choisir les bons équipements
[OK] Diagnostiquer des problèmes matériels
[OK] Configurer des équipements réseau
[OK] Concevoir une architecture complète

Faites-les TOUS pour maîtriser le matériel réseau !
"""


# ----------------------------------------------------------------------------
# [COURS] EXERCICE 1 : CONCEPTION RÉSEAU ENTREPRISE COMPLÈTE
# ----------------------------------------------------------------------------

"""
[LISTE] ÉNONCÉ DÉTAILLÉ

Vous êtes consultant réseau engagé par une entreprise de 80 employés 
qui déménage dans un nouveau bâtiment de 3 étages.

[ENTREPRISE] DESCRIPTION DU BÂTIMENT

REZ-DE-CHAUSSÉE (RDC) :
───────────────────────
- Accueil : 3 postes + 1 écran d'affichage (PoE)
- Comptabilité : 8 postes + 2 imprimantes
- Direction : 5 postes (PDG, DG, 3 assistants)
- Salle de réunion A : 10 places (Wi-Fi visiteurs)
- Local technique : Baie de brassage principale
- Dimensions : 40m × 25m

ÉTAGE 1 :
─────────
- Service Commercial : 20 postes + 2 imprimantes
- Service Marketing : 12 postes + 1 imprimante
- Salle de réunion B : 15 places (Wi-Fi employés)
- Open space : Tables hot-desking (10 places)
- Dimensions : 40m × 25m

ÉTAGE 2 :
─────────
- Service Technique/R&D : 15 postes + 1 imprimante
- Service Support : 10 postes + 1 imprimante
- Salle serveurs : 3 serveurs + 1 NAS + 1 baie réseau
- Salle formation : 20 places (Wi-Fi)
- Dimensions : 40m × 25m


[GRAPHIQUE] ÉQUIPEMENTS SUPPLÉMENTAIRES

Serveurs (salle serveurs Étage 2) :
- Serveur web/mail (DMZ)
- Serveur fichiers/Active Directory
- Serveur bases de données
- NAS (stockage)

Sécurité :
- 12 caméras IP (PoE) réparties
  * 4 au RDC (extérieur + accueil)
  * 4 à l'Étage 1
  * 4 à l'Étage 2
- Système contrôle d'accès (badges) : 6 portes

Téléphonie :
- 40 téléphones IP (PoE) pour cadres/commerciaux


[LISTE] BESOINS ET CONTRAINTES

Sécurité :
1. Comptabilité ISOLÉE du reste (données sensibles)
2. Direction ISOLÉE et SÉCURISÉE (confidentialité)
3. DMZ pour serveur web/mail (accessible Internet)
4. Wi-Fi visiteurs TOTALEMENT ISOLÉ
5. Caméras IP sur réseau dédié (VLAN)
6. Contrôle d'accès badges sur réseau dédié

Performance :
1. Serveurs : Connexions 10 Gbps (redondantes)
2. Backbone inter-étages : 10 Gbps minimum
3. Postes de travail : 1 Gbps
4. Priorité VoIP (téléphones) via QoS

Fiabilité :
1. Redondance liens critiques (serveurs, backbone)
2. Alimentation ondulée (UPS) pour équipements critiques
3. Double alimentation switchs core
4. Backbone en fibre optique

Wi-Fi :
1. Couverture complète 3 étages
2. Roaming fluide entre APs
3. 3 SSIDs :
   - "Entreprise" (employés, WPA2-Enterprise)
   - "Invites" (visiteurs, WPA2-PSK, isolé)
   - "VoIP" (téléphones Wi-Fi, QoS prioritaire)

Évolution :
1. Prévoir croissance +30% sur 5 ans
2. Infrastructure évolutive vers 10 Gbps généralisé
3. Ports libres : 25% minimum

Budget :
1. Infrastructure réseau : 50,000€
2. Serveurs : Déjà achetés (hors budget)
3. Priorité : Fiabilité > Prix


[OBJECTIF] QUESTIONS

PARTIE 1 : ANALYSE ET DIMENSIONNEMENT
──────────────────────────────────────

1. Calculez le nombre TOTAL de ports réseau nécessaires :
   - Postes de travail
   - Imprimantes réseau
   - Téléphones IP
   - Caméras IP
   - Badges (contrôle accès)
   - Serveurs
   - APs Wi-Fi
   - Équipements réseau (uplinks)
   
2. Déterminez le nombre de VLANs nécessaires et leur fonction.

3. Calculez les besoins PoE :
   - Nombre de ports PoE total
   - Budget power nécessaire (Watts)
   - Standard PoE requis (af/at/bt)


PARTIE 2 : ARCHITECTURE RÉSEAU
───────────────────────────────

4. Proposez une architecture réseau complète :
   - Topologie (cœur, distribution, accès)
   - Nombre et type de switchs (avec modèles)
   - Emplacement des switchs
   - Routeur/Firewall
   - Liens backbone (cuivre/fibre)
   - Redondances

5. Dessinez un schéma réseau détaillé avec :
   - Tous les équipements
   - VLANs
   - Liens et débits
   - Redondances

6. Justifiez chaque choix technique.


PARTIE 3 : CÂBLAGE
──────────────────

7. Spécifiez le câblage :
   - Type câbles (Cat5e/6/6a/fibre)
   - Longueurs estimées
   - Panels de brassage (nombre, type)
   - Baies de brassage (nombre, taille)

8. Planifiez installation :
   - Passages (faux-plafond, goulottes)
   - Prises murales (nombre par salle)


PARTIE 4 : WI-FI
────────────────

9. Dimensionnez l'infrastructure Wi-Fi :
   - Nombre d'APs nécessaires (par étage)
   - Emplacement APs
   - Norme Wi-Fi (4/5/6)
   - Bandes (2.4/5 GHz)
   - Contrôleur ou autonome ?

10. Configuration Wi-Fi :
    - SSIDs et sécurité
    - VLANs associés
    - Isolation client
    - Band steering


PARTIE 5 : CONFIGURATION
────────────────────────

11. Configuration switch core principal :
    - Nom, IP management
    - Création VLANs
    - Configuration ports critiques
    - Spanning Tree
    - SNMP

12. Règles firewall principales.


PARTIE 6 : BUDGET ET PLANNING
──────────────────────────────

13. Liste complète équipements avec références et prix.

14. Budget total détaillé.

15. Planning installation (phases, durée).


[OK] CORRECTION DÉTAILLÉE ET COMPLÈTE

═══════════════════════════════════════════════════════════


PARTIE 1 : ANALYSE ET DIMENSIONNEMENT
══════════════════════════════════════

1. CALCUL PORTS RÉSEAU NÉCESSAIRES
───────────────────────────────────

[GRAPHIQUE] TABLEAU DÉTAILLÉ PAR CATÉGORIE

A) POSTES DE TRAVAIL
────────────────────

RDC :
- Accueil : 3
- Comptabilité : 8
- Direction : 5
Sous-total RDC : 16

Étage 1 :
- Commercial : 20
- Marketing : 12
- Hot-desking : 10
Sous-total Étage 1 : 42

Étage 2 :
- Technique/R&D : 15
- Support : 10
Sous-total Étage 2 : 25

TOTAL POSTES : 83 ports


B) IMPRIMANTES RÉSEAU
─────────────────────

RDC : 2 (Comptabilité)
Étage 1 : 3 (Commercial + Marketing + hot-desk)
Étage 2 : 2 (Technique + Support)

TOTAL IMPRIMANTES : 7 ports


C) TÉLÉPHONES IP (PoE)
──────────────────────

Répartition :
- RDC : 8 (Accueil + Compta + Direction)
- Étage 1 : 20 (Commercial surtout)
- Étage 2 : 12 (Support + Technique)

TOTAL TÉLÉPHONES IP : 40 ports PoE


D) CAMÉRAS IP (PoE)
───────────────────

RDC : 4
Étage 1 : 4
Étage 2 : 4

TOTAL CAMÉRAS : 12 ports PoE


E) CONTRÔLE D'ACCÈS BADGES
──────────────────────────

6 portes -> 6 lecteurs

TOTAL BADGES : 6 ports PoE (faible consommation)


F) ÉCRAN AFFICHAGE
──────────────────

RDC Accueil : 1 écran PoE

TOTAL ÉCRANS : 1 port PoE


G) SERVEURS
───────────

Étage 2 Salle serveurs :
- Serveur web/mail : 2 ports (redondance)
- Serveur fichiers/AD : 2 ports (redondance)
- Serveur BDD : 2 ports (redondance)
- NAS : 2 ports (redondance)

TOTAL SERVEURS : 8 ports (10 Gbps)


H) POINTS D'ACCÈS WI-FI
───────────────────────

Dimensionnement :
- 1 AP pour ~150 m² (bureau)
- Chaque étage : 40m × 25m = 1000 m²
- 1000 ÷ 150 = ~7 APs par étage

RDC : 7 APs
Étage 1 : 7 APs
Étage 2 : 7 APs

TOTAL APs : 21 ports PoE


I) ÉQUIPEMENTS RÉSEAU (UPLINKS)
────────────────────────────────

Switchs :
- Switch Core RDC : 2 uplinks vers Étage 2 (redondance)
- Switch Distribution Étage 1 : 2 uplinks vers Core
- Switch Distribution Étage 2 : 2 uplinks vers Core
- Switchs Accès (6 total) : 1 uplink chacun vers Distrib.

Routeur/Firewall : 2 ports (WAN + LAN)

TOTAL UPLINKS : ~14 ports


[GRAPHIQUE] RÉCAPITULATIF TOTAL

┌─────────────────────────┬─────────┬──────────┬───────────┐
│ Catégorie               │ Quantité│ Type port│ PoE requis│
├─────────────────────────┼─────────┼──────────┼───────────┤
│ Postes de travail       │   83    │ Gigabit  │    Non    │
│ Imprimantes             │    7    │ Gigabit  │    Non    │
│ Téléphones IP           │   40    │ Gigabit  │ PoE+ (at) │
│ Caméras IP              │   12    │ Gigabit  │ PoE+ (at) │
│ Badges contrôle accès   │    6    │ Gigabit  │ PoE (af)  │
│ Écran affichage         │    1    │ Gigabit  │ PoE+ (at) │
│ Serveurs                │    8    │ 10 Gbps  │    Non    │
│ Points d'accès Wi-Fi    │   21    │ Gigabit  │ PoE+ (at) │
│ Uplinks/Infrastructure  │   14    │10G/Fibre │    Non    │
├─────────────────────────┼─────────┼──────────┼───────────┤
│ TOTAL                   │  192    │          │           │
└─────────────────────────┴─────────┴──────────┴───────────┘

PORTS GIGABIT : 184 ports
PORTS 10 GIGABIT : 8 ports (+ uplinks)
PORTS POE NÉCESSAIRES : 80 ports

Avec marge évolution +30% :
184 × 1.3 = 239 ports Gigabit
80 × 1.3 = 104 ports PoE

Avec marge technique 25% :
239 × 1.25 = ~300 ports Gigabit
104 × 1.25 = ~130 ports PoE

[IDEE] BESOIN FINAL : ~300 ports Gigabit dont 130 PoE



2. DÉTERMINATION DES VLANs
───────────────────────────

[GRAPHIQUE] PLAN DE VLANs

┌────────┬─────────────────┬──────────────┬─────────────┐
│VLAN ID │      Nom        │   Réseau     │  Description│
├────────┼─────────────────┼──────────────┼─────────────┤
│   1    │ Management      │192.168.1.0/24│ Gestion     │
│  10    │ Comptabilite    │192.168.10.0/24│ Isolé     │
│  20    │ Direction       │192.168.20.0/24│ Isolé     │
│  30    │ Employes        │192.168.30.0/23│ ~500 IPs  │
│  40    │ VoIP            │192.168.40.0/24│ Téléphones│
│  50    │ Cameras         │192.168.50.0/24│ Surveillance│
│  60    │ Controle-Acces  │192.168.60.0/24│ Badges    │
│  70    │ Serveurs        │192.168.70.0/24│ Serveurs  │
│  80    │ DMZ             │192.168.80.0/24│ Srv public│
│  90    │ WiFi-Employes   │192.168.90.0/23│ Wi-Fi     │
│  95    │ WiFi-Invites    │192.168.95.0/24│ Isolé     │
│  99    │ Infrastructure  │192.168.99.0/24│ Switchs/APs│
└────────┴─────────────────┴──────────────┴─────────────┘

TOTAL VLANs : 11


JUSTIFICATION DES VLANs :

VLAN 1 (Management) :
──────────────────────
- Gestion des équipements réseau
- Accessible uniquement par admins
- Sécurisé (pas accessible utilisateurs)

VLAN 10 (Comptabilité) :
────────────────────────
- ISOLÉ des autres services
- Données sensibles (paie, finances)
- ACLs strictes sur routeur
- Pas d'accès direct depuis autres VLANs

VLAN 20 (Direction) :
─────────────────────
- ISOLÉ pour confidentialité
- PDG, DG, assistants direction
- Sécurité renforcée
- QoS prioritaire

VLAN 30 (Employés) :
────────────────────
- Commercial, Marketing, Technique, Support
- Accès général
- /23 pour ~500 IPs (83 postes + évolution)

VLAN 40 (VoIP) :
────────────────
- Téléphones IP uniquement
- QoS prioritaire (faible latence)
- Séparé pour performance
- PoE

VLAN 50 (Caméras) :
───────────────────
- Surveillance isolée
- Accès restreint (équipe sécurité)
- Bande passante dédiée
- PoE

VLAN 60 (Contrôle accès) :
──────────────────────────
- Badges et lecteurs
- Isolé pour sécurité physique
- Faible trafic
- PoE

VLAN 70 (Serveurs) :
────────────────────
- Serveurs fichiers, AD, BDD
- Accès depuis VLAN Employés
- Performance élevée (10G)

VLAN 80 (DMZ) :
───────────────
- Serveur web/mail accessible Internet
- Isolé LAN (sécurité)
- Règles firewall strictes

VLAN 90 (Wi-Fi Employés) :
──────────────────────────
- SSID "Entreprise"
- WPA2-Enterprise (RADIUS)
- Accès services internes
- /23 pour ~500 appareils

VLAN 95 (Wi-Fi Invités) :
─────────────────────────
- SSID "Invites"
- TOTALEMENT ISOLÉ du LAN
- Internet uniquement
- WPA2-PSK (mot de passe simple)
- Isolation client activée

VLAN 99 (Infrastructure) :
──────────────────────────
- IPs management switchs
- IPs management APs
- Accessible admins seulement
- Monitoring (SNMP)


MATRICE D'ACCÈS INTER-VLAN :

┌──────────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬──────┐
│  Src/Dst │ Compt│ Dir│Empl│VoIP│Cam│Badge│Srv│ DMZ│WiFi-I│
├──────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼──────┤
│Compta    │  [OK]  │  [X] │  [X] │  [OK]  │  [X] │  [X] │  [OK]  │  [X] │  [X]  │
│Direction │  [X] │  [OK]  │  [X] │  [OK]  │  [OK]  │  [OK]  │  [OK]  │  [X] │  [X]  │
│Employés  │  [X] │  [X] │  [OK]  │  [OK]  │  [X] │  [X] │  [OK]  │  [OK]  │  [X]  │
│VoIP      │  [OK]  │  [OK]  │  [OK]  │  [OK]  │  [X] │  [X] │  [X] │  [X] │  [X]  │
│Cameras   │  [X] │  [OK]  │  [X] │  [X] │  [OK]  │  [X] │  [OK]  │  [X] │  [X]  │
│Badges    │  [X] │  [OK]  │  [X] │  [X] │  [X] │  [OK]  │  [OK]  │  [X] │  [X]  │
│Serveurs  │  [OK]  │  [OK]  │  [OK]  │  [X] │  [OK]  │  [OK]  │  [OK]  │  [X] │  [X]  │
│DMZ       │  [X] │  [X] │  [X] │  [X] │  [X] │  [X] │  [OK]  │  [OK]  │  [X]  │
│WiFi-Inv  │  [X] │  [X] │  [X] │  [X] │  [X] │  [X] │  [X] │  [X] │  [OK]   │
└──────────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴──────┘

[OK] = Autorisé
[X] = Bloqué

Tous les VLANs -> Internet (via firewall)
WiFi-Invités -> Internet UNIQUEMENT



3. CALCUL BESOINS PoE
──────────────────────

[GRAPHIQUE] INVENTAIRE APPAREILS PoE

┌─────────────────────┬─────────┬──────────┬────────────┐
│ Appareil            │ Quantité│Standard  │Conso/unité │
├─────────────────────┼─────────┼──────────┼────────────┤
│ Téléphones IP       │   40    │ PoE+ (at)│   7 W      │
│ Caméras IP          │   12    │ PoE+ (at)│  12 W      │
│ Badges (lecteurs)   │    6    │ PoE (af) │   4 W      │
│ Écran affichage     │    1    │ PoE+ (at)│  25 W      │
│ APs Wi-Fi (Wi-Fi 6) │   21    │ PoE+ (at)│  20 W      │
└─────────────────────┴─────────┴──────────┴────────────┘

CALCUL CONSOMMATION :

Téléphones :    40 × 7W  = 280 W
Caméras :       12 × 12W = 144 W
Badges :        6 × 4W   = 24 W
Écran :         1 × 25W  = 25 W
APs :           21 × 20W = 420 W
                          ─────
TOTAL THÉORIQUE :         893 W

Avec perte câbles (~15%) : 893 × 1.15 = 1,027 W
Avec marge sécurité (20%) : 1,027 × 1.2 = 1,232 W

[IDEE] BUDGET PoE NÉCESSAIRE : ~1,250 W minimum


STANDARD PoE REQUIS :

Majorité des appareils : PoE+ (802.3at) 30W
Quelques appareils : PoE (802.3af) 15W

-> Switchs PoE+ (802.3at) minimum


RÉPARTITION PoE PAR ÉTAGE :

RDC :
- Téléphones : 8 × 7W = 56W
- Caméras : 4 × 12W = 48W
- Badges : 2 × 4W = 8W
- Écran : 1 × 25W = 25W
- APs : 7 × 20W = 140W
TOTAL RDC : 277W

Étage 1 :
- Téléphones : 20 × 7W = 140W
- Caméras : 4 × 12W = 48W
- Badges : 2 × 4W = 8W
- APs : 7 × 20W = 140W
TOTAL Étage 1 : 336W

Étage 2 :
- Téléphones : 12 × 7W = 84W
- Caméras : 4 × 12W = 48W
- Badges : 2 × 4W = 8W
- APs : 7 × 20W = 140W
TOTAL Étage 2 : 280W

Avec pertes et marge :
RDC : 277 × 1.35 = 374W
Étage 1 : 336 × 1.35 = 454W
Étage 2 : 280 × 1.35 = 378W


NOMBRE DE PORTS PoE :

TOTAL : 80 ports PoE
Avec marge 30% : 80 × 1.3 = 104 ports PoE

Par étage :
RDC : 22 ports PoE (avec marge : 29)
Étage 1 : 33 ports PoE (avec marge : 43)
Étage 2 : 25 ports PoE (avec marge : 33)



PARTIE 2 : ARCHITECTURE RÉSEAU
═══════════════════════════════

4. ARCHITECTURE PROPOSÉE
─────────────────────────

[GRAPHIQUE] TOPOLOGIE : HIÉRARCHIQUE 3 NIVEAUX

                    Internet
                        │
                  ┌─────[BLACK_DOWN-POINTING_TRIANGLE]─────┐
                  │  Routeur  │
                  │ Firewall  │
                  │  (UTM)    │
                  └─────┬─────┘
                        │
            ┌───────────┴───────────┐
            │                       │
    ┌───────[BLACK_DOWN-POINTING_TRIANGLE]────────┐      ┌──────[BLACK_DOWN-POINTING_TRIANGLE]──────┐
    │  Switch CORE 1 │[BLACK_LEFT-POINTING_POINTER]────[BLACK_RIGHT-POINTING_POINTER]│Switch CORE 2│
    │   48p + 4×10G  │ LACP │ 48p + 4×10G │
    │   L3, PoE+     │      │  L3, PoE+   │
    └────────┬───────┘      └──────┬──────┘
             │ Fiber               │ Fiber
             │ 10G                 │ 10G
   ┌─────────┼─────────┬───────────┼─────────┐
   │         │         │           │         │
   [BLACK_DOWN-POINTING_TRIANGLE]         [BLACK_DOWN-POINTING_TRIANGLE]         [BLACK_DOWN-POINTING_TRIANGLE]           [BLACK_DOWN-POINTING_TRIANGLE]         [BLACK_DOWN-POINTING_TRIANGLE]
┌──────┐ ┌──────┐ ┌──────┐    ┌──────┐ ┌──────┐
│SW-D  │ │SW-D  │ │SW-D  │    │SW-D  │ │SW-D  │
│RDC-1 │ │E1-1  │ │E1-2  │    │E2-1  │ │E2-2  │
│48p   │ │48p   │ │48p   │    │48p   │ │24p   │
│PoE+  │ │PoE+  │ │PoE+  │    │PoE+  │ │PoE+  │
└──┬───┘ └──┬───┘ └──┬───┘    └──┬───┘ └──┬───┘
   │        │        │           │        │
 Postes  Postes   Postes      Postes  Serveurs
  RDC     E1       E1          E2      10G


NIVEAUX :

CŒUR (CORE) :
─────────────
2 switchs L3 redondants
- Routage inter-VLAN
- Agrégation backbone
- Haute disponibilité
- Stacking ou LACP

DISTRIBUTION :
──────────────
5 switchs L2 PoE+
- Connexion postes de travail
- PoE pour téléphones/APs/caméras
- Uplink Fiber 10G vers Core

ACCÈS :
───────
Les switchs distribution font aussi office d'accès
(infrastructure moyenne, pas besoin niveau supplémentaire)


SWITCHS DÉTAILLÉS :

┌──────────────┬────────┬──────┬──────┬────────┬──────────┐
│ Switch       │ Modèle │Ports │ PoE  │Uplink  │ Rôle     │
├──────────────┼────────┼──────┼──────┼────────┼──────────┤
│SW-CORE-1     │Cisco   │ 48   │ 8×PoE+│4×10G  │Core L3   │
│              │C9300-48│      │      │SFP+    │Principal │
├──────────────┼────────┼──────┼──────┼────────┼──────────┤
│SW-CORE-2     │Cisco   │ 48   │ 8×PoE+│4×10G  │Core L3   │
│              │C9300-48│      │      │SFP+    │Backup    │
├──────────────┼────────┼──────┼──────┼────────┼──────────┤
│SW-DIST-RDC-1 │Cisco   │ 48   │48×PoE+│2×10G  │Distrib.  │
│              │C9200-48│      │(740W) │SFP+    │RDC       │
├──────────────┼────────┼──────┼──────┼────────┼──────────┤
│SW-DIST-E1-1  │Cisco   │ 48   │48×PoE+│2×10G  │Distrib.  │
│              │C9200-48│      │(740W) │SFP+    │Étage 1   │
├──────────────┼────────┼──────┼──────┼────────┼──────────┤
│SW-DIST-E1-2  │Cisco   │ 48   │48×PoE+│2×10G  │Distrib.  │
│              │C9200-48│      │(740W) │SFP+    │Étage 1   │
├──────────────┼────────┼──────┼──────┼────────┼──────────┤
│SW-DIST-E2-1  │Cisco   │ 48   │48×PoE+│2×10G  │Distrib.  │
│              │C9200-48│      │(740W) │SFP+    │Étage 2   │
├──────────────┼────────┼──────┼──────┼────────┼──────────┤
│SW-DIST-E2-2  │Cisco   │ 24   │24×PoE+│2×10G  │Distrib.  │
│              │C9200-24│      │(370W) │SFP+    │Serveurs  │
│              │         │      │      │        │Étage 2   │
└──────────────┴────────┴──────┴──────┴────────┴──────────┘

TOTAL PORTS : 312 ports (48+48+48+48+48+48+24)
TOTAL PoE : 248 ports PoE+
TOTAL 10G : 24 ports SFP+


ROUTEUR/FIREWALL :

Modèle : FortiGate 200F ou pfSense sur serveur Dell
Caractéristiques :
- Throughput : 10 Gbps
- VPN IPsec : 5 Gbps
- UTM (Unified Threat Management)
- IPS/IDS
- Antivirus
- Web filtering
- Application control
- Multi-WAN (2×WAN pour failover)


LIENS BACKBONE :

Core <-> Distribution : Fibre optique OM4
- 2 fibres par lien (redondance)
- Connecteurs LC
- Transceivers SFP+ 10G
- Longueur : 30-50m par lien

Core 1 <-> Core 2 : Agrégation 2×10G (LACP)
- Fibre optique OM4
- Bande passante : 20 Gbps


REDONDANCES :

1. DOUBLE CORE
   ───────────
   2 switchs core en stack ou LACP
   Si Core 1 tombe -> Core 2 prend le relais

2. DOUBLE UPLINK
   ─────────────
   Chaque switch distribution -> 2 uplinks
   - 1 vers Core 1
   - 1 vers Core 2
   Spanning Tree bloque un lien (standby)

3. SERVEURS
   ────────
   Chaque serveur : 2× NIC 10G
   - NIC1 -> SW-DIST-E2-2 port 1
   - NIC2 -> SW-DIST-E2-2 port 2
   NIC Teaming (LACP) : 20 Gbps agrégés

4. ALIMENTATION
   ────────────
   - Switchs Core : Double PSU
   - UPS sur switchs critiques (Core + Distrib serveurs)
   - UPS salle serveurs


EMPLACEMENTS SWITCHS :

RDC :
─────
Local technique central (baie 42U) :
- SW-CORE-1
- SW-CORE-2
- SW-DIST-RDC-1
- Routeur/Firewall
- Panels de brassage
- UPS

Étage 1 :
─────────
Local technique (baie 12U) :
- SW-DIST-E1-1
- SW-DIST-E1-2
- Panels de brassage

Étage 2 :
─────────
Salle serveurs (baie 42U) :
- SW-DIST-E2-1
- SW-DIST-E2-2
- Serveurs
- NAS
- Panels de brassage
- UPS



5. SCHÉMA RÉSEAU DÉTAILLÉ
──────────────────────────

[GRAPHIQUE] SCHÉMA COMPLET (Vue logique)

                    [CLOUD] Internet
                        │
                 ┌──────[BLACK_DOWN-POINTING_TRIANGLE]──────┐
                 │   FortiGate │ WAN1: Fibre 1Gb
                 │     200F    │ WAN2: 4G Backup
                 │  Firewall   │
                 └──────┬──────┘
                        │ 1G
          ┌─────────────┴─────────────┐
          │                           │
    ┌─────[BLACK_DOWN-POINTING_TRIANGLE]──────┐ LACP      ┌───────[BLACK_DOWN-POINTING_TRIANGLE]─────┐
    │ SW-CORE-1  │[BLACK_LEFT-POINTING_POINTER]─────────[BLACK_RIGHT-POINTING_POINTER]│ SW-CORE-2   │
    │  Catalyst  │ 2×10G Fiber│  Catalyst   │
    │  9300-48   │ OM4        │  9300-48    │
    │  L3, PoE+  │            │  L3, PoE+   │
    └─────┬──────┘            └──────┬──────┘
          │ 10G Fiber                │ 10G Fiber
          │ OM4                      │ OM4
    ┌─────┼──────┬────────────┬──────┼────┬──────┐
    │     │      │            │      │    │      │
    [BLACK_DOWN-POINTING_TRIANGLE]     [BLACK_DOWN-POINTING_TRIANGLE]      [BLACK_DOWN-POINTING_TRIANGLE]            [BLACK_DOWN-POINTING_TRIANGLE]      [BLACK_DOWN-POINTING_TRIANGLE]    [BLACK_DOWN-POINTING_TRIANGLE]      [BLACK_DOWN-POINTING_TRIANGLE]
┌────────────┐ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐
│SW-DIST-RDC │ │SW-E1-1 │ │SW-E1-2 │ │SW-E2-1 │ │SW-E2-2 │
│ C9200-48P  │ │C9200-48│ │C9200-48│ │C9200-48│ │C9200-24│
│ 48p, 740W  │ │48p,740W│ │48p,740W│ │48p,740W│ │24p,370W│
└─────┬──────┘ └───┬────┘ └───┬────┘ └───┬────┘ └───┬────┘
      │            │          │          │          │
      [BLACK_DOWN-POINTING_TRIANGLE]            [BLACK_DOWN-POINTING_TRIANGLE]          [BLACK_DOWN-POINTING_TRIANGLE]          [BLACK_DOWN-POINTING_TRIANGLE]          [BLACK_DOWN-POINTING_TRIANGLE]


RDC :
─────
VLAN 10 (Comptabilité) : 8 PCs
VLAN 20 (Direction) : 5 PCs + 3 Accueil
VLAN 40 (VoIP) : 8 Phones
VLAN 50 (Cameras) : 4 Cameras
VLAN 60 (Badges) : 2 Readers
VLAN 90 (WiFi-Emp) : 7 APs

Étage 1 :
─────────
VLAN 30 (Employés) : 42 PCs (Commercial + Marketing + Hot-desk)
VLAN 40 (VoIP) : 20 Phones
VLAN 50 (Cameras) : 4 Cameras
VLAN 60 (Badges) : 2 Readers
VLAN 90/95 (WiFi) : 7 APs

Étage 2 :
─────────
VLAN 30 (Employés) : 25 PCs (Technique + Support)
VLAN 40 (VoIP) : 12 Phones
VLAN 50 (Cameras) : 4 Cameras
VLAN 60 (Badges) : 2 Readers
VLAN 70 (Serveurs) : 4 Servers (2×10G each)
VLAN 80 (DMZ) : 1 Server
VLAN 90 (WiFi) : 7 APs


CODES COULEURS LIENS :

[ROUGE] Rouge : 10 Gbps (Fiber)
[ORANGE] Orange : 1 Gbps (Copper)
[VERT] Vert : PoE+
[BLEU] Bleu : Management VLAN



6. JUSTIFICATIONS TECHNIQUES
─────────────────────────────

CHOIX ARCHITECTURE HIÉRARCHIQUE :
──────────────────────────────────

[OK] Scalabilité : Facile ajouter switchs distribution
[OK] Performance : Backbone 10G, pas de goulot
[OK] Redondance : Double core, double uplinks
[OK] Gestion : Centralisée sur core L3
[OK] Segmentation : VLANs sur core, propagés
[OK] QoS : Configuré sur core, appliqué partout


CHOIX SWITCHS CISCO CATALYST :
───────────────────────────────

Catalyst 9300 (Core) :
[OK] Layer 3 (routage inter-VLAN)
[OK] Stacking (haute dispo)
[OK] Performance élevée (480 Gbps)
[OK] 10G uplinks intégrés
[OK] Fiabilité entreprise
[OK] Support Cisco (TAC)

Catalyst 9200 (Distribution) :
[OK] PoE+ 48 ports (740W budget)
[OK] 10G uplinks SFP+
[OK] Gestion Cisco DNA Center
[OK] Empilable (évolution)
[OK] Prix raisonnable


CHOIX FIBRE OM4 :
─────────────────

[OK] Support 10G sur 400m
[OK] Évolution vers 40/100G possible
[OK] Immunité EMI totale
[OK] Fiable sur longue durée
[OK] Standard actuel


CHOIX FORTIGATE 200F :
──────────────────────

[OK] Throughput 10 Gbps (pas de bottleneck)
[OK] UTM complet (IPS, AV, Web filtering)
[OK] VPN haute performance
[OK] Multi-WAN avec failover
[OK] Gestion centralisée (FortiManager)
[OK] Support 24/7


REDONDANCES JUSTIFIÉES :
────────────────────────

Double Core :
-> Disponibilité 99.9%+
-> Maintenance sans coupure
-> Fail-over automatique

Double Uplinks :
-> Pas de SPOF (Single Point of Failure)
-> Load balancing possible
-> Spanning Tree backup

Serveurs 2×NIC :
-> Agrégation 20 Gbps
-> Fail-over NIC
-> Performance maximale



PARTIE 3 : CÂBLAGE
══════════════════

7. SPÉCIFICATIONS CÂBLAGE
──────────────────────────

[GRAPHIQUE] TYPES DE CÂBLES

A) CÂBLE HORIZONTAL (Postes -> Panels)
──────────────────────────────────────

Type : Cat 6 UTP
Justification :
[OK] Support Gigabit (1 Gbps)
[OK] Évolution vers 10G courte distance possible
[OK] Prix raisonnable
[OK] Standard actuel
[OK] Facile à installer

Quantité :
- RDC : 60 points × 20m moyen = 1,200m
- Étage 1 : 80 points × 20m moyen = 1,600m
- Étage 2 : 70 points × 20m moyen = 1,400m

TOTAL Cat6 : 4,200m
Avec pertes/chutes (15%) : 4,200 × 1.15 = 4,830m
Arrondi : 5,000m

Prix : 0.50€/m × 5,000m = 2,500€


B) CÂBLE BACKBONE (Inter-étages, critique)
───────────────────────────────────────────

Type : Fibre optique OM4 (multimode)

Justification :
[OK] Support 10 Gbps sur 400m
[OK] Support 40 Gbps sur 150m (évolution)
[OK] Support 100 Gbps sur 100m
[OK] Immunité EMI totale
[OK] Longue durée de vie
[OK] Pas d'atténuation significative

Liens nécessaires :
1. Core 1 <-> Core 2 : 2 fibres (20m)
2. Core 1 <-> SW-DIST-RDC : 2 fibres (10m)
3. Core 2 <-> SW-DIST-RDC : 2 fibres (15m)
4. Core 1 <-> SW-E1-1 : 2 fibres (30m)
5. Core 2 <-> SW-E1-1 : 2 fibres (35m)
6. Core 1 <-> SW-E1-2 : 2 fibres (40m)
7. Core 2 <-> SW-E1-2 : 2 fibres (45m)
8. Core 1 <-> SW-E2-1 : 2 fibres (50m)
9. Core 2 <-> SW-E2-1 : 2 fibres (55m)
10. Core 1 <-> SW-E2-2 : 2 fibres (60m)
11. Core 2 <-> SW-E2-2 : 2 fibres (65m)

Note : 2 fibres = 1 pour TX, 1 pour RX

TOTAL longueurs :
20+10+15+30+35+40+45+50+55+60+65 = 425m

Avec marge (20%) : 425 × 1.2 = 510m

Câbles pré-terminés 12 fibres LC-LC :
- 6 câbles de 100m = 600m
Prix : 200€/câble × 6 = 1,200€


C) CÂBLES PATCH (Panels -> Switchs, Switchs -> Serveurs)
───────────────────────────────────────────────────────

Type : Cat 6 UTP (cuivre)
Longueur : 1m, 2m, 3m, 5m

Quantité :
- Panels -> Switchs : 312 câbles × 2m = 624m
- Serveurs -> Switchs : 8 × 3m = 24m

Câbles pré-fabriqués :
- 100× 1m : 200€
- 150× 2m : 450€
- 50× 3m : 200€
- 20× 5m : 150€

TOTAL Patch : 1,000€


D) TRANSCEIVERS SFP+ 10G
────────────────────────

Pour liens fiber 10G :

Quantité : 22 transceivers SFP+ 10GBASE-SR
(11 liens × 2 transceivers)

Prix unitaire : 150€
TOTAL : 22 × 150€ = 3,300€


[GRAPHIQUE] PANELS DE BRASSAGE

Type : Panels Cat6 blindés 24 ports

RDC (Local technique) :
- 3× Panels 24 ports pour câbles horizontaux
- 1× Panel fibre 24 ports LC

Étage 1 (Local technique) :
- 4× Panels 24 ports pour câbles horizontaux

Étage 2 (Salle serveurs) :
- 3× Panels 24 ports pour câbles horizontaux
- 1× Panel fibre 24 ports LC

TOTAL :
- 10× Panels cuivre 24p : 10 × 80€ = 800€
- 2× Panels fibre 24p : 2 × 150€ = 300€

TOTAL Panels : 1,100€


[GRAPHIQUE] BAIES DE BRASSAGE

RDC (Local technique) :
- 1× Baie 42U (2m hauteur)
- Équipements :
  * Core 1 : 1U
  * Core 2 : 1U
  * SW-DIST-RDC : 1U
  * Firewall : 2U
  * Panels : 4U
  * Organisateurs : 2U
  * UPS : 2U
  * Espace libre : 29U

Prix : 1,500€ (baie + accessoires)

Étage 1 (Local technique) :
- 1× Baie murale 12U
- Équipements :
  * SW-E1-1 : 1U
  * SW-E1-2 : 1U
  * Panels : 4U
  * Organisateurs : 2U
  * Espace libre : 4U

Prix : 500€

Étage 2 (Salle serveurs) :
- 1× Baie 42U
- Équipements :
  * SW-E2-1 : 1U
  * SW-E2-2 : 1U
  * Serveurs : 12U
  * NAS : 2U
  * Panels : 4U
  * Organisateurs : 2U
  * UPS : 3U
  * Espace libre : 17U

Prix : 1,500€

TOTAL Baies : 3,500€


[GRAPHIQUE] CONNECTEURS ET ACCESSOIRES

Connecteurs RJ45 Cat6 : 500 pièces
- Boîtes de 100 : 5 × 30€ = 150€

Prises murales RJ45 Cat6 : 250 pièces
- 250 × 3€ = 750€

Goulottes murales :
- 500m × 5€/m = 2,500€

Passe-câbles, velcro, étiquettes :
- 500€

TOTAL Accessoires : 3,900€


[GRAPHIQUE] RÉCAPITULATIF CÂBLAGE

┌────────────────────────────┬───────────┐
│ Poste                      │   Prix    │
├────────────────────────────┼───────────┤
│ Câble Cat6 horizontal      │  2,500 €  │
│ Fibre OM4 backbone         │  1,200 €  │
│ Câbles patch               │  1,000 €  │
│ Transceivers SFP+ 10G      │  3,300 €  │
│ Panels de brassage         │  1,100 €  │
│ Baies de brassage          │  3,500 €  │
│ Connecteurs/Accessoires    │  3,900 €  │
├────────────────────────────┼───────────┤
│ TOTAL CÂBLAGE              │ 16,500 €  │
└────────────────────────────┴───────────┘


8. PLAN INSTALLATION CÂBLAGE
─────────────────────────────

[GRAPHIQUE] PASSAGES CÂBLES

Vertical (Inter-étages) :
- Gaine technique centrale
- 2× Passages de 300mm diamètre
- Protection câbles fibre
- Séparation courants forts/faibles

Horizontal (Intra-étage) :
- Faux-plafond (principal)
- Goulottes murales (bureaux cloisonnés)
- Chemins de câbles perforés
- Étiquetage complet


[GRAPHIQUE] PRISES MURALES PAR SALLE

RDC :
─────
Accueil : 6 prises (3 postes × 2 : PC + phone)
Comptabilité : 16 prises (8 postes × 2)
Direction : 10 prises (5 postes × 2)
Salle réunion A : 4 prises (backup, pas tout en Wi-Fi)
Caméras : 4 points PoE
Badges : 2 points PoE

TOTAL RDC : 42 prises + 6 PoE points

Étage 1 :
─────────
Commercial : 40 prises (20 × 2)
Marketing : 24 prises (12 × 2)
Hot-desk : 20 prises (10 × 2)
Salle réunion B : 4 prises
Caméras : 4 points PoE
Badges : 2 points PoE

TOTAL Étage 1 : 88 prises + 6 PoE points

Étage 2 :
─────────
Technique/R&D : 30 prises (15 × 2)
Support : 20 prises (10 × 2)
Salle formation : 20 prises (flexibility)
Caméras : 4 points PoE
Badges : 2 points PoE
Serveurs : 10 prises dédiées

TOTAL Étage 2 : 80 prises + 6 PoE points


ORGANISATION PRISES :

Bureaux :
- 2 prises par poste (PC + téléphone IP)
- Hauteur : 20cm du sol
- Modules RJ45 Cat6 sur plaques

Salles réunion :
- 4-6 prises murales réparties
- Prises de table (pop-up) : 2 par table

Caméras/APs :
- Prises plafond ou hauteur
- Boîtiers étanches si extérieur



PARTIE 4 : WI-FI
════════════════

9. DIMENSIONNEMENT WI-FI
────────────────────────

[GRAPHIQUE] CALCUL NOMBRE D'APs

Règle de dimensionnement :
- 1 AP pour 100-150 m² (bureau dense)
- 1 AP pour 30-50 utilisateurs simultanés
- Chevaucher couverture 15-20% (roaming)

Surface par étage : 40m × 25m = 1,000 m²

Méthode 1 (par surface) :
1,000 m² ÷ 120 m²/AP = 8.3 APs

Méthode 2 (par utilisateurs) :
- RDC : ~20 utilisateurs max -> 1 AP/25 = 1 AP minimum
- Étage 1 : ~50 utilisateurs -> 2 APs minimum
- Étage 2 : ~35 utilisateurs -> 1.5 APs

[IDEE] Contrainte surface >> contrainte utilisateurs

DIMENSIONNEMENT FINAL :

RDC : 7 APs
Étage 1 : 7 APs
Étage 2 : 7 APs

TOTAL : 21 APs


[GRAPHIQUE] PLACEMENT APs PAR ÉTAGE

RDC (40m × 25m) :
─────────────────

┌───────────────────────────────────────┐
│              RDC                      │
│                                       │
│  AP1 [RESEAU]        AP2 [RESEAU]       AP3 [RESEAU]   │
│                                       │
│         AP4 [RESEAU]       AP5 [RESEAU]          │
│                                       │
│  AP6 [RESEAU]               AP7 [RESEAU]         │
│                                       │
└───────────────────────────────────────┘

Espacement : ~10-12m entre APs
Placement : Plafond, hauteur 2.5-3m


MÊME PRINCIPE pour Étages 1 et 2


[GRAPHIQUE] MODÈLE AP CHOISI

Modèle : Cisco Catalyst 9120AXI
Ou : Ubiquiti UniFi 6 Pro (budget serré)

Spécifications :
- Norme : Wi-Fi 6 (802.11ax)
- Bandes : 2.4 GHz + 5 GHz (dual-band)
- Débit : Jusqu'à 2.4 Gbps
- Ports : 1× Gigabit PoE+ (802.3at)
- Consommation : 20W
- Utilisateurs simultanés : 100+
- MU-MIMO
- Beamforming
- Fast roaming (802.11r/k/v)

Prix Cisco : 800€/AP
Prix Ubiquiti : 180€/AP


[GRAPHIQUE] CONTRÔLEUR WI-FI

CHOIX 1 : Cisco Wireless LAN Controller
────────────────────────────────────────

Modèle : Cisco 9800-CL (Virtual/Cloud)
Ou : Cisco 9800-40 (Appliance physique)

Avantages :
[OK] Gestion centralisée 21 APs
[OK] Configuration unifiée
[OK] Roaming optimisé
[OK] Analytics et monitoring
[OK] Sécurité avancée

Prix :
- Virtual (sur VM) : 2,000€ licence
- Appliance 9800-40 : 5,000€


CHOIX 2 : Ubiquiti UniFi Controller
────────────────────────────────────

Modèle : UniFi Cloud Key Gen2 Plus
Ou : Logiciel gratuit sur serveur

Avantages :
[OK] Moins cher
[OK] Interface simple
[OK] Cloud management possible
[OK] Mobile app

Prix :
- Cloud Key : 200€
- Logiciel : Gratuit


[IDEE] RECOMMANDATION :
Si APs Cisco -> Cisco WLC (cohérence)
Si APs Ubiquiti -> UniFi Controller (gratuit)



10. CONFIGURATION WI-FI
───────────────────────

[GRAPHIQUE] SSIDs ET SÉCURITÉ

SSID 1 : "Entreprise"
──────────────────────

VLAN : 90 (WiFi-Employes)
Sécurité : WPA2-Enterprise (802.1X)
Authentification : RADIUS (Active Directory)
Bandes : 2.4 GHz + 5 GHz
Band steering : Activé (préférence 5 GHz)
Fast roaming : 802.11r/k/v
Isolation client : Désactivée
QoS : Standard

Utilisateurs :
- Tous les employés
- Authentification par login AD
- Certificats possibles

Accès :
[OK] Serveurs internes
[OK] Imprimantes
[OK] Ressources réseau
[OK] Internet


SSID 2 : "Invites"
──────────────────

VLAN : 95 (WiFi-Invites)
Sécurité : WPA2-PSK
Mot de passe : InvitesEntreprise2024!
Rotation : Mensuelle
Bandes : 2.4 GHz + 5 GHz
Isolation client : ACTIVÉE (clients ne se voient pas)
Fast roaming : Désactivé (pas critique)
QoS : Basse priorité
Portail captif : Optionnel (page accueil)

Utilisateurs :
- Visiteurs
- Consultants externes
- Livreurs

Accès :
[OK] Internet UNIQUEMENT
[X] Aucun accès ressources internes
[X] Isolation totale du LAN

Règles Firewall :
- DENY VLAN 95 -> ANY (sauf Internet)
- ALLOW VLAN 95 -> Internet
- Rate limiting : 10 Mbps par client


SSID 3 : "VoIP-WiFi" (optionnel)
─────────────────────────────────

VLAN : 40 (VoIP)
Sécurité : WPA2-Enterprise
Authentification : Certificats téléphones
Bandes : 5 GHz uniquement (moins saturé)
QoS : PRIORITÉ MAXIMALE
Fast roaming : 802.11r obligatoire
Beamforming : Activé

Utilisateurs :
- Téléphones Wi-Fi (si ajoutés)
- Softphones (mobiles)

Accès :
[OK] Serveur VoIP
[OK] Internet (SIP trunk)
[X] Ressources réseau générales

Configuration QoS :
- DSCP : EF (Expedited Forwarding)
- WMM : Voice
- Admission control : Activé


[GRAPHIQUE] PARAMÈTRES AVANCÉS

Canaux 2.4 GHz :
────────────────

APs répartis sur canaux 1, 6, 11 (non-chevauchants)

Exemple :
AP1, AP4, AP7 : Canal 1
AP2, AP5 : Canal 6
AP3, AP6 : Canal 11

Auto-channel : Activé avec DFS

Largeur canal : 20 MHz (pas 40 MHz)
Raison : 2.4 GHz saturé, 40 MHz = interférences


Canaux 5 GHz :
──────────────

Auto-channel : Activé
DFS (Dynamic Frequency Selection) : Activé
Largeur canal : 40 MHz ou 80 MHz

Canaux préférés : 36, 40, 44, 48, 149, 153, 157, 161


Puissance TX :
──────────────

2.4 GHz : Auto (max 20 dBm)
5 GHz : Auto (max 23 dBm)

[IDEE] NE PAS mettre au maximum !
Trop puissant = déborde sur voisins, interférences

Objectif : -65 dBm signal minimum
Overlap : 15-20% entre APs


Band Steering :
───────────────

Activé pour SSID "Entreprise"
Force clients 5 GHz-capables vers 5 GHz
Laisse 2.4 GHz pour anciens appareils

Mécanisme :
- Ignore probe requests 2.4 GHz si client supporte 5 GHz
- Envoie deauth 2.4 GHz vers clients 5 GHz


Fast Roaming :
──────────────

802.11r (Fast Transition) : Activé
802.11k (Neighbor Report) : Activé
802.11v (BSS Transition) : Activé

Bénéfices :
- Roaming < 50ms (vs 3-5 secondes)
- VoIP sans coupure
- Vidéo fluide en mouvement

Configuration :
- Mobility Domain : 0xF000 (même pour tous APs)
- FT Over-the-Air : Activé


Client Isolation :
──────────────────

"Entreprise" : DÉSACTIVÉE
-> Employés peuvent AirDrop, Chromecast, etc.

"Invites" : ACTIVÉE
-> Visiteurs totalement isolés entre eux
-> Sécurité et confidentialité


Broadcast SSID :
────────────────

Tous : Visible (broadcast)

Hidden SSID : Éviter
Raison : Fausse sécurité, complique connexion



PARTIE 5 : CONFIGURATION
════════════════════════

11. CONFIGURATION SWITCH CORE
──────────────────────────────

[LISTE] CONFIGURATION SW-CORE-1 (Cisco Catalyst 9300)


[OUTIL] CONNEXION INITIALE
─────────────────────

console> enable
console# configure terminal


[OUTIL] CONFIGURATION DE BASE
────────────────────────

! Nom du switch
hostname SW-CORE-1

! Bannière
banner motd ^
****************************************
*   SWITCH CORE 1 - ACCES RESTREINT  *
*   Contact: admin@entreprise.com    *
****************************************
^

! Désactiver résolution DNS
no ip domain-lookup

! Fuseau horaire
clock timezone CET 1 0
clock summer-time CEST recurring last Sun Mar 2:00 last Sun Oct 3:00


[OUTIL] MOTS DE PASSE ET SÉCURITÉ
────────────────────────────

! Mot de passe console
line console 0
 password Console2024!
 login
 logging synchronous
 exec-timeout 15 0
 exit

! Mot de passe enable (privilégié)
enable secret EnableCore2024!

! Chiffrer tous les mots de passe
service password-encryption

! Utilisateur admin local
username admin privilege 15 secret Admin2024!
username technicien privilege 7 secret Tech2024!


[OUTIL] INTERFACE DE GESTION
───────────────────────

! VLAN Management
vlan 1
 name Management
 exit

! Interface VLAN 1
interface vlan 1
 description Management-Interface
 ip address 192.168.1.10 255.255.255.0
 no shutdown
 exit

! Passerelle par défaut (vers firewall)
ip default-gateway 192.168.1.1

! Route statique vers Internet (si routage L3)
ip route 0.0.0.0 0.0.0.0 192.168.1.1


[OUTIL] SSH (SÉCURISÉ)
─────────────────

! Domaine
ip domain-name entreprise.local

! Générer clés RSA (2048 bits minimum)
crypto key generate rsa modulus 2048

! Version SSH 2 uniquement
ip ssh version 2
ip ssh time-out 60
ip ssh authentication-retries 3

! VTY (lignes Telnet/SSH)
line vty 0 15
 transport input ssh    ! SSH uniquement, pas Telnet
 login local            ! Authentification locale
 exec-timeout 15 0      ! Timeout 15 minutes
 exit


[OUTIL] CRÉATION VLANs
─────────────────

! VLAN 10 - Comptabilité
vlan 10
 name Comptabilite
 exit

! VLAN 20 - Direction
vlan 20
 name Direction
 exit

! VLAN 30 - Employés
vlan 30
 name Employes
 exit

! VLAN 40 - VoIP
vlan 40
 name VoIP
 exit

! VLAN 50 - Caméras
vlan 50
 name Cameras
 exit

! VLAN 60 - Badges
vlan 60
 name Controle-Acces
 exit

! VLAN 70 - Serveurs
vlan 70
 name Serveurs
 exit

! VLAN 80 - DMZ
vlan 80
 name DMZ
 exit

! VLAN 90 - Wi-Fi Employés
vlan 90
 name WiFi-Employes
 exit

! VLAN 95 - Wi-Fi Invités
vlan 95
 name WiFi-Invites
 exit

! VLAN 99 - Infrastructure
vlan 99
 name Infrastructure
 exit


[OUTIL] INTERFACES SVI (ROUTAGE INTER-VLAN)
──────────────────────────────────────

! Activer routage IP
ip routing

! VLAN 10 - Comptabilité
interface vlan 10
 description Comptabilite
 ip address 192.168.10.1 255.255.255.0
 no shutdown
 exit

! VLAN 20 - Direction
interface vlan 20
 description Direction
 ip address 192.168.20.1 255.255.255.0
 no shutdown
 exit

! VLAN 30 - Employés
interface vlan 30
 description Employes
 ip address 192.168.30.1 255.255.254.0    ! /23 pour 500 IPs
 no shutdown
 exit

! VLAN 40 - VoIP
interface vlan 40
 description VoIP
 ip address 192.168.40.1 255.255.255.0
 no shutdown
 exit

! VLAN 50 - Caméras
interface vlan 50
 description Cameras
 ip address 192.168.50.1 255.255.255.0
 no shutdown
 exit

! VLAN 60 - Badges
interface vlan 60
 description Controle-Acces
 ip address 192.168.60.1 255.255.255.0
 no shutdown
 exit

! VLAN 70 - Serveurs
interface vlan 70
 description Serveurs
 ip address 192.168.70.1 255.255.255.0
 no shutdown
 exit

! VLAN 80 - DMZ
interface vlan 80
 description DMZ
 ip address 192.168.80.1 255.255.255.0
 no shutdown
 exit

! VLAN 90 - Wi-Fi Employés
interface vlan 90
 description WiFi-Employes
 ip address 192.168.90.1 255.255.254.0    ! /23
 no shutdown
 exit

! VLAN 95 - Wi-Fi Invités
interface vlan 95
 description WiFi-Invites
 ip address 192.168.95.1 255.255.255.0
 no shutdown
 exit

! VLAN 99 - Infrastructure
interface vlan 99
 description Infrastructure
 ip address 192.168.99.1 255.255.255.0
 no shutdown
 exit


[OUTIL] HELPER DHCP (RELAIS)
───────────────────────

! DHCP Server sur serveur 192.168.70.10

interface vlan 10
 ip helper-address 192.168.70.10
 exit

interface vlan 20
 ip helper-address 192.168.70.10
 exit

interface vlan 30
 ip helper-address 192.168.70.10
 exit

! Etc. pour tous les VLANs clients


[OUTIL] CONFIGURATION PORTS
──────────────────────

! Ports vers Firewall (VLAN 1 management)
interface gigabitethernet 1/0/1
 description Firewall-WAN
 switchport mode access
 switchport access vlan 1
 spanning-tree portfast
 no shutdown
 exit

! Uplink vers SW-CORE-2 (Stacking ou LACP)
! Stacking via StackWise (ports dédiés)
! Ou LACP sur ports 10G

interface range TenGigabitEthernet 1/1/1-2
 description Uplink-to-CORE-2
 channel-group 1 mode active    ! LACP
 no shutdown
 exit

interface port-channel 1
 description Port-Channel-CORE-2
 switchport mode trunk
 switchport trunk allowed vlan all
 exit

! Uplinks vers Switchs Distribution (Fiber 10G)
interface TenGigabitEthernet 1/1/3
 description Uplink-SW-DIST-RDC-1
 switchport mode trunk
 switchport trunk allowed vlan 10,20,30,40,50,60,90,95,99
 no shutdown
 exit

interface TenGigabitEthernet 1/1/4
 description Uplink-SW-DIST-E1-1
 switchport mode trunk
 switchport trunk allowed vlan 30,40,50,60,90,95,99
 no shutdown
 exit

! (Répéter pour autres uplinks E1-2, E2-1, E2-2)


[OUTIL] SPANNING TREE
────────────────

! Mode Rapid PVST+
spanning-tree mode rapid-pvst

! Priorité (pour être root)
spanning-tree vlan 1-99 priority 4096

! PortFast sur ports finaux (après config)
! spanning-tree portfast default (attention !)

! BPDU Guard global
spanning-tree portfast bpduguard default


[OUTIL] QoS (QUALITY OF SERVICE)
───────────────────────────

! Activer QoS
mls qos

! Faire confiance DSCP sur ports VoIP
! (à configurer port par port selon besoin)


[OUTIL] SNMP (MONITORING)
────────────────────

! Community strings (read-only)
snmp-server community MonitPublic RO
snmp-server community MonitPrivate RW

! Informations système
snmp-server location "Local Technique RDC"
snmp-server contact "admin@entreprise.com"

! Traps (alertes)
snmp-server enable traps snmp linkdown linkup
snmp-server enable traps config
snmp-server host 192.168.70.20 version 2c MonitPublic


[OUTIL] SYSLOG (JOURNAUX)
────────────────────

! Serveur Syslog
logging host 192.168.70.20
logging trap informational
logging source-interface vlan 1


[OUTIL] NTP (SYNCHRONISATION TEMPS)
──────────────────────────────

! Serveur NTP
ntp server 192.168.70.10
ntp source vlan 1


[OUTIL] SAUVEGARDER CONFIGURATION
────────────────────────────

! Sauvegarder en NVRAM
copy running-config startup-config
! Ou
write memory


[LISTE] CONFIGURATION COMPLÈTE ÉCRITE !


[OUTIL] VÉRIFICATIONS
────────────────

! Voir VLANs
show vlan brief

! Voir interfaces
show ip interface brief

! Voir routage
show ip route

! Voir Spanning Tree
show spanning-tree

! Voir ports channel
show etherchannel summary

! Voir table MAC
show mac address-table

! Tester SSH depuis PC
! ssh admin@192.168.1.10



12. RÈGLES FIREWALL PRINCIPALES
────────────────────────────────

[LISTE] POLITIQUE FIREWALL (FortiGate)

POLITIQUE GÉNÉRALE :
- Deny all par défaut
- Allow explicite seulement
- Log toutes les actions


[HOT] RÈGLES PAR VLAN

═══════════════════════════════════════════════════════════

RÈGLE 1 : Internet général (sortant)
─────────────────────────────────────

Source : VLAN 10, 20, 30, 40, 70, 90
Destination : Internet (any)
Service : HTTP, HTTPS, DNS
Action : ALLOW
NAT : Oui (PAT)
Log : Oui
IPS : Activé
Antivirus : Activé
Web filtering : Catégories (bloquer Adult, Gambling, etc.)


RÈGLE 2 : Wi-Fi Invités -> Internet UNIQUEMENT
──────────────────────────────────────────────

Source : VLAN 95 (WiFi-Invites)
Destination : Internet
Service : HTTP, HTTPS, DNS
Action : ALLOW
NAT : Oui
Log : Oui
Rate limiting : 10 Mbps par IP

Source : VLAN 95
Destination : ANY (LAN interne)
Action : DENY
Log : Oui


RÈGLE 3 : Employés -> Serveurs
──────────────────────────────

Source : VLAN 30 (Employés)
Destination : VLAN 70 (Serveurs)
Service : SMB (445), HTTP (80), HTTPS (443)
Action : ALLOW
Log : Oui


RÈGLE 4 : Comptabilité ISOLÉE
──────────────────────────────

Source : VLAN 10 (Comptabilité)
Destination : VLAN 30 (Employés)
Action : DENY
Log : Oui

Source : VLAN 10
Destination : VLAN 70 (Serveurs spécifiques)
Service : SMB, SQL (1433)
Action : ALLOW
Log : Oui


RÈGLE 5 : Direction -> Tout
───────────────────────────

Source : VLAN 20 (Direction)
Destination : ANY
Action : ALLOW
Log : Oui
Note : Direction a accès complet (PDG, DG)


RÈGLE 6 : DMZ -> Internet
─────────────────────────

Source : VLAN 80 (DMZ - Serveur Web/Mail)
Destination : Internet
Service : HTTP, HTTPS, SMTP, DNS
Action : ALLOW
NAT : Oui (IP publique statique)
Log : Oui


RÈGLE 7 : Internet -> DMZ (Entrant)
───────────────────────────────────

Source : Internet
Destination : 203.0.113.50 (IP publique serveur web)
Service : HTTP (80), HTTPS (443)
Action : ALLOW
NAT : DNAT vers 192.168.80.10 (serveur DMZ)
IPS : Activé (protection serveur)
Log : Oui

Source : Internet
Destination : 203.0.113.50
Service : SMTP (25), SMTPS (465), IMAP (993)
Action : ALLOW
NAT : DNAT vers 192.168.80.10
Log : Oui


RÈGLE 8 : DMZ -> LAN Interne
────────────────────────────

Source : VLAN 80 (DMZ)
Destination : VLAN 10, 20, 30, 70 (LAN)
Action : DENY (sauf exceptions)
Log : Oui

! Exception : DMZ -> Serveur AD (authentification)
Source : 192.168.80.10
Destination : 192.168.70.5 (Serveur AD)
Service : LDAP (389), LDAPS (636)
Action : ALLOW
Log : Oui


RÈGLE 9 : Caméras/Badges ISOLÉS
────────────────────────────────

Source : VLAN 50 (Caméras)
Destination : 192.168.70.30 (Serveur NVR)
Service : RTSP, HTTP
Action : ALLOW
Log : Oui

Source : VLAN 50
Destination : ANY (autre)
Action : DENY
Log : Oui

Source : VLAN 60 (Badges)
Destination : 192.168.70.40 (Serveur contrôle accès)
Service : TCP 3001 (custom)
Action : ALLOW
Log : Oui

Source : VLAN 60
Destination : ANY (autre)
Action : DENY


RÈGLE 10 : VoIP -> Serveur VoIP + SIP Trunk
───────────────────────────────────────────

Source : VLAN 40 (VoIP)
Destination : 192.168.70.50 (Serveur VoIP)
Service : SIP (5060), RTP (10000-20000)
Action : ALLOW
QoS : Priorité maximale
Log : Non (trop de logs)

Source : VLAN 40
Destination : Internet (SIP trunk opérateur)
Service : SIP, RTP
Action : ALLOW
QoS : Priorité
NAT : ALG SIP activé


RÈGLE 11 : Infrastructure -> Management
───────────────────────────────────────

Source : 192.168.1.0/24 (Postes admins)
Destination : VLAN 99 (Infrastructure)
Service : SSH (22), HTTPS (443), SNMP (161)
Action : ALLOW
Log : Oui

Source : ANY (autre)
Destination : VLAN 99
Action : DENY
Log : Oui


RÈGLE 12 : VPN (Accès distant employés)
────────────────────────────────────────

Source : Internet
Destination : IP publique firewall
Service : IPsec (UDP 500, 4500), OpenVPN (1194)
Action : ALLOW
Log : Oui

! Pool VPN : 192.168.100.0/24
! Accès VPN -> Ressources internes
Source : 192.168.100.0/24 (Pool VPN)
Destination : VLAN 30, 70
Action : ALLOW
Log : Oui


[GRAPHIQUE] TABLEAU RÉCAPITULATIF RÈGLES

┌────────┬──────────┬─────────────┬─────────┬────────┐
│  #  │  Source  │ Destination │ Service │ Action │
├────────┼──────────┼─────────────┼─────────┼────────┤
│  1     │LAN VLANs │ Internet    │HTTP/HTTPS│ ALLOW │
│  2     │WiFi-Inv  │ Internet    │HTTP/HTTPS│ ALLOW │
│  2b    │WiFi-Inv  │ LAN         │   ANY    │ DENY  │
│  3     │Employés  │ Serveurs    │SMB/HTTP  │ ALLOW │
│  4a    │Compta    │ Employés    │   ANY    │ DENY  │
│  4b    │Compta    │ Srv (sélect)│SMB/SQL   │ ALLOW │
│  5     │Direction │ ALL         │   ANY    │ ALLOW │
│  6     │DMZ       │ Internet    │HTTP/SMTP │ ALLOW │
│  7     │Internet  │ DMZ         │HTTP/SMTP │ ALLOW │
│  8     │DMZ       │ LAN         │   ANY    │ DENY  │
│  9a    │Cameras   │ NVR Srv     │   RTSP   │ ALLOW │
│  9b    │Cameras   │ Autres      │   ANY    │ DENY  │
│  10    │VoIP      │ Srv VoIP    │SIP/RTP   │ ALLOW │
│  11    │Admins    │Infrastr.    │SSH/HTTPS │ ALLOW │
│  12    │VPN       │ LAN         │   ANY    │ ALLOW │
└────────┴──────────┴─────────────┴─────────┴────────┘


[VERROUILLE] SERVICES SÉCURITÉ ACTIVÉS

IPS (Intrusion Prevention) :
[OK] Activé sur trafic WAN -> LAN
[OK] Activé sur DMZ

Antivirus :
[OK] Scanning HTTP/HTTPS/FTP/SMTP
[OK] Base de données à jour automatique

Web Filtering :
[OK] Catégories bloquées : Adult, Gambling, Malware
[OK] SafeSearch forcé (Google, Bing)

Application Control :
[OK] Bloquer P2P (BitTorrent, etc.)
[OK] Limiter streaming vidéo (optionnel)

SSL Inspection :
[ATTENTION] Optionnel (problèmes certificats)
[OK] Activer pour detection malware HTTPS

Geoblocking :
[OK] Bloquer pays haut risque (Russie, Chine, etc.)
[OK] Sauf si besoins métier spécifiques


[LISTE] FIN PARTIE 5



PARTIE 6 : BUDGET ET PLANNING
══════════════════════════════

13. LISTE COMPLÈTE ÉQUIPEMENTS
───────────────────────────────

[GRAPHIQUE] SWITCHS

┌────────────────────────┬─────┬──────────┬───────────┐
│ Équipement             │ Qté │ Prix U.  │  Total    │
├────────────────────────┼─────┼──────────┼───────────┤
│ Cisco Catalyst 9300-48 │  2  │ 12,000 € │ 24,000 €  │
│ (Core L3, 48p, 4×10G)  │     │          │           │
├────────────────────────┼─────┼──────────┼───────────┤
│ Cisco Catalyst 9200-48P│  5  │  8,000 € │ 40,000 €  │
│ (Distrib, 48p PoE+740W)│     │          │           │
├────────────────────────┼─────┼──────────┼───────────┤
│ Cisco Catalyst 9200-24P│  1  │  5,000 € │  5,000 €  │
│ (Serveurs, 24p PoE+)   │     │          │           │
└────────────────────────┴─────┴──────────┴───────────┘
SOUS-TOTAL SWITCHS :                        69,000 €


[GRAPHIQUE] ROUTEUR/FIREWALL

┌────────────────────────┬─────┬──────────┬───────────┐
│ FortiGate 200F         │  1  │  5,000 € │  5,000 €  │
│ + Licence 3 ans UTM    │  1  │  3,000 € │  3,000 €  │
└────────────────────────┴─────┴──────────┴───────────┘
SOUS-TOTAL FIREWALL :                        8,000 €


[GRAPHIQUE] WI-FI

┌────────────────────────┬─────┬──────────┬───────────┐
│ Option A : Cisco                                    │
├────────────────────────┼─────┼──────────┼───────────┤
│ Cisco Catalyst 9120AXI │ 21  │   800 €  │ 16,800 €  │
│ (AP Wi-Fi 6, PoE+)     │     │          │           │
├────────────────────────┼─────┼──────────┼───────────┤
│ Cisco WLC 9800-CL      │  1  │ 2,000 €  │  2,000 €  │
│ (Contrôleur virtual)   │     │          │           │
├────────────────────────┼─────┼──────────┼───────────┤
│ SOUS-TOTAL Option A    │     │          │ 18,800 €  │
├────────────────────────┼─────┼──────────┼───────────┤
│ Option B : Ubiquiti                                 │
├────────────────────────┼─────┼──────────┼───────────┤
│ Ubiquiti UniFi 6 Pro   │ 21  │   180 €  │  3,780 €  │
├────────────────────────┼─────┼──────────┼───────────┤
│ UniFi Cloud Key Gen2+  │  1  │   200 €  │    200 €  │
├────────────────────────┼─────┼──────────┼───────────┤
│ SOUS-TOTAL Option B    │     │          │  3,980 €  │
└────────────────────────┴─────┴──────────┴───────────┘

CHOIX RECOMMANDÉ : Option B (Ubiquiti)
SOUS-TOTAL WI-FI :                           3,980 €


[GRAPHIQUE] CÂBLAGE (Déjà détaillé partie 3)

SOUS-TOTAL CÂBLAGE :                        16,500 €


[GRAPHIQUE] ALIMENTATION ET PROTECTION

┌────────────────────────┬─────┬──────────┬───────────┐
│ UPS 3000VA (Rack 2U)   │  2  │   800 €  │  1,600 €  │
│ (Core + Serveurs)      │     │          │           │
├────────────────────────┼─────┼──────────┼───────────┤
│ UPS 1500VA (Rack 1U)   │  3  │   400 €  │  1,200 €  │
│ (Distrib RDC, E1, E2)  │     │          │           │
├────────────────────────┼─────┼──────────┼───────────┤
│ PDU (Multiprises rack) │  5  │   150 €  │    750 €  │
└────────────────────────┴─────┴──────────┴───────────┘
SOUS-TOTAL POWER :                           3,550 €


[GRAPHIQUE] SERVICES ET LICENCES

┌────────────────────────┬─────┬──────────┬───────────┐
│ Installation câblage   │  1  │ 5,000 €  │  5,000 €  │
│ (Main d'œuvre)         │     │          │           │
├────────────────────────┼─────┼──────────┼───────────┤
│ Configuration switchs  │  1  │ 2,000 €  │  2,000 €  │
│ (Prestation)           │     │          │           │
├────────────────────────┼─────┼──────────┼───────────┤
│ Formation admins       │  1  │ 1,500 €  │  1,500 €  │
│ (2 jours)              │     │          │           │
└────────────────────────┴─────┴──────────┴───────────┘
SOUS-TOTAL SERVICES :                        8,500 €


[GRAPHIQUE] DIVERS

┌────────────────────────┬─────┬──────────┬───────────┤
│ Outillage (pince, etc.)│  1  │   500 €  │    500 €  │
├────────────────────────┼─────┼──────────┼───────────┤
│ Étiquettes, velcro     │  1  │   300 €  │    300 €  │
├────────────────────────┼─────┼──────────┼───────────┤
│ Documentation,schémas  │  1  │   200 €  │    200 €  │
└────────────────────────┴─────┴──────────┴───────────┘
SOUS-TOTAL DIVERS :                          1,000 €



14. BUDGET TOTAL
────────────────

[GRAPHIQUE] RÉCAPITULATIF GÉNÉRAL

┌──────────────────────────────┬──────────────┐
│ POSTE                        │    MONTANT   │
├──────────────────────────────┼──────────────┤
│ Switchs                      │   69,000 €   │
│ Routeur/Firewall             │    8,000 €   │
│ Wi-Fi                        │    3,980 €   │
│ Câblage                      │   16,500 €   │
│ Alimentation/Protection      │    3,550 €   │
│ Services/Formation           │    8,500 €   │
│ Divers                       │    1,000 €   │
├──────────────────────────────┼──────────────┤
│ SOUS-TOTAL HT                │  110,530 €   │
├──────────────────────────────┼──────────────┤
│ Remise négociée (-10%)       │  -11,053 €   │
├──────────────────────────────┼──────────────┤
│ TOTAL HT                     │   99,477 €   │
├──────────────────────────────┼──────────────┤
│ TVA 20%                      │   19,895 €   │
├──────────────────────────────┼──────────────┤
│ TOTAL TTC                    │  119,372 €   │
└──────────────────────────────┴──────────────┘

[ATTENTION] BUDGET DÉPASSÉ : 119,372€ vs 50,000€ demandés


[IDEE] OPTIONS POUR RÉDUIRE BUDGET :

OPTION 1 : Équipements moins chers
───────────────────────────────────

Remplacer Cisco par HP/Aruba ou Ubiquiti :
- Switchs Ubiquiti UniFi : -50% vs Cisco
- Firewall pfSense (gratuit) : -8,000€

Nouveau total : ~60,000€ TTC [OK]


OPTION 2 : Étaler sur 2 phases
───────────────────────────────

Phase 1 (50,000€) :
- Switchs essentiels
- Firewall
- Câblage complet
- Wi-Fi basique (10 APs)

Phase 2 (70,000€ - Année 2) :
- Switchs redondance
- APs supplémentaires
- UPS
- Monitoring avancé


OPTION 3 : Leasing/Location
────────────────────────────

Location matériel sur 3-5 ans :
- ~3,000€/mois
- Inclut maintenance et renouvellement
- Capex -> Opex



15. PLANNING INSTALLATION
──────────────────────────

[CALENDRIER] PLANNING GLOBAL : 8 SEMAINES


[LISTE] PHASE 1 : PRÉPARATION (Semaine 1-2)
──────────────────────────────────────

Semaine 1 :
[OK] Commande équipements (délai 2-4 semaines)
[OK] Site survey Wi-Fi (1 jour)
[OK] Validation plans câblage
[OK] Préparation baies de brassage

Semaine 2 :
[OK] Réception équipements (vérification)
[OK] Préparation configuration (templates)
[OK] Coordination avec électriciens (UPS)


[LISTE] PHASE 2 : INSTALLATION CÂBLAGE (Semaine 3-5)
───────────────────────────────────────────────

Semaine 3 : RDC
[OK] Installation baie principale
[OK] Tirage câbles horizontaux (3 jours)
[OK] Installation prises murales
[OK] Étiquetage
[OK] Tests câbles

Semaine 4 : Étage 1
[OK] Installation baie locale
[OK] Tirage câbles (3 jours)
[OK] Prises murales
[OK] Étiquetage
[OK] Tests

Semaine 5 : Étage 2
[OK] Installation baie serveurs
[OK] Tirage câbles
[OK] Fibre backbone (RDC <-> E1 <-> E2)
[OK] Tests fibre (OTDR)
[OK] Prises murales
[OK] Tests finaux


# ============================================================================
# [COURS] EXERCICES PRATIQUES - CHAPITRE 2 (SUITE ET FIN)
# ============================================================================


# ----------------------------------------------------------------------------
# SUITE EXERCICE 1 : PLANNING (FIN)
# ----------------------------------------------------------------------------

"""
[LISTE] PHASE 3 : INSTALLATION ÉQUIPEMENTS (Semaine 6)
─────────────────────────────────────────────────

Jour 1-2 : Switchs
[OK] Montage switchs en baies
[OK] Connexion alimentation + UPS
[OK] Câblage panels -> switchs (patch cables)
[OK] Étiquetage ports
[OK] Tests LED/Power

Jour 3-4 : Routeur/Firewall + Backbone
[OK] Installation routeur
[OK] Connexion WAN (coordination FAI)
[OK] Installation transceivers SFP+
[OK] Connexion fibres backbone
[OK] Tests liens 10G

Jour 5 : APs Wi-Fi
[OK] Installation APs (plafond/murs)
[OK] Connexion PoE
[OK] Tests alimentation
[OK] Vérification LEDs


[LISTE] PHASE 4 : CONFIGURATION (Semaine 7)
──────────────────────────────────────

Jour 1-2 : Switchs Core et Distribution
[OK] Configuration de base (hostnames, IPs)
[OK] Création VLANs
[OK] Configuration trunk/access ports
[OK] Spanning Tree
[OK] Link aggregation (LACP)
[OK] Tests connectivité inter-switchs

Jour 3 : Routeur/Firewall
[OK] Configuration interfaces WAN/LAN
[OK] Routage inter-VLAN
[OK] NAT/PAT
[OK] Règles firewall de base
[OK] Tests connectivité Internet

Jour 4 : Wi-Fi
[OK] Configuration contrôleur
[OK] Ajout APs au contrôleur
[OK] Configuration SSIDs
[OK] Sécurité (WPA2/Enterprise)
[OK] Tests connexion Wi-Fi

Jour 5 : Services
[OK] Configuration DHCP
[OK] Configuration DNS
[OK] SNMP monitoring
[OK] Syslog
[OK] NTP
[OK] Tests services


[LISTE] PHASE 5 : TESTS ET VALIDATION (Semaine 8)
────────────────────────────────────────────

Jour 1 : Tests réseau
[OK] Tests connectivité tous VLANs
[OK] Tests routage inter-VLAN
[OK] Tests accès Internet
[OK] Tests NAT/Firewall
[OK] Tests bande passante (iperf)

Jour 2 : Tests Wi-Fi
[OK] Site survey post-installation
[OK] Tests couverture (heatmap)
[OK] Tests roaming
[OK] Tests charge (plusieurs clients)
[OK] Tests isolation VLANs

Jour 3 : Tests services
[OK] DHCP (attribution IPs)
[OK] DNS (résolution noms)
[OK] VoIP (qualité appels)
[OK] Accès serveurs
[OK] Monitoring (SNMP, logs)

Jour 4 : Tests sécurité
[OK] Tests règles firewall
[OK] Tests isolation VLANs
[OK] Tests Wi-Fi invités (isolation)
[OK] Scan vulnérabilités (Nessus)
[OK] Tests IPS/IDS

Jour 5 : Documentation et formation
[OK] Documentation finale
[OK] Schémas as-built
[OK] Formation équipe IT (4h)
[OK] Handover client
[OK] Support jour 1


[GRAPHIQUE] GANTT SIMPLIFIÉ

Semaine │ 1  │ 2  │ 3  │ 4  │ 5  │ 6  │ 7  │ 8  │
────────┼────┼────┼────┼────┼────┼────┼────┼────┤
Prép.   │████│████│    │    │    │    │    │    │
Câblage │    │    │████│████│████│    │    │    │
Équip.  │    │    │    │    │    │████│    │    │
Config. │    │    │    │    │    │    │████│    │
Tests   │    │    │    │    │    │    │    │████│


[ATTENTION] RISQUES ET MITIGATION

Risque 1 : Retard livraison équipements
─────────────────────────────────────────
Impact : +2-4 semaines
Probabilité : Moyenne
Mitigation : 
- Commander tôt (délai fabricant)
- Stock de secours (switchs/APs basiques)
- Clauses contractuelles délais

Risque 2 : Problèmes câblage (distances, passages)
───────────────────────────────────────────────────
Impact : +1-2 semaines
Probabilité : Faible
Mitigation :
- Site survey détaillé avant
- Validation passages avec architecte
- Marge dans câbles commandés

Risque 3 : Configuration complexe (VLANs, firewall)
────────────────────────────────────────────────────
Impact : +3-5 jours
Probabilité : Moyenne
Mitigation :
- Préparation templates configuration
- Lab tests avant production
- Consultant expert si besoin

Risque 4 : Problèmes compatibilité
───────────────────────────────────
Impact : Variable
Probabilité : Faible
Mitigation :
- Validation compatibilité avant achat
- Tests en lab
- Plan B (équipements alternatifs)


[LISTE] LIVRABLES PROJET

1. Infrastructure physique
   - Réseau câblé opérationnel (300 ports)
   - Wi-Fi couverture complète (21 APs)
   - Backbone fibre 10G
   
2. Configuration
   - Switchs configurés (VLANs, routing)
   - Firewall configuré (règles, NAT)
   - Wi-Fi configuré (3 SSIDs)
   
3. Documentation
   - Schémas réseau (logique + physique)
   - Inventaire équipements
   - Plan adressage IP
   - Configuration switchs/firewall
   - Procédures maintenance
   
4. Formation
   - 2 jours formation équipe IT
   - Documentation utilisateur Wi-Fi
   - Guide dépannage rapide
   
5. Support
   - 30 jours support post-installation
   - Garantie matériel (3 ans)
   - Contrats maintenance (optionnel)


═══════════════════════════════════════════════════════════
[OBJECTIF] FIN EXERCICE 1
═══════════════════════════════════════════════════════════

[DOCS] CE QUE VOUS AVEZ APPRIS

[OK] Dimensionner infrastructure complète (300 ports)
[OK] Concevoir architecture hiérarchique 3 niveaux
[OK] Planifier VLANs et segmentation sécurité
[OK] Calculer besoins PoE (watts, ports)
[OK] Choisir équipements adaptés (switchs, routeur, APs)
[OK] Spécifier câblage (cuivre, fibre)
[OK] Dimensionner Wi-Fi (couverture, nombre APs)
[OK] Configurer switchs core (VLANs, routage, STP)
[OK] Définir règles firewall
[OK] Budgéter projet (~100k€)
[OK] Planifier installation (8 semaines)

[FORCE] COMPÉTENCES ACQUISES

Vous êtes maintenant capable de concevoir et déployer 
une infrastructure réseau d'entreprise professionnelle !
"""


# ----------------------------------------------------------------------------
# [COURS] EXERCICE 2 : DIAGNOSTIC ET DÉPANNAGE RÉSEAU
# ----------------------------------------------------------------------------

"""
[LISTE] ÉNONCÉ

Vous êtes technicien réseau dans une entreprise de 50 personnes.
Plusieurs problèmes sont rapportés ce matin. Vous devez les diagnostiquer 
et résoudre rapidement.

[ENTREPRISE] INFRASTRUCTURE EXISTANTE

Réseau :
- 1 routeur/box Internet (Freebox)
- 3 switchs Netgear 24 ports non-manageables
  * SW1 : Bureau étage 1
  * SW2 : Bureau étage 2  
  * SW3 : Salle serveurs étage 2
- 5 APs Ubiquiti UniFi
- 1 serveur fichiers Windows
- 1 NAS Synology

Adressage :
- Réseau : 192.168.1.0/24
- Routeur/Box : 192.168.1.1
- Serveur fichiers : 192.168.1.10
- NAS : 192.168.1.20
- DHCP : 192.168.1.100-200

Pas de VLANs (tout en VLAN 1)


[ALERTE] PROBLÈMES RAPPORTÉS

═══════════════════════════════════════════════════════════

PROBLÈME 1 : "Internet ne marche plus pour personne"
─────────────────────────────────────────────────────

Heure : 09h15
Rapporté par : Plusieurs utilisateurs
Symptômes :
- Aucun accès Internet depuis 09h00
- Navigation web : timeout
- Email : pas de réception
- Applications cloud : inaccessibles

Informations supplémentaires :
- Serveur fichiers : accessible
- Imprimantes réseau : fonctionnent
- Wi-Fi : connecté mais "pas d'Internet"


PROBLÈME 2 : "Le réseau est très lent depuis hier soir"
────────────────────────────────────────────────────────

Heure : 09h30
Rapporté par : Service comptabilité (étage 2)
Symptômes :
- Ouverture fichiers serveur : 2-3 minutes (vs 5 secondes normalement)
- Copies de fichiers : très lentes (200 KB/s vs 50 MB/s normalement)
- Navigation web : lente mais fonctionne
- Tous les PCs du service touchés (8 postes)

Informations supplémentaires :
- Autres services : RAS
- Problème uniquement étage 2 côté comptabilité
- Hier soir : rien de particulier signalé


PROBLÈME 3 : "Mon PC ne se connecte plus au réseau"
────────────────────────────────────────────────────

Heure : 10h00
Rapporté par : Marie (Marketing, étage 1)
Symptômes :
- Icône réseau : croix rouge "pas de connexion"
- ipconfig : "Média déconnecté"
- Voyant LED carte réseau : éteint
- PC démarré ce matin, hier tout fonctionnait

Informations supplémentaires :
- PC fixe Dell
- Câble Ethernet vers prise murale
- Prise murale : utilisée depuis 6 mois sans problème
- Voisin de bureau : réseau OK


PROBLÈME 4 : "Impossible d'accéder au serveur de fichiers"
───────────────────────────────────────────────────────────

Heure : 10h30
Rapporté par : Service commercial (étage 1)
Symptômes :
- Explorateur Windows : \\serveur ne répond pas
- Ping 192.168.1.10 : timeout
- Avant 10h15 : fonctionnait normalement
- Tous les PCs commerciaux touchés (12 postes)

Informations supplémentaires :
- Autres services : accès serveur OK
- NAS (192.168.1.20) : accessible
- Internet : fonctionne
- Serveur : physiquement allumé (LED vertes)


PROBLÈME 5 : "Wi-Fi déconnecte régulièrement"
──────────────────────────────────────────────

Heure : 11h00
Rapporté par : PDG (bureau direction)
Symptômes :
- Laptop déconnecte Wi-Fi toutes les 10-15 minutes
- Reconnecte automatiquement après 1-2 minutes
- Très gênant pour visio
- Problème depuis 3 jours

Informations supplémentaires :
- Laptop Dell, Windows 11
- Wi-Fi : "Entreprise" (WPA2)
- Bureau : étage 2, coin bâtiment
- Autres utilisateurs Wi-Fi : quelques plaintes similaires
- Réseau filaire (quand branché) : stable


═══════════════════════════════════════════════════════════


[OBJECTIF] QUESTIONS POUR CHAQUE PROBLÈME

Pour CHAQUE problème, répondre :

1. Hypothèses de causes (au moins 3)

2. Diagnostic méthodique :
   - Étapes à suivre (ordre logique)
   - Commandes/outils à utiliser
   - Ce qu'on cherche à vérifier

3. Cause probable (après diagnostic)

4. Solution immédiate (résoudre maintenant)

5. Solution long terme (éviter récurrence)

6. Temps de résolution estimé


[IDEE] CONSEILS AVANT DE COMMENCER

- Priorisez par impact (combien d'utilisateurs touchés)
- Méthodologie : Bottom-Up ou Top-Down selon le cas
- Isolez le problème (niveau OSI)
- Testez vos hypothèses une par une
- Documentez vos actions


[OK] CORRECTION DÉTAILLÉE

═══════════════════════════════════════════════════════════


PROBLÈME 1 : INTERNET NE MARCHE PLUS
═════════════════════════════════════

[RECHERCHE] 1. HYPOTHÈSES DE CAUSES

Hypothèse A : Panne FAI (Fournisseur Accès Internet)
─────────────────────────────────────────────────────
- Probabilité : Haute
- Ligne coupée, maintenance opérateur
- Tout le monde touché

Hypothèse B : Routeur/Box défaillant
─────────────────────────────────────
- Probabilité : Moyenne
- Plantage, redémarrage nécessaire
- Lien WAN down

Hypothèse C : Problème DNS
───────────────────────────
- Probabilité : Moyenne
- Serveurs DNS ne répondent pas
- Navigation par IP pourrait fonctionner

Hypothèse D : Câble WAN débranché
──────────────────────────────────
- Probabilité : Faible
- Accident, maintenance électrique
- Physique

Hypothèse E : Configuration routeur modifiée
─────────────────────────────────────────────
- Probabilité : Très faible
- Quelqu'un a changé config
- Peu probable si accès protégé


[LISTE] 2. DIAGNOSTIC MÉTHODIQUE

Priorisation : CRITIQUE (tout le monde touché)
Approche : Bottom-Up (commencer par physique)


ÉTAPE 1 : Vérifier LEDs routeur/box
────────────────────────────────────

Action : Se rendre au local technique, observer box

Voyants à vérifier :
[OK] Power : Vert fixe -> Alimenté OK
[OK] LAN : Vert clignotant -> Réseau local OK
[ROUGE] WAN/Internet : Rouge ou éteint -> PROBLÈME !

Si WAN rouge/éteint -> Pas de connexion Internet

Conclusion étape 1 : Confirme problème côté WAN


ÉTAPE 2 : Tests depuis un PC
────────────────────────────

Sur PC admin :

a) Vérifier connectivité locale
   ping 192.168.1.1 (routeur)
   
   [OK] Répond -> Réseau local OK
   [X] Timeout -> Problème local (peu probable vu symptômes)

b) Vérifier connectivité Internet par IP
   ping 8.8.8.8 (Google DNS)
   
   [X] Timeout -> Pas de routage Internet
   
c) Vérifier DNS
   ping google.com
   
   [X] Timeout ou "could not resolve" -> DNS KO aussi
   
d) Traceroute
   tracert 8.8.8.8
   
   Résultat attendu :
   1    <1 ms    192.168.1.1    (routeur)
   2     *        *        *     Request timed out.
   
   -> S'arrête au routeur, ne sort pas vers Internet


ÉTAPE 3 : Vérifier interface WAN du routeur
────────────────────────────────────────────

Accès interface web box :
http://192.168.1.1
Login : admin / mot de passe

Navigation : État -> Connexion Internet

Vérifications :
- État WAN : Connecté ou Déconnecté ?
- IP publique : Attribuée ou 0.0.0.0 ?
- Temps connexion : 0s si vient de déconnecter

Si État : Déconnecté
-> Confirme problème WAN


ÉTAPE 4 : Vérifier câblage WAN
──────────────────────────────

Vérifier physiquement :
[OK] Câble WAN branché fermement dans box
[OK] Câble pas endommagé
[OK] Côté modem/ONT (si fibre) : LED OK

Si fibre :
- LED PON (sur ONT) : Doit être verte
- Si rouge : Pas de signal fibre -> Panne FAI


ÉTAPE 5 : Tests additionnels
─────────────────────────────

a) Redémarrer box
   - Débrancher 30 secondes
   - Rebrancher
   - Attendre 2-3 minutes reconnexion
   
   Si après redémarrage -> Toujours KO
   -> Pas un problème temporaire box

b) Vérifier compte FAI
   - Se connecter espace client FAI
   - Vérifier : facture payée, pas de suspension
   - Vérifier : pas d'incident déclaré sur ligne


[GRAPHIQUE] 3. CAUSE PROBABLE

D'après diagnostic :

Voyants :
- Power : [OK] OK
- LAN : [OK] OK
- WAN : [ROUGE] KO

Tests :
- LAN accessible : [OK]
- Internet : [X]
- Traceroute s'arrête au routeur : [OK]

Interface box :
- WAN Déconnecté : [OK]
- IP publique : 0.0.0.0

ONT Fibre :
- LED PON : [ROUGE] Rouge (pas de signal)

CONCLUSION : Panne FAI (côté opérateur)

Problème hors de notre contrôle.
Fibre coupée ou maintenance opérateur non annoncée.


[OUTIL] 4. SOLUTION IMMÉDIATE

Actions :

a) Contacter FAI
   ────────────
   - Appeler hotline FAI immédiatement
   - Référencer numéro ligne
   - Ouvrir ticket incident
   - Demander ETA (temps résolution estimé)
   
b) Communication utilisateurs
   ──────────────────────────
   - Email à tous : "Panne Internet FAI, hors contrôle IT"
   - Estimation retour (communiquée par FAI)
   - Solutions temporaires (voir ci-dessous)
   
c) Solutions de contournement (si possible)
   ─────────────────────────────────────────
   
   Option 1 : Partage connexion 4G
   ─────────────────────────────
   Si box avec failover 4G :
   - Activer backup 4G
   - Débit limité (50 Mbps vs 1 Gbps)
   - Usage : emails prioritaires
   
   Option 2 : Hotspot smartphone
   ────────────────────────────
   Pour VIP (PDG, commerciaux critiques) :
   - Partage connexion leur 4G
   - Temporaire jusqu'à retour fibre
   
   Option 3 : Report réunions/calls
   ────────────────────────────────
   - Visios impossibles -> Reporter
   - Travail hors-ligne privilégié


[SECURITE] 5. SOLUTION LONG TERME

Pour éviter récurrence et améliorer résilience :

Solution A : Connexion Internet redondante (Multi-WAN)
───────────────────────────────────────────────────────

Configuration :
- WAN 1 : Fibre 1 Gbps (principal)
- WAN 2 : 4G/5G (backup automatique)

Équipement :
- Routeur Multi-WAN (ex: Ubiquiti EdgeRouter)
- Ou : Box avec failover 4G intégré
- Carte SIM data illimitée

Fonctionnement :
- Temps normal : 100% trafic sur fibre
- Détection panne fibre (ping monitoring)
- Bascule automatique sur 4G (< 30 secondes)
- Retour sur fibre quand revenue

Coût :
- Routeur Multi-WAN : 200-500€
- Abonnement 4G backup : 30€/mois
- Total : 200€ CAPEX + 360€/an OPEX

ROI :
- Productivité préservée lors pannes
- Évite pertes business (commerciaux, support)


Solution B : Lien Internet secondaire (différent FAI)
──────────────────────────────────────────────────────

Configuration :
- FAI 1 : Orange Fibre 1 Gbps
- FAI 2 : SFR Cable 500 Mbps (backup)

Avantages :
- Redondance totale (pas même opérateur)
- Si panne Orange -> SFR prend relais
- Load balancing possible (répartir charge)

Coût :
- Ligne secondaire : ~50€/mois
- Routeur dual-WAN : 500€
- Total : 500€ CAPEX + 600€/an OPEX


Solution C : Monitoring proactif
─────────────────────────────────

Système d'alertes :
- Monitoring connexion Internet (Zabbix, PRTG)
- Ping vers 8.8.8.8 toutes les minutes
- Si échec -> Alerte SMS admin immédiat
- Permet réaction plus rapide

Coût : Gratuit (logiciel open-source)


[IDEE] RECOMMANDATION :
Solution A (4G backup) si budget limité
Solution B si criticité haute (commerce en ligne, call center)


[TEMPS] 6. TEMPS DE RÉSOLUTION

Diagnostic : 15 minutes
Appel FAI + ticket : 30 minutes
Attente résolution FAI : 2-8 heures (selon panne)

TOTAL : 3-9 heures
(Hors de notre contrôle, dépend du FAI)

Si backup 4G disponible :
Bascule : 5 minutes
-> Service dégradé mais fonctionnel


═══════════════════════════════════════════════════════════


PROBLÈME 2 : RÉSEAU LENT COMPTABILITÉ
══════════════════════════════════════

[RECHERCHE] 1. HYPOTHÈSES DE CAUSES

Hypothèse A : Câble endommagé (comptabilité -> switch)
──────────────────────────────────────────────────────
- Probabilité : Moyenne
- Câble pincé, connecteur défectueux
- Explique pourquoi seulement ce service

Hypothèse B : Port switch en 100 Mbps (vs 1 Gbps)
──────────────────────────────────────────────────
- Probabilité : Haute
- Auto-négociation échouée
- Tombé en 100 Mbps ou half-duplex
- Goulot d'étranglement

Hypothèse C : Boucle réseau locale
───────────────────────────────────
- Probabilité : Moyenne
- Câble branché 2 fois (loop)
- Tempête broadcast
- Saturation segment

Hypothèse D : PC infecté (malware)
──────────────────────────────────
- Probabilité : Faible
- Un PC envoie beaucoup de trafic
- Sature le segment
- Vérifiable

Hypothèse E : Switch défectueux/saturé
───────────────────────────────────────
- Probabilité : Faible
- SW2 a un problème
- CPU saturé, mémoire pleine


[LISTE] 2. DIAGNOSTIC MÉTHODIQUE

Priorisation : HAUTE (8 utilisateurs bloqués)
Approche : Bottom-Up + isolation


ÉTAPE 1 : Identifier segment réseau concerné
─────────────────────────────────────────────

Cartographie :
- 8 PCs comptabilité -> Switch SW2 Étage 2
- Ports utilisés : Probablement 1-8
- Câbles : Vers prises murales

Question : Autres utilisateurs Étage 2 touchés ?
- Si OUI -> Problème switch SW2
- Si NON -> Problème câblage/ports spécifiques


ÉTAPE 2 : Vérifier voyants LED switch
──────────────────────────────────────

Se rendre à l'armoire réseau Étage 2, observer SW2

Voyants ports 1-8 (comptabilité) :
- Couleur : Orange ou Vert ?
  * [ORANGE] Orange : 100 Mbps (problème !)
  * [VERT] Vert : 1000 Mbps (Gigabit OK)
  
- Clignotement : Excessif ?
  * Clignotement normal : Trafic
  * Clignotement frénétique : Problème (boucle/saturation)

Si ports en orange -> TROUVÉ : Liens en 100 Mbps !


ÉTAPE 3 : Tests depuis un PC comptabilité
──────────────────────────────────────────

Sur PC utilisateur :

a) Vérifier vitesse lien
   ─────────────────────
   Windows :
   - Panneau de configuration -> Réseau
   - État carte réseau -> Vitesse
   
   Résultat attendu : 1.0 Gbps
   Si affiche : 100 Mbps -> PROBLÈME
   
   Ou ligne de commande :
   Get-NetAdapter | Select Name, LinkSpeed
   
b) Test débit (iperf)
   ──────────────────
   Entre PC comptabilité et serveur :
   
   PC : iperf3 -c 192.168.1.10
   
   Résultat :
   - Normal : 900+ Mbps
   - Observé : 90-95 Mbps
   
   -> Confirme limitation 100 Mbps (overhead ~10%)

c) Vérifier duplex
   ───────────────
   Sur PC :
   Get-NetAdapterAdvancedProperty | Where DisplayName -like "*duplex*"
   
   Doit afficher : Full Duplex
   Si : Half Duplex -> GROS PROBLÈME (collisions)


ÉTAPE 4 : Identifier cause 100 Mbps
────────────────────────────────────

Causes possibles lien 100 Mbps :

a) Câble Cat5 (pas Cat5e)
   - Ne supporte pas Gigabit fiablement
   - Rare si installation récente

b) Câble endommagé
   - Fils 4-5 ou 7-8 coupés
   - Gigabit nécessite 8 fils, 100 Mbps seulement 4
   - Auto-négociation tombe en 100 Mbps

c) Connecteur mal serti
   - Contact intermittent
   - Auto-négociation échoue

d) Port switch forcé 100 Mbps
   - Configuration manuelle (peu probable sur non-manageable)

e) Carte réseau PC vieille
   - Supporte seulement 100 Mbps
   - Vérifier tous les 8 PCs


ÉTAPE 5 : Tests câbles
──────────────────────

a) Testeur de câble
   ────────────────
   Utiliser testeur sur câbles prises murales :
   
   Test complet 8 fils :
   1-2 : [OK] OK
   3-6 : [OK] OK
   4-5 : [X] OUVERT (coupé !)
   7-8 : [X] OUVERT (coupé !)
   
   -> TROUVÉ : Fils 4-5 et 7-8 coupés !
   
   Gigabit nécessite 8 fils.
   100 Mbps fonctionne avec 4 fils (1-2, 3-6).
   
   -> Auto-négociation tombée en 100 Mbps.

b) Inspection visuelle
   ───────────────────
   Suivre câbles dans faux-plafond :
   
   Découverte : Câbles pincés par dalle plafond !
   
   Explication :
   - Hier soir : Travaux plafond (changement néon ?)
   - Dalle replacée sur câbles
   - Fils 4-5 et 7-8 sectionnés
   - Fils 1-2 et 3-6 encore intacts
   - 100 Mbps fonctionne, pas Gigabit


[GRAPHIQUE] 3. CAUSE PROBABLE

Câbles réseau pincés/sectionnés lors travaux hier soir.

Preuves :
[OK] Seulement comptabilité touchée (zone travaux)
[OK] Ports en 100 Mbps (pas 1000 Mbps)
[OK] Test câble : Fils 4-5 et 7-8 coupés
[OK] Timing : Hier soir travaux plafond
[OK] Inspection : Câbles visiblement endommagés


[OUTIL] 4. SOLUTION IMMÉDIATE

a) Vérifier étendue dégâts
   ───────────────────────
   Tester tous les câbles zone comptabilité :
   - 8 PCs : 6 câbles endommagés, 2 OK
   
b) Solutions temporaires
   ─────────────────────
   
   Option 1 : Câbles patch temporaires
   ───────────────────────────────────
   - Tirer câbles patch le long murs/plafond
   - Contourner zone endommagée
   - 20m câbles Cat6
   - Résolution : 1 heure
   
   Option 2 : Déplacer utilisateurs
   ────────────────────────────────
   - Installer 6 utilisateurs dans bureau adjacent
   - Prises murales OK
   - Temporaire (2-3 jours)

c) Informer utilisateurs
   ─────────────────────
   "Câbles endommagés lors travaux hier. 
    Réparation en cours, réseau lent temporairement.
    Retour normal cet après-midi."


[SECURITE] 5. SOLUTION LONG TERME

a) Réparer câblage permanent
   ─────────────────────────
   - Retirer câbles endommagés
   - Tirer nouveaux câbles Cat6
   - Protections : Chemins câbles, goulottes rigides
   - Sertissage professionnel
   - Tests complets (certification)
   
   Coût : 500€ (main d'œuvre + câbles)
   Temps : 1 journée

b) Protection physique câbles
   ──────────────────────────
   - Chemins de câbles métalliques
   - Goulottes rigides (pas de pincement possible)
   - Étiquettes "NE PAS ÉCRASER"
   - Coordination travaux futurs

c) Documentation câblage
   ──────────────────────
   - Plan câbles dans faux-plafond
   - Photos avant fermeture
   - Partager avec facilities (entretien bâtiment)
   - Évite accidents futurs

d) Procédure travaux
   ──────────────────
   Toute intervention plafond :
   1. Informer IT avant
   2. IT inspecte câbles
   3. Marquer zones sensibles
   4. IT vérifie après travaux


[TEMPS] 6. TEMPS DE RÉSOLUTION

Diagnostic : 30 minutes
Solution temporaire (câbles patch) : 1 heure
Solution permanente (recâblage) : 1 journée

TOTAL :
- Contournement : 1h30
- Réparation définitive : J+1


═══════════════════════════════════════════════════════════


PROBLÈME 3 : PC NE SE CONNECTE PLUS
════════════════════════════════════

[RECHERCHE] 1. HYPOTHÈSES DE CAUSES

Hypothèse A : Câble débranché/endommagé
────────────────────────────────────────
- Probabilité : Haute
- Câble coup de pied, femme de ménage
- Connecteur arraché

Hypothèse B : Port switch désactivé/HS
───────────────────────────────────────
- Probabilité : Moyenne
- Port éteint, défectueux
- Possible sur switch manageable

Hypothèse C : Carte réseau défectueuse
───────────────────────────────────────
- Probabilité : Faible
- Panne matérielle NIC
- Driver corrompu

Hypothèse D : Prise murale défectueuse
───────────────────────────────────────
- Probabilité : Faible
- Câblage mural coupé
- Connecteur RJ45 cassé

Hypothèse E : Câble mural débranché côté panel
───────────────────────────────────────────────
- Probabilité : Moyenne
- Femme ménage a débranché au panel
- Réorganisation rack


[LISTE] 2. DIAGNOSTIC MÉTHODIQUE

Priorisation : BASSE (1 seul utilisateur)
Mais : À résoudre rapidement (confort utilisateur)
Approche : Bottom-Up (physique -> logique)


ÉTAPE 1 : Vérifications visuelles basiques
───────────────────────────────────────────

a) Câble PC -> Prise murale
   ───────────────────────
   [OK] Bien enfoncé des 2 côtés ?
   [OK] Clip RJ45 pas cassé ?
   [OK] Câble pas visiblement endommagé ?
   [OK] Pas de pliure excessive ?
   
b) Voyants carte réseau PC
   ───────────────────────
   Observer LED à l'arrière du PC (port RJ45) :
   
   [NOIR] Éteint -> Pas de liaison (confirme symptôme)
   [VERT] Vert/Orange -> Liaison OK (problème ailleurs)

c) Voyant prise murale
   ───────────────────
   Certaines prises ont LED intégrée :
   [NOIR] Éteint -> Problème


ÉTAPE 2 : Test avec câble de rechange
──────────────────────────────────────

Action :
Remplacer câble PC -> Prise par câble neuf connu fonctionnel.

Résultat :
[NOIR] Toujours pas de liaison -> Pas le câble patch
[OK] Liaison OK -> Câble défectueux (RÉSOLU)

Dans notre cas : [NOIR] Toujours rien
-> Problème ailleurs (prise murale ou switch)


ÉTAPE 3 : Test sur autre prise murale
──────────────────────────────────────

Action :
Déplacer PC bureau voisin (réseau fonctionne).
Brancher sur prise murale voisine.

Résultat :
[OK] Liaison OK -> Problème = Prise murale Marie HS
[NOIR] Toujours rien -> Problème = Carte réseau PC

Dans notre cas : [OK] Fonctionne !
-> TROUVÉ : Prise murale Marie défectueuse


ÉTAPE 4 : Vérifier panel de brassage
─────────────────────────────────────

Se rendre armoire réseau Étage 1.

Identifier câble prise murale Marie :
- Grâce étiquetage : "E1-Bureau-Marie"
- Panel port numéro : 15

Vérifier :
a) Câble branché dans panel ? 
   [X] DÉBRANCHÉ ! (Voilà le problème)
   
b) Pourquoi débranché ?
   - Étiquette tombée ? 
   - Femme ménage ?
   - Maintenance hier ?


ÉTAPE 5 : Rebrancher et tester
───────────────────────────────

Action :
Rebrancher câble panel port 15 -> Switch SW1 port 15

Vérifier :
[OK] Voyant LED switch port 15 : Vert
[OK] Appeler Marie : "Essayer maintenant"
[OK] Marie : "Ça marche !"

RÉSOLU en 10 minutes !


[GRAPHIQUE] 3. CAUSE PROBABLE

Câble débranché au niveau du panel de brassage.

Hypothèse pourquoi :
- Femme ménage hier soir (a accroché câble)
- Ou maintenance réseau (mal rebranché)
- Ou étiquette tombée (câble retiré par erreur)


[OUTIL] 4. SOLUTION IMMÉDIATE

[OK] Rebrancher câble panel
[OK] Vérifier liaison
[OK] Tester avec Marie
[OK] RÉSOLU

Temps : 10 minutes


[SECURITE] 5. SOLUTION LONG TERME

a) Étiquetage renforcé
   ───────────────────
   - Étiquettes résistantes (pas papier)
   - Étiquettes thermiques ou plastique
   - Étiqueter DES 2 CÔTÉS (panel + switch)
   - Couleurs par étage

b) Organisateurs câbles
   ────────────────────
   - Serre-câbles velcro (pas zip-ties)
   - Empêche débranchements accidentels
   - Organisation propre = moins erreurs

c) Photos documentation
   ─────────────────────
   - Photo panel avant/après travaux
   - Permet vérifier si modifié
   - Diagramme rack à jour

d) Procédure accès armoire
   ────────────────────────
   - Armoire verrouillée
   - Clé seulement IT
   - Femme ménage : Pas accès
   - Si maintenance tierce : Supervision IT

e) Monitoring ports
   ────────────────
   Si switchs manageables :
   - Alertes si port tombe (link down)
   - SNMP trap -> Email admin
   - Réaction proactive


[TEMPS] 6. TEMPS DE RÉSOLUTION

Diagnostic : 10 minutes
- Vérif câble : 2 min
- Test autre prise : 3 min
- Vérif panel : 3 min
- Rebrancher : 2 min

TOTAL : 10 minutes


═══════════════════════════════════════════════════════════


PROBLÈME 4 : SERVEUR INACCESSIBLE (SERVICE COMMERCIAL)
═══════════════════════════════════════════════════════

[RECHERCHE] 1. HYPOTHÈSES DE CAUSES

Hypothèse A : Problème réseau (switch/câble)
─────────────────────────────────────────────
- Probabilité : Haute
- Lien serveur -> switch coupé
- Port switch HS
- Câble débranché

Hypothèse B : Serveur éteint/planté
────────────────────────────────────
- Probabilité : Moyenne
- Crash Windows
- Alimenta tion coupée
- LED vertes ≠ OS fonctionnel

Hypothèse C : Firewall Windows serveur
───────────────────────────────────────
- Probabilité : Faible
- Mise à jour Windows a activé firewall
- Bloque SMB (port 445)

Hypothèse D : Problème VLAN (si configuré)
───────────────────────────────────────────
- Probabilité : Très faible
- Pas de VLANs dans cette infra
- Mais vérifier quand même

Hypothèse E : Câble/port commercial -> switch
──────────────────────────────────────────────
- Probabilité : Faible
- Tout le service touché
- Peu probable que tous câbles KO


[LISTE] 2. DIAGNOSTIC MÉTHODIQUE

Priorisation : CRITIQUE (12 utilisateurs bloqués + serveur central)
Approche : Divide and Conquer


ÉTAPE 1 : Vérifier qui peut accéder au serveur
───────────────────────────────────────────────

Tests depuis différents emplacements :

PC Admin (vous) :
ping 192.168.1.10
[OK] Répond -> Serveur joignable depuis admin

PC Comptabilité (Étage 2) :
ping 192.168.1.10
[OK] Répond -> OK

PC Marketing (Étage 1, autre service) :
ping 192.168.1.10
[OK] Répond -> OK

PC Commercial (Étage 1) :
ping 192.168.1.10
[X] Timeout -> PAS OK !

CONCLUSION :
Serveur fonctionne.
Seulement service Commercial ne peut pas le joindre.
-> Problème réseau LOCAL service Commercial.


ÉTAPE 2 : Tests connectivité Commercial
────────────────────────────────────────

Depuis PC Commercial :

a) Ping passerelle
   ping 192.168.1.1 (routeur)
   [OK] Répond -> Connecté au réseau

b) Ping autre PC (Marketing)
   ping 192.168.1.150
   [OK] Répond -> Communication inter-services OK

c) Ping serveur
   ping 192.168.1.10
   [X] Timeout -> Bloqué !

d) Ping NAS
   ping 192.168.1.20
   [OK] Répond -> Bizarre, NAS OK mais pas serveur ?


ÉTAPE 3 : Vérifier adressage IP
────────────────────────────────

Sur PC Commercial :
ipconfig /all

Résultat attendu :
IP : 192.168.1.120
Masque : 255.255.255.0
Passerelle : 192.168.1.1
DNS : 192.168.1.1

Vérifier serveur :

Se connecter physiquement au serveur (écran/clavier)
Ou : RDP depuis PC admin (si fonctionne)

ipconfig /all

Résultat :
IP : 192.168.1.10
Masque : 255.255.255.0
Passerelle : 192.168.1.1

-> Adressages corrects


ÉTAPE 4 : Vérifier routage / ARP
─────────────────────────────────

Sur PC Commercial :

a) Table ARP
   arp -a
   
   Chercher entrée 192.168.1.10 :
   192.168.1.10    [X] PAS D'ENTRÉE !
   
   Normalement devrait être :
   192.168.1.10    00-1A-2B-3C-4D-5E

b) Forcer ARP
   ping -n 1 192.168.1.10
   arp -a
   
   Toujours pas d'entrée pour .10 !
   -> PC n'arrive pas à résoudre IP -> MAC

c) Sur serveur, vérifier si reçoit ARP Request
   
   Wireshark sur serveur :
   Filtrer : arp
   
   Observer : Aucun ARP request de PCs Commercial
   -> Requêtes ARP ne passent pas !


ÉTAPE 5 : Identifier point de blocage
──────────────────────────────────────

Hypothèse : Problème switch SW1 (Commercial sur SW1)

Se rendre armoire réseau Étage 1.

Inspection SW1 :

Ports 1-12 (Commercial) : [VERT] Vert OK
Port 24 (Uplink -> SW Core) : [VERT] Vert OK

Pas de voyant anormal.

[REFLEXION] Problème logique, pas physique ?

Sur switch NON-MANAGEABLE -> Pas de config possible.

MAIS... Observer attentivement :

[IDEE] DÉCOUVERTE : 2 câbles branchés entre SW1 et SW Core !
- Port 23 : Câble vers SW Core
- Port 24 : Câble vers SW Core (ajouté ce matin ?)

-> BOUCLE RÉSEAU !


ÉTAPE 6 : Confirmer boucle réseau
──────────────────────────────────

Boucle réseau :
SW1 ──┐
      ├─ SW Core (2 câbles = boucle !)
SW1 ──┘

Conséquences :
- Spanning Tree désactivé (switchs non-manageables)
- Tempête broadcast
- Table MAC instable (MAC flapping)
- Serveur apparaît sur 2 ports -> Confusion

Vérifier :
- Voyants SW1 : Clignotent frénétiquement ? [OK] OUI
- Charge CPU PC : Élevée ? [OK] OUI (traite broadcasts)

Test :
Débrancher 1 des 2 câbles (port 24)

Résultat immédiat :
[OK] Clignotements redeviennent normaux
[OK] ping 192.168.1.10 depuis Commercial : [OK] Répond !

TROUVÉ !


[GRAPHIQUE] 3. CAUSE PROBABLE

Boucle réseau créée ce matin (10h15).

Quelqu'un a branché un 2ème câble SW1 -> SW Core.
Probablement pour "améliorer débit" (erreur !).

Sans Spanning Tree :
- Tempête broadcast
- Table MAC instable
- Communication erratique
- Certains flux bloqués (dont Commercial -> Serveur)


[OUTIL] 4. SOLUTION IMMÉDIATE

[OK] Débrancher câble redondant (port 24)
[OK] Garder seulement 1 câble (port 23)
[OK] Vérifier connectivité serveur restaurée
[OK] Informer service Commercial

Temps : 5 minutes


[SECURITE] 5. SOLUTION LONG TERME

a) Formation équipe
   ────────────────
   - Ne JAMAIS créer de boucles
   - Si besoin redondance -> Utiliser STP
   - Informer avant modifications réseau

b) Switchs manageables
   ───────────────────
   Remplacer switchs non-manageables par manageables :
   
   Avantages :
   - Spanning Tree automatique (évite boucles)
   - Port security (limite qui branche quoi)
   - Loop detection
   - Monitoring
   
   Coût : ~200€ par switch (8 ports)

c) Procédure changements réseau
   ─────────────────────────────
   TOUTE modification physique :
   1. Demande auprès IT (ticket)
   2. Validation architecture
   3. Tests en hors-production
   4. Documentation
   5. Rollback plan

d) Étiquetage câbles
   ─────────────────
   - Étiqueter rôle de chaque câble
   - "UPLINK SW1 -> CORE" (ne pas dupliquer !)
   - Couleurs : Bleu = Uplink
   
e) Monitoring (si switchs manageables)
   ───────────────────────────────────
   - Alertes boucles détectées
   - SNMP traps "loop detected"
   - Réaction avant impact utilisateurs


[TEMPS] 6. TEMPS DE RÉSOLUTION

Diagnostic : 20 minutes
- Tests connectivité : 5 min
- Isolation problème : 10 min
- Identification boucle : 5 min

Résolution : 1 minute (débrancher câble)

TOTAL : 21 minutes


═══════════════════════════════════════════════════════════


PROBLÈME 5 : WI-FI DÉCONNECTE RÉGULIÈREMENT
════════════════════════════════════════════

[RECHERCHE] 1. HYPOTHÈSES DE CAUSES

Hypothèse A : Signal faible (bureau éloigné d'AP)
──────────────────────────────────────────────────
- Probabilité : Haute
- Bureau direction = Coin bâtiment
- AP trop loin
- Obstacles (murs, métal)

Hypothèse B : Interférences Wi-Fi
──────────────────────────────────
- Probabilité : Moyenne
- Voisins sur même canal
- Appareils 2.4 GHz (micro-ondes, Bluetooth)
- Saturation canal

Hypothèse C : Roaming problématique
────────────────────────────────────
- Probabilité : Moyenne
- Laptop entre 2 APs (signal similaire)
- Bascule constamment
- Roaming lent (pas 802.11r)

Hypothèse D : AP défectueux
────────────────────────────
- Probabilité : Faible
- AP étage 2 (zone PDG) a un problème
- Autres utilisateurs aussi touchés

Hypothèse E : Économie d'énergie laptop
────────────────────────────────────────
- Probabilité : Faible
- Windows coupe Wi-Fi pour économiser batterie
- Paramètre à vérifier

Hypothèse F : Driver Wi-Fi obsolète/buggué
───────────────────────────────────────────
- Probabilité : Faible
- Driver corrompu
- Mise à jour Windows récente


[LISTE] 2. DIAGNOSTIC MÉTHODIQUE

Priorisation : MOYENNE (1 VIP mais pas critique système)
Approche : Wireless-specific troubleshooting


ÉTAPE 1 : Vérifier signal et qualité connexion
───────────────────────────────────────────────

Sur laptop PDG (Windows 11) :

a) Signal Wi-Fi actuel
   ───────────────────
   - Icône Wi-Fi : Combien de barres ? 2/5 [ATTENTION]
   - Clic droit -> Propriétés connexion
   
   Détails :
   SSID : Entreprise
   Fréquence : 2.4 GHz
   Canal : 6
   Signal : -75 dBm [ATTENTION] (Faible !)
   Débit : 72 Mbps
   
   Échelle signal :
   -30 à -50 dBm : Excellent
   -50 à -60 dBm : Très bon
   -60 à -70 dBm : Bon
   -70 à -80 dBm : Faible [ATTENTION]
   -80 à -90 dBm : Très faible [X]
   
   -75 dBm = Limite acceptable

b) AP connecté
   ───────────
   Contrôleur UniFi -> Voir quel AP :
   
   Laptop PDG connecté à : AP-Etage2-3
   Distance estimée : 25 mètres
   Obstacles : 2 murs béton

c) APs disponibles
   ───────────────
   Scanner réseaux :
   
   netsh wlan show networks mode=bssid
   
   Résultat :
   SSID : Entreprise
   - BSSID 1 (AP-E2-3) : -75 dBm <- Connecté
   - BSSID 2 (AP-E2-4) : -72 dBm <- Meilleur mais pas utilisé !
   
   [IDEE] TROUVÉ : Laptop ne roam pas vers AP plus proche !


ÉTAPE 2 : Analyser déconnexions
────────────────────────────────

a) Logs événements Windows
   ───────────────────────
   Observateur événements :
   Applications et services -> Microsoft -> Windows -> WLAN-AutoConfig
   
   Rechercher :
   - "Déconnecté de"
   - "Connecté à"
   
   Pattern :
   10:15 - Déconnecté AP-E2-3
   10:17 - Reconnecté AP-E2-3
   10:30 - Déconnecté AP-E2-3
   10:32 - Reconnecté AP-E2-3
   
   Toutes les 10-15 minutes [OK]

b) Cause déconnexion
   ─────────────────
   Détails événement :
   "Déconnecté : Raison = Signal faible"
   
   Seuil déconnexion Windows : ~-85 dBm
   Signal fluctue -72 à -78 dBm
   Parfois descend < -85 dBm -> Déco !


ÉTAPE 3 : Site survey (mesure terrain)
───────────────────────────────────────

Outil : WiFi Analyzer (Android) ou NetSpot (PC)

Mesures bureau PDG :

┌────────────┬─────────────┬───────────┐
│    AP      │   Signal    │   Canal   │
├────────────┼─────────────┼───────────┤
│ AP-E2-3    │   -75 dBm   │     6     │ <- Connecté
│ AP-E2-4    │   -68 dBm   │     11    │ <- Meilleur !
│ AP-E2-5    │   -82 dBm   │     1     │
│ Voisin-1   │   -65 dBm   │     6     │ <- Interférence !
│ Voisin-2   │   -70 dBm   │     6     │ <- Interférence !
└────────────┴─────────────┴───────────┘

Observations :
[ATTENTION] Canal 6 saturé (3 réseaux)
[OK] AP-E2-4 plus proche et sur canal 11 (moins saturé)
[X] Laptop ne bascule pas vers AP-E2-4


ÉTAPE 4 : Vérifier roaming
───────────────────────────

Problème identifié : Roaming lent/absent

Causes possibles :

a) Seuil roaming trop bas
   ──────────────────────
   Laptop roam seulement si signal < -85 dBm
   Devrait roam dès -75 dBm

b) Pas de 802.11k/v/r
   ──────────────────
   Fast roaming désactivé
   Laptop fait full déconnexion/reconnexion (3-5 secondes)

c) Client "collant" (sticky client)
   ────────────────────────────────
   Laptop préfère garder AP connu
   Même si signal meilleur ailleurs

Vérifier config contrôleur UniFi :

Paramètres -> Wireless :
- Minimum RSSI : -80 dBm (trop bas !)
- Fast Roaming (802.11r) : [X] Désactivé !


ÉTAPE 5 : Vérifier interférences
─────────────────────────────────

Canal 6 : 3 réseaux visibles

Spectrum analyzer :
- 2.4 GHz très saturé
- 5 GHz quasi vide

[IDEE] Laptop supporte 5 GHz ?
Vérifier spec Dell : [OK] Dual-band

Mais SSID "Entreprise" :
- 2.4 GHz activé
- 5 GHz activé
- Band steering : [X] Désactivé

-> Laptop choisit 2.4 GHz (premier détecté)
-> Ne bascule pas vers 5 GHz


[GRAPHIQUE] 3. CAUSES PROBABLES

Multiples problèmes combinés :

1. Signal faible (-75 dBm)
   -> Bureau éloigné, murs béton

2. Mauvais roaming
   -> Laptop ne bascule pas vers AP-E2-4 (-68 dBm)
   -> Pas de Fast Roaming (802.11r)
   -> Seuil minimum RSSI trop bas (-80 dBm)

3. Interférences 2.4 GHz
   -> Canal 6 saturé (voisins)
   -> Band steering désactivé (pas vers 5 GHz)

4. Configuration sous-optimale
   -> Fast roaming désactivé
   -> Band steering désactivé
   -> Seuil roaming trop permissif


[OUTIL] 4. SOLUTION IMMÉDIATE

a) Forcer roaming vers AP-E2-4
   ───────────────────────────
   Sur laptop :
   - Oublier réseau "Entreprise"
   - Reconnecter (choisira meilleur signal)
   
   Ou :
   - Désactiver/réactiver Wi-Fi

b) Forcer 5 GHz
   ────────────
   Laptop -> Gestionnaire périphériques :
   - Carte réseau Wi-Fi -> Propriétés
   - Avancé -> Band Preference -> 5 GHz

c) Désactiver économie d'énergie
   ──────────────────────────────
   - Gestion alimentation carte réseau
   - Décocher "Autoriser extinction pour économiser"


[SECURITE] 5. SOLUTION LONG TERME

a) Activer Fast Roaming (802.11r/k/v)
   ───────────────────────────────────
   Contrôleur UniFi :
   Settings -> Wireless -> "Entreprise" SSID
   
   [OK] Cocher : Fast Roaming (802.11r)
   [OK] Cocher : BSS Transition (802.11v)
   [OK] Cocher : Neighbor Report (802.11k)
   
   Bénéfices :
   - Roaming < 50ms (vs 3-5 secondes)
   - Pas de coupure appels/vidéo
   - Expérience fluide

b) Activer Band Steering
   ─────────────────────
   Settings -> Wireless -> "Entreprise"
   
   [OK] Cocher : Band Steering (Prefer 5G)
   
   Force clients 5 GHz-capables vers 5 GHz
   Libère 2.4 GHz pour anciens appareils

c) Ajuster seuil roaming
   ─────────────────────
   Settings -> Wireless -> Advanced
   
   Minimum RSSI : -70 dBm (au lieu de -80)
   
   Force déconnexion clients < -70 dBm
   -> Roam vers AP meilleur signal

d) Optimiser placement APs
   ───────────────────────
   Bureau direction trop éloigné AP-E2-3.
   
   Option 1 : Déplacer AP-E2-3 plus près
   Option 2 : Ajouter 1 AP supplémentaire zone direction
   
   Coût AP : 180€ (Ubiquiti UniFi 6)
   
   Placement optimal :
   - Couloir près bureau direction
   - Portée : 15m -> Signal -60 dBm [OK]

e) Changer canaux (éviter interférences)
   ──────────────────────────────────────
   Site survey -> Canaux moins encombrés :
   
   2.4 GHz :
   - AP-E2-3 : Canal 1 (au lieu 6)
   - AP-E2-4 : Canal 11
   - AP-E2-5 : Canal 6
   
   5 GHz :
   - Auto-channel avec DFS
   
   Évite chevauchements et voisins

f) Mise à jour firmware APs
   ────────────────────────
   Vérifier firmware UniFi APs à jour :
   - Bugs roaming corrigés
   - Performances améliorées


[TEMPS] 6. TEMPS DE RÉSOLUTION

Solution immédiate (laptop) : 10 minutes
- Forcer 5 GHz : 3 min
- Désactiver économie : 2 min
- Tester : 5 min

Configuration contrôleur : 30 minutes
- Activer Fast Roaming : 10 min
- Band Steering : 5 min
- Ajuster seuils : 5 min
- Tester/valider : 10 min

Ajout AP (si nécessaire) : 2 heures
- Installation physique : 1h
- Configuration : 30 min
- Tests couverture : 30 min

TOTAL :
- Quick fix : 10 min
- Config optimale : 40 min
- Avec AP additionnel : 2h40


═══════════════════════════════════════════════════════════
[OBJECTIF] FIN EXERCICE 2
═══════════════════════════════════════════════════════════

[DOCS] CE QUE VOUS AVEZ APPRIS

[OK] Diagnostic méthodique (approche structurée)
[OK] Priorisation incidents (impact utilisateurs)
[OK] Isolation problèmes (OSI layers)
[OK] Tests physiques (câbles, LEDs)
[OK] Tests logiques (ping, traceroute, ipconfig)
[OK] Outils diagnostic (testeur câble, WiFi analyzer)
[OK] Détection boucles réseau
[OK] Troubleshooting Wi-Fi (signal, roaming, interférences)
[OK] Solutions immédiates vs long terme
[OK] Documentation et prévention

[FORCE] COMPÉTENCES ACQUISES

Vous êtes maintenant capable de :
- Diagnostiquer pannes réseau courantes
- Résoudre problèmes physiques et logiques
- Optimiser infrastructure Wi-Fi
- Prévenir incidents futurs
- Communiquer efficacement avec utilisateurs
"""


# ============================================================================
# [DOCS] CONCLUSION CHAPITRE 2
# ============================================================================

"""
[BRAVO] FÉLICITATIONS !

Vous avez terminé le Chapitre 2 : Matériel Réseau de Base

Ce chapitre était DENSE et vous avez couvert :


[GUIDE] CONTENU MAÎTRISÉ

1. CÂBLAGE RÉSEAU
   [OK] Types câbles (Cat5e/6/6a, fibre OM3/OM4)
   [OK] Connecteurs RJ45, sertissage
   [OK] Standards T568A/B
   [OK] Fibre optique (monomode/multimode)
   [OK] Transceivers SFP/SFP+
   [OK] Panels de brassage
   [OK] Câblage structuré

2. SWITCHS
   [OK] Fonctionnement (table MAC, apprentissage)
   [OK] Hub vs Switch
   [OK] Types (unmanaged, smart, managed)
   [OK] L2 vs L3
   [OK] PoE (802.3af/at/bt)
   [OK] Configuration CLI (Cisco)
   [OK] VLANs, Spanning Tree
   [OK] Monitoring (SNMP)

3. ROUTEURS
   [OK] Fonctionnement (table routage)
   [OK] NAT/PAT
   [OK] Routes statiques/dynamiques
   [OK] Firewall
   [OK] VPN
   [OK] Multi-WAN

4. POINTS D'ACCÈS WI-FI
   [OK] Normes 802.11 (Wi-Fi 4/5/6)
   [OK] Fréquences 2.4/5/6 GHz
   [OK] Sécurité WPA2/WPA3
   [OK] Roaming (802.11r/k/v)
   [OK] Contrôleur vs autonome
   [OK] Site survey
   [OK] Troubleshooting Wi-Fi

5. CONCEPTION INFRASTRUCTURE
   [OK] Dimensionnement (ports, PoE)
   [OK] Architecture hiérarchique
   [OK] VLANs et segmentation
   [OK] Redondances
   [OK] Budget et planning

6. DIAGNOSTIC ET DÉPANNAGE
   [OK] Méthodologie structurée
   [OK] Outils diagnostic
   [OK] Problèmes courants
   [OK] Solutions immédiates et long terme


[OBJECTIF] COMPÉTENCES PROFESSIONNELLES

Vous pouvez maintenant :
[OK] Concevoir une infrastructure réseau d'entreprise
[OK] Choisir les bons équipements
[OK] Câbler professionnellement
[OK] Configurer switchs et routeurs
[OK] Déployer Wi-Fi performant
[OK] Diagnostiquer et résoudre pannes
[OK] Budgéter et planifier projets
[OK] Documenter proprement

[PRO] PRÊT POUR LE TERRAIN !

Avec ces compétences, vous êtes capable de :
- Gérer infrastructure réseau PME (50-100 postes)
- Intervenir comme technicien réseau
- Assister ingénieur sur projets plus gros
- Passer certifications (CCNA, etc.)


-> PROCHAIN CHAPITRE : MODÈLE OSI

Au Chapitre 3, nous entrerons dans la théorie fondamentale :
- Modèle OSI (7 couches)
- Encapsulation/Désencapsulation
- Protocoles par couche
- Communication inter-couches

Cette base théorique vous aidera à comprendre EN PROFONDEUR
comment tout ce que vous venez d'apprendre fonctionne !


[RAPIDE] CONTINUEZ, VOUS PROGRESSEZ EXCELLEMMENT !

Prenez une pause si nécessaire, c'était dense.
Quand vous êtes prêt : Chapitre 3 !


═══════════════════════════════════════════════════════════
[GUIDE] FIN DU CHAPITRE 2
═══════════════════════════════════════════════════════════
"""

# ============================================================================
# CHAPITRE 3 : NUMÉRISATION & TRANSMISSION
# ============================================================================

"""
[OBJECTIF] OBJECTIFS DU CHAPITRE

Ce chapitre couvre les FONDAMENTAUX de la transmission de données :
[OK] Comment les données sont numérisées
[OK] Représentation binaire
[OK] Signaux analogiques vs numériques
[OK] Modulation et encodage
[OK] Modes de transmission
[OK] Multiplexage
[OK] Bande passante et débit
[OK] Détection et correction d'erreurs

[IDEE] POURQUOI C'EST IMPORTANT ?

Comprendre comment les données deviennent des signaux électriques/optiques
est ESSENTIEL pour :
- Comprendre pourquoi certains câbles sont limités en distance/débit
- Diagnostiquer problèmes de transmission
- Choisir le bon média de transmission
- Optimiser performances réseau
- Comprendre concepts avancés (modulation, multiplexage)


[DOCS] STRUCTURE DU CHAPITRE

1. Données et Signaux
2. Numérisation (Analogique -> Numérique)
3. Représentation Binaire
4. Encodage des Signaux
5. Modulation
6. Modes de Transmission
7. Multiplexage
8. Bande Passante et Débit
9. Détection et Correction d'Erreurs
10. Exercices Pratiques
"""


# ----------------------------------------------------------------------------
# [GRAPHIQUE] PARTIE 1 : DONNÉES ET SIGNAUX
# ----------------------------------------------------------------------------

"""
CONCEPTS FONDAMENTAUX


DÉFINITIONS

Donnée (Data)
─────────────
= Information sous forme utilisable

Exemples :
- Texte : "Bonjour"
- Nombre : 42
- Image : photo.jpg
- Son : musique.mp3
- Vidéo : film.mp4

Les données sont ABSTRAITES (concepts, informations)


Signal (Signal)
───────────────
= Représentation physique des données

Forme électrique, optique, ou radio permettant la TRANSMISSION

Exemples :
- Tension électrique sur câble cuivre
- Impulsions lumineuses dans fibre optique
- Ondes radio dans l'air

Les signaux sont PHYSIQUES (énergie mesurable)


[GRAPHIQUE] RELATION DONNÉES <-> SIGNAL

   ÉMETTEUR                           RÉCEPTEUR
      │                                   │
  [Données] ─[BLACK_RIGHT-POINTING_POINTER] [Encodage] ─[BLACK_RIGHT-POINTING_POINTER] [Signal] ─[BLACK_RIGHT-POINTING_POINTER] [Décodage] ─[BLACK_RIGHT-POINTING_POINTER] [Données]
   "Bonjour"      01001000      ~~~        01001000     "Bonjour"
                  Binaire      Électrique    Binaire


TYPES DE DONNÉES

1. DONNÉES ANALOGIQUES
   ───────────────────

Définition : Valeurs CONTINUES dans le temps

Caractéristiques :
- Infinité de valeurs possibles
- Variation fluide, pas de "sauts"
- Proche de la réalité physique

Exemples :
[GRAPHIQUE] Voix humaine
   - Fréquence : 20 Hz - 20 kHz
   - Amplitude variable en continu
   
[GRAPHIQUE] Température
   - 20.5°C, 20.51°C, 20.512°C...
   - Infinité de valeurs entre 20 et 21°C
   
[GRAPHIQUE] Signal radio AM/FM
   - Onde sinusoïdale continue

Représentation graphique :

Amplitude
   [BLACK_UP-POINTING_TRIANGLE]
   │      ╱╲        ╱╲
   │    ╱    ╲    ╱    ╲
   │  ╱        ╲╱        ╲╱
   └────────────────────────[BLACK_RIGHT-POINTING_POINTER] Temps
   
   Courbe lisse, continue


2. DONNÉES NUMÉRIQUES
   ──────────────────

Définition : Valeurs DISCRÈTES (séparées)

Caractéristiques :
- Nombre fini de valeurs possibles
- Sauts entre valeurs
- Idéal pour traitement informatique

Exemples :
[GRAPHIQUE] Texte
   - 'A', 'B', 'C'... (caractères distincts)
   - Pas de caractère "entre" A et B
   
[GRAPHIQUE] Nombres entiers
   - 0, 1, 2, 3...
   - Pas de valeur entre 1 et 2
   
[GRAPHIQUE] Données binaires
   - 0 ou 1 UNIQUEMENT
   - Base de l'informatique

Représentation graphique :

Amplitude
   [BLACK_UP-POINTING_TRIANGLE]
   │ ┌───┐       ┌───┐
   │ │   │       │   │
   │ │   └───────┘   └───────
   └────────────────────────[BLACK_RIGHT-POINTING_POINTER] Temps
   
   États discrets (HIGH/LOW)


TYPES DE SIGNAUX

1. SIGNAL ANALOGIQUE
   ─────────────────

Définition : Varie CONTINUELLEMENT dans le temps

Caractéristiques :
- Amplitude et fréquence continues
- Onde sinusoïdale typique
- Sensible au bruit

Formule mathématique :
s(t) = A × sin(2πft + φ)

Où :
- A = Amplitude (intensité)
- f = Fréquence (Hz)
- t = Temps
- φ = Phase (décalage)

[GRAPHIQUE] Exemple : Signal sinusoïdal

Amplitude
   [BLACK_UP-POINTING_TRIANGLE]
   │
 +A├      ╱───╲         ╱───╲
   │    ╱       ╲     ╱       ╲
  0 ├───╯─────────╲─╱─────────╲──[BLACK_RIGHT-POINTING_POINTER] Temps
   │               V
 -A ├
   │
   └─────┬──────┬──────┬──────┬───
         0      T     2T     3T

Période T = 1/f


2. SIGNAL NUMÉRIQUE
   ────────────────

Définition : Nombre LIMITÉ de niveaux distincts

Caractéristiques :
- Généralement 2 niveaux (binaire)
- Transitions abruptes
- Plus résistant au bruit

Binaire (2 niveaux) :
- HIGH (1) : +5V, +3.3V, +1V...
- LOW (0) : 0V, -5V

[GRAPHIQUE] Exemple : Signal binaire

Tension
   [BLACK_UP-POINTING_TRIANGLE]
   │ ┌─┐   ┌───┐   ┌─┐
+5V├─┤ │   │   │   │ │
   │ │ │   │   │   │ │
 0V├─┘ └───┘   └───┘ └───[BLACK_RIGHT-POINTING_POINTER] Temps
   │
   └─────────────────────
      1  0   1 1   1  0
   
   États : 0 ou 1 uniquement


COMPARAISON ANALOGIQUE vs NUMÉRIQUE

┌──────────────┬────────────────┬────────────────┐
│   Critère    │   ANALOGIQUE   │   NUMÉRIQUE    │
├──────────────┼────────────────┼────────────────┤
│ Valeurs      │ Infinies       │ Finies (2^n)   │
│ Précision    │ Haute (théorie)│ Limitée (bits) │
│ Bruit        │ Très sensible  │ Résistant      │
│ Dégradation  │ Progressive    │ Seuil          │
│ Stockage     │ Difficile      │ Facile         │
│ Traitement   │ Complexe       │ Simple         │
│ Reproduction │ Perte qualité  │ Parfait        │
│ Sécurité     │ Faible         │ Chiffrable     │
└──────────────┴────────────────┴────────────────┘


AVANTAGES DU NUMÉRIQUE

[OK] Résistance au bruit
   ────────────────────
   Signal analogique avec bruit :
   
   Émis :    ╱╲
   Reçu  :  ╱~~╲  (déformé, dégradé)
   
   Signal numérique avec bruit :
   
   Émis :    ┌──┐
   Reçu  :   ┌~~┐  -> Reconstruit : ┌──┐
   
   Tant que bruit < seuil, signal récupéré parfaitement !

[OK] Régénération
   ────────────
   Signal numérique peut être RÉGÉNÉRÉ à chaque relais :
   
   Émetteur -> [Régénérateur] -> [Régénérateur] -> Récepteur
              v                v
           Reconstruit      Reconstruit
   
   = Pas de dégradation sur longue distance

[OK] Compression
   ───────────
   Données numériques compressibles (ZIP, MP3, JPEG)
   Analogique : Impossible

[OK] Chiffrement
   ───────────
   Numérique : Chiffrable facilement (AES, RSA)
   Analogique : Complexe

[OK] Multiplexage efficace
   ─────────────────────
   Plusieurs signaux numériques sur même support


INCONVÉNIENTS DU NUMÉRIQUE

[X] Conversion nécessaire
   ─────────────────────
   Monde réel analogique -> Conversion obligatoire
   
   Voix -> [ADC] -> Numérique -> [Transmission] -> [DAC] -> Voix
          [BLACK_UP-POINTING_TRIANGLE]                                      [BLACK_UP-POINTING_TRIANGLE]
      Convertisseur                          Convertisseur
    Analogique-Numérique                   Numérique-Analogique

[X] Latence conversion
   ──────────────────
   Temps de traitement (échantillonnage, quantification)

[X] Bande passante plus large
   ─────────────────────────
   Signal numérique haute fréquence (transitions rapides)
   Nécessite plus de bande passante que signal analogique équivalent


POURQUOI LE NUMÉRIQUE DOMINE ?

Historique :
- Années 1960-1980 : Analogique (téléphone, radio, TV)
- Années 1990+ : Transition numérique
- Aujourd'hui (2020+) : Quasi 100% numérique

Raisons :
1. Informatique = Numérique (compatibilité)
2. Internet = Numérique (paquets)
3. Stockage numérique bon marché (disques durs, SSD)
4. Traitement numérique (DSP, compression)
5. Qualité constante (pas de dégradation)

[IDEE] Réseaux modernes : 100% numérique
   (Même la voix VoIP est numérisée !)
"""


# ----------------------------------------------------------------------------
# [NOMBRE] PARTIE 2 : NUMÉRISATION (ANALOGIQUE -> NUMÉRIQUE)
# ----------------------------------------------------------------------------

"""
CONVERSION ANALOGIQUE-NUMÉRIQUE

Comment convertir un signal continu (analogique) en données discrètes (numériques) ?

Processus : ADC (Analog-to-Digital Conversion)
3 étapes essentielles


ÉTAPE 1 : ÉCHANTILLONNAGE (SAMPLING)
═════════════════════════════════════

Définition : Prélever des valeurs à intervalles réguliers

[GRAPHIQUE] Illustration :

Signal analogique original :
      ╱╲        ╱╲
    ╱    ╲    ╱    ╲
  ╱        ╲╱        ╲

Échantillonnage (points prélevés) :
      │ │ │ │ │ │ │ │
      v v v v v v v v
      • • • • • • • •

Fréquence d'échantillonnage (Fs)
─────────────────────────────────

= Nombre d'échantillons par seconde

Unité : Hz (Hertz) ou échantillons/seconde

Exemples :
- CD Audio : 44,100 Hz (44.1 kHz)
- Téléphonie : 8,000 Hz (8 kHz)
- Audio haute qualité : 96,000 Hz (96 kHz)
- Vidéo : 48,000 Hz (audio)


THÉORÈME DE SHANNON-NYQUIST
────────────────────────────

Règle FONDAMENTALE :

Fs ≥ 2 × Fmax

Où :
- Fs = Fréquence d'échantillonnage
- Fmax = Fréquence maximale du signal

[IDEE] Il faut échantillonner au MOINS 2 fois la fréquence max !

Exemples :

Voix humaine :
- Fmax = 4,000 Hz (4 kHz)
- Fs minimum = 2 × 4,000 = 8,000 Hz (8 kHz)
- En pratique : 8,000 Hz (téléphonie)

Musique :
- Fmax = 20,000 Hz (20 kHz)
- Fs minimum = 2 × 20,000 = 40,000 Hz
- En pratique : 44,100 Hz (CD) ou 48,000 Hz

[ATTENTION] Si Fs < 2 × Fmax -> ALIASING (distorsion)


Aliasing (Repliement spectral)
───────────────────────────────

Problème : Échantillonnage insuffisant

Signal haute fréquence apparaît comme basse fréquence !

[GRAPHIQUE] Exemple :

Signal 5 kHz échantillonné à 6 kHz (< 2×5kHz) :

Original (5 kHz) :   ╱╲╱╲╱╲╱╲╱╲
Échantillonné :         • • • •
Reconstruit (FAUX) : ╱──╲──╱──╲  (1 kHz !)

Solution : Filtre anti-aliasing avant échantillonnage
         (Coupe fréquences > Fs/2)


ÉTAPE 2 : QUANTIFICATION
═════════════════════════

Définition : Arrondir chaque échantillon à une valeur discrète

Les valeurs continues sont mappées vers niveaux finis.

Nombre de niveaux = 2^n
Où n = nombre de bits

Exemples :
- 8 bits : 2^8 = 256 niveaux
- 16 bits : 2^16 = 65,536 niveaux
- 24 bits : 2^24 = 16,777,216 niveaux

[GRAPHIQUE] Illustration (4 niveaux = 2 bits) :

Valeur analogique    Niveau quantifié
      [BLACK_UP-POINTING_TRIANGLE]                     [BLACK_UP-POINTING_TRIANGLE]
      │                     │ 11 ─────────
    3 │      •              │      •
      │                     │
    2 │   •     •           │ 10 ─•───•───
      │                     │
    1 │        •   •        │ 01 ─────•─•─
      │                     │
    0 │ •            •      │ 00 •──────•─
      └────────────────[BLACK_RIGHT-POINTING_POINTER]    └──────────────[BLACK_RIGHT-POINTING_POINTER]
           Temps                  Temps

Chaque valeur analogique -> Niveau le plus proche


Bruit de quantification
───────────────────────

Erreur introduite par l'arrondi.

Erreur maximale = ± 1/2 niveau

Plus de bits = Moins d'erreur
- 8 bits : Erreur relative ~0.4%
- 16 bits : Erreur relative ~0.0015%

Relation Signal/Bruit (SNR) :
SNR (dB) ≈ 6n + 1.76

Où n = nombre de bits

Exemples :
- 8 bits : SNR ≈ 49 dB (téléphonie)
- 16 bits : SNR ≈ 98 dB (CD audio)
- 24 bits : SNR ≈ 146 dB (studio)


ÉTAPE 3 : CODAGE
═════════════════

Définition : Représenter chaque niveau quantifié en binaire

[GRAPHIQUE] Exemple complet (3 bits) :

Niveaux :
7 : 111
6 : 110
5 : 101
4 : 100
3 : 011
2 : 010
1 : 001
0 : 000

Signal analogique -> Échantillonné -> Quantifié -> Codé
     ╱╲               • •           3 5 2       011 101 010
   ╱    ╲           • •   •
 ╱        ╲


DÉBIT BINAIRE RÉSULTANT

Calcul :

Débit (bps) = Fs × n

Où :
- Fs = Fréquence échantillonnage (Hz)
- n = Nombre de bits par échantillon

Exemples :

Téléphonie :
- Fs = 8,000 Hz
- n = 8 bits
- Débit = 8,000 × 8 = 64,000 bps = 64 kbps

CD Audio (stéréo) :
- Fs = 44,100 Hz
- n = 16 bits
- Canaux = 2 (stéréo)
- Débit = 44,100 × 16 × 2 = 1,411,200 bps = 1.41 Mbps

Audio HD (5.1) :
- Fs = 96,000 Hz
- n = 24 bits
- Canaux = 6 (5.1)
- Débit = 96,000 × 24 × 6 = 13,824,000 bps = 13.8 Mbps


CONVERSION NUMÉRIQUE-ANALOGIQUE (DAC)
══════════════════════════════════════

Processus inverse : Numérique -> Analogique

Nécessaire pour :
- Haut-parleurs (son)
- Écrans (vidéo)
- Moteurs (contrôle)

Étapes :

1. Décodage : Binaire -> Niveaux

2. Reconstruction : Niveaux -> Signal en escalier

3. Filtrage : Lissage (filtre passe-bas)

[GRAPHIQUE] Illustration :

Numérique :       011 101 010 001 000
                   v
Niveaux :         3  5  2  1  0
                   v
Signal escalier : ┌─┐
                  │ │┌─┐
                  │ ││ │
                ──┘ └┘ └─┐
                         └──
                   v
Lissé (filtré) :  ╱╲
                ╱    ╲
              ╱        ╲──

Signal analogique reconstruit !

Qualité reconstruction :
[OK] Plus de bits -> Meilleure précision
[OK] Fs plus élevée -> Signal plus lisse
[OK] Filtre passe-bas de qualité -> Moins d'artefacts


APPLICATIONS PRATIQUES

VoIP (Voice over IP)
────────────────────

Téléphone IP numérise la voix :

Voix -> [Micro] -> Signal analogique -> [ADC] -> Numérique -> [Réseau IP]

v Débit : 64 kbps (G.711) ou 8 kbps (G.729 compressé)

[Réseau IP] -> Numérique -> [DAC] -> Signal analogique -> [Haut-parleur] -> Voix


Streaming Audio
───────────────

Spotify, YouTube Music :

Studio -> [ADC 24-bit/96kHz] -> [Compression MP3/AAC] -> Serveurs

v Débit réduit : 128-320 kbps (vs 13.8 Mbps brut)

Serveurs -> [Réseau] -> Client -> [Décompression] -> [DAC] -> Haut-parleurs


Vidéo Numérique
───────────────

Caméra -> [CCD/CMOS] -> Signal analogique -> [ADC] -> Numérique

v Débit brut : ÉNORME (1920×1080 × 24bit × 30fps = ~1.5 Gbps)

[Compression H.264/H.265] -> Débit réduit : 5-50 Mbps

Netflix -> [Réseau] -> TV -> [Décompression] -> [DAC] -> Écran
"""


# ----------------------------------------------------------------------------
# [NOMBRE] PARTIE 3 : REPRÉSENTATION BINAIRE
# ----------------------------------------------------------------------------

"""
SYSTÈME BINAIRE

Base informatique : Base 2 (0 et 1)

Pourquoi binaire ?
──────────────────

[OK] Électronique simple :
   - 0 = Tension basse (0V)
   - 1 = Tension haute (+5V, +3.3V)
   
[OK] États stables :
   - Facile distinguer 0 et 1
   - Résistant au bruit
   
[OK] Logique booléenne :
   - Portes logiques (AND, OR, NOT)
   - Calculs possibles


UNITÉS DE MESURE

Bit (Binary Digit)
──────────────────

= Unité de base
= 0 ou 1

Exemples :
- 1 bit = 1 ou 0
- "Le fichier fait 8 bits"


Octet / Byte
────────────

= 8 bits groupés

Notation : B (majuscule)

Exemples :
- 1 octet = 8 bits = 00000000 à 11111111
- "Le fichier fait 1 KB (kilo-octet)"

Valeurs possibles : 2^8 = 256 (0 à 255)


Multiples (Puissances de 2)
───────────────────────────

Binaire (IEC) :
1 KiB (Kibioctet) = 1,024 octets = 2^10
1 MiB (Mébioctet) = 1,024 KiB = 2^20
1 GiB (Gibioctet) = 1,024 MiB = 2^30
1 TiB (Tébioctet) = 1,024 GiB = 2^40

Décimal (SI) :
1 KB (Kilooctet) = 1,000 octets = 10^3
1 MB (Mégaoctet) = 1,000 KB = 10^6
1 GB (Gigaoctet) = 1,000 MB = 10^9
1 TB (Téraoctet) = 1,000 GB = 10^12

[ATTENTION] Confusion courante !
Disque dur : 1 TB = 1,000 GB (marketing)
Windows : 1 TB = 931 GiB (binaire)

[IDEE] Différence : (2^40 - 10^12) / 10^12 ≈ 9.9%


CONVERSIONS BINAIRE <-> DÉCIMAL

Binaire -> Décimal
─────────────────

Méthode : Somme des puissances de 2

Exemple : 10110110₂ -> Décimal ?

Position : 7  6  5  4  3  2  1  0
Bit :      1  0  1  1  0  1  1  0
Puissance: 2⁷ 2⁶ 2⁵ 2⁴ 2³ 2² 2¹ 2⁰
Valeur :  128  0  32 16  0  4  2  0

Somme = 128 + 32 + 16 + 4 + 2 = 182

10110110₂ = 182₁₀


Décimal -> Binaire
─────────────────

Méthode : Divisions successives par 2

Exemple : 182₁₀ -> Binaire ?

182 ÷ 2 = 91  reste 0  v LSB
 91 ÷ 2 = 45  reste 1  v
 45 ÷ 2 = 22  reste 1  v
 22 ÷ 2 = 11  reste 0  v
 11 ÷ 2 =  5  reste 1  v
  5 ÷ 2 =  2  reste 1  v
  2 ÷ 2 =  1  reste 0  v
  1 ÷ 2 =  0  reste 1  ^ MSB

Lecture de bas en haut : 10110110₂

182₁₀ = 10110110₂


REPRÉSENTATION DES CARACTÈRES

ASCII (American Standard Code for Information Interchange)
───────────────────────────────────────────────────────────

= Table 7 bits (128 caractères)
= Standard américain (1963)

Codes principaux :

┌──────────┬─────────┬──────────┬─────────┐
│ Décimal  │ Binaire │   Hexa   │  Char   │
├──────────┼─────────┼──────────┼─────────┤
│    48    │ 0110000 │   0x30   │    0    │
│    49    │ 0110001 │   0x31   │    1    │
│   ...    │   ...   │   ...    │   ...   │
│    57    │ 0111001 │   0x39   │    9    │
│    65    │ 1000001 │   0x41   │    A    │
│    66    │ 1000010 │   0x42   │    B    │
│   ...    │   ...   │   ...    │   ...   │
│    90    │ 1011010 │   0x5A   │    Z    │
│    97    │ 1100001 │   0x61   │    a    │
│   ...    │   ...   │   ...    │   ...   │
│   122    │ 1111010 │   0x7A   │    z    │
│    32    │ 0100000 │   0x20   │  SPACE  │
│    10    │ 0001010 │   0x0A   │   LF    │
│    13    │ 0001101 │   0x0D   │   CR    │
└──────────┴─────────┴──────────┴─────────┘

Exemple : "Hi"
H = 72₁₀ = 01001000₂
i = 105₁₀ = 01101001₂

"Hi" en binaire : 01001000 01101001


UTF-8 (Unicode Transformation Format - 8 bits)
───────────────────────────────────────────────

= Standard moderne (1993)
= Supporte TOUS les caractères mondiaux
= Compatible ASCII (128 premiers)

Encodage variable :
- 1 octet : Caractères ASCII (0-127)
- 2 octets : Latin étendu, grec, cyrillique
- 3 octets : Chinois, japonais, coréen
- 4 octets : Emojis [GRINNING_FACE]

Exemple : "Café"
C = 0x43 (1 octet)
a = 0x61 (1 octet)
f = 0x66 (1 octet)
é = 0xC3 0xA9 (2 octets)

"Café" en UTF-8 : 43 61 66 C3 A9 (5 octets)

Exemple emoji : "[GRINNING_FACE]"
[GRINNING_FACE] = 0xF0 0x9F 0x98 0x80 (4 octets)


REPRÉSENTATION DES NOMBRES

Entiers non signés (Unsigned)
──────────────────────────────

= Valeurs positives uniquement

n bits -> 2^n valeurs (0 à 2^n - 1)

Exemples :
- 8 bits : 0 à 255
- 16 bits : 0 à 65,535
- 32 bits : 0 à 4,294,967,295


Entiers signés (Signed)
───────────────────────

Méthode : Complément à 2

Bit de poids fort = Signe
- 0 = Positif
- 1 = Négatif

n bits -> -2^(n-1) à +2^(n-1) - 1

8 bits : -128 à +127

Exemples :

+42 = 00101010
 -42 = ?
 
 Méthode complément à 2 :
 1. Inverser bits : 11010101
 2. Ajouter 1 :     11010110
 
 -42 = 11010110


Nombres réels (Virgule flottante)
──────────────────────────────────

Standard : IEEE 754

Simple précision (32 bits) :
┌──────┬────────────┬────────────────────────┐
│Signe │  Exposant  │       Mantisse         │
│ 1 bit│   8 bits   │       23 bits          │
└──────┴────────────┴────────────────────────┘

Double précision (64 bits) :
┌──────┬────────────┬────────────────────────┐
│Signe │  Exposant  │       Mantisse         │
│ 1 bit│  11 bits   │       52 bits          │
└──────┴────────────┴────────────────────────┘

Exemples :
- 0.1 en décimal ≠ représentation exacte binaire
- Erreurs d'arrondi possibles
- 0.1 + 0.2 = 0.30000000000000004 (en JavaScript)


OPÉRATIONS BINAIRES

AND (ET logique)
────────────────

  1010
& 1100
──────
  1000

Règle : 1 si les DEUX bits = 1


OR (OU logique)
───────────────

  1010
| 1100
──────
  1110

Règle : 1 si AU MOINS UN bit = 1


XOR (OU Exclusif)
─────────────────

  1010
^ 1100
──────
  0110

Règle : 1 si les bits DIFFÉRENTS


NOT (NON logique)
─────────────────

~ 1010
──────
  0101

Règle : Inverse chaque bit


Décalages (Shifts)
──────────────────

Décalage à gauche (<< ) : Multiplication par 2

  00001010 (10)
<< 1
  00010100 (20)

Décalage à droite (>>) : Division par 2

  00001010 (10)
>> 1
  00000101 (5)
"""


# ----------------------------------------------------------------------------
# [RESEAU] PARTIE 4 : ENCODAGE DES SIGNAUX
# ----------------------------------------------------------------------------

"""
ENCODAGE

Définition : Représenter données binaires par un signal physique

But : Transmettre efficacement sur un média


CRITÈRES QUALITÉ D'UN ENCODAGE

1. Débit : Bits/seconde transmis
2. Synchronisation : Récepteur doit rester synchronisé
3. Détection erreurs : Possibilité détecter erreurs
4. Complexité : Coût implémentation
5. Bande passante : Fréquences nécessaires


TYPES D'ENCODAGE

1. ENCODAGE NRZ (Non-Return to Zero)
   ══════════════════════════════════

Le plus simple :
- 0 = Tension basse
- 1 = Tension haute

[GRAPHIQUE] Illustration :

Données :   0  1  1  0  0  1  0  1
           ┌──┐┌──┐      ┌──┐  ┌──┐
Signal : ──┘  └┘  └──────┘  └──┘  └──

Avantages :
[OK] Simple
[OK] Utilise toute la bande passante

Inconvénients :
[X] Pas d'auto-synchronisation
[X] Problème avec longues séquences (000000...)
[X] Composante continue (DC)

Utilisation : Rare en réseau, présent en stockage


2. ENCODAGE MANCHESTER
   ════════════════════

Principe : Transition au MILIEU de chaque bit
- 0 = Transition haut -> bas
- 1 = Transition bas -> haut

[GRAPHIQUE] Illustration :

Données :     0     1     1     0
            ┌───┐ ┌───┐ ┌───┐ ┌───┐
Signal : ───┘   └─┘   └─┘   └─┘   └───
              v     v     v     v
         Transition Transition...

Avantages :
[OK] Auto-synchronisation (transition chaque bit)
[OK] Pas de composante DC
[OK] Détection erreur simple (pas de transition = erreur)

Inconvénients :
[X] Nécessite 2× plus de bande passante

Utilisation :
- Ethernet 10 Mbps (10BASE-T)
- RFID


3. ENCODAGE MANCHESTER DIFFÉRENTIEL
   ═════════════════════════════════

Principe : Transition DÉBUT de bit selon valeur
- 0 = Transition au début
- 1 = PAS de transition au début

(Toujours transition au milieu pour synchro)

Avantages :
[OK] Immunité inversion polarité
[OK] Auto-synchronisation

Utilisation :
- Token Ring (historique)


4. ENCODAGE 4B/5B
   ══════════════

Principe : Chaque groupe 4 bits -> 5 bits encodés

Pourquoi ?
- Éviter longues séquences de 0
- Garantir transitions fréquentes

Table encodage (partielle) :

┌──────────┬──────────┐
│ 4 bits   │  5 bits  │
│ (données)│ (encodé) │
├──────────┼──────────┤
│  0000    │  11110   │
│  0001    │  01001   │
│  0010    │  10100   │
│  0011    │  10101   │
│  0100    │  01010   │
│  0101    │  01011   │
│  0110    │  01110   │
│  0111    │  01111   │
│  1000    │  10010   │
│  1001    │  10011   │
│  1010    │  10110   │
│  1011    │  10111   │
│  1100    │  11010   │
│  1101    │  11011   │
│  1110    │  11100   │
│  1111    │  11101   │
└──────────┴──────────┘

Efficacité : 4/5 = 80%
(20% overhead)

Utilisation :
- Fast Ethernet (100BASE-TX)
- FDDI


5. ENCODAGE 8B/10B
   ═══════════════

Principe : 8 bits -> 10 bits

Avantages :
[OK] Équilibre DC (autant de 0 que de 1)
[OK] Détection erreurs
[OK] Caractères de contrôle (délimiteurs)

Efficacité : 8/10 = 80%

Utilisation :
- Gigabit Ethernet (1000BASE-X)
- Fibre Channel
- USB 3.0
- SATA


6. ENCODAGE PAM5 (Pulse Amplitude Modulation - 5 niveaux)
   ═══════════════════════════════════════════════════════

Principe : 5 niveaux de tension
- -2, -1, 0, +1, +2 volts

Chaque symbole = 2 bits

Exemples :
00 -> -2V
01 -> -1V
10 -> +1V
11 -> +2V

(0V utilisé pour contrôle)

[GRAPHIQUE] Illustration :

Bits :     00    11    01    10
          ┌──────────┐
+2V       │          │
+1V     ──┤          ├──┐
 0V   ────┤          │  │────
-1V       │      ┌───┘  │
-2V   ────┘      │      └────

Avantages :
[OK] 2 bits par symbole (débit doublé)
[OK] Bande passante réduite

Inconvénients :
[X] Plus sensible au bruit (5 niveaux à distinguer)

Utilisation :
- Gigabit Ethernet sur cuivre (1000BASE-T)
- 4 paires torsadées, 125 Mbaud/paire, 2 bits/symbole
- 4 × 125 × 2 = 1000 Mbps


COMPARAISON ENCODAGES

┌──────────────┬─────────┬───────────┬──────────┐
│   Encodage   │ Synchro │ Efficacité│  Usage   │
├──────────────┼─────────┼───────────┼──────────┤
│ NRZ          │  Faible │   100%    │ Rare     │
│ Manchester   │  Bonne  │    50%    │ 10 Mbps  │
│ 4B/5B        │  Bonne  │    80%    │ 100 Mbps │
│ 8B/10B       │Excellente│   80%    │ 1 Gbps+  │
│ PAM5         │  Bonne  │   200%*   │ 1 Gbps   │
└──────────────┴─────────┴───────────┴──────────┘

* 2 bits par symbole


SCRAMBLING (BROUILLAGE)

Définition : Randomiser les données avant transmission

But :
- Éviter longues séquences identiques
- Répartir spectre fréquentiel
- Faciliter synchronisation

Méthode : XOR avec séquence pseudo-aléatoire

Émetteur :
Données -> [XOR avec PRBS] -> Données brouillées -> Transmission

Récepteur :
Réception -> [XOR avec même PRBS] -> Données originales

PRBS : Pseudo-Random Binary Sequence
(Générée par registre à décalage)

Utilisation :
- SONET/SDH
- DSL (ADSL, VDSL)
- Satellite
"""


# ----------------------------------------------------------------------------
# [RESEAU] PARTIE 5 : MODULATION
# ----------------------------------------------------------------------------

"""
MODULATION

Définition : Modifier un signal porteur (carrier) pour transporter l'information

Pourquoi moduler ?
──────────────────

[OK] Adapter signal au média de transmission
   - Ondes radio : Basses fréquences ne se propagent pas bien
   - Porteur haute fréquence (MHz, GHz) modifié par signal basse fréquence
   
[OK] Multiplexage fréquentiel
   - Plusieurs signaux sur fréquences différentes
   - Radio FM : 88-108 MHz (chaque station = 1 fréquence)
   
[OK] Réduire bruit
   - Certaines modulations plus résistantes
   
[OK] Efficacité spectrale
   - Transmettre plus de bits/Hz


SIGNAL PORTEUR (CARRIER)

Signal sinusoïdal haute fréquence :

s(t) = A × sin(2πft + φ)

Paramètres modifiables :
- A : Amplitude
- f : Fréquence
- φ : Phase


MODULATION ANALOGIQUE

1. MODULATION D'AMPLITUDE (AM)
   ════════════════════════════

Principe : Varier l'amplitude selon signal modulant

[GRAPHIQUE] Illustration :

Signal modulant (basse fréq.) :
    ╱╲      ╱╲
  ╱    ╲  ╱    ╲
╱        ╲        ╲

Porteur (haute fréq.) :
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Signal modulé AM :
  ╱╲╱╲╱╲      ╱╲╱╲╱╲
 ╱      ╲    ╱      ╲
╱        ╲╱╲╱        ╲╱╲

Amplitude varie selon signal modulant

Utilisation :
- Radio AM (Grandes ondes, ondes moyennes)
- Émetteurs anciens

Avantages :
[OK] Simple
[OK] Récepteur peu coûteux

Inconvénients :
[X] Sensible au bruit (amplitude)
[X] Efficacité spectrale faible


2. MODULATION DE FRÉQUENCE (FM)
   ═════════════════════════════

Principe : Varier la fréquence selon signal modulant

[GRAPHIQUE] Illustration :

Signal modulant :
    ╱╲
  ╱    ╲
╱        ╲

Signal modulé FM :
~~ ~~~~ ~~~~~~ ~~~~ ~~

Fréquence plus élevée quand signal positif

Utilisation :
- Radio FM (88-108 MHz)
- Télévision analogique (son)

Avantages :
[OK] Résistant au bruit
[OK] Meilleure qualité audio

Inconvénients :
[X] Bande passante plus large
[X] Plus complexe


3. MODULATION DE PHASE (PM)
   ═════════════════════════

Principe : Varier la phase selon signal modulant

Peu utilisé en analogique pur.
Base des modulations numériques (PSK).


MODULATION NUMÉRIQUE

Plus courantes en réseaux modernes !

1. ASK (Amplitude Shift Keying)
   ════════════════════════════

= Modulation d'amplitude numérique

Principe :
- 0 -> Amplitude faible (ou 0)
- 1 -> Amplitude forte

[GRAPHIQUE] Illustration :

Données :   0    1    1    0    1
           ┌────┐┌────┐     ┌────┐
Signal : ──┘    └┘    └─────┘    └──

Version simple (OOK - On-Off Keying) :
- 0 -> Porteur éteint
- 1 -> Porteur allumé

Utilisation :
- RFID
- Télécommandes infrarouges
- Fibre optique (LED/Laser on/off)

Avantages :
[OK] Très simple

Inconvénients :
[X] Sensible au bruit


2. FSK (Frequency Shift Keying)
   ════════════════════════════

= Modulation de fréquence numérique

Principe :
- 0 -> Fréquence f1
- 1 -> Fréquence f2

[GRAPHIQUE] Illustration :

Données :    0        1        0
          ~~~~~~  ~~~~~~~~  ~~~~~~
          (f1)     (f2)      (f1)

Utilisation :
- Modems 1200 bauds (historique)
- Caller ID (identification appelant)
- Radiomessagerie

Avantages :
[OK] Résistant au bruit

Inconvénients :
[X] Bande passante large
[X] Débit limité


3. PSK (Phase Shift Keying)
   ════════════════════════

= Modulation de phase numérique

Le PLUS utilisé en réseaux modernes !


3a. BPSK (Binary PSK)
    ─────────────────
    
    2 phases :
    - 0 -> Phase 0° (sin)
    - 1 -> Phase 180° (-sin)
    
    [GRAPHIQUE] Illustration :
    
    Données :      0         1
    
    Phase 0° :   ~~~╲╱~~~
    Phase 180° :      ╱╲
    
    1 bit par symbole
    
    Utilisation :
    - Satellite
    - RFID


3b. QPSK (Quaternary PSK)
    ─────────────────────
    
    4 phases :
    - 00 -> Phase 0°
    - 01 -> Phase 90°
    - 11 -> Phase 180°
    - 10 -> Phase 270°
    
    [GRAPHIQUE] Diagramme constellation :
    
       01 (90°)
         │
         │
    11 ──┼── 00
    (180°)│ (0°)
         │
         │
       10 (270°)
    
    2 bits par symbole
    
    Utilisation :
    - Wi-Fi
    - Satellite (DVB-S)
    - 4G LTE


3c. 8-PSK
    ─────
    
    8 phases : 0°, 45°, 90°, 135°, 180°, 225°, 270°, 315°
    
    3 bits par symbole
    
    Utilisation :
    - DVB-S2
    - Wi-Fi haut débit


3d. 16-PSK
    ──────
    
    16 phases
    
    4 bits par symbole
    
    [ATTENTION] Phases très proches -> Sensible au bruit


4. QAM (Quadrature Amplitude Modulation)
   ══════════════════════════════════════

= Modulation amplitude ET phase

Principe : Varier amplitude ET phase simultanément

Plus de symboles possibles = Plus de bits/symbole

[GRAPHIQUE] Constellation 16-QAM :

       •    •    •    •
       
       •    •    •    •
    
       •    •    •    •
       
       •    •    •    •

16 points = 4 bits par symbole

Utilisation :
- Modems câble (DOCSIS)
- DSL (ADSL, VDSL)
- Wi-Fi 802.11n/ac/ax
- 4G/5G

Variantes courantes :
- 16-QAM : 4 bits/symbole
- 64-QAM : 6 bits/symbole (Wi-Fi 5)
- 256-QAM : 8 bits/symbole (Wi-Fi 6)
- 1024-QAM : 10 bits/symbole (Wi-Fi 6E, 5G)

Plus de bits/symbole = Plus rapide MAIS plus sensible au bruit !

Adaptation dynamique :
Signal bon -> 256-QAM (rapide)
Signal faible -> 16-QAM (robuste)


OFDM (Orthogonal Frequency-Division Multiplexing)
══════════════════════════════════════════════════

= Modulation multi-porteuses

Principe : Diviser canal en NOMBREUSES sous-porteuses

[GRAPHIQUE] Illustration :

Canal large (20 MHz) :
├──────────────────────────────────────┤

Divisé en sous-porteuses (64 × 312.5 kHz) :
│││││││││││││││││││││││││││││││││││││││

Chaque sous-porteuse : Modulée indépendamment (QAM)

Avantages :
[OK] Résistant aux interférences (une porteuse touchée ≠ tout)
[OK] Résistant aux multi-trajets (échos)
[OK] Efficacité spectrale élevée
[OK] Adaptation par porteuse (certaines meilleures que d'autres)

Inconvénients :
[X] Complexe (FFT nécessaire)
[X] Sensible décalage fréquence

Utilisation :
- Wi-Fi 802.11a/g/n/ac/ax
- 4G LTE
- 5G NR
- DVB-T (TNT)
- ADSL/VDSL


DÉBIT vs MODULATION

Relation :

Débit (bps) = Symboles/seconde × Bits/symbole

Exemple Wi-Fi 802.11ac :

Bande passante : 80 MHz
Sous-porteuses : 234 (utilisables)
Taux symbole : 312,500 symboles/s par porteuse
Modulation : 256-QAM (8 bits/symbole)

Débit théorique :
234 × 312,500 × 8 = 585 Mbps (un flux spatial)

Avec 4 flux MIMO : 585 × 4 = 2,340 Mbps (2.34 Gbps)

[IDEE] Marketing : "Wi-Fi AC2400" (2400 Mbps)
"""


# ----------------------------------------------------------------------------
# [SYNC] PARTIE 6 : MODES DE TRANSMISSION
# ----------------------------------------------------------------------------

"""
MODES DE TRANSMISSION

Caractéristiques :
- Direction communication
- Simultanéité
- Synchronisation


1. DIRECTION DE TRANSMISSION
   ══════════════════════════

A. SIMPLEX
   ───────

= Communication UNI-DIRECTIONNELLE

A ──────────[BLACK_RIGHT-POINTING_POINTER]  B

Seul émetteur : A
Seul récepteur : B

Exemples :
- Télévision hertzienne (tour -> TV)
- Radio FM (station -> radio)
- Pagers/Radiomessagerie
- Clavier -> PC (PS/2)

Avantages :
[OK] Simple
[OK] Pas de gestion collision

Inconvénients :
[X] Pas de retour
[X] Pas d'accusé réception


B. HALF-DUPLEX
   ────────────

= Communication BI-DIRECTIONNELLE mais PAS SIMULTANÉE

A [BLACK_LEFT-POINTING_POINTER]──────────[BLACK_RIGHT-POINTING_POINTER]  B
  (tour à tour)

Émetteur/Récepteur : A et B
Mais : UN SEUL à la fois

[GRAPHIQUE] Timeline :

A émet ────[BLACK_RIGHT-POINTING_POINTER]
          B émet ────[BLACK_RIGHT-POINTING_POINTER]
                    A émet ────[BLACK_RIGHT-POINTING_POINTER]

Exemples :
- Talkie-walkie (appuyer bouton pour parler)
- Hub Ethernet (historique)
- Bus RS-485

Avantages :
[OK] Bi-directionnel
[OK] Moins de câbles qu'full-duplex

Inconvénients :
[X] Latence (attendre son tour)
[X] Collisions possibles (si mal géré)
[X] Débit effectif divisé par 2


C. FULL-DUPLEX
   ────────────

= Communication BI-DIRECTIONNELLE SIMULTANÉE

A [BLACK_LEFT-POINTING_POINTER]═══════════[BLACK_RIGHT-POINTING_POINTER]  B
  (en même temps)

A et B émettent ET reçoivent simultanément

[GRAPHIQUE] Timeline :

A émet ────[BLACK_RIGHT-POINTING_POINTER]────[BLACK_RIGHT-POINTING_POINTER]────[BLACK_RIGHT-POINTING_POINTER]────[BLACK_RIGHT-POINTING_POINTER]
B émet ────[BLACK_RIGHT-POINTING_POINTER]────[BLACK_RIGHT-POINTING_POINTER]────[BLACK_RIGHT-POINTING_POINTER]────[BLACK_RIGHT-POINTING_POINTER]

(En même temps !)

Exemples :
- Téléphone
- Switch Ethernet moderne
- Fibre optique (2 fibres)
- Twisted pair Ethernet (paires séparées TX/RX)

Avantages :
[OK] Performance maximale
[OK] Débit = 2× half-duplex
[OK] Pas d'attente

Inconvénients :
[X] Plus complexe
[X] Nécessite médias séparés (ou fréquences séparées)


EXEMPLE ETHERNET

10BASE-T (Hub) : Half-duplex
──────────────────────────────

Hub : Répète signal sur tous ports
-> Un seul peut émettre à la fois
-> Half-duplex

100BASE-TX (Switch) : Full-duplex
──────────────────────────────────

Switch : Commutation dédiée
Câble UTP : 4 paires
- Paires 1-2 : TX (transmission)
- Paires 3-6 : RX (réception)
-> Émission et réception simultanées
-> Full-duplex

Débit effectif :
- Half-duplex : 100 Mbps (partagé)
- Full-duplex : 100 Mbps TX + 100 Mbps RX = 200 Mbps total


2. SYNCHRONISATION
   ═══════════════

A. TRANSMISSION ASYNCHRONE
   ───────────────────────

= Pas d'horloge commune

Caractéristiques :
- Données envoyées caractère par caractère
- Bits de START et STOP encadrent chaque caractère
- Récepteur se synchronise sur chaque caractère

[GRAPHIQUE] Trame asynchrone (8N1) :

┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
│ S │ D │ D │ D │ D │ D │ D │ D │ D │ P │
│ T │ 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ T │
│ A │   │   │   │   │   │   │   │   │ O │
│ R │   │   │   │   │   │   │   │   │ P │
│ T │   │   │ Données (8 bits)  │   │   │
└───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘

START : Toujours 0 (transition 1->0, alerte récepteur)
STOP : Toujours 1 (retour état repos)

Overhead : 2 bits sur 10 = 20%

Utilisation :
- RS-232 (port série)
- UART (Arduino, ESP32)
- Modems anciens

Avantages :
[OK] Simple
[OK] Pas d'horloge à partager

Inconvénients :
[X] Overhead élevé (20%)
[X] Vitesse limitée


B. TRANSMISSION SYNCHRONE
   ──────────────────────

= Horloge commune (clock)

Caractéristiques :
- Données envoyées en blocs continus
- Pas de bits START/STOP
- Synchronisation via horloge ou préambule

[GRAPHIQUE] Trame synchrone :

┌─────────┬─────────┬──────────────┬──────┐
│Préambule│ Délimit │    Données   │  FCS │
│ (synchro)│ (frame) │  (continu)   │(CRC) │
└─────────┴─────────┴──────────────┴──────┘

Préambule : Séquence connue pour synchronisation
Délimiteur : Marque début trame
Données : Blocs continus (pas de START/STOP)
FCS : Checksum

Utilisation :
- Ethernet
- HDLC
- SONET/SDH
- USB

Avantages :
[OK] Overhead faible (<5%)
[OK] Haut débit possible
[OK] Efficace

Inconvénients :
[X] Synchronisation complexe
[X] Nécessite horloge précise


COMPARAISON

┌─────────────┬────────────┬─────────────┐
│   Critère   │ Asynchrone │  Synchrone  │
├─────────────┼────────────┼─────────────┤
│ Overhead    │    20%     │    <5%      │
│ Débit       │   Faible   │    Élevé    │
│ Complexité  │   Simple   │   Complexe  │
│ Distance    │   Courte   │   Longue    │
│ Coût        │   Faible   │    Élevé    │
└─────────────┴────────────┴─────────────┘


3. TRANSMISSION SÉRIE vs PARALLÈLE
   ════════════════════════════════

A. TRANSMISSION SÉRIE
   ──────────────────

= Bits transmis UN PAR UN sur un seul fil

[GRAPHIQUE] Illustration :

Données : 10110110

Câble : ─┐  ┌─┐┌─┐┌─┐  ┌─┐  ┌─
         └──┘ └┘ └┘ └──┘ └──┘

(1 bit après l'autre)

Exemples :
- Ethernet
- USB
- SATA
- PCIe
- HDMI

Avantages :
[OK] Moins de fils (coût réduit)
[OK] Moins de diaphonie (cross-talk)
[OK] Haute vitesse possible (skew réduit)
[OK] Longue distance

Inconvénients :
[X] Plus lent QUE parallèle (en théorie)
[X] Nécessite sérialisation/désérialisation


B. TRANSMISSION PARALLÈLE
   ───────────────────────

= Plusieurs bits transmis SIMULTANÉMENT sur plusieurs fils

[GRAPHIQUE] Illustration :

Données : 10110110

8 fils :
Bit 7: ─┐         ┌─
Bit 6: ──┘       └──
Bit 5: ─┐         ┌─
Bit 4: ─┐         ┌─
Bit 3: ──┘       └──
Bit 2: ─┐         ┌─
Bit 1: ─┐         ┌─
Bit 0: ──┘       └──

(8 bits en même temps)

Exemples :
- Port parallèle (imprimante, historique)
- IDE (disque dur, obsolète)
- PCI (carte mère, obsolète)
- RAM (bus mémoire interne)

Avantages :
[OK] Rapide (théoriquement)

Inconvénients :
[X] Nombreux fils (coût, encombrement)
[X] Skew (décalage signaux entre fils)
[X] Diaphonie (interférences entre fils)
[X] Distance limitée (<2m)

[IDEE] PARADOXE : Série plus rapide que parallèle en pratique !

Pourquoi ?
──────────

Skew : À haute vitesse, signaux n'arrivent pas exactement en même temps
-> Limite vitesse horloge

Série : Pas de skew (1 fil)
-> Fréquence plus élevée possible

Exemple :
- PCI Parallèle 32 bits @ 33 MHz = 1 Gbps
- PCIe x1 Série @ 2.5 GHz = 2 Gbps (Gen 1)
- PCIe x16 Série @ 16 GHz = 256 Gbps (Gen 4)

-> Série a REMPLACÉ parallèle partout !
"""

# ============================================================================
# [OBJECTIF] FIN PARTIE 1 DU CHAPITRE 3
# ============================================================================

"""
[DOCS] RÉCAPITULATIF PARTIE 1

Vous avez appris :

[OK] Données vs Signaux (analogique/numérique)
[OK] Numérisation (ADC : échantillonnage, quantification, codage)
[OK] Théorème de Shannon-Nyquist
[OK] Représentation binaire (bits, octets, ASCII, UTF-8)
[OK] Encodage signaux (NRZ, Manchester, 4B/5B, PAM5)
[OK] Modulation (AM/FM/PM, ASK/FSK/PSK/QAM, OFDM)
[OK] Modes transmission (simplex, half/full-duplex, synchrone/asynchrone)


-> SUITE : PARTIE 2 (Multiplexage, Bande passante, Détection erreurs)

Dans le prochain fichier :
- Multiplexage (TDM, FDM, CDM)
- Bande passante et débit
- Capacité canal (Shannon)
- Détection et correction d'erreurs
- Exercices pratiques
"""

# ============================================================================
# CHAPITRE 3 (PARTIE 2) : MULTIPLEXAGE, BANDE PASSANTE ET DÉTECTION D'ERREURS
# ============================================================================


# ----------------------------------------------------------------------------
# [MELANGE] PARTIE 7 : MULTIPLEXAGE
# ----------------------------------------------------------------------------

"""
MULTIPLEXAGE

Définition : Technique permettant de transmettre PLUSIEURS signaux 
simultanément sur un SEUL support physique.

But : Optimiser utilisation du média (coûteux)

[GRAPHIQUE] Principe général :

Émetteur 1 ─┐
Émetteur 2 ─┤
Émetteur 3 ─┼─[BLACK_RIGHT-POINTING_POINTER] [Multiplexeur] ──[BLACK_RIGHT-POINTING_POINTER] Support unique ──[BLACK_RIGHT-POINTING_POINTER] [Démultiplexeur] ─┬─[BLACK_RIGHT-POINTING_POINTER] Récepteur 1
Émetteur 4 ─┤                                                             ├─[BLACK_RIGHT-POINTING_POINTER] Récepteur 2
Émetteur n ─┘                                                             ├─[BLACK_RIGHT-POINTING_POINTER] Récepteur 3
                                                                          ├─[BLACK_RIGHT-POINTING_POINTER] Récepteur 4
                                                                          └─[BLACK_RIGHT-POINTING_POINTER] Récepteur n

Exemple concret :
- Fibre optique : 1 fibre, 100+ canaux
- Câble coaxial TV : 1 câble, 500+ chaînes
- Fréquences radio : 1 "air", milliers de stations


TYPES DE MULTIPLEXAGE

1. FDM (Frequency Division Multiplexing)
   ══════════════════════════════════════

= Multiplexage par RÉPARTITION EN FRÉQUENCE

Principe : Diviser la bande passante en sous-bandes

Chaque signal -> Fréquence différente (canal)

[GRAPHIQUE] Illustration :

Bande passante totale (MHz)
├──────────────────────────────────────┤
0                                    100

Divisée en canaux :
│Canal 1│Canal 2│Canal 3│Canal 4│...│
├───┼───┼───┼───┼───┼───┼───┼───┼───┤
0   10  20  30  40  50  60  70  80  90

Signal 1 : 0-10 MHz
Signal 2 : 10-20 MHz
Signal 3 : 20-30 MHz
...

Bandes de garde : Espaces entre canaux (éviter interférences)


Exemple concret : TV câble
──────────────────────────

Câble coaxial : 5-1000 MHz

Canal 1 : 48-54 MHz (6 MHz)
Canal 2 : 54-60 MHz
Canal 3 : 60-66 MHz
...
Canal 158 : 994-1000 MHz

500+ chaînes sur 1 câble !


Exemple concret : Radio FM
──────────────────────────

Bande : 88-108 MHz (20 MHz total)

France Inter : 87.8 MHz
RTL : 104.3 MHz
NRJ : 100.9 MHz
...

Chaque station : 200 kHz de largeur
-> ~100 stations


Exemple concret : ADSL
──────────────────────

Ligne téléphonique : 0-1.1 MHz

│Voix │ADSL Upload│  ADSL Download  │
├─────┼───────────┼─────────────────┤
0-4kHz 25-138kHz  138kHz-1.1MHz

3 services simultanés sur 1 paire de cuivre !


Avantages FDM :
[OK] Simple à comprendre
[OK] Canaux indépendants
[OK] Pas de synchronisation temps nécessaire

Inconvénients FDM :
[X] Bandes de garde (gaspillage)
[X] Sensible interférences inter-canaux
[X] Nécessite filtres analogiques


2. TDM (Time Division Multiplexing)
   ═════════════════════════════════

= Multiplexage par RÉPARTITION DANS LE TEMPS

Principe : Chaque signal utilise TOUTE la bande passante, 
          mais seulement pendant des intervalles de temps (slots)

[GRAPHIQUE] Illustration :

Temps ──────────────────────────────────[BLACK_RIGHT-POINTING_POINTER]

Slots :  │ 1 │ 2 │ 3 │ 4 │ 1 │ 2 │ 3 │ 4 │ 1 │
         ├───┼───┼───┼───┼───┼───┼───┼───┼───┤

Signal 1 : ███─────███─────███─────
Signal 2 : ───███─────███─────███───
Signal 3 : ──────███─────███─────███
Signal 4 : ─────────███─────███─────

Chaque signal a son tour (round-robin)


Types de TDM :

A. TDM SYNCHRONE (Fixed TDM)
   ─────────────────────────

Slots FIXES pré-attribués

Exemple : T1 (Amérique du Nord)

Trame T1 : 193 bits, 125 µs
├──┬──┬──┬──┬──┬──┬──┬────┬──┬──┬──┬──┬──┬──┬──┐
│S │CH│CH│CH│CH│CH│CH│ ...│CH│CH│CH│CH│CH│CH│CH│
│Y │1 │2 │3 │4 │5 │6 │    │19│20│21│22│23│24│F │
│N │  │  │  │  │  │  │    │  │  │  │  │  │  │R │
│C │  │  │  │  │  │  │    │  │  │  │  │  │  │A │
│  │8b│8b│8b│8b│8b│8b│    │8b│8b│8b│8b│8b│8b│ME│
└──┴──┴──┴──┴──┴──┴──┴────┴──┴──┴──┴──┴──┴──┴──┘

24 canaux × 8 bits = 192 bits
+ 1 bit synchro = 193 bits

Débit par canal : 64 kbps (8 bits × 8000 trames/s)
Débit total : 1.544 Mbps

Avantages :
[OK] Débit garanti par canal
[OK] Simple
[OK] Latence prévisible

Inconvénients :
[X] Gaspillage si canal inactif (slot vide)


B. TDM STATISTIQUE (Statistical TDM)
   ──────────────────────────────────

Slots DYNAMIQUES attribués selon besoin

Principe : Si canal 1 n'a rien à envoyer, slot donné à canal 2

[GRAPHIQUE] Illustration :

TDM Synchrone (gaspillage) :
│ 1 │   │ 3 │   │ 1 │   │ 3 │   │
  [BLACK_UP-POINTING_TRIANGLE]   [BLACK_UP-POINTING_TRIANGLE]       [BLACK_UP-POINTING_TRIANGLE]   [BLACK_UP-POINTING_TRIANGLE]   [BLACK_UP-POINTING_TRIANGLE]       [BLACK_UP-POINTING_TRIANGLE]
  OK  VIDE    OK  VIDE OK    VIDE

TDM Statistique (efficace) :
│ 1 │ 3 │ 1 │ 3 │ 1 │ 3 │ 1 │ 3 │
  [BLACK_UP-POINTING_TRIANGLE]   [BLACK_UP-POINTING_TRIANGLE]   [BLACK_UP-POINTING_TRIANGLE]   [BLACK_UP-POINTING_TRIANGLE]   [BLACK_UP-POINTING_TRIANGLE]   [BLACK_UP-POINTING_TRIANGLE]   [BLACK_UP-POINTING_TRIANGLE]   [BLACK_UP-POINTING_TRIANGLE]
  OK  OK  OK  OK  OK  OK  OK  OK

Chaque slot contient :
- Adresse/ID canal
- Données

Avantages :
[OK] Pas de gaspillage
[OK] Efficacité maximale

Inconvénients :
[X] Overhead (adressage)
[X] Complexe
[X] Latence variable

Utilisation :
- Réseaux de paquets (Ethernet, IP)
- Frame Relay
- ATM (partiellement)


Exemple concret : GSM (2G)
──────────────────────────

TDMA (Time Division Multiple Access)

1 fréquence : 8 utilisateurs simultanés

Trame : 4.615 ms
├───┬───┬───┬───┬───┬───┬───┬───┤
│ 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │
└───┴───┴───┴───┴───┴───┴───┴───┘

Utilisateur 1 : Slot 0 toutes les 4.615 ms
Utilisateur 2 : Slot 1 toutes les 4.615 ms
...


Exemple concret : SONET/SDH
───────────────────────────

Hiérarchie TDM pour fibres optiques

STM-1 (SDH) : 155.52 Mbps
- Multiplex de 63 × 2.048 Mbps (E1 européen)

STM-4 : 622.08 Mbps (4 × STM-1)
STM-16 : 2.488 Gbps
STM-64 : 9.953 Gbps


3. WDM (Wavelength Division Multiplexing)
   ═══════════════════════════════════════

= FDM pour FIBRE OPTIQUE

Principe : Plusieurs longueurs d'onde (couleurs) lumineuses 
          sur une seule fibre

[GRAPHIQUE] Illustration :

Fibre optique
═══════════════════════════════════[BLACK_RIGHT-POINTING_POINTER]

λ1 (1550 nm) : Signal 1
λ2 (1551 nm) : Signal 2
λ3 (1552 nm) : Signal 3
...
λ80 (1630 nm) : Signal 80

Multiplexeur ─┐
              ├─[BLACK_RIGHT-POINTING_POINTER] Prisme ──[BLACK_RIGHT-POINTING_POINTER] [Fibre] ──[BLACK_RIGHT-POINTING_POINTER] Prisme ──┬─[BLACK_RIGHT-POINTING_POINTER] Démux
              ├────────────────────────────────────┤
              └────────────────────────────────────┘

Chaque λ = 1 canal (40 Gbps typique)
80 canaux × 40 Gbps = 3.2 Tbps sur 1 fibre !


Variantes :

CWDM (Coarse WDM)
─────────────────
- 8-16 canaux
- Espacement : 20 nm
- Distance : <80 km
- Coût : Faible
- Usage : Metro

DWDM (Dense WDM)
────────────────
- 40-160 canaux
- Espacement : 0.8 nm (100 GHz)
- Distance : >1000 km
- Coût : Élevé
- Usage : Longue distance, backbone Internet

Avantages WDM :
[OK] Capacité énorme (Tbps)
[OK] Pas de modification fibre existante
[OK] Évolutif (ajouter canaux)

Inconvénients WDM :
[X] Coût équipement élevé
[X] Complexe
[X] Sensible dispersion chromatique


4. CDM (Code Division Multiplexing)
   ═════════════════════════════════

= Multiplexage par CODE

Principe : Tous les signaux utilisent MÊME fréquence et MÊME temps,
          mais sont encodés avec des CODES uniques orthogonaux

Technique : CDMA (Code Division Multiple Access)

[GRAPHIQUE] Illustration simplifiée :

Tous les signaux transmis simultanément :
Signal 1 (code A) : +1 +1 -1 +1
Signal 2 (code B) : +1 -1 +1 -1
Signal 3 (code C) : +1 +1 +1 +1

Signal composite : Somme
Réception : Multiplier par code voulu pour extraire signal

Mathématique :
- Codes orthogonaux (produit scalaire = 0)
- Corrélation pour décoder

Exemple : Signal 1 avec data "1"
Code A : +1 +1 -1 +1
Data 1 : +1 -> Transmis : +1 +1 -1 +1

Exemple : Signal 1 avec data "0"
Code A : +1 +1 -1 +1
Data 0 : -1 -> Transmis : -1 -1 +1 -1

Réception : Multiplier signal reçu par code A
Si corrélation positive -> "1"
Si corrélation négative -> "0"

Avantages CDM :
[OK] Résistant interférences
[OK] Sécurité (code = clé)
[OK] Capacité variable selon charge
[OK] Soft handoff (mobile)

Inconvénients CDM :
[X] Complexe
[X] Sensible puissance (near-far problem)
[X] Overhead codes

Utilisation :
- 3G (UMTS/CDMA2000)
- GPS
- Certains systèmes militaires


5. OFDM (Orthogonal Frequency-Division Multiplexing)
   ══════════════════════════════════════════════════

= FDM + TDM + Modulation avancée

Déjà expliqué dans section Modulation (Partie 5)

Rappel : Division en nombreuses sous-porteuses orthogonales

Utilisation :
- Wi-Fi
- 4G LTE
- 5G
- DVB-T


COMPARAISON MULTIPLEXAGES

┌──────────┬─────────┬─────────┬──────────┬──────────┐
│   Type   │Division │Efficacité│Complexité│  Usage   │
├──────────┼─────────┼─────────┼──────────┼──────────┤
│   FDM    │Fréquence│ Moyenne │  Faible  │TV, Radio │
│   TDM    │  Temps  │  Bonne  │  Moyenne │Téléphonie│
│   WDM    │Longueur │Très bonne│  Élevée │Fibre opt.│
│   CDM    │  Code   │  Bonne  │  Élevée  │3G, GPS   │
│   OFDM   │ Hybride │Excellente│Très élevée│4G, Wi-Fi│
└──────────┴─────────┴─────────┴──────────┴──────────┘
"""


# ----------------------------------------------------------------------------
# [GRAPHIQUE] PARTIE 8 : BANDE PASSANTE ET DÉBIT
# ----------------------------------------------------------------------------

"""
CONCEPTS FONDAMENTAUX


BANDE PASSANTE (BANDWIDTH)

Définition : Plage de fréquences qu'un média peut transporter

Unité : Hertz (Hz)

[GRAPHIQUE] Illustration :

Signal transmis :
 Amplitude
    [BLACK_UP-POINTING_TRIANGLE]
    │    ╱───╲
    │  ╱       ╲
    │╱           ╲
    └───────────────────[BLACK_RIGHT-POINTING_POINTER] Fréquence
    Fmin        Fmax

Bande passante = Fmax - Fmin

Exemples :

Voix téléphonique :
- Fmin : 300 Hz
- Fmax : 3,400 Hz
- BP : 3,400 - 300 = 3,100 Hz ≈ 3.1 kHz

Câble Cat6 :
- Fmin : 1 MHz
- Fmax : 250 MHz
- BP : 250 - 1 = 249 MHz ≈ 250 MHz

Fibre optique :
- BP : ~50 THz (50,000 GHz) !


DÉBIT (DATA RATE / BITRATE)

Définition : Nombre de bits transmis par seconde

Unité : bits par seconde (bps)

Multiples :
- Kbps (kilobits/s) : 1,000 bps = 10³ bps
- Mbps (mégabits/s) : 1,000,000 bps = 10⁶ bps
- Gbps (gigabits/s) : 1,000,000,000 bps = 10⁹ bps
- Tbps (térabits/s) : 10¹² bps

[ATTENTION] NE PAS CONFONDRE :
- Mbps (Megabits par seconde) : Débit réseau
- MB/s (Megaoctets par seconde) : Débit stockage

Conversion : 1 MB/s = 8 Mbps

Exemples :

ADSL :
- Download : 8 Mbps
- Upload : 1 Mbps

Fibre optique domestique :
- Download : 1 Gbps
- Upload : 500 Mbps

Wi-Fi 6 :
- Débit théorique : 9.6 Gbps

Ethernet :
- Fast : 100 Mbps
- Gigabit : 1000 Mbps (1 Gbps)
- 10 Gigabit : 10 Gbps


RELATION BANDE PASSANTE <-> DÉBIT

Plus de bande passante -> Plus de débit possible

Mais : Ce n'est PAS une relation directe !

Facteurs :
1. Modulation (bits/symbole)
2. Bruit (SNR)
3. Encodage (overhead)


THÉORÈME DE NYQUIST (Canal sans bruit)
═══════════════════════════════════════

Pour un canal IDÉAL (sans bruit) :

Débit maximal (bps) = 2 × B × log₂(L)

Où :
- B = Bande passante (Hz)
- L = Nombre de niveaux de signal

Exemple 1 : Ligne téléphonique binaire
────────────────────────────────────────

B = 3,000 Hz
L = 2 (binaire : 0 et 1)

Débit max = 2 × 3,000 × log₂(2)
          = 2 × 3,000 × 1
          = 6,000 bps = 6 kbps

Exemple 2 : Ligne téléphonique 4 niveaux
─────────────────────────────────────────

B = 3,000 Hz
L = 4 niveaux

Débit max = 2 × 3,000 × log₂(4)
          = 2 × 3,000 × 2
          = 12,000 bps = 12 kbps

Exemple 3 : Gigabit Ethernet (1000BASE-T)
──────────────────────────────────────────

B = 31.25 MHz (bande utilisée)
L = 5 (PAM5)

Débit par paire = 2 × 31.25M × log₂(5)
                = 2 × 31.25M × 2.32
                = 145 Mbps

4 paires : 145 × 4 ≈ 580 Mbps

Avec codage (overhead réel) : ~1000 Mbps [OK]


[IDEE] Conclusion Nyquist :
- Pour augmenter débit : Augmenter BP OU Niveaux
- MAIS : Plus de niveaux = Plus sensible au bruit !


THÉORÈME DE SHANNON (Canal avec bruit)
═══════════════════════════════════════

Pour un canal RÉEL (avec bruit) :

Capacité maximale (bps) = B × log₂(1 + SNR)

Où :
- B = Bande passante (Hz)
- SNR = Signal-to-Noise Ratio (rapport signal/bruit)

SNR (dB) = 10 × log₁₀(Psignal / Pbruit)

Conversion dB -> ratio :
SNR (ratio) = 10^(SNR_dB / 10)

[IDEE] C'est la limite THÉORIQUE absolue !
   Aucun système ne peut dépasser cette capacité.


Exemple 1 : Ligne téléphonique
───────────────────────────────

B = 3,000 Hz
SNR = 30 dB

SNR ratio = 10^(30/10) = 10³ = 1000

Capacité = 3,000 × log₂(1 + 1000)
         = 3,000 × log₂(1001)
         = 3,000 × 9.97
         ≈ 30,000 bps = 30 kbps

Modems V.90 : 56 kbps (théorique)
-> Dépasse 30 kbps comment ?
-> Asymétrique ! Download meilleur SNR que upload


Exemple 2 : ADSL
────────────────

Download :
B = 1 MHz
SNR = 40 dB -> Ratio = 10,000

Capacité = 1,000,000 × log₂(1 + 10,000)
         = 1,000,000 × 13.29
         = 13.29 Mbps

ADSL réel : 8-12 Mbps [OK] (sous la limite Shannon)


Exemple 3 : Wi-Fi (2.4 GHz, 20 MHz canal)
──────────────────────────────────────────

B = 20 MHz
SNR = 25 dB -> Ratio ≈ 316

Capacité = 20,000,000 × log₂(1 + 316)
         = 20,000,000 × 8.31
         = 166 Mbps

Wi-Fi 4 (802.11n) sur 2.4 GHz : 72-150 Mbps [OK]


[IDEE] Conclusion Shannon :
- Bruit LIMITE le débit maximal
- Impossible de dépasser C, peu importe la modulation
- Pour augmenter C : Augmenter B OU réduire bruit (augmenter SNR)


LATENCE (DELAY)

Définition : Temps pour qu'une donnée traverse le réseau

Unité : Millisecondes (ms)

Types de latence :

1. LATENCE DE PROPAGATION (Propagation Delay)
   ───────────────────────────────────────────

Temps pour signal de parcourir distance physique

Formule : Temps = Distance / Vitesse

Vitesse :
- Cuivre : ~200,000 km/s (2/3 vitesse lumière)
- Fibre optique : ~200,000 km/s
- Air/Vide : ~300,000 km/s (vitesse lumière c)

Exemple : Paris -> New York
Distance : 6,000 km
Vitesse fibre : 200,000 km/s

Latence propagation = 6,000 / 200,000 = 0.03 s = 30 ms

Aller-retour (RTT) : 60 ms


2. LATENCE DE TRANSMISSION (Transmission Delay)
   ─────────────────────────────────────────────

Temps pour mettre tous les bits sur le lien

Formule : Temps = Taille / Débit

Exemple : Paquet 1500 octets sur Gigabit Ethernet
Taille : 1500 × 8 = 12,000 bits
Débit : 1,000,000,000 bps

Latence transmission = 12,000 / 1,000,000,000
                     = 0.000012 s = 12 µs


3. LATENCE DE TRAITEMENT (Processing Delay)
   ─────────────────────────────────────────

Temps de traitement dans équipements (routeurs, switchs)

Typique :
- Switch L2 : 1-10 µs
- Routeur L3 : 10-100 µs
- Firewall : 100-1000 µs


4. LATENCE DE FILE D'ATTENTE (Queueing Delay)
   ───────────────────────────────────────────

Temps d'attente dans files d'attente (buffers)

Variable selon charge réseau :
- Faible charge : 0 ms
- Forte charge : 10-100+ ms


LATENCE TOTALE

Latence totale = Propagation + Transmission + Traitement + File d'attente

Exemple : Vidéoconférence Paris-Tokyo
──────────────────────────────────────

Distance : 10,000 km
Paquets : 1000 octets
Débit : 100 Mbps
Routeurs : 10 (intermédiaires)

Propagation : 10,000 / 200,000 = 50 ms
Transmission : (1000 × 8) / 100,000,000 = 0.08 ms
Traitement : 10 × 0.05 ms = 0.5 ms
File d'attente : ~10 ms (estimation)

Total ONE-WAY : 50 + 0.08 + 0.5 + 10 ≈ 60 ms
RTT (Round-Trip Time) : 120 ms

[IDEE] Acceptable pour vidéo (< 150 ms)


GIGUE (JITTER)

Définition : Variation de la latence

Mesure : Écart-type des latences

Exemple :
Paquet 1 : 50 ms
Paquet 2 : 55 ms
Paquet 3 : 48 ms
Paquet 4 : 52 ms

Gigue : ±5 ms

Impact :
- VoIP : Problème si gigue > 30 ms (saccades voix)
- Vidéo : Problème si gigue > 50 ms (image saccadée)

Solution : Buffer de gigue (jitter buffer)
- Retarde paquets pour uniformiser
- Compromis : Augmente latence totale


DÉBIT vs BANDE PASSANTE (Usage courant)

[ATTENTION] Confusion terminologique !

Réseau informatique :
"Bande passante" = Débit (Mbps)
Exemple : "Ma bande passante fibre est 1 Gbps"
-> INCORRECT techniquement, mais courant

Télécommunications :
"Bande passante" = Plage fréquences (Hz)
"Débit" = Bits/seconde (bps)
-> CORRECT

Dans ce cours : Distinction rigoureuse
- Bande passante = Hz
- Débit = bps
"""


# ----------------------------------------------------------------------------
# [SECURITE] PARTIE 9 : DÉTECTION ET CORRECTION D'ERREURS
# ----------------------------------------------------------------------------

"""
ERREURS DE TRANSMISSION

Causes :
- Bruit thermique
- Interférences électromagnétiques
- Atténuation signal
- Diaphonie (crosstalk)
- Impulsions parasites

Conséquence : Bits corrompus (1->0 ou 0->1)

Solutions :
1. Détection d'erreur (Error Detection)
2. Correction d'erreur (Error Correction)


TYPES D'ERREURS

1. ERREUR SIMPLE (Single Bit Error)
   ─────────────────────────────────

Un seul bit modifié

Données envoyées :  10110110
Données reçues :    10100110
                       ^
                    Erreur

Rare en pratique (bruit généralement affecte plusieurs bits)


2. ERREUR EN RAFALE (Burst Error)
   ──────────────────────────────

Plusieurs bits consécutifs modifiés

Données envoyées :  10110110 01101110
Données reçues :    10110011 11001110
                         ^^^^^^^
                         Rafale

Plus courant (impulsion parasite)


DÉTECTION D'ERREURS

But : Détecter qu'une erreur s'est produite

Action : Demander retransmission (ARQ)


1. BIT DE PARITÉ (PARITY BIT)
   ═══════════════════════════

Le plus simple

Principe : Ajouter 1 bit pour rendre nombre total de "1" pair ou impair

Parité paire (Even Parity) :
───────────────────────────

Nombre total de "1" doit être PAIR

Exemples :
Données : 1011010 (4 bits à "1")
Parité : 0 (4 est pair)
Transmis : 10110100

Données : 1011011 (5 bits à "1")
Parité : 1 (5+1=6 est pair)
Transmis : 10110111


Parité impaire (Odd Parity) :
─────────────────────────────

Nombre total de "1" doit être IMPAIR

Exemples :
Données : 1011010 (4 bits à "1")
Parité : 1 (4+1=5 est impair)
Transmis : 10110101


Détection :
───────────

Récepteur compte bits à "1"

Si parité incorrecte -> Erreur détectée

Exemple :
Transmis : 10110100 (parité paire)
Reçu :     10100100 (1 erreur)
           ^
Comptage : 3 bits à "1" (IMPAIR !)
-> Erreur détectée [OK]


Limitations :
─────────────

[X] Ne détecte PAS erreurs paires (2, 4, 6... bits)

Exemple :
Transmis : 10110100
Reçu :     10100110 (2 erreurs)
           ^    ^
Comptage : 4 bits à "1" (PAIR)
-> Erreur NON détectée [X]

[X] Ne peut PAS corriger (juste détecter)

Usage :
- RAM (ECC moins cher utilise parité simple)
- Transmission série basique
- Rare aujourd'hui (méthodes plus robustes)


2. CHECKSUM
   ════════

Principe : Somme de tous les octets/mots

Méthode simple :
1. Diviser données en mots (ex: 16 bits)
2. Additionner tous les mots
3. Complément à 1 du résultat = Checksum
4. Transmettre données + checksum

Réception :
1. Additionner mots reçus + checksum
2. Si résultat = 0xFFFF (tous bits à 1) -> OK
3. Sinon -> Erreur


Exemple (16 bits) :
───────────────────

Données (4 mots 16 bits) :
0x1234
0x5678
0x9ABC
0xDEF0

Somme : 0x1234 + 0x5678 + 0x9ABC + 0xDEF0
      = 0x2C65E

Repli (carry) : 0x2 + 0xC65E = 0xC660

Checksum : ~0xC660 = 0x399F (complément à 1)

Transmis : 0x1234 0x5678 0x9ABC 0xDEF0 0x399F

Vérification :
0x1234 + 0x5678 + 0x9ABC + 0xDEF0 + 0x399F = 0xFFFF [OK]


Avantages :
[OK] Simple
[OK] Détecte erreurs simples et rafales courtes

Inconvénients :
[X] Faible pour erreurs multiples
[X] Ne détecte pas certaines permutations

Usage :
- IPv4 (header checksum)
- TCP/UDP (checksum 16 bits)
- ICMP


3. CRC (Cyclic Redundancy Check)
   ══════════════════════════════

Le PLUS utilisé en réseaux !

Principe : Mathématique polynomiale (division binaire)

Processus :
1. Choisir polynôme générateur G(x) de degré n
2. Ajouter n zéros aux données
3. Diviser (XOR) par polynôme générateur
4. Reste = CRC (n bits)
5. Transmettre données + CRC

Réception :
1. Diviser données+CRC par même polynôme
2. Si reste = 0 -> OK
3. Sinon -> Erreur


Polynômes standards :

CRC-8 : x⁸ + x² + x + 1
CRC-16 : x¹⁶ + x¹⁵ + x² + 1
CRC-32 : x³² + x²⁶ + x²³ + ... + x + 1 (Ethernet)

[GRAPHIQUE] Exemple simplifié (CRC-3) :

Données : 1101 (4 bits)
Polynôme : 1011 (degré 3)

1. Ajouter 3 zéros : 1101000

2. Division binaire (XOR) :

         1010011
       ┌─────────
1011 ) 1101000
       1011v
       ────────
        110100
        1011v
        ──────
         11010
         1011v
         ─────
          10100
          1011v
          ────
           1110
           1011
           ────
            101 <- Reste = CRC

3. CRC = 101

4. Transmis : 1101101

Vérification récepteur :
Division de 1101101 par 1011
Si reste = 000 -> OK [OK]


Avantages CRC :
[OK] Très fiable (détecte 99.9%+ erreurs)
[OK] Détecte erreurs simples et rafales
[OK] Matériel rapide (shift registers)

Inconvénients CRC :
[X] Ne peut PAS corriger (détection seule)

Usage :
- Ethernet (CRC-32)
- Wi-Fi
- USB
- Disques durs
- PNG, ZIP (compression)


4. CRYPTOGRAPHIC HASH (MD5, SHA)
   ══════════════════════════════

Pour intégrité ET authentification

MD5 : 128 bits (obsolète, vulnérable)
SHA-1 : 160 bits (déprécié)
SHA-256 : 256 bits (standard actuel)
SHA-3 : Nouvelle génération

Principe : Fonction à sens unique

Données (any size) -> [Hash] -> Empreinte fixe (256 bits)

Propriétés :
- Déterministe (même entrée = même hash)
- Avalanche (1 bit change -> 50% hash change)
- Collision résistance (quasi-impossible trouver 2 entrées = même hash)
- Irréversible (hash -> données impossible)

Usage :
- Téléchargements (vérifier intégrité fichier)
- HTTPS (vérifier certificat)
- Blockchain
- Mots de passe (stockage)

[ATTENTION] Hash ≠ CRC :
- Hash : Cryptographique, sécurisé
- CRC : Détection erreur, NON sécurisé


CORRECTION D'ERREURS

But : Détecter ET corriger erreurs automatiquement

Méthodes : FEC (Forward Error Correction)


1. CODES DE HAMMING
   ════════════════

Principe : Ajouter bits de parité multiple positions

Permet corriger 1 erreur, détecter 2 erreurs

Hamming(7,4) :
- 4 bits de données
- 3 bits de parité
- 7 bits total

Positions parité : 1, 2, 4 (puissances de 2)

[GRAPHIQUE] Exemple Hamming(7,4) :

Position :  1  2  3  4  5  6  7
Bit :       P1 P2 D1 P4 D2 D3 D4
Type :      P  P  D  P  D  D  D

P1 couvre : 1, 3, 5, 7 (bits impairs)
P2 couvre : 2, 3, 6, 7
P4 couvre : 4, 5, 6, 7

Données : 1011

D1=1, D2=0, D3=1, D4=1

Calcul parités :
P1 : D1 ⊕ D2 ⊕ D4 = 1 ⊕ 0 ⊕ 1 = 0
P2 : D1 ⊕ D3 ⊕ D4 = 1 ⊕ 1 ⊕ 1 = 1
P4 : D2 ⊊ D3 ⊕ D4 = 0 ⊕ 1 ⊕ 1 = 0

Code : 0110111

Erreur position 5 : 0110011
                        ^

Détection :
P1 vérifie : 0 ⊕ 1 ⊕ 0 ⊕ 1 = 0 [OK]
P2 vérifie : 1 ⊕ 1 ⊕ 0 ⊕ 1 = 1 [OK]
P4 vérifie : 0 ⊕ 0 ⊕ 0 ⊕ 1 = 1 [X]

Position erreur = 4 = 0b100
Correction : Inverser bit 5 -> 0110111 [OK]

Usage :
- ECC RAM (SECDED : Single Error Correction, Double Error Detection)
- Stockage (disques)


2. CODES CONVOLUTIONNELS
   ═════════════════════

Encodage : Données passent par registre à décalage

Chaque bit entrée -> Plusieurs bits sortie

Décodage : Algorithme Viterbi (graphe chemins)

Avantages :
[OK] Correction puissante
[OK] Bon pour canaux bruités

Usage :
- Téléphonie mobile (2G, 3G)
- Satellite
- Wi-Fi (partie)


3. CODES TURBO
   ═══════════

2 encodeurs convolutionnels en parallèle

Décodage itératif (turbo)

Performance proche limite Shannon !

Usage :
- 3G (UMTS)
- 4G LTE
- DVB-S2 (satellite)


4. CODES LDPC (Low-Density Parity-Check)
   ══════════════════════════════════════

Matrice de parité creuse (sparse)

Décodage itératif (belief propagation)

Performance excellente

Usage :
- Wi-Fi 802.11n/ac/ax
- DVB-S2
- 10 Gigabit Ethernet
- 5G NR


INTERLEAVING (ENTRELACEMENT)

Technique complémentaire aux codes correcteurs

But : Répartir erreurs en rafale

Principe : Réorganiser bits avant transmission

[GRAPHIQUE] Exemple :

Données originales (4 séquences) :
A : 1111
B : 2222
C : 3333
D : 4444

Entrelacement :
Transmis : 1234 1234 1234 1234

Erreur en rafale (4 bits consécutifs) :
Reçu : 1234 XXXX 1234 1234

Désentrelacement :
A : 1X11 (1 erreur)
B : 2X22 (1 erreur)
C : 3X33 (1 erreur)
D : 4X44 (1 erreur)

4 erreurs simples -> Code correcteur peut corriger ! [OK]

Sans entrelacement :
B aurait eu : 2XXX (4 erreurs) -> Impossible corriger [X]

Usage :
- CD Audio (CIRC : Cross-Interleaved Reed-Solomon Code)
- DSL
- 4G/5G


ARQ (Automatic Repeat reQuest)
═══════════════════════════════

Stratégie : Détection + Retransmission

Types :

1. Stop-and-Wait ARQ
   ─────────────────

Émetteur :
1. Envoie trame
2. Attend ACK (acquittement)
3. Si ACK reçu -> Trame suivante
4. Si timeout -> Retransmission

Inefficace (latence)


2. Go-Back-N ARQ
   ─────────────

Émetteur :
- Envoie N trames sans attendre ACK (fenêtre coulissante)
- Si erreur trame i -> Retransmet trames i, i+1, i+2... N

Efficace mais gaspille bande passante


3. Selective Repeat ARQ
   ────────────────────

Émetteur :
- Envoie N trames
- Si erreur trame i -> Retransmet SEULEMENT trame i

Le plus efficace !

Usage :
- TCP (Selective ACK)
- Wi-Fi


HYBRIDES (FEC + ARQ)

Combinaison des deux :

1. FEC corrige erreurs fréquentes
2. ARQ retransmet si FEC insuffisant

Avantages :
[OK] Performance optimale
[OK] Adaptabilité

Usage :
- 4G/5G (HARQ : Hybrid ARQ)
- Wi-Fi


COMPARAISON MÉTHODES

┌──────────────┬────────┬──────────┬────────┬─────────┐
│   Méthode    │Détection│Correction│Overhead│Complexité│
├──────────────┼────────┼──────────┼────────┼─────────┤
│ Parité       │ Faible │   Non    │  ~1%   │Très faible│
│ Checksum     │ Moyenne│   Non    │  ~3%   │  Faible  │
│ CRC          │Excellente│ Non    │  ~5%   │  Moyenne │
│ Hamming      │  Bonne │  1 bit   │  ~40%  │  Moyenne │
│ Reed-Solomon │Excellente│Multiple│ ~20%   │  Élevée  │
│ Turbo/LDPC   │Excellente│Puissante│~50%   │Très élevée│
└──────────────┴────────┴──────────┴────────┴─────────┘

Choix selon contexte :
- Faible bruit : CRC (détection)
- Bruit moyen : FEC léger (Hamming)
- Bruit élevé : FEC puissant (Turbo/LDPC)
- Retransmission possible : ARQ
- Temps réel (no retrans) : FEC obligatoire
"""


# ----------------------------------------------------------------------------
# [COURS] EXERCICES PRATIQUES - CHAPITRE 3
# ----------------------------------------------------------------------------

"""
[IDEE] EXERCICES

Ces exercices consolident votre compréhension des concepts.


═══════════════════════════════════════════════════════════
EXERCICE 1 : ÉCHANTILLONNAGE ET NUMÉRISATION
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Un studio d'enregistrement veut numériser un signal audio.

Caractéristiques signal :
- Fréquence minimale : 20 Hz
- Fréquence maximale : 20,000 Hz (20 kHz)
- Amplitude : -1V à +1V

Questions :

1. Quelle est la bande passante du signal ?

2. D'après le théorème de Shannon-Nyquist, quelle est la fréquence 
   d'échantillonnage minimale requise ?

3. En pratique, on utilise 44,100 Hz (CD) ou 48,000 Hz (studio).
   Pourquoi ces valeurs sont-elles supérieures au minimum théorique ?

4. Avec une quantification 16 bits :
   a) Combien de niveaux d'amplitude peut-on représenter ?
   b) Quel est l'écart entre deux niveaux consécutifs ?
   c) Quel est le rapport Signal/Bruit théorique (SNR) ?

5. Calculez le débit binaire pour :
   a) CD Audio stéréo (44.1 kHz, 16 bits, 2 canaux)
   b) Studio mono (48 kHz, 24 bits, 1 canal)
   c) Home cinema 5.1 (48 kHz, 24 bits, 6 canaux)

6. Un fichier audio de 3 minutes en qualité CD, quelle taille occupe-t-il
   (sans compression) ?


[OK] CORRECTION EXERCICE 1

1. BANDE PASSANTE
   ─────────────

BP = Fmax - Fmin
   = 20,000 - 20
   = 19,980 Hz
   ≈ 20 kHz


2. FRÉQUENCE D'ÉCHANTILLONNAGE MINIMALE
   ─────────────────────────────────────

Théorème Shannon-Nyquist :
Fs ≥ 2 × Fmax

Fs minimum = 2 × 20,000 Hz
           = 40,000 Hz
           = 40 kHz


3. POURQUOI 44.1 kHz OU 48 kHz ?
   ─────────────────────────────

Raisons :

a) Marge de sécurité anti-aliasing
   ──────────────────────────────
   - Théorie : 40 kHz suffit
   - Pratique : Filtres anti-aliasing imparfaits
   - Marge 10% : 44 kHz (44.1 choisi pour raisons historiques)

b) Facilité filtrage
   ─────────────────
   - Transition 20 kHz -> 22.05 kHz (44.1/2)
   - Bande de transition : 2.05 kHz
   - Filtre plus simple et moins coûteux

c) Compatibilité vidéo (48 kHz)
   ────────────────────────────
   - 48 kHz = multiple de fréquences vidéo (24, 25, 30 fps)
   - Synchronisation audio/vidéo facilitée

d) Historique 44.1 kHz
   ───────────────────
   - Norme CD établie années 1980
   - Basée sur vidéo analogique (NTSC/PAL)
   - 44,100 = 2 × 2 × 3² × 5² × 7²


4. QUANTIFICATION 16 BITS
   ───────────────────────

a) Nombre de niveaux
   ─────────────────

Niveaux = 2^16 = 65,536

b) Écart entre niveaux
   ───────────────────

Plage amplitude : -1V à +1V = 2V

Écart = 2V / 65,536
      = 0.0000305 V
      ≈ 30.5 µV

c) Rapport Signal/Bruit (SNR)
   ──────────────────────────

Formule :
SNR (dB) ≈ 6n + 1.76

Avec n = 16 bits :
SNR = 6 × 16 + 1.76
    = 96 + 1.76
    = 97.76 dB

[IDEE] CD Audio : ~98 dB de dynamique !
   (Excellent pour l'oreille humaine : ~120 dB max)


5. DÉBIT BINAIRE
   ─────────────

Formule :
Débit (bps) = Fs × Bits × Canaux

a) CD Audio stéréo
   ───────────────

Fs = 44,100 Hz
Bits = 16
Canaux = 2

Débit = 44,100 × 16 × 2
      = 1,411,200 bps
      = 1.411 Mbps
      ≈ 1.4 Mbps

b) Studio mono
   ───────────

Fs = 48,000 Hz
Bits = 24
Canaux = 1

Débit = 48,000 × 24 × 1
      = 1,152,000 bps
      = 1.152 Mbps
      ≈ 1.2 Mbps

c) Home cinema 5.1
   ───────────────

Fs = 48,000 Hz
Bits = 24
Canaux = 6 (Avant G/D, Centre, Arrière G/D, Subwoofer)

Débit = 48,000 × 24 × 6
      = 6,912,000 bps
      = 6.912 Mbps
      ≈ 7 Mbps


6. TAILLE FICHIER 3 MINUTES CD
   ───────────────────────────

Débit CD : 1.411 Mbps = 1,411,200 bps
Durée : 3 minutes = 180 secondes

Taille (bits) = Débit × Durée
              = 1,411,200 × 180
              = 254,016,000 bits

Taille (octets) = 254,016,000 / 8
                = 31,752,000 octets
                = 31.752 Mo
                ≈ 32 Mo

Taille (Mo) = 31.752 Mo

[IDEE] Avec compression MP3 320 kbps :
   Taille = 320,000 × 180 / 8
          = 7.2 Mo
   
   Compression ≈ 4.4:1


═══════════════════════════════════════════════════════════
EXERCICE 2 : CAPACITÉ DU CANAL
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Un canal de transmission a les caractéristiques suivantes :
- Bande passante : 10 MHz
- Rapport Signal/Bruit (SNR) : 30 dB

Questions :

1. Convertissez le SNR de dB en ratio.

2. Calculez la capacité théorique maximale du canal selon Shannon.

3. Si on utilise une modulation QAM-64 (6 bits/symbole), quel est le 
   débit symboles/seconde théorique maximal selon Nyquist ?

4. Quel débit binaire cela donnerait-il ?

5. Comparez avec la limite de Shannon. Est-ce réaliste ?

6. Quelle modulation faudrait-il pour atteindre (presque) la capacité Shannon ?


[OK] CORRECTION EXERCICE 2

1. CONVERSION SNR (dB -> ratio)
   ───────────────────────────

Formule :
SNR (ratio) = 10^(SNR_dB / 10)

SNR_dB = 30 dB

SNR (ratio) = 10^(30 / 10)
            = 10^3
            = 1,000

[IDEE] Signal est 1000× plus puissant que le bruit


2. CAPACITÉ SHANNON
   ────────────────

Formule :
C = B × log₂(1 + SNR)

Où :
- B = 10 MHz = 10,000,000 Hz
- SNR = 1,000

C = 10,000,000 × log₂(1 + 1,000)
  = 10,000,000 × log₂(1,001)
  = 10,000,000 × 9.9677
  = 99,677,000 bps
  ≈ 99.7 Mbps

[IDEE] Capacité maximale ABSOLUE : ~100 Mbps
   Aucune technique ne peut dépasser !


3. DÉBIT SYMBOLES (NYQUIST)
   ────────────────────────

Théorème Nyquist (canal sans bruit) :
Débit symboles max = 2 × B

B = 10 MHz

Débit symboles = 2 × 10,000,000
               = 20,000,000 symboles/s
               = 20 Mbaud


4. DÉBIT BINAIRE (QAM-64)
   ──────────────────────

QAM-64 : 6 bits par symbole

Débit binaire = Débit symboles × Bits/symbole
              = 20,000,000 × 6
              = 120,000,000 bps
              = 120 Mbps


5. COMPARAISON SHANNON
   ───────────────────

Capacité Shannon : 99.7 Mbps
Débit QAM-64 : 120 Mbps

120 Mbps > 99.7 Mbps [X]

C'EST IMPOSSIBLE !

Explication :
─────────────

Shannon donne limite ABSOLUE avec bruit.
QAM-64 à 120 Mbps dépasse cette limite.

-> En pratique, avec SNR 30 dB, impossible atteindre 120 Mbps
-> Taux d'erreur serait inacceptable

Réalité :
─────────

Avec QAM-64 sur ce canal :
- Débit théorique : 120 Mbps (Nyquist)
- Débit pratique : ~80-90 Mbps (codes correcteurs, overhead)
- Toujours < 99.7 Mbps (Shannon)


6. MODULATION POUR ATTEINDRE SHANNON
   ──────────────────────────────────

Capacité Shannon : 99.7 Mbps
Débit symboles : 20 Mbaud

Bits/symbole nécessaires :
99.7 Mbps / 20 Mbaud = 4.985 bits/symbole

Modulations possibles :
- QAM-32 (5 bits/symbole) : 100 Mbps [OK]
- Avec codes LDPC/Turbo (efficacité ~0.95)
  -> Débit utile ≈ 95 Mbps

[IDEE] En pratique : QAM-32 ou QAM-64 avec codes correcteurs puissants
   peuvent approcher 90-95% capacité Shannon


Conclusion :
────────────

Ce canal (10 MHz, SNR 30 dB) peut transmettre ~90-95 Mbps réellement.

Usage typique :
- Wi-Fi 802.11ac sur canal 40 MHz : ~200 Mbps pratiques
- Câble DOCSIS 3.0 : ~300 Mbps par canal 6 MHz


═══════════════════════════════════════════════════════════
EXERCICE 3 : CRC ET DÉTECTION D'ERREURS
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Soit les données suivantes à transmettre : 1101011 (7 bits)

On utilise un CRC avec le polynôme générateur : G(x) = 1011 (degré 3)

Questions :

1. Calculez le CRC (montrer la division binaire).

2. Quelles données (données + CRC) sont transmises ?

3. À la réception, on reçoit : 1101011101
   Vérifiez s'il y a une erreur.

4. On reçoit maintenant : 1101010101 (erreur sur bit 5)
   Le CRC détecte-t-il l'erreur ?

5. Combien de bits de CRC faudrait-il pour :
   - Détecter toutes erreurs simples sur un paquet de 1500 octets ?
   - Détecter toutes rafales d'erreurs de longueur ≤ 16 bits ?


[OK] CORRECTION EXERCICE 3

1. CALCUL CRC
   ──────────

Données : 1101011 (7 bits)
Polynôme : 1011 (degré 3)

Étape 1 : Ajouter 3 zéros (degré du polynôme)
────────────────────────────────────────────────

Données étendues : 1101011000

Étape 2 : Division binaire (XOR)
─────────────────────────────────

         1110101
       ┌──────────
1011 ) 1101011000
       1011v
       ─────────
        110101
        1011v
        ──────
         11111
         1011v
         ─────
          10010
          1011v
          ────
           100100
           1011v
           ─────
            11110
            1011v
            ────
             10100
             1011v
             ────
              1110
              1011
              ────
               101 <- Reste = CRC

CRC = 101 (3 bits)


2. DONNÉES TRANSMISES
   ──────────────────

Données originales : 1101011
CRC : 101

Transmis : 1101011 + 101 = 1101011101

10 bits total (7 données + 3 CRC)


3. VÉRIFICATION RÉCEPTION (1101011101)
   ───────────────────────────────────

Diviser données reçues (complètes) par polynôme :

         1110101
       ┌──────────
1011 ) 1101011101
       1011v
       ─────────
        110101
        1011v
        ──────
         11111
         1011v
         ─────
          10011
          1011v
          ────
           100010
           1011v
           ─────
            11101
            1011v
            ────
             1101
             1011
             ────
              110
              110 (on continue)
              
(Division complète donne reste 000)

Reste = 000 [OK]

[IDEE] PAS D'ERREUR détectée !
   Données OK


4. VÉRIFICATION AVEC ERREUR (1101010101)
   ─────────────────────────────────────

Transmis : 1101011101
Reçu :     1101010101
           ^
           Bit 5 inversé (1->0)

Division :

         1110100
       ┌──────────
1011 ) 1101010101
       1011v
       ─────────
        110101
        1011v
        ──────
         11100
         1011v
         ─────
          10110
          1011v
          ────
           10101
           1011v
           ────
            1101
            1011
            ────
             110 <- Reste NON NUL

Reste = 110 ≠ 000 [X]

[IDEE] ERREUR DÉTECTÉE [OK]


5. DIMENSIONNEMENT CRC
   ───────────────────

a) Détecter toutes erreurs simples (paquet 1500 octets)
   ─────────────────────────────────────────────────────

Taille paquet : 1500 octets = 12,000 bits

Pour détecter TOUTES les erreurs simples :
-> CRC doit avoir au moins log₂(n) bits

Mais en pratique :
-> CRC de degré r détecte toutes erreurs simples si n < 2^r

Pour 12,000 bits :
2^r ≥ 12,000
r ≥ log₂(12,000)
r ≥ 13.55

Minimum : r = 14 bits

[IDEE] CRC-16 (16 bits) suffit largement


b) Détecter rafales ≤ 16 bits
   ──────────────────────────

Propriété CRC :
Un CRC de degré r détecte TOUTES les rafales de longueur ≤ r

Pour rafales ≤ 16 bits :
r ≥ 16

Minimum : r = 16 bits

[IDEE] CRC-16 ou CRC-32 recommandés


Usage réel :
────────────

Ethernet : CRC-32 (32 bits)
- Détecte erreurs simples sur paquets jusqu'à 2^32 bits
- Détecte rafales jusqu'à 32 bits
- Probabilité non-détection : 2^-32 ≈ 0.00000002%

USB : CRC-16 (16 bits) pour paquets courts
      CRC-32 pour paquets longs


═══════════════════════════════════════════════════════════
EXERCICE 4 : COMPARAISON MODES TRANSMISSION
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Un réseau Ethernet 100 Mbps relie deux ordinateurs.

Scénario 1 : Hub (Half-Duplex)
Scénario 2 : Switch (Full-Duplex)

Questions :

1. Dans chaque scénario, quel est le débit effectif maximum si :
   a) PC1 envoie vers PC2 uniquement
   b) PC1 et PC2 communiquent simultanément (bidirectionnel)

2. PC1 envoie un fichier de 100 Mo à PC2.
   Calculez le temps de transfert théorique dans chaque scénario 
   (ignorer overhead protocole).

3. PC1 envoie 50 Mo à PC2, simultanément PC2 envoie 50 Mo à PC1.
   Temps de transfert dans chaque scénario ?

4. Expliquez pourquoi le full-duplex est plus efficace.


[OK] CORRECTION EXERCICE 4

1. DÉBIT EFFECTIF MAXIMUM
   ───────────────────────

SCÉNARIO 1 : HUB (Half-Duplex)
───────────────────────────────

a) PC1 -> PC2 uniquement
   ────────────────────

Débit : 100 Mbps

Un seul sens -> Pas de collision
Débit effectif : 100 Mbps [OK]


b) PC1 <-> PC2 simultané (bidirectionnel)
   ─────────────────────────────────────

Hub = Half-duplex
-> UN SEUL peut émettre à la fois

Débit partagé : 100 Mbps total

Si équitablement réparti :
PC1 -> PC2 : 50 Mbps
PC2 -> PC1 : 50 Mbps

Débit effectif par sens : 50 Mbps


SCÉNARIO 2 : SWITCH (Full-Duplex)
──────────────────────────────────

a) PC1 -> PC2 uniquement
   ────────────────────

Débit : 100 Mbps

Débit effectif : 100 Mbps [OK]


b) PC1 <-> PC2 simultané (bidirectionnel)
   ─────────────────────────────────────

Switch = Full-duplex
-> Émission ET réception simultanées

PC1 -> PC2 : 100 Mbps (voie TX)
PC2 -> PC1 : 100 Mbps (voie RX)

Débit effectif par sens : 100 Mbps [OK]
Débit total agrégé : 200 Mbps


2. TRANSFERT UNIDIRECTIONNEL (100 Mo)
   ───────────────────────────────────

Fichier : 100 Mo = 100 × 8 = 800 Mb (mégabits)

SCÉNARIO 1 : HUB
────────────────

Débit : 100 Mbps

Temps = 800 Mb / 100 Mbps
      = 8 secondes


SCÉNARIO 2 : SWITCH
───────────────────

Débit : 100 Mbps (identique unidirectionnel)

Temps = 800 Mb / 100 Mbps
      = 8 secondes

[IDEE] Identique car un seul sens !


3. TRANSFERT BIDIRECTIONNEL (50 Mo chaque sens)
   ─────────────────────────────────────────────

PC1 -> PC2 : 50 Mo = 400 Mb
PC2 -> PC1 : 50 Mo = 400 Mb

SCÉNARIO 1 : HUB (Half-Duplex)
───────────────────────────────

Débit partagé : 100 Mbps

Les deux transferts se PARTAGENT la bande passante.

Débit effectif par sens : 50 Mbps

Temps = 400 Mb / 50 Mbps
      = 8 secondes

[IDEE] Chaque transfert prend 8s car débit divisé par 2


SCÉNARIO 2 : SWITCH (Full-Duplex)
──────────────────────────────────

Débit DÉDIÉ par sens : 100 Mbps

Les deux transferts sont SIMULTANÉS et INDÉPENDANTS.

Temps = 400 Mb / 100 Mbps
      = 4 secondes [OK]

[IDEE] 2× PLUS RAPIDE !


4. POURQUOI FULL-DUPLEX PLUS EFFICACE ?
   ─────────────────────────────────────

HALF-DUPLEX (Hub) :
───────────────────

Problèmes :
[X] Partage du média (1 seul à la fois)
[X] Collisions possibles (CSMA/CD)
[X] Temps perdu en détection/récupération collisions
[X] Débit effectif réduit (30-40% en charge élevée)

Architecture :
         Hub
      ┌───┴───┐
      │  Bus  │ <- Média partagé
      └───┬───┘
     PC1  PC2

Communication : Tour à tour


FULL-DUPLEX (Switch) :
──────────────────────

Avantages :
[OK] Voies séparées TX/RX (2 paires cuivre)
[OK] Pas de collisions (voies dédiées)
[OK] Performance maximale (100% utilisation)
[OK] Débit agrégé doublé (200 Mbps total)

Architecture :
         Switch
      ┌────┴────┐
   TX │    RX   │ RX <- PC1
   ───┼─────────┼───
   RX │    TX   │ TX
      └────┬────┘
        PC2

Communication : Simultanée


Tableau comparatif :
────────────────────

┌──────────────┬──────────┬─────────────┐
│   Critère    │Half-Duplex│Full-Duplex │
├──────────────┼──────────┼─────────────┤
│ Débit 1 sens │ 100 Mbps │  100 Mbps   │
│ Débit 2 sens │ 50+50Mbps│ 100+100Mbps │
│ Collisions   │   Oui    │    Non      │
│ Latence      │  Élevée  │   Faible    │
│ Efficacité   │  30-40%  │   ~100%     │
└──────────────┴──────────┴─────────────┘

[IDEE] Tous les réseaux modernes = Full-Duplex !
   Half-duplex obsolète (hubs disparus)


═══════════════════════════════════════════════════════════
FIN DES EXERCICES
═══════════════════════════════════════════════════════════
"""


# ============================================================================
# [DOCS] CONCLUSION CHAPITRE 3
# ============================================================================

"""
[BRAVO] FÉLICITATIONS !

Vous avez terminé le Chapitre 3 : Numérisation & Transmission


[GUIDE] RÉCAPITULATIF COMPLET

PARTIE 1 : FONDAMENTAUX
───────────────────────

[OK] Données vs Signaux (analogique/numérique)
[OK] Numérisation ADC :
   - Échantillonnage (Shannon-Nyquist : Fs ≥ 2×Fmax)
   - Quantification (2^n niveaux)
   - Codage (binaire)
[OK] Représentation binaire :
   - Bits, octets, unités (KiB, MiB, GiB)
   - ASCII, UTF-8
   - Entiers, flottants
[OK] Encodage signaux :
   - NRZ, Manchester, 4B/5B, 8B/10B
   - PAM5 (Gigabit Ethernet)
[OK] Modulation :
   - Analogique : AM, FM, PM
   - Numérique : ASK, FSK, PSK, QAM
   - OFDM (Wi-Fi, 4G, 5G)
[OK] Modes transmission :
   - Simplex, Half-Duplex, Full-Duplex
   - Synchrone, Asynchrone
   - Série vs Parallèle


PARTIE 2 : AVANCÉ
─────────────────

[OK] Multiplexage :
   - FDM (fréquence) : TV, Radio
   - TDM (temps) : Téléphonie, SONET
   - WDM (longueur d'onde) : Fibre optique
   - CDM (code) : 3G, GPS
   - OFDM (hybride) : Wi-Fi, 4G, 5G
   
[OK] Bande passante et débit :
   - BP (Hz) vs Débit (bps)
   - Nyquist : Débit = 2B log₂(L)
   - Shannon : C = B log₂(1 + SNR)
   - Latence : Propagation, Transmission, Traitement, File d'attente
   
[OK] Détection et correction d'erreurs :
   - Parité, Checksum, CRC (détection)
   - Hamming, Reed-Solomon, Turbo, LDPC (correction)
   - ARQ (retransmission)
   - Interleaving


[OBJECTIF] COMPÉTENCES ACQUISES

Vous comprenez maintenant :

[OK] Comment la voix/musique devient numérique
[OK] Pourquoi CD = 44.1 kHz, 16 bits
[OK] Comment Ethernet transmet à 1 Gbps sur Cat6
[OK] Pourquoi fibre optique >> cuivre (WDM)
[OK] Limite théorique débit (Shannon)
[OK] Comment détecter erreurs (CRC)
[OK] Différence Half vs Full-Duplex
[OK] Modulations Wi-Fi (QPSK, QAM-256, OFDM)


[PRO] APPLICATIONS PRATIQUES

Ces connaissances vous permettent de :

[OK] Comprendre spécifications équipements (modulation, SNR, BP)
[OK] Diagnostiquer problèmes qualité (bruit, erreurs)
[OK] Choisir bon média selon besoins (débit, distance)
[OK] Calculer débits théoriques vs pratiques
[OK] Comprendre limites physiques transmission
[OK] Optimiser configurations (échantillonnage, modulation)


[LIEN] LIEN AVEC CHAPITRES SUIVANTS

Ce chapitre est FONDAMENTAL pour comprendre :

- Chapitre 4 : Modèle OSI (Couche Physique utilise tout ça !)
- Chapitre 5 : Ethernet (Encodage, Full-Duplex, CRC)
- Chapitre 6-7 : Wi-Fi (Modulation, OFDM, Multiplexage)
- Chapitres suivants : Tous s'appuient sur ces bases


-> PROCHAIN CHAPITRE : MODÈLE OSI ET TCP/IP

Au Chapitre 4, nous verrons :
- Les 7 couches du modèle OSI
- Encapsulation/Désencapsulation
- Protocoles par couche
- Modèle TCP/IP
- Communication inter-couches

Ce sera le cadre théorique pour TOUT le reste !


[RAPIDE] EXCELLENT TRAVAIL !

Prenez une pause si nécessaire, ce chapitre était dense et technique.

Quand vous êtes prêt : Chapitre 4 - Modèle OSI !


═══════════════════════════════════════════════════════════
[GUIDE] FIN DU CHAPITRE 3
═══════════════════════════════════════════════════════════
"""

# ============================================================================
# CHAPITRE 4 : MODÈLE OSI ET TCP/IP
# ============================================================================

"""
[OBJECTIF] OBJECTIFS DU CHAPITRE

Ce chapitre couvre les MODÈLES DE RÉFÉRENCE fondamentaux des réseaux :
[OK] Modèle OSI (7 couches)
[OK] Modèle TCP/IP (4 couches)
[OK] Encapsulation/Désencapsulation
[OK] Protocoles par couche
[OK] Communication inter-couches
[OK] Comparaison des modèles

[IDEE] POURQUOI C'EST CRUCIAL ?

Les modèles OSI et TCP/IP sont le CADRE CONCEPTUEL de tous les réseaux.
Comprendre ces modèles est ESSENTIEL pour :
- Comprendre comment fonctionnent les protocoles
- Diagnostiquer les problèmes réseau (approche par couches)
- Concevoir des architectures réseau
- Communiquer avec d'autres professionnels
- Passer des certifications (CCNA, CompTIA Network+)

[COURS] ANALOGIE

Imaginez la construction d'une maison :
- Fondations (Couche 1 - Physique)
- Structure/Murs (Couche 2 - Liaison)
- Plomberie/Électricité (Couche 3 - Réseau)
- Aménagement intérieur (Couche 4 - Transport)
- Décoration (Couches 5-7 - Application)

Chaque couche s'appuie sur la précédente !


[DOCS] STRUCTURE DU CHAPITRE

PARTIE 1 :
1. Introduction aux modèles en couches
2. Modèle OSI détaillé (7 couches)
3. Encapsulation et Désencapsulation
4. Communication inter-couches

PARTIE 2 :
5. Modèle TCP/IP (4 couches)
6. Comparaison OSI vs TCP/IP
7. Protocoles par couche
8. Exercices pratiques
"""


# ----------------------------------------------------------------------------
# [DOCS] PARTIE 1 : INTRODUCTION AUX MODÈLES EN COUCHES
# ----------------------------------------------------------------------------

"""
POURQUOI DES MODÈLES EN COUCHES ?


PROBLÈME : COMPLEXITÉ DES RÉSEAUX

Sans organisation, les réseaux seraient un chaos :
- Centaines de protocoles
- Milliers d'équipements différents
- Aucune interopérabilité

Exemple anarchie :
──────────────────

Chaque fabricant crée son propre système complet :
- Cisco : Système propriétaire A-Z
- HP : Système propriétaire A-Z
- Dell : Système propriétaire A-Z

[X] Incompatibles entre eux !
[X] Impossible de connecter équipements différents
[X] Coût énorme (enfermement propriétaire)


SOLUTION : MODÈLE EN COUCHES (LAYERED MODEL)

Diviser la complexité en COUCHES indépendantes.

Principe : "Divide and Conquer" (Diviser pour régner)

[GRAPHIQUE] Avantages :

1. MODULARITÉ
   ──────────
   
   Chaque couche = Module indépendant
   Changement dans une couche ≠ Affecter autres
   
   Exemple :
   Passer de Wi-Fi -> Ethernet (Couche 2)
   -> Applications (Couche 7) ne changent PAS

2. INTEROPÉRABILITÉ
   ────────────────
   
   Standards par couche
   Équipements de fabricants différents peuvent communiquer
   
   Exemple :
   iPhone (Apple) <-> Serveur Linux <-> PC Windows
   -> Tous utilisent TCP/IP

3. DÉVELOPPEMENT FACILITÉ
   ──────────────────────
   
   Experts spécialisés par couche
   Développement parallèle
   
   Exemple :
   - Équipe A : Couche physique (câbles)
   - Équipe B : Couche réseau (routage)
   - Équipe C : Applications web

4. DÉPANNAGE STRUCTURÉ
   ───────────────────
   
   Approche méthodique couche par couche
   
   Exemple :
   Pas d'Internet ?
   -> Couche 1 : Câble branché ? [OK]
   -> Couche 2 : Switch fonctionne ? [OK]
   -> Couche 3 : IP configurée ? [X] Trouvé !

5. ÉVOLUTIVITÉ
   ───────────
   
   Remplacer/améliorer une couche sans tout refaire
   
   Exemple :
   10 Mbps Ethernet -> 1 Gbps Ethernet (Couche 1-2)
   -> Couches supérieures inchangées


CONCEPT CLÉ : ENCAPSULATION

Chaque couche ajoute ses propres informations (header)

[GRAPHIQUE] Illustration :

Application : [Données]
     v
Transport : [Header Transport][Données]
     v
Réseau : [Header Réseau][Header Transport][Données]
     v
Liaison : [Header Liaison][Header Réseau][Header Transport][Données][Trailer]


CONCEPT CLÉ : INTERFACE ENTRE COUCHES

Chaque couche offre des SERVICES à la couche supérieure.

Communication uniquement avec couches adjacentes :
- Couche N utilise services de Couche N-1
- Couche N offre services à Couche N+1

[GRAPHIQUE] Illustration :

┌──────────────┐
│   Couche 7   │ <- Utilise services Couche 6
├──────────────┤
│   Couche 6   │ <- Utilise services Couche 5
├──────────────┤
│   Couche 5   │
├──────────────┤
│   Couche 4   │
├──────────────┤
│   Couche 3   │
├──────────────┤
│   Couche 2   │
├──────────────┤
│   Couche 1   │ <- Média physique
└──────────────┘

Couche 7 ne communique PAS directement avec Couche 1 !


ANALOGIE : SERVICE POSTAL

Couche Application (7) : Écrire lettre
Couche Présentation (6) : Mise en page
Couche Session (5) : Correspondance suivie
Couche Transport (4) : Numéro suivi colis
Couche Réseau (3) : Adresse postale
Couche Liaison (2) : Acheminement local
Couche Physique (1) : Camion/Avion physique

Vous écrivez une lettre (Couche 7).
Vous ne CONDUISEZ pas le camion (Couche 1) !
Des services intermédiaires s'en occupent.


HISTORIQUE DES MODÈLES

1970s : ARPANET (ancêtre Internet)
        -> Protocoles propriétaires

1977 : ISO commence travail sur modèle standard

1984 : MODÈLE OSI publié (ISO 7498)
       Open Systems Interconnection
       7 couches

1970s-1980s : Développement TCP/IP (DoD, DARPA)
              4 couches
              Base d'Internet

Aujourd'hui :
- OSI : Modèle THÉORIQUE de référence (éducation, dépannage)
- TCP/IP : Modèle PRATIQUE (implémentation réelle)

[IDEE] On étudie OSI pour COMPRENDRE
   On utilise TCP/IP en PRATIQUE
"""


# ----------------------------------------------------------------------------
# [CONSTRUCTION] PARTIE 2 : MODÈLE OSI - VUE D'ENSEMBLE
# ----------------------------------------------------------------------------

"""
MODÈLE OSI (Open Systems Interconnection)

Développé par ISO (International Organization for Standardization)
7 couches numérotées de bas en haut


[GRAPHIQUE] LES 7 COUCHES OSI

┌───┬──────────────────┬────────────────┬───────────────┐
│ # │      Nom         │   Anglais      │  Fonction     │
├───┼──────────────────┼────────────────┼───────────────┤
│ 7 │ Application      │ Application    │ Services apps │
│ 6 │ Présentation     │ Presentation   │ Format données│
│ 5 │ Session          │ Session        │ Dialogue      │
│ 4 │ Transport        │ Transport      │ Bout-en-bout  │
│ 3 │ Réseau           │ Network        │ Routage       │
│ 2 │ Liaison          │ Data Link      │ Trame locale  │
│ 1 │ Physique         │ Physical       │ Bits/Signal   │
└───┴──────────────────┴────────────────┴───────────────┘


MNÉMOTECHNIQUE (Français)

De haut en bas (7->1) :
"Avec Plaisir, Soyons Toujours Rassurés, Les Problèmes"

A = Application
P = Présentation
S = Session
T = Transport
R = Réseau
L = Liaison
P = Physique

De bas en haut (1->7) :
"Pour Le Réseau, Tout Se Passe Admirablement"

P = Physique
L = Liaison
R = Réseau
T = Transport
S = Session
P = Présentation
A = Application


MNÉMOTECHNIQUE (Anglais)

De haut en bas (7->1) :
"All People Seem To Need Data Processing"

De bas en haut (1->7) :
"Please Do Not Throw Sausage Pizza Away"


CATÉGORISATION DES COUCHES

COUCHES BASSES (1-3) : RÉSEAU
──────────────────────────────

Gèrent TRANSPORT des données

- Couche 1 (Physique) : Média, signaux
- Couche 2 (Liaison) : Accès au média local
- Couche 3 (Réseau) : Routage entre réseaux

Équipements :
- Câbles, connecteurs
- Hubs (obsolète)
- Switchs (L2)
- Routeurs (L3)


COUCHES HAUTES (4-7) : HÔTE
────────────────────────────

Gèrent LOGIQUE applicative

- Couche 4 (Transport) : Fiabilité, segmentation
- Couche 5 (Session) : Dialogue, synchronisation
- Couche 6 (Présentation) : Format, chiffrement
- Couche 7 (Application) : Interface utilisateur

Logiciels :
- Systèmes d'exploitation
- Applications (navigateur, email)


UNITÉ DE DONNÉES PAR COUCHE (PDU)

Chaque couche a un nom spécifique pour ses données :

┌───┬────────────────┬─────────────────────┐
│ # │    Couche      │   PDU (Unité)       │
├───┼────────────────┼─────────────────────┤
│ 7 │ Application    │ Données (Data)      │
│ 6 │ Présentation   │ Données (Data)      │
│ 5 │ Session        │ Données (Data)      │
│ 4 │ Transport      │ Segment / Datagramme│
│ 3 │ Réseau         │ Paquet (Packet)     │
│ 2 │ Liaison        │ Trame (Frame)       │
│ 1 │ Physique       │ Bits                │
└───┴────────────────┴─────────────────────┘

PDU = Protocol Data Unit

Segment : TCP
Datagramme : UDP
Paquet : IP
Trame : Ethernet, Wi-Fi
Bits : Signal électrique/optique


FLUX DE DONNÉES (Communication entre 2 PCs)

[GRAPHIQUE] Émetteur (Encapsulation - Descente) :

┌─────────────────────────────────────────┐
│ Application : Génère données            │ [Données]
├─────────────────────────────────────────┤
│ Présentation : Formate                  │ [Données]
├─────────────────────────────────────────┤
│ Session : Gère dialogue                 │ [Données]
├─────────────────────────────────────────┤
│ Transport : Segmente + Header TCP       │ [TCP][Données]
├─────────────────────────────────────────┤
│ Réseau : Ajoute Header IP               │ [IP][TCP][Données]
├─────────────────────────────────────────┤
│ Liaison : Ajoute Header+Trailer Ethernet│ [Eth][IP][TCP][Données][FCS]
├─────────────────────────────────────────┤
│ Physique : Convertit en bits/signal     │ 010110110110...
└─────────────────────────────────────────┘
                    v
              [Média Physique]
                    v
[GRAPHIQUE] Récepteur (Désencapsulation - Montée) :

┌─────────────────────────────────────────┐
│ Physique : Reçoit bits, reconstruit trame│ 010110110110...
├─────────────────────────────────────────┤
│ Liaison : Vérifie FCS, retire headers   │ [IP][TCP][Données]
├─────────────────────────────────────────┤
│ Réseau : Vérifie IP destination, traite │ [TCP][Données]
├─────────────────────────────────────────┤
│ Transport : Réassemble segments         │ [Données]
├─────────────────────────────────────────┤
│ Session : Gère session                  │ [Données]
├─────────────────────────────────────────┤
│ Présentation : Décode format            │ [Données]
├─────────────────────────────────────────┤
│ Application : Livre à l'application     │ [Données]
└─────────────────────────────────────────┘


COMMUNICATION PEER-TO-PEER (Entre couches équivalentes)

Logiquement, chaque couche communique avec son équivalent :

Émetteur                                Récepteur

┌─────────┐ <-──── Logique ────-> ┌─────────┐
│ App (7) │                      │ App (7) │
├─────────┤ <-──── Logique ────-> ├─────────┤
│ Pres(6) │                      │ Pres(6) │
├─────────┤                       ├─────────┤
│ Sess(5) │ <-──── Logique ────-> │ Sess(5) │
├─────────┤                       ├─────────┤
│ Trans(4)│ <-──── Logique ────-> │ Trans(4)│
├─────────┤                       ├─────────┤
│ Rés (3) │ <-──── Logique ────-> │ Rés (3) │
├─────────┤                       ├─────────┤
│ Liais(2)│ <-──── Logique ────-> │ Liais(2)│
├─────────┤                       ├─────────┤
│ Phys(1) │ <-──── Physique ────-> │ Phys(1) │
└─────────┘                       └─────────┘
      v                                ^
      └──────── Média Physique ────────┘

Headers permettent communication peer-to-peer :
- Header TCP (Couche 4) : Compris par Couche 4 distante
- Header IP (Couche 3) : Compris par Couche 3 distante
- Etc.
"""


# ----------------------------------------------------------------------------
# [PLUGIN] PARTIE 3 : COUCHE 1 - PHYSIQUE (PHYSICAL)
# ----------------------------------------------------------------------------

"""
COUCHE 1 : PHYSIQUE


RÔLE

Transmission des BITS bruts sur le média physique.

Gère :
- Signaux électriques/optiques/radio
- Connecteurs physiques
- Topologie physique
- Synchronisation bit-level


RESPONSABILITÉS

1. REPRÉSENTATION DES BITS
   ───────────────────────
   
   Comment représenter 0 et 1 ?
   
   Électrique :
   - 0 = 0V
   - 1 = +5V, +3.3V, +1V (selon norme)
   
   Optique :
   - 0 = Pas de lumière
   - 1 = Lumière (LED/Laser)
   
   Radio :
   - Modulation (ASK, FSK, PSK...)

2. ENCODAGE DES SIGNAUX
   ────────────────────
   
   NRZ, Manchester, 4B/5B, etc.
   (Vu au Chapitre 3)

3. DÉBIT ET SYNCHRONISATION
   ────────────────────────
   
   Vitesse transmission : 10 Mbps, 100 Mbps, 1 Gbps...
   Horloge pour synchroniser émetteur/récepteur

4. MÉDIA DE TRANSMISSION
   ─────────────────────
   
   Types :
   - Câble cuivre (twisted pair, coaxial)
   - Fibre optique
   - Sans fil (radio, infrarouge)

5. TOPOLOGIE PHYSIQUE
   ──────────────────
   
   Disposition physique :
   - Bus
   - Étoile (star)
   - Anneau (ring)
   - Maillé (mesh)

6. CONNECTEURS
   ───────────
   
   RJ45, BNC, LC, SC, ST, DB9...


CARACTÉRISTIQUES PHYSIQUES

Bande passante : Fréquences supportées (Hz)
Débit : Bits/seconde (bps)
Distance maximale : Longueur câble avant atténuation
Immunité bruit : Résistance interférences
Coût : Prix installation


ÉQUIPEMENTS COUCHE 1

HUB (Concentrateur) - OBSOLÈTE
───────────────────

Fonctionne : Couche 1 uniquement

Principe :
- Répète signal électrique sur TOUS les ports
- Aucune intelligence
- Pas de filtrage

[GRAPHIQUE] Illustration :

PC1 envoie à PC3 :

       HUB
     ┌──┴──┐
  1  │  2  │  3
  ───┼─────┼───
  PC1│  PC2│  PC3
     
Signal : ━━━━━━━━━━━━━━━━[BLACK_RIGHT-POINTING_POINTER]
Répété : ━━[BLACK_RIGHT-POINTING_POINTER]━━[BLACK_RIGHT-POINTING_POINTER]━━[BLACK_RIGHT-POINTING_POINTER]━━[BLACK_RIGHT-POINTING_POINTER]━━[BLACK_RIGHT-POINTING_POINTER] (TOUS)

Caractéristiques :
- Domaine de collision : UNIQUE (tous ports)
- Domaine broadcast : UNIQUE
- Half-duplex obligatoire
- Performance dégradée

[X] Obsolète depuis ~2000
   Remplacé par switchs (Couche 2)


RÉPÉTEUR (Repeater)
───────────────────

Fonctionne : Couche 1

Rôle : Régénérer signal affaibli

Utilité : Étendre distance max

[GRAPHIQUE] Illustration :

PC ───[100m]─── Répéteur ───[100m]─── Serveur

Sans répéteur : 100m max
Avec répéteur : 200m

Utilisation moderne :
- Fibre optique (régénérateurs optiques)
- USB (hubs actifs)


EXEMPLES CONCRETS

Câble Ethernet Cat6 :
────────────────────

Couche 1 définit :
[OK] 8 conducteurs cuivre
[OK] Paires torsadées
[OK] Impédance 100Ω
[OK] Bande passante 250 MHz
[OK] Connecteur RJ45
[OK] Longueur max 100m
[OK] Norme TIA/EIA-568

Fibre optique OM4 :
───────────────────

Couche 1 définit :
[OK] Multimode 50µm
[OK] Longueur d'onde 850nm
[OK] Bande passante 4700 MHz·km
[OK] Connecteur LC
[OK] Distance 400m (10 Gbps)
[OK] LED ou Laser VCSEL


NORME IEEE 802.3 (ETHERNET PHYSIQUE)

Nomenclature : XXbaseYY

XX = Débit (Mbps)
base = Bande de base (vs broadband)
YY = Média ou distance

Exemples :

10BASE-T : 10 Mbps, Twisted pair
100BASE-TX : 100 Mbps, Twisted pair (2 paires)
1000BASE-T : 1 Gbps, Twisted pair (4 paires)
10GBASE-T : 10 Gbps, Twisted pair Cat6a
100BASE-FX : 100 Mbps, Fibre optique
1000BASE-SX : 1 Gbps, Fibre multimode (short)
1000BASE-LX : 1 Gbps, Fibre monomode (long)


LIMITATIONS COUCHE 1

[X] Pas d'adressage (ne sait pas qui est qui)
[X] Pas de contrôle d'erreur
[X] Pas de contrôle de flux
[X] Pas de filtrage
[X] Diffusion pure (broadcast physique)

-> Couche 2 nécessaire pour ajouter intelligence !


RÉSUMÉ COUCHE 1

Unité : Bits (0 et 1)
Équipements : Hubs, Répéteurs, Câbles, Connecteurs
Protocoles : Encodages (NRZ, Manchester...)
Standards : IEEE 802.3 (Ethernet), TIA/EIA-568 (Câblage)

Analogie : Tuyau / Route
         (Transporte mais ne dirige pas)
"""


# ----------------------------------------------------------------------------
# [LIEN] PARTIE 4 : COUCHE 2 - LIAISON (DATA LINK)
# ----------------------------------------------------------------------------

"""
COUCHE 2 : LIAISON (DATA LINK)


RÔLE

Transmission FIABLE des trames entre deux nœuds adjacents (voisins directs).

Gère :
- Adressage physique (MAC)
- Accès au média partagé
- Détection d'erreurs
- Délimitation des trames


RESPONSABILITÉS

1. ADRESSAGE PHYSIQUE (MAC)
   ────────────────────────
   
   Adresse MAC (Media Access Control) :
   - 48 bits (6 octets)
   - Unique par interface réseau
   - Exemple : 00:1A:2B:3C:4D:5E
   
   Permet identifier source et destination

2. ENCADREMENT (FRAMING)
   ─────────────────────
   
   Délimiter début et fin des trames
   Ajouter headers et trailers
   
   Trame typique :
   [Préambule][Dest MAC][Src MAC][Type][Données][FCS]

3. CONTRÔLE D'ACCÈS AU MÉDIA (MAC)
   ───────────────────────────────
   
   Gérer accès au média partagé
   
   Méthodes :
   - CSMA/CD (Ethernet câblé)
   - CSMA/CA (Wi-Fi)
   - Token passing (obsolète)

4. DÉTECTION D'ERREURS
   ───────────────────
   
   CRC (Cyclic Redundancy Check)
   FCS (Frame Check Sequence)
   
   Détecte erreurs de transmission
   Ne corrige PAS (demande retransmission)

5. CONTRÔLE DE FLUX
   ────────────────
   
   Éviter saturation récepteur
   Mécanismes : Stop-and-Wait, Windowing


SOUS-COUCHES DE LA COUCHE 2

IEEE 802 divise Couche 2 en 2 sous-couches :

┌────────────────────────────┐
│   LLC (Logical Link Ctrl)  │ <- Couche 2 supérieure
├────────────────────────────┤
│   MAC (Media Access Ctrl)  │ <- Couche 2 inférieure
└────────────────────────────┘
            v
     Couche 1 (Physique)


LLC (Logical Link Control) - IEEE 802.2
────────────────────────────────────────

Rôle :
- Interface avec Couche 3 (Réseau)
- Multiplexage protocoles
- Contrôle flux et erreurs

En pratique : Peu utilisé
(Ethernet utilise champ EtherType direct)


MAC (Media Access Control)
───────────────────────────

Rôle :
- Adressage MAC
- Accès au média (CSMA/CD, CSMA/CA)
- Assemblage/désassemblage trames

[IDEE] Partie la plus importante de Couche 2


ADRESSE MAC EN DÉTAIL

Format : 48 bits = 6 octets

Notation :
- Hexadécimale avec séparateurs
- Formats : 00:1A:2B:3C:4D:5E (Linux/Unix)
            00-1A-2B-3C-4D-5E (Windows)
            001A.2B3C.4D5E (Cisco)

Structure :

┌────────────────┬────────────────┐
│  OUI (24 bits) │  NIC (24 bits) │
├────────────────┼────────────────┤
│ Fabricant      │  Unique série  │
└────────────────┴────────────────┘

OUI = Organizationally Unique Identifier
Attribué par IEEE aux fabricants

Exemples OUI :
00:1A:2B = Cisco
00:50:56 = VMware
08:00:27 = VirtualBox
B8:27:EB = Raspberry Pi

Bits spéciaux (1er octet) :

Bit 0 (LSB) : I/G (Individual/Group)
- 0 = Unicast (une destination)
- 1 = Multicast/Broadcast (plusieurs)

Bit 1 : U/L (Universal/Local)
- 0 = Administré globalement (IEEE)
- 1 = Administré localement (custom)

Exemple : 00:1A:2B:3C:4D:5E
- Bit 0 = 0 -> Unicast
- Bit 1 = 0 -> Global

Adresses spéciales :

Broadcast : FF:FF:FF:FF:FF:FF
- Destinataire = TOUS sur réseau local

Multicast : 01:00:5E:xx:xx:xx (IPv4)
            33:33:xx:xx:xx:xx (IPv6)
- Destinataire = Groupe


TRAME ETHERNET (802.3)

Format trame Ethernet II (la plus courante) :

┌──────────┬──────────┬──────────┬──────┬──────────┬─────┐
│Préambule │Dest MAC  │ Src MAC  │ Type │ Données  │ FCS │
│  8 o     │  6 o     │  6 o     │ 2 o  │46-1500 o │ 4 o │
└──────────┴──────────┴──────────┴──────┴──────────┴─────┘

Détails champs :

1. PRÉAMBULE (8 octets)
   ────────────────────
   
   7 octets : 10101010 (synchronisation)
   1 octet : 10101011 (SFD - Start Frame Delimiter)
   
   Rôle : Synchroniser horloge récepteur

2. ADRESSE MAC DESTINATION (6 octets)
   ───────────────────────────────────
   
   Qui doit recevoir cette trame ?

3. ADRESSE MAC SOURCE (6 octets)
   ──────────────────────────────
   
   Qui envoie cette trame ?

4. ETHERTYPE (2 octets)
   ────────────────────
   
   Type de protocole encapsulé (Couche 3)
   
   Valeurs courantes :
   0x0800 : IPv4
   0x0806 : ARP
   0x86DD : IPv6
   0x8100 : VLAN tag (802.1Q)

5. DONNÉES (46-1500 octets)
   ────────────────────────
   
   Payload (charge utile)
   
   Minimum : 46 octets (padding si < 46)
   Maximum : 1500 octets (MTU Ethernet)

6. FCS (Frame Check Sequence) - 4 octets
   ──────────────────────────────────────
   
   CRC-32 pour détection d'erreurs
   
   Calculé sur : Dest MAC + Src MAC + Type + Données
   
   Récepteur recalcule CRC :
   - Si match -> Trame OK
   - Si différent -> Trame corrompue (jetée)


Taille trame Ethernet :

Minimum (sans préambule) : 64 octets
Maximum (sans préambule) : 1518 octets

Avec VLAN tag (802.1Q) : 1522 octets

Jumbo frames : Jusqu'à 9000 octets
(Non-standard, data center)


CSMA/CD (Carrier Sense Multiple Access with Collision Detection)

Utilisé : Ethernet câblé (10BASE-T, 100BASE-TX)
Obsolète : Full-duplex élimine collisions

Principe :

1. CARRIER SENSE (Écoute de porteuse)
   ───────────────────────────────────
   
   Avant d'émettre, écouter le média
   Quelqu'un émet ? -> Attendre
   Silence ? -> Émettre

2. MULTIPLE ACCESS (Accès multiple)
   ────────────────────────────────
   
   Tous les nœuds peuvent émettre
   Média partagé

3. COLLISION DETECTION (Détection collision)
   ──────────────────────────────────────────
   
   Émettre ET écouter simultanément
   Signal ≠ Attendu ? -> COLLISION !
   
   Action si collision :
   - Arrêter transmission
   - Envoyer signal "JAM" (alerte autres)
   - Attendre délai aléatoire (backoff)
   - Réessayer

[GRAPHIQUE] Algorithme Backoff exponentiel :

Tentative 1 : Attendre 0 ou 1 slot time
Tentative 2 : Attendre 0, 1, 2 ou 3 slots
Tentative 3 : Attendre 0-7 slots
...
Tentative 10+ : Attendre 0-1023 slots

Si 16 tentatives échouent -> Abandon


CSMA/CA (Carrier Sense Multiple Access with Collision Avoidance)

Utilisé : Wi-Fi (802.11)

Principe : ÉVITER collisions (pas juste détecter)

Pourquoi ? Radio = Impossible détecter collision pendant émission

Mécanisme :

1. Écouter canal
2. Si occupé -> Attendre
3. Si libre -> Attendre DIFS (Distributed Inter-Frame Space)
4. Si toujours libre -> Attendre backoff aléatoire
5. Émettre
6. Attendre ACK (acquittement)
7. Si pas ACK -> Collision probable -> Réessayer

RTS/CTS (optionnel) :
- RTS (Request To Send) : Demander droit émettre
- CTS (Clear To Send) : Autorisation reçue
- Évite problème "nœud caché"


SWITCHS (COMMUTATEURS) - Équipement Couche 2

Déjà détaillé au Chapitre 2, rappel :

Fonctionnement :
1. Reçoit trame
2. Apprend MAC source -> Port
3. Consulte table MAC pour MAC destination
4. Transmet uniquement sur port destinataire

Avantages vs Hub :
[OK] Commutation intelligente
[OK] Pas de collisions (full-duplex)
[OK] Performance maximale
[OK] Sécurité améliorée

Types :
- Switch L2 : Commutation MAC
- Switch L3 : Commutation MAC + Routage IP


VLANS (Virtual LANs)

Segmentation LOGIQUE au niveau Couche 2

Standard : IEEE 802.1Q

Principe : Diviser un switch physique en plusieurs switchs virtuels

[GRAPHIQUE] Illustration :

Switch physique (24 ports)
├─ VLAN 10 : Ports 1-12 (Employés)
├─ VLAN 20 : Ports 13-20 (Invités)
└─ VLAN 30 : Ports 21-24 (Serveurs)

Isolation : VLAN 10 ne peut PAS communiquer avec VLAN 20
(Sauf via routeur - Couche 3)

Trame 802.1Q (avec tag VLAN) :

┌─────┬─────┬──────┬─────┬──────┬─────┐
│Dest │ Src │ VLAN │Type │Données│ FCS │
│ MAC │ MAC │ TAG  │     │       │     │
└─────┴─────┴──────┴─────┴──────┴─────┘
              ^
         4 octets ajoutés
         
Tag VLAN (4 octets) :
- TPID (2 o) : 0x8100
- TCI (2 o) : Priority (3 bits) + CFI (1 bit) + VLAN ID (12 bits)

VLAN ID : 1-4094 (4095 possibles, 0 et 4095 réservés)

[IDEE] Détail VLANs au Chapitre 21


SPANNING TREE PROTOCOL (STP) - IEEE 802.1D

Évite boucles réseau (switchs interconnectés)

Problème sans STP :

Switch A <--> Switch B
    ^v          ^v
Switch C <--> Switch D

= Boucle ! Trame peut tourner infiniment

STP :
- Élit switch racine (root bridge)
- Calcule arbre sans boucle
- Bloque ports redondants
- Active ports bloqués si lien principal tombe

[IDEE] Détail STP au Chapitre 23


AUTRES PROTOCOLES COUCHE 2

ARP (Address Resolution Protocol)
─────────────────────────────────

Résoudre IP -> MAC

Question : "Quelle MAC pour IP 192.168.1.10 ?"
Réponse : "C'est 00:1A:2B:3C:4D:5E"

[IDEE] Détail ARP au Chapitre 11


PPP (Point-to-Point Protocol)
──────────────────────────────

Liaison point-à-point (modem, WAN)

Utilisé : Connexions série, DSL (PPPoE)


HDLC (High-Level Data Link Control)
────────────────────────────────────

Protocole Couche 2 synchrone
Utilisé : Liaisons WAN


RÉSUMÉ COUCHE 2

Unité : Trame (Frame)
Adressage : MAC (48 bits)
Équipements : Switchs, Bridges, Access Points Wi-Fi
Protocoles : Ethernet (802.3), Wi-Fi (802.11), PPP
Standards : IEEE 802.1 (Bridges), 802.3 (Ethernet), 802.11 (Wi-Fi)

Analogie : Bureau de poste local
         (Distribue courrier dans quartier)
"""


# ----------------------------------------------------------------------------
# [WEB] PARTIE 5 : COUCHE 3 - RÉSEAU (NETWORK)
# ----------------------------------------------------------------------------

"""
COUCHE 3 : RÉSEAU (NETWORK)


RÔLE

Routage des paquets de la source vers la destination finale,
potentiellement à travers PLUSIEURS réseaux intermédiaires.

Gère :
- Adressage logique (IP)
- Routage (chemin optimal)
- Fragmentation/Réassemblage
- Interconnexion de réseaux différents


RESPONSABILITÉS

1. ADRESSAGE LOGIQUE (IP)
   ──────────────────────
   
   Adresse IP (Internet Protocol) :
   - IPv4 : 32 bits (4 octets)
     Exemple : 192.168.1.10
   
   - IPv6 : 128 bits (16 octets)
     Exemple : 2001:0db8::1
   
   Permet identifier nœuds sur Internet entier

2. ROUTAGE
   ───────
   
   Déterminer CHEMIN de source à destination
   
   Routeur :
   - Consulte table de routage
   - Choisit meilleur chemin
   - Transmet paquet vers prochain saut (next hop)
   
   Protocoles routage :
   - RIP, OSPF, BGP (Chapitres 19-20)

3. FRAGMENTATION / RÉASSEMBLAGE
   ─────────────────────────────
   
   Si paquet trop gros pour réseau suivant :
   - Fragmenter en morceaux
   - Réassembler à destination
   
   MTU (Maximum Transmission Unit) :
   - Ethernet : 1500 octets
   - Wi-Fi : 1500 octets (typique)
   - PPPoE : 1492 octets

4. QUALITÉ DE SERVICE (QoS)
   ────────────────────────
   
   Prioriser certains paquets
   
   Champs IP :
   - ToS (Type of Service) / DSCP
   - Permet différencier trafic (VoIP > Web)

5. INTERCONNEXION RÉSEAUX
   ──────────────────────
   
   Permettre communication entre réseaux différents
   
   Exemple :
   Réseau A (192.168.1.0/24) <-> Routeur <-> Réseau B (10.0.0.0/8)


DIFFÉRENCE COUCHE 2 vs COUCHE 3

┌──────────────┬─────────────┬─────────────┐
│   Critère    │  Couche 2   │  Couche 3   │
├──────────────┼─────────────┼─────────────┤
│ Portée       │ Local (LAN) │ Global (WAN)│
│ Adresse      │ MAC (48b)   │ IP (32/128b)│
│ Équipement   │ Switch      │ Routeur     │
│ Broadcast    │ Propagé     │ Arrêté      │
│ Changement   │ Jamais (HW) │ Configurable│
└──────────────┴─────────────┴─────────────┘

[IDEE] MAC = Adresse de livraison locale (maison)
   IP = Adresse postale globale (ville + rue + numéro)


PROTOCOLE IP (Internet Protocol)

Le protocole principal de Couche 3 !

IPv4 : Version 4 (actuelle, majoritaire)
IPv6 : Version 6 (nouvelle, adoption progressive)


PAQUET IPv4

En-tête IPv4 (minimum 20 octets) :

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
┌───────┬─────────┬─────────────────┬───────────────────────────┐
│Version│  IHL    │      ToS        │       Total Length        │
│ (4b)  │  (4b)   │     (8b)        │          (16b)            │
├───────────────────────────────────┼───┬───────────────────────┤
│        Identification             │Flg│   Fragment Offset     │
│            (16b)                  │3b │        (13b)          │
├───────────────┬───────────────────┴───┴───────────────────────┤
│      TTL      │    Protocol       │   Header Checksum         │
│     (8b)      │     (8b)          │        (16b)              │
├───────────────┴───────────────────┴───────────────────────────┤
│                   Source IP Address (32b)                     │
├───────────────────────────────────────────────────────────────┤
│                Destination IP Address (32b)                   │
├───────────────────────────────────────────────────────────────┤
│                   Options (if IHL > 5)                        │
└───────────────────────────────────────────────────────────────┘

Champs importants :

1. VERSION (4 bits)
   ────────────────
   
   4 = IPv4
   6 = IPv6

2. IHL (Internet Header Length) - 4 bits
   ──────────────────────────────────────
   
   Taille header en mots de 32 bits
   Minimum : 5 (5 × 4 = 20 octets)
   Maximum : 15 (15 × 4 = 60 octets)

3. ToS (Type of Service) / DSCP - 8 bits
   ──────────────────────────────────────
   
   Priorité et QoS
   
   DSCP (Differentiated Services Code Point) :
   - 6 bits pour classe de service
   - EF (Expedited Forwarding) : VoIP
   - AF (Assured Forwarding) : Vidéo
   - BE (Best Effort) : Web, email

4. TOTAL LENGTH (16 bits)
   ──────────────────────
   
   Taille totale paquet (header + données)
   Maximum : 65,535 octets

5. IDENTIFICATION (16 bits)
   ────────────────────────
   
   Identifie fragments d'un même paquet

6. FLAGS (3 bits)
   ──────────────
   
   Bit 0 : Réservé
   Bit 1 : DF (Don't Fragment)
   Bit 2 : MF (More Fragments)

7. FRAGMENT OFFSET (13 bits)
   ─────────────────────────
   
   Position du fragment (multiples de 8 octets)

8. TTL (Time To Live) - 8 bits
   ───────────────────────────
   
   Nombre de sauts (routeurs) max
   
   Chaque routeur décrémente TTL
   Si TTL = 0 -> Paquet jeté
   
   Évite boucles infinies
   
   Valeurs typiques :
   - Windows : 128
   - Linux : 64
   - Cisco : 255

9. PROTOCOL (8 bits)
   ─────────────────
   
   Protocole Couche 4 encapsulé
   
   Valeurs courantes :
   1 = ICMP
   6 = TCP
   17 = UDP
   89 = OSPF

10. HEADER CHECKSUM (16 bits)
    ─────────────────────────
    
    Détection erreurs HEADER uniquement
    (Pas les données)
    
    Recalculé à chaque routeur (TTL change)

11. SOURCE IP ADDRESS (32 bits)
    ───────────────────────────
    
    Adresse IP émetteur

12. DESTINATION IP ADDRESS (32 bits)
    ────────────────────────────────
    
    Adresse IP destinataire


ADRESSE IPv4 EN DÉTAIL

Format : 32 bits = 4 octets

Notation : Décimale pointée
Exemple : 192.168.1.10

Binaire : 11000000.10101000.00000001.00001010

Classes d'adresses (historique) :

Classe A : 0.0.0.0 - 127.255.255.255
- Masque : /8 (255.0.0.0)
- Réseaux : 128
- Hôtes/réseau : 16,777,214

Classe B : 128.0.0.0 - 191.255.255.255
- Masque : /16 (255.255.0.0)
- Réseaux : 16,384
- Hôtes/réseau : 65,534

Classe C : 192.0.0.0 - 223.255.255.255
- Masque : /24 (255.255.255.0)
- Réseaux : 2,097,152
- Hôtes/réseau : 254

Classe D : 224.0.0.0 - 239.255.255.255
- Multicast

Classe E : 240.0.0.0 - 255.255.255.255
- Réservé (expérimental)

[IDEE] Classes obsolètes depuis CIDR (1993)


CIDR (Classless Inter-Domain Routing)

Notation : Adresse/Masque
Exemple : 192.168.1.0/24

/24 = 24 bits de masque
= 255.255.255.0

Adresses privées (RFC 1918) :
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/16

Non routables sur Internet

[IDEE] Détail IPv4 au Chapitre 8


ROUTAGE SIMPLIFIÉ

Processus routeur recevant paquet :

1. Lire IP destination
2. Consulter table de routage
3. Trouver entrée correspondante (longest match)
4. Obtenir next-hop (prochain routeur) ou interface sortie
5. Décrémenter TTL
6. Recalculer checksum
7. Transmettre vers next-hop

[GRAPHIQUE] Exemple table de routage :

┌──────────────┬─────────────┬─────────────┬──────────┐
│   Réseau     │   Masque    │  Next-Hop   │Interface │
├──────────────┼─────────────┼─────────────┼──────────┤
│ 0.0.0.0      │ 0.0.0.0     │ 10.0.0.1    │  WAN0    │ Route défaut
│ 10.0.0.0     │ 255.255.255.0│ Direct     │  WAN0    │ Connecté
│ 192.168.1.0  │ 255.255.255.0│ Direct     │  LAN0    │ Connecté
│ 192.168.10.0 │ 255.255.255.0│ 192.168.1.254│ LAN0   │ Statique
└──────────────┴─────────────┴─────────────┴──────────┘

Paquet pour 192.168.10.50 :
-> Match 192.168.10.0/24
-> Next-hop : 192.168.1.254
-> Envoyer via LAN0


AUTRES PROTOCOLES COUCHE 3

ICMP (Internet Control Message Protocol)
─────────────────────────────────────────

Messages contrôle et erreurs

Types courants :
- Echo Request/Reply (ping)
- Destination Unreachable
- Time Exceeded (traceroute)
- Redirect

[IDEE] Détail ICMP au Chapitre 11


IGMP (Internet Group Management Protocol)
──────────────────────────────────────────

Gestion groupes multicast IPv4


ARP (Address Resolution Protocol)
──────────────────────────────────

Bien que travaillant avec IP, considéré Couche 2.5

Résolution IP -> MAC sur réseau local

[IDEE] Détail ARP au Chapitre 11


ÉQUIPEMENTS COUCHE 3

ROUTEUR
───────

Équipement principal Couche 3

Fonctions :
[OK] Routage entre réseaux
[OK] NAT (Network Address Translation)
[OK] Firewall
[OK] QoS
[OK] VPN

Types :
- SOHO : Box Internet
- PME : Ubiquiti EdgeRouter, pfSense
- Entreprise : Cisco ISR, Juniper MX

[IDEE] Détail Routeurs au Chapitre 2 et 19-20


SWITCH LAYER 3 (Multilayer Switch)
───────────────────────────────────

= Switch + Capacités routage

Fait :
[OK] Commutation L2 (MAC)
[OK] Routage L3 (IP)
[OK] Routage inter-VLAN rapide

Avantage : Performance (ASIC hardware)


RÉSUMÉ COUCHE 3

Unité : Paquet (Packet)
Adressage : IP (IPv4 32 bits, IPv6 128 bits)
Équipements : Routeurs, Switch L3
Protocoles : IP, ICMP, IGMP, IPsec
Standards : RFC 791 (IPv4), RFC 8200 (IPv6)

Analogie : Service postal national
         (Achemine courrier entre villes)
"""


# ============================================================================
# [OBJECTIF] FIN PARTIE 1 DU CHAPITRE 4
# ============================================================================

"""
[DOCS] RÉCAPITULATIF PARTIE 1

Vous avez appris :

[OK] Concept modèles en couches (pourquoi, avantages)
[OK] Modèle OSI - Vue d'ensemble (7 couches)
[OK] COUCHE 1 - PHYSIQUE :
   - Bits, signaux, média
   - Hubs, répéteurs, câbles
   - Encodage, synchronisation
   
[OK] COUCHE 2 - LIAISON :
   - Adressage MAC
   - Trames Ethernet
   - Switchs, accès média (CSMA/CD, CSMA/CA)
   - VLANs, STP
   
[OK] COUCHE 3 - RÉSEAU :
   - Adressage IP
   - Paquets IPv4
   - Routage
   - Routeurs


-> SUITE : PARTIE 2

Dans le prochain fichier :
- COUCHE 4 - TRANSPORT (TCP, UDP)
- COUCHE 5 - SESSION
- COUCHE 6 - PRÉSENTATION
- COUCHE 7 - APPLICATION
- Modèle TCP/IP
- Comparaison OSI vs TCP/IP
- Encapsulation complète
- Exercices pratiques
"""

# ============================================================================
# CHAPITRE 4 (PARTIE 2) : COUCHES 4-7 OSI, TCP/IP ET EXERCICES
# ============================================================================


# ----------------------------------------------------------------------------
# [TRANSPORT] PARTIE 6 : COUCHE 4 - TRANSPORT
# ----------------------------------------------------------------------------

"""
COUCHE 4 : TRANSPORT


RÔLE

Communication BOUT-EN-BOUT (end-to-end) entre applications sur hôtes différents.

Gère :
- Fiabilité (ou non)
- Segmentation/Réassemblage
- Contrôle de flux
- Multiplexage (ports)
- Contrôle d'erreurs bout-en-bout


RESPONSABILITÉS

1. SEGMENTATION / RÉASSEMBLAGE
   ────────────────────────────
   
   Données application trop grosses pour réseau ?
   -> Découper en segments (TCP) ou datagrammes (UDP)
   
   Émetteur : Segmente
   Récepteur : Réassemble dans bon ordre

2. MULTIPLEXAGE / DÉMULTIPLEXAGE
   ───────────────────────────────
   
   Plusieurs applications sur même hôte
   -> Besoin identifier quelle application
   
   Solution : PORTS
   
   Port = Numéro 16 bits (0-65535)
   
   Exemples :
   - HTTP : Port 80
   - HTTPS : Port 443
   - SSH : Port 22
   - DNS : Port 53

3. CONTRÔLE DE FLUX
   ────────────────
   
   Éviter saturer récepteur
   
   Mécanisme : Fenêtre coulissante (sliding window)
   Récepteur annonce taille buffer disponible

4. FIABILITÉ (TCP uniquement)
   ──────────────────────────
   
   Garantir livraison correcte :
   [OK] Tous segments arrivent
   [OK] Dans le bon ordre
   [OK] Sans erreurs
   [OK] Sans duplicatas
   
   Mécanismes :
   - Numéros de séquence
   - Acquittements (ACK)
   - Retransmissions (timeout)
   - Détection erreurs (checksum)

5. CONTRÔLE DE CONGESTION (TCP)
   ─────────────────────────────
   
   Éviter saturer le réseau
   
   Algorithmes : Slow Start, Congestion Avoidance


DIFFÉRENCE COUCHE 3 vs COUCHE 4

┌──────────────┬─────────────┬─────────────┐
│   Critère    │  Couche 3   │  Couche 4   │
├──────────────┼─────────────┼─────────────┤
│ Portée       │Routeur-routeur│App-à-app  │
│ Unité        │ Paquet      │ Segment     │
│ Adressage    │ IP          │ Port        │
│ Fiabilité    │ Non (BE)    │ Oui (TCP)   │
│ Ordre        │ Non garanti │ Garanti(TCP)│
└──────────────┴─────────────┴─────────────┘

[IDEE] Couche 3 : Achemine paquet (facteur)
   Couche 4 : Assure réception (accusé réception)


PORTS

Numéro 16 bits : 0-65535

Catégories :

1. WELL-KNOWN PORTS (0-1023)
   ─────────────────────────
   
   Réservés services connus
   Nécessite privilèges root/admin
   
   Exemples :
   20/21 : FTP (File Transfer Protocol)
   22 : SSH (Secure Shell)
   23 : Telnet
   25 : SMTP (Simple Mail Transfer Protocol)
   53 : DNS (Domain Name System)
   67/68 : DHCP
   80 : HTTP (HyperText Transfer Protocol)
   110 : POP3 (Post Office Protocol)
   143 : IMAP (Internet Message Access Protocol)
   443 : HTTPS (HTTP Secure)
   3389 : RDP (Remote Desktop Protocol)

2. REGISTERED PORTS (1024-49151)
   ─────────────────────────────
   
   Enregistrés par IANA pour applications
   
   Exemples :
   1433 : Microsoft SQL Server
   3306 : MySQL
   5432 : PostgreSQL
   5900 : VNC
   8080 : HTTP alternatif (proxy)
   8443 : HTTPS alternatif

3. DYNAMIC/PRIVATE PORTS (49152-65535)
   ────────────────────────────────────
   
   Ports éphémères
   Utilisés par clients (source)
   
   Exemple :
   Client -> google.com:443
   Source : 192.168.1.10:52341 (éphémère)


PROTOCOLE TCP (Transmission Control Protocol)

= Protocole ORIENTÉ CONNEXION et FIABLE

Caractéristiques :
[OK] Connexion établie avant transfert (handshake 3-way)
[OK] Fiabilité garantie (ACK, retransmissions)
[OK] Ordre garanti (numéros séquence)
[OK] Contrôle flux (fenêtre)
[OK] Contrôle congestion
[OK] Full-duplex

Inconvénient :
[X] Overhead (headers, ACKs)
[X] Latence (handshake, retrans)


SEGMENT TCP

En-tête TCP (minimum 20 octets) :

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
┌───────────────────────────────┬───────────────────────────────┐
│        Source Port            │      Destination Port         │
│            (16b)              │            (16b)              │
├───────────────────────────────┴───────────────────────────────┤
│                      Sequence Number (32b)                    │
├───────────────────────────────────────────────────────────────┤
│                  Acknowledgment Number (32b)                  │
├─────┬─────┬─┬─┬─┬─┬─┬─┬─┬─┬───────────────────────────────────┤
│Offset│Res │N│C│E│U│A│P│R│S│F│         Window Size           │
│ 4b  │ 3b │S│W│C│R│C│S│S│Y│I│            (16b)              │
│     │    │ │R│E│G│K│H│T│N│N│                               │
├─────┴─────┴─┴─┴─┴─┴─┴─┴─┴─┴─┴───────────────────────────────┤
│          Checksum             │       Urgent Pointer          │
│            (16b)              │            (16b)              │
├───────────────────────────────┴───────────────────────────────┤
│                    Options (if Offset > 5)                    │
└───────────────────────────────────────────────────────────────┘

Champs importants :

1. SOURCE PORT (16 bits)
   ─────────────────────
   
   Port application émettrice

2. DESTINATION PORT (16 bits)
   ──────────────────────────
   
   Port application destinataire

3. SEQUENCE NUMBER (32 bits)
   ─────────────────────────
   
   Numéro séquence du premier octet
   Permet ordonner segments

4. ACKNOWLEDGMENT NUMBER (32 bits)
   ────────────────────────────────
   
   Prochain octet attendu
   ACK du dernier octet reçu + 1

5. DATA OFFSET (4 bits)
   ────────────────────
   
   Taille header en mots de 32 bits
   Minimum : 5 (20 octets)

6. FLAGS (9 bits)
   ──────────────
   
   NS : ECN-nonce (1 bit)
   CWR : Congestion Window Reduced (1 bit)
   ECE : ECN-Echo (1 bit)
   URG : Urgent (1 bit)
   ACK : Acknowledgment (1 bit)
   PSH : Push (1 bit)
   RST : Reset (1 bit)
   SYN : Synchronize (1 bit)
   FIN : Finish (1 bit)

7. WINDOW SIZE (16 bits)
   ─────────────────────
   
   Taille buffer récepteur (octets)
   Contrôle de flux

8. CHECKSUM (16 bits)
   ──────────────────
   
   Détection erreurs (header + données)


ÉTABLISSEMENT CONNEXION TCP : 3-WAY HANDSHAKE

[GRAPHIQUE] Processus :

Client                          Serveur

1. SYN ────────────────────────[BLACK_RIGHT-POINTING_POINTER]
   SEQ=x

2.       [BLACK_LEFT-POINTING_POINTER]──────────────────── SYN-ACK
                                SEQ=y, ACK=x+1

3. ACK ────────────────────────[BLACK_RIGHT-POINTING_POINTER]
   SEQ=x+1, ACK=y+1

Connexion ÉTABLIE [OK]

Détail :

Étape 1 : Client -> Serveur (SYN)
─────────────────────────────────

Flags : SYN=1
SEQ : Numéro séquence initial (ISN) aléatoire, ex: 1000

Signification : "Je veux établir connexion, mon SEQ commence à 1000"


Étape 2 : Serveur -> Client (SYN-ACK)
─────────────────────────────────────

Flags : SYN=1, ACK=1
SEQ : ISN serveur, ex: 5000
ACK : 1001 (client SEQ + 1)

Signification : "OK, mon SEQ commence à 5000, j'attends ton octet 1001"


Étape 3 : Client -> Serveur (ACK)
─────────────────────────────────

Flags : ACK=1
SEQ : 1001
ACK : 5001 (serveur SEQ + 1)

Signification : "OK, j'attends ton octet 5001"

Connexion maintenant ÉTABLIE !

[IDEE] 3-way handshake ajoute 1 RTT (Round-Trip Time) de latence


TRANSFERT DONNÉES TCP

Une fois connexion établie :

Client                          Serveur

DATA (SEQ=1001, 100 octets) ──[BLACK_RIGHT-POINTING_POINTER]
                               
       [BLACK_LEFT-POINTING_POINTER]────────────────────── ACK (ACK=1101)

DATA (SEQ=1101, 200 octets) ──[BLACK_RIGHT-POINTING_POINTER]
                               
       [BLACK_LEFT-POINTING_POINTER]────────────────────── ACK (ACK=1301)

Mécanisme :
- Émetteur envoie données avec SEQ
- Récepteur acquitte avec ACK (prochain octet attendu)
- Si timeout sans ACK -> Retransmission


FERMETURE CONNEXION TCP : 4-WAY HANDSHAKE

[GRAPHIQUE] Processus normal :

Client                          Serveur

1. FIN ────────────────────────[BLACK_RIGHT-POINTING_POINTER]
   SEQ=x

2.       [BLACK_LEFT-POINTING_POINTER]──────────────────── ACK
                                ACK=x+1

3.       [BLACK_LEFT-POINTING_POINTER]──────────────────── FIN
                                SEQ=y

4. ACK ────────────────────────[BLACK_RIGHT-POINTING_POINTER]
   ACK=y+1

Connexion FERMÉE [OK]

Alternative : RST (Reset)
─────────────────────────

Fermeture abrupte (erreur, refus connexion)

Flags : RST=1


CONTRÔLE DE FLUX TCP : FENÊTRE COULISSANTE

Principe : Récepteur annonce taille buffer

[GRAPHIQUE] Exemple :

Récepteur buffer : 4000 octets

1. ACK, Window=4000 [BLACK_LEFT-POINTING_POINTER]───────────

Émetteur peut envoyer jusqu'à 4000 octets sans ACK

2. DATA (1000 octets) ──────────[BLACK_RIGHT-POINTING_POINTER]
3. DATA (1000 octets) ──────────[BLACK_RIGHT-POINTING_POINTER]
4. DATA (1000 octets) ──────────[BLACK_RIGHT-POINTING_POINTER]

Récepteur :
- Buffer utilisé : 3000
- Buffer libre : 1000

5. ACK, Window=1000 [BLACK_LEFT-POINTING_POINTER]───────────

Émetteur : Ne peut envoyer que 1000 octets de plus

Si Window=0 -> Émetteur STOP (récepteur saturé)


CONTRÔLE CONGESTION TCP

Algorithmes :

1. SLOW START
   ──────────
   
   Démarre avec fenêtre petite (1 MSS)
   Double à chaque RTT
   Jusqu'à atteindre seuil (ssthresh)
   
   MSS = Maximum Segment Size (typique 1460 octets)

2. CONGESTION AVOIDANCE
   ────────────────────
   
   Après seuil, croissance linéaire
   +1 MSS par RTT
   
   Si perte détectée -> Réduire fenêtre

3. FAST RETRANSMIT
   ───────────────
   
   Si 3 ACK dupliqués -> Retransmission immédiate
   (Pas attendre timeout)

4. FAST RECOVERY
   ─────────────
   
   Après Fast Retransmit, éviter Slow Start


PROTOCOLE UDP (User Datagram Protocol)

= Protocole NON ORIENTÉ CONNEXION et NON FIABLE

Caractéristiques :
[OK] Pas de connexion (pas de handshake)
[OK] Rapide (peu d'overhead)
[OK] Simple
[X] Pas de garantie livraison
[X] Pas de garantie ordre
[X] Pas de contrôle flux/congestion

Usage :
- Applications tolérant pertes (VoIP, vidéo streaming)
- Requêtes simples (DNS)
- Broadcast/Multicast
- Gaming en ligne


DATAGRAMME UDP

En-tête UDP (8 octets seulement !) :

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
┌───────────────────────────────┬───────────────────────────────┐
│        Source Port            │      Destination Port         │
│            (16b)              │            (16b)              │
├───────────────────────────────┼───────────────────────────────┤
│          Length               │           Checksum            │
│            (16b)              │            (16b)              │
└───────────────────────────────┴───────────────────────────────┘

Champs :

1. SOURCE PORT (16 bits)
   ─────────────────────
   Optionnel (peut être 0)

2. DESTINATION PORT (16 bits)
   ──────────────────────────

3. LENGTH (16 bits)
   ────────────────
   Longueur totale (header + données)
   Minimum : 8 octets

4. CHECKSUM (16 bits)
   ──────────────────
   Optionnel en IPv4 (peut être 0)
   Obligatoire en IPv6


COMPARAISON TCP vs UDP

┌──────────────────┬─────────┬─────────┐
│    Critère       │   TCP   │   UDP   │
├──────────────────┼─────────┼─────────┤
│ Connexion        │   Oui   │   Non   │
│ Fiabilité        │   Oui   │   Non   │
│ Ordre            │ Garanti │   Non   │
│ Contrôle flux    │   Oui   │   Non   │
│ Header           │ 20+ o   │  8 o    │
│ Vitesse          │ Moyen   │ Rapide  │
│ Overhead         │ Élevé   │ Faible  │
│ Usage            │Web,Email│VoIP,DNS │
└──────────────────┴─────────┴─────────┘

[IDEE] Choisir TCP quand fiabilité importante
   Choisir UDP quand vitesse/latence critique


SOCKET

= Combinaison IP + Port

Format : IP:Port

Exemples :
- 192.168.1.10:80 (serveur web local)
- 8.8.8.8:53 (DNS Google)

Connexion TCP identifiée par PAIRE de sockets :
(IP_src:Port_src, IP_dst:Port_dst)

Exemple :
Client : 192.168.1.10:52341
Serveur : 93.184.216.34:443 (example.com HTTPS)

Connexion : (192.168.1.10:52341, 93.184.216.34:443)


RÉSUMÉ COUCHE 4

Unité : Segment (TCP) / Datagramme (UDP)
Adressage : Ports (16 bits, 0-65535)
Protocoles : TCP (fiable), UDP (rapide)
Standards : RFC 793 (TCP), RFC 768 (UDP)

Analogie : Service de livraison
         TCP = Recommandé avec accusé réception
         UDP = Courrier simple sans garantie
"""


# ----------------------------------------------------------------------------
# [SPEECH_BALLOON] PARTIE 7 : COUCHE 5 - SESSION
# ----------------------------------------------------------------------------

"""
COUCHE 5 : SESSION


RÔLE

Gérer les DIALOGUES (sessions) entre applications.

Gère :
- Établissement, maintien, terminaison sessions
- Synchronisation
- Gestion du dialogue (qui parle quand)
- Reprise en cas d'interruption


RESPONSABILITÉS

1. ÉTABLISSEMENT SESSION
   ─────────────────────
   
   Authentification
   Négociation paramètres

2. GESTION DIALOGUE
   ────────────────
   
   Modes :
   - Simplex : A parle, B écoute
   - Half-duplex : Tour à tour
   - Full-duplex : Simultané

3. SYNCHRONISATION
   ───────────────
   
   Points de contrôle (checkpoints)
   Permet reprise après interruption

4. TERMINAISON SESSION
   ───────────────────
   
   Fermeture propre
   Libération ressources


CONCEPT CHECKPOINTS

[GRAPHIQUE] Exemple transfert fichier :

Fichier 100 Mo

Checkpoint tous les 10 Mo :

0 Mo ──[BLACK_RIGHT-POINTING_POINTER] 10 Mo ──[BLACK_RIGHT-POINTING_POINTER] 20 Mo ──[BLACK_RIGHT-POINTING_POINTER] 30 Mo ──[BLACK_RIGHT-POINTING_POINTER] ... ──[BLACK_RIGHT-POINTING_POINTER] 100 Mo
         [OK]         [OK]         [OK]                  [OK]

Interruption à 35 Mo :
-> Reprendre depuis checkpoint 30 Mo
-> Pas besoin retransmettre 0-30 Mo !


PROTOCOLES COUCHE 5

En pratique, Couche 5 souvent fusionnée avec Couches 6-7.

Protocoles avec aspect session :

NetBIOS
───────

Session entre machines Windows (historique)


RPC (Remote Procedure Call)
────────────────────────────

Appel de procédures sur machine distante

NFS (Network File System) utilise RPC


SQL Sessions
────────────

Connexion client-serveur base de données
Session maintenue (transactions, curseurs)


[IDEE] RÉALITÉ MODERNE

Dans TCP/IP moderne :
- TCP gère déjà connexion (Couche 4)
- Applications gèrent sessions elles-mêmes (Couche 7)

Couche 5 OSI : Plutôt conceptuelle que pratique

Exemples session applicative :
- Login SSH : Session shell
- Session HTTP avec cookies (state)
- WebSocket : Session bidirectionnelle persistante


RÉSUMÉ COUCHE 5

Unité : Données
Rôle : Gestion dialogue
Protocoles : NetBIOS, RPC, PPTP (VPN)
Standards : ISO 8327

Analogie : Secrétaire organisant réunion
         (Qui parle, combien de temps, interruptions)

[IDEE] Souvent transparente en pratique moderne
"""


# ----------------------------------------------------------------------------
# [DESIGN] PARTIE 8 : COUCHE 6 - PRÉSENTATION
# ----------------------------------------------------------------------------

"""
COUCHE 6 : PRÉSENTATION


RÔLE

Formatage et PRÉSENTATION des données pour la couche Application.

Gère :
- Traduction formats
- Chiffrement/Déchiffrement
- Compression/Décompression
- Encodage caractères


RESPONSABILITÉS

1. TRADUCTION FORMATS
   ──────────────────
   
   Convertir formats différents
   
   Exemples :
   - EBCDIC <-> ASCII
   - Big Endian <-> Little Endian
   - Formats image (JPEG, PNG, GIF)

2. CHIFFREMENT
   ───────────
   
   Sécuriser données
   
   Avant transmission : Chiffrer
   Après réception : Déchiffrer
   
   Protocoles :
   - SSL/TLS (HTTPS)
   - SSH

3. COMPRESSION
   ───────────
   
   Réduire taille données
   
   Avant transmission : Compresser
   Après réception : Décompresser
   
   Algorithmes :
   - GZIP
   - DEFLATE
   - Brotli

4. ENCODAGE
   ────────
   
   Représentation caractères
   
   Standards :
   - ASCII (7 bits)
   - UTF-8 (Unicode)
   - ISO-8859-1 (Latin-1)


EXEMPLES CONCRETS

SSL/TLS
───────

Chiffre trafic HTTP -> HTTPS

Client <-─[Chiffré]─-> Serveur

Couche 6 : Chiffrement/Déchiffrement
Couche 7 : Application voit données claires


JPEG/PNG
────────

Formats image

Couche 7 : Application manipule image
Couche 6 : Encode/Décode format


MIME (Multipurpose Internet Mail Extensions)
─────────────────────────────────────────────

Encodage pièces jointes email

Text -> Base64 -> Transmission

Types MIME :
- text/plain
- text/html
- image/jpeg
- application/pdf


[IDEE] RÉALITÉ MODERNE

Dans TCP/IP :
Couche 6 souvent intégrée dans applications (Couche 7)

Exemples :
- HTTPS : Chiffrement SSL/TLS dans application web
- Compression HTTP : gzip dans serveur/navigateur
- Formats : Gérés par applications


RÉSUMÉ COUCHE 6

Unité : Données
Rôle : Format, chiffrement, compression
Protocoles : SSL/TLS, MIME, XDR
Standards : ISO 8823

Analogie : Traducteur/Interprète
         (Convertit langage A <-> langage B)

[IDEE] Fonctions souvent dans Couche 7 (applications)
"""


# ----------------------------------------------------------------------------
# [MOBILE] PARTIE 9 : COUCHE 7 - APPLICATION
# ----------------------------------------------------------------------------

"""
COUCHE 7 : APPLICATION


RÔLE

Interface entre RÉSEAU et APPLICATIONS utilisateur.

Fournit services réseau aux applications.

Gère :
- Protocoles applicatifs (HTTP, FTP, SMTP...)
- Interface utilisateur réseau
- Accès ressources réseau


RESPONSABILITÉS

1. IDENTIFICATION RESSOURCES
   ─────────────────────────
   
   URLs, URIs
   Exemples :
   - http://www.google.com
   - ftp://ftp.example.com/file.zip

2. TRANSFERT FICHIERS
   ──────────────────
   
   FTP, SFTP, TFTP

3. MESSAGERIE
   ──────────
   
   SMTP (envoi), POP3/IMAP (réception)

4. WEB
   ───
   
   HTTP, HTTPS

5. GESTION RÉSEAU
   ──────────────
   
   SNMP, Telnet, SSH

6. RÉSOLUTION NOMS
   ───────────────
   
   DNS


PROTOCOLES COUCHE 7 PRINCIPAUX

HTTP (HyperText Transfer Protocol)
───────────────────────────────────

Port : 80 (HTTP), 443 (HTTPS)
Transport : TCP

Navigation web

Méthodes :
- GET : Récupérer ressource
- POST : Envoyer données
- PUT : Créer/Modifier ressource
- DELETE : Supprimer ressource

Exemple requête :
```
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html
```

Réponse :
```
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1024

<html>...</html>
```

[IDEE] Détail HTTP au Chapitre 25


HTTPS (HTTP Secure)
───────────────────

Port : 443
HTTP + SSL/TLS (chiffrement)

Sécurise :
[OK] Confidentialité (chiffrement)
[OK] Intégrité (détection modification)
[OK] Authentification (certificat serveur)


FTP (File Transfer Protocol)
─────────────────────────────

Port : 20 (données), 21 (contrôle)
Transport : TCP

Transfert fichiers

Modes :
- Actif : Serveur initie connexion données
- Passif : Client initie connexion données

Commandes :
- USER : Nom utilisateur
- PASS : Mot de passe
- LIST : Lister fichiers
- RETR : Télécharger (retrieve)
- STOR : Upload (store)

[X] Non sécurisé (clair)
[OK] Préférer SFTP (SSH) ou FTPS (SSL/TLS)


SMTP (Simple Mail Transfer Protocol)
─────────────────────────────────────

Port : 25, 587 (submission)
Transport : TCP

Envoi emails

Flux :
Client ──[SMTP]──[BLACK_RIGHT-POINTING_POINTER] Serveur Mail ──[SMTP]──[BLACK_RIGHT-POINTING_POINTER] Serveur Destinataire

Commandes :
```
HELO mail.example.com
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
Subject: Test
Body...
.
QUIT
```


POP3 (Post Office Protocol v3)
───────────────────────────────

Port : 110 (POP3), 995 (POP3S)
Transport : TCP

Réception emails

Principe :
- Télécharge emails depuis serveur
- Supprime du serveur (optionnel)
- Stockage local

Limites :
[X] Pas de synchronisation (un seul appareil)


IMAP (Internet Message Access Protocol)
────────────────────────────────────────

Port : 143 (IMAP), 993 (IMAPS)
Transport : TCP

Réception emails (moderne)

Principe :
- Emails restent sur serveur
- Synchronisation multi-appareils
- Dossiers, flags, recherche serveur

[OK] Préféré à POP3


DNS (Domain Name System)
─────────────────────────

Port : 53
Transport : UDP (requêtes), TCP (transferts zone)

Résolution noms -> IPs

Exemple :
www.google.com -> 142.250.185.46

Hiérarchie :
. (root)
  └─ .com (TLD)
      └─ google.com (domaine)
          └─ www.google.com (hôte)

Types enregistrements :
- A : IPv4
- AAAA : IPv6
- CNAME : Alias
- MX : Serveur mail
- NS : Serveur DNS

[IDEE] Détail DNS au Chapitre 12


DHCP (Dynamic Host Configuration Protocol)
───────────────────────────────────────────

Port : 67 (serveur), 68 (client)
Transport : UDP

Attribution automatique IPs

Processus DORA :
1. Discover : Client cherche serveur
2. Offer : Serveur propose IP
3. Request : Client demande IP
4. Acknowledge : Serveur confirme

Infos fournies :
- Adresse IP
- Masque sous-réseau
- Passerelle par défaut
- Serveurs DNS
- Bail (lease time)

[IDEE] Détail DHCP au Chapitre 13


SSH (Secure Shell)
──────────────────

Port : 22
Transport : TCP

Accès distant sécurisé (shell)

Fonctions :
[OK] Connexion shell chiffrée
[OK] Transfert fichiers (SCP, SFTP)
[OK] Tunnels (port forwarding)

Remplace Telnet (non sécurisé)


Telnet
──────

Port : 23
Transport : TCP

Accès distant (obsolète)

[X] Non chiffré (mots de passe en clair)
[OK] Remplacé par SSH


SNMP (Simple Network Management Protocol)
──────────────────────────────────────────

Port : 161 (agent), 162 (traps)
Transport : UDP

Monitoring équipements réseau

Composants :
- Manager : Logiciel supervision
- Agent : Sur équipement (switch, routeur)
- MIB : Base de données variables

Versions :
- SNMPv1/v2c : Simple, pas sécurisé
- SNMPv3 : Chiffrement, authentification

[IDEE] Détail SNMP au Chapitre 28


NTP (Network Time Protocol)
────────────────────────────

Port : 123
Transport : UDP

Synchronisation horloges

Précision : Millisecondes

Hiérarchie strates :
- Stratum 0 : Horloge atomique, GPS
- Stratum 1 : Serveurs primaires
- Stratum 2 : Serveurs secondaires
- ...

Serveurs publics :
- pool.ntp.org
- time.google.com


RÉSUMÉ COUCHE 7

Unité : Données
Rôle : Services réseau aux applications
Protocoles : HTTP, FTP, SMTP, DNS, DHCP, SSH, etc.
Standards : RFC divers par protocole

Analogie : Applications/Logiciels utilisateur
         (Navigateur, client email, etc.)

[IDEE] Couche que l'utilisateur voit et utilise !
"""


# ----------------------------------------------------------------------------
# [WEB] PARTIE 10 : MODÈLE TCP/IP
# ----------------------------------------------------------------------------

"""
MODÈLE TCP/IP (DoD Model)


HISTORIQUE

Développé : Années 1970 par DARPA (US Department of Defense)
But : ARPANET (ancêtre Internet)
Publication : 1981 (RFC 791 - IP, RFC 793 - TCP)

Aussi appelé : Internet Protocol Suite


STRUCTURE : 4 COUCHES

┌───┬─────────────────────┬──────────────────┐
│ # │   Nom TCP/IP        │ Équivalent OSI   │
├───┼─────────────────────┼──────────────────┤
│ 4 │ Application         │ 5-6-7            │
│ 3 │ Transport           │ 4                │
│ 2 │ Internet            │ 3                │
│ 1 │ Accès Réseau        │ 1-2              │
└───┴─────────────────────┴──────────────────┘


COUCHE 1 : ACCÈS RÉSEAU (Network Access)
═════════════════════════════════════════

= OSI Couche 1 + 2

Responsabilités :
- Accès au média physique
- Adressage physique (MAC)
- Framing

Protocoles :
- Ethernet
- Wi-Fi (802.11)
- PPP
- ARP

[IDEE] Peu détaillé dans TCP/IP
   Laisse liberté implémentation


COUCHE 2 : INTERNET
════════════════════

= OSI Couche 3

Responsabilités :
- Adressage logique (IP)
- Routage
- Fragmentation

Protocoles :
- IP (IPv4, IPv6)
- ICMP
- IGMP
- IPsec

[IDEE] Couche centrale du modèle !


COUCHE 3 : TRANSPORT
═════════════════════

= OSI Couche 4

Responsabilités :
- Communication bout-en-bout
- Fiabilité (ou non)
- Multiplexage (ports)

Protocoles :
- TCP
- UDP
- SCTP


COUCHE 4 : APPLICATION
═══════════════════════

= OSI Couches 5 + 6 + 7

Responsabilités :
- Protocoles applicatifs
- Présentation données
- Sessions

Protocoles :
- HTTP, HTTPS
- FTP, SFTP
- SMTP, POP3, IMAP
- DNS
- DHCP
- SSH, Telnet
- SNMP

[IDEE] Fusionne couches hautes OSI


ENCAPSULATION TCP/IP

[GRAPHIQUE] Processus :

Application : [Données]
     v
Transport : [TCP/UDP Header][Données]
     v
Internet : [IP Header][TCP/UDP Header][Données]
     v
Accès Réseau : [Ethernet Header][IP][TCP/UDP][Données][Ethernet Trailer]
     v
Bits transmis


COMPARAISON OSI vs TCP/IP

┌────────────────┬──────────────┬──────────────┐
│    Critère     │     OSI      │    TCP/IP    │
├────────────────┼──────────────┼──────────────┤
│ Couches        │      7       │      4       │
│ Développement  │ ISO (théorie)│ DARPA (prat.)│
│ Orientation    │ Théorique    │ Pratique     │
│ Usage          │ Éducation    │ Internet     │
│ Protocoles     │ Peu implémentés│ Largement  │
│ Flexibilité    │ Rigide       │ Flexible     │
│ Adoption       │ Référence    │ Standard     │
└────────────────┴──────────────┴──────────────┘


CORRESPONDANCE COUCHES

┌───────────────────┐         ┌──────────────┐
│   OSI (7 couches) │         │   TCP/IP     │
├───────────────────┤         ├──────────────┤
│ 7. Application    │ <-─────[BLACK_RIGHT-POINTING_POINTER] │              │
├───────────────────┤         │ Application  │
│ 6. Présentation   │ <-─────[BLACK_RIGHT-POINTING_POINTER] │              │
├───────────────────┤         │              │
│ 5. Session        │ <-─────[BLACK_RIGHT-POINTING_POINTER] │              │
├───────────────────┤         ├──────────────┤
│ 4. Transport      │ <-─────[BLACK_RIGHT-POINTING_POINTER] │ Transport    │
├───────────────────┤         ├──────────────┤
│ 3. Réseau         │ <-─────[BLACK_RIGHT-POINTING_POINTER] │ Internet     │
├───────────────────┤         ├──────────────┤
│ 2. Liaison        │ <-─────[BLACK_RIGHT-POINTING_POINTER] │ Accès        │
├───────────────────┤         │ Réseau       │
│ 1. Physique       │ <-─────[BLACK_RIGHT-POINTING_POINTER] │              │
└───────────────────┘         └──────────────┘


AVANTAGES TCP/IP

[OK] Simple (4 couches vs 7)
[OK] Pragmatique (protocoles réels)
[OK] Flexible (adapt à différents médias)
[OK] Éprouvé (Internet entier !)
[OK] Standards ouverts (RFCs)

AVANTAGES OSI

[OK] Pédagogique (compréhension détaillée)
[OK] Structuré (séparation claire rôles)
[OK] Diagnostic (approche par couches)
[OK] Référence commune (vocabulaire)


[IDEE] EN PRATIQUE

On utilise :
- MODÈLE OSI : Pour COMPRENDRE et DÉPANNER
- MODÈLE TCP/IP : Pour IMPLÉMENTER et DÉPLOYER

Vocabulaire mixte :
- "Couche 2" (OSI) = Switch
- "Couche 3" (OSI) = Routeur
- "TCP/IP" (modèle) = Protocoles Internet


SUITE DE PROTOCOLES INTERNET

[GRAPHIQUE] Vue complète :

┌──────────────────────────────────────────┐
│            APPLICATION                   │
│ HTTP │FTP │SMTP│DNS │DHCP│SSH │SNMP│...  │
├──────────────────────────────────────────┤
│           TRANSPORT                      │
│        TCP              UDP              │
├──────────────────────────────────────────┤
│           INTERNET                       │
│   IP  │ ICMP │ IGMP │ IPsec │ ARP       │
├──────────────────────────────────────────┤
│         ACCÈS RÉSEAU                     │
│   Ethernet │ Wi-Fi │ PPP │ HDLC │...    │
└──────────────────────────────────────────┘
```


# ----------------------------------------------------------------------------
# [PACKAGE] PARTIE 11 : ENCAPSULATION COMPLÈTE - EXEMPLE DÉTAILLÉ
# ----------------------------------------------------------------------------

"""
ENCAPSULATION : EXEMPLE COMPLET

Scénario : Requête HTTP (GET www.example.com)


ÉMETTEUR (Client)

COUCHE 7 - APPLICATION
──────────────────────

Navigateur génère requête HTTP :

```
GET / HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
```

Données = ~100 octets


COUCHE 6 - PRÉSENTATION
───────────────────────

Si HTTPS : Chiffrement SSL/TLS
Sinon : Rien

Données = 100 octets (inchangé)


COUCHE 5 - SESSION
──────────────────

Gère session HTTP (keep-alive optionnel)

Données = 100 octets


COUCHE 4 - TRANSPORT (TCP)
──────────────────────────

Ajoute en-tête TCP :

Port source : 52341 (éphémère)
Port destination : 80 (HTTP)
SEQ, ACK, Flags, Window, etc.

En-tête TCP = 20 octets

Segment TCP = 20 + 100 = 120 octets


COUCHE 3 - RÉSEAU (IP)
──────────────────────

Ajoute en-tête IPv4 :

IP source : 192.168.1.10
IP destination : 93.184.216.34 (example.com)
Protocol : 6 (TCP)
TTL, Checksum, etc.

En-tête IP = 20 octets

Paquet IP = 20 + 120 = 140 octets


COUCHE 2 - LIAISON (Ethernet)
──────────────────────────────

Ajoute en-tête + trailer Ethernet :

MAC destination : MAC passerelle (routeur)
MAC source : MAC carte réseau client
EtherType : 0x0800 (IPv4)

En-tête Ethernet = 14 octets
FCS (trailer) = 4 octets

Trame Ethernet = 14 + 140 + 4 = 158 octets


COUCHE 1 - PHYSIQUE
───────────────────

Convertit trame en bits :
158 octets × 8 = 1264 bits

Transmission sur câble Ethernet (signaux électriques)


[GRAPHIQUE] RÉCAPITULATIF ENCAPSULATION

┌──────────────────────────────────────────────────┐
│ Couche 7 : [Données HTTP - 100o]                │
├──────────────────────────────────────────────────┤
│ Couche 4 : [TCP 20o][Données 100o] = 120o       │
├──────────────────────────────────────────────────┤
│ Couche 3 : [IP 20o][TCP 20o][Données 100o] = 140o│
├──────────────────────────────────────────────────┤
│ Couche 2 : [Eth 14o][IP 20o][TCP 20o][Data 100o][FCS 4o] = 158o│
├──────────────────────────────────────────────────┤
│ Couche 1 : 01011010110... (1264 bits)           │
└──────────────────────────────────────────────────┘

Overhead total : 58 octets (14+4+20+20)
Données utiles : 100 octets
Efficacité : 100/158 = 63%


RÉCEPTEUR (Serveur)

Processus inverse : DÉSENCAPSULATION


COUCHE 1 - PHYSIQUE
───────────────────

Reçoit bits, reconstruit trame
1264 bits -> 158 octets


COUCHE 2 - LIAISON
──────────────────

Vérifie FCS (CRC-32)
Si OK : Retire headers Ethernet
Sinon : Jette trame

Vérifie MAC destination = Ma MAC ? [OK]

Regarde EtherType : 0x0800 -> IPv4
Passe 140 octets à Couche 3


COUCHE 3 - RÉSEAU
─────────────────

Vérifie Checksum IP
Vérifie IP destination = Mon IP ? [OK]
Vérifie TTL > 0 ? [OK]

Regarde Protocol : 6 -> TCP
Passe 120 octets à Couche 4


COUCHE 4 - TRANSPORT
────────────────────

Vérifie Checksum TCP
Vérifie Port destination : 80

Regarde si connexion existante (SEQ, ACK)
Réassemble si plusieurs segments

Passe 100 octets de données à Couche 7


COUCHE 5-6 (si nécessaire)
──────────────────────────

Déchiffrement (HTTPS)
Décompression


COUCHE 7 - APPLICATION
──────────────────────

Serveur web (Apache, Nginx) reçoit requête :

```
GET / HTTP/1.1
Host: www.example.com
```

Traite requête, génère réponse HTML
Processus recommence en sens inverse !
"""


# ----------------------------------------------------------------------------
# [COURS] EXERCICES PRATIQUES - CHAPITRE 4
# ----------------------------------------------------------------------------

"""
[IDEE] EXERCICES


═══════════════════════════════════════════════════════════
EXERCICE 1 : IDENTIFICATION COUCHES
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Pour chaque élément, indiquez la/les couche(s) OSI concernée(s) :

1. Adresse MAC : 00:1A:2B:3C:4D:5E
2. Adresse IP : 192.168.1.10
3. Port TCP : 443
4. Câble Cat6
5. Switch
6. Routeur
7. Hub
8. Protocole HTTP
9. CRC (Frame Check Sequence)
10. Paquet fragmenté
11. Handshake TCP (SYN, SYN-ACK, ACK)
12. Compression GZIP
13. Chiffrement SSL/TLS
14. Requête DNS
15. Signal électrique 5V


[OK] CORRECTION EXERCICE 1

1. Adresse MAC : 00:1A:2B:3C:4D:5E
   ──────────────────────────────────

   COUCHE 2 (Liaison)
   
   Explication : Adresse physique pour identification sur réseau local


2. Adresse IP : 192.168.1.10
   ─────────────────────────

   COUCHE 3 (Réseau)
   
   Explication : Adresse logique pour routage entre réseaux


3. Port TCP : 443
   ──────────────

   COUCHE 4 (Transport)
   
   Explication : Port identifie application (443 = HTTPS)


4. Câble Cat6
   ──────────

   COUCHE 1 (Physique)
   
   Explication : Média de transmission physique


5. Switch
   ──────

   COUCHE 2 (Liaison)
   
   Explication : Commute selon adresses MAC
   
   Note : Switch L3 = Couches 2 + 3


6. Routeur
   ───────

   COUCHE 3 (Réseau)
   
   Explication : Route selon adresses IP
   
   Note : Fonctionne aussi Couches 1-2 (pour recevoir/envoyer)


7. Hub
   ───

   COUCHE 1 (Physique)
   
   Explication : Répète signal électrique, aucune intelligence


8. Protocole HTTP
   ──────────────

   COUCHE 7 (Application)
   
   Explication : Protocole applicatif pour web


9. CRC (Frame Check Sequence)
   ───────────────────────────

   COUCHE 2 (Liaison)
   
   Explication : Détection erreurs au niveau trame


10. Paquet fragmenté
    ───────────────

    COUCHE 3 (Réseau)
    
    Explication : IP fragmente paquets trop gros


11. Handshake TCP (SYN, SYN-ACK, ACK)
    ─────────────────────────────────

    COUCHE 4 (Transport)
    
    Explication : Établissement connexion TCP


12. Compression GZIP
    ───────────────

    COUCHE 6 (Présentation)
    
    Explication : Compression données
    
    Note : En pratique souvent Couche 7 (application)


13. Chiffrement SSL/TLS
    ───────────────────

    COUCHE 6 (Présentation)
    
    Explication : Chiffrement données
    
    Note : En pratique entre Couches 4 et 7


14. Requête DNS
    ───────────

    COUCHE 7 (Application)
    
    Explication : Protocole applicatif


15. Signal électrique 5V
    ────────────────────

    COUCHE 1 (Physique)
    
    Explication : Représentation physique des bits



═══════════════════════════════════════════════════════════
EXERCICE 2 : ENCAPSULATION COMPLÈTE
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Un client (192.168.1.10) envoie un email via SMTP au serveur mail
(smtp.example.com / 93.184.216.34).

Le message email fait 500 octets.

Questions :

1. Quel protocole Couche 7 est utilisé ?
2. Quel port TCP destination ?
3. Calculez la taille du segment TCP (en-tête TCP = 20 octets).
4. Calculez la taille du paquet IP (en-tête IP = 20 octets).
5. Calculez la taille de la trame Ethernet
   (header = 14 octets, FCS = 4 octets).
6. Quel est l'overhead total ajouté par les protocoles ?
7. Quelle est l'efficacité de transmission (données utiles / total) ?


[OK] CORRECTION EXERCICE 2

1. PROTOCOLE COUCHE 7
   ──────────────────

   SMTP (Simple Mail Transfer Protocol)
   
   Explication : Protocole d'envoi d'emails


2. PORT TCP DESTINATION
   ────────────────────

   Port 25 (SMTP standard)
   Ou Port 587 (SMTP submission - moderne)
   
   Pour cet exercice : 25


3. TAILLE SEGMENT TCP
   ──────────────────

   Données email : 500 octets
   En-tête TCP : 20 octets
   
   Segment TCP = 500 + 20 = 520 octets


4. TAILLE PAQUET IP
   ────────────────

   Segment TCP : 520 octets
   En-tête IP : 20 octets
   
   Paquet IP = 520 + 20 = 540 octets


5. TAILLE TRAME ETHERNET
   ─────────────────────

   Paquet IP : 540 octets
   Header Ethernet : 14 octets
   FCS (trailer) : 4 octets
   
   Trame Ethernet = 14 + 540 + 4 = 558 octets


6. OVERHEAD TOTAL
   ──────────────

   Overhead = Total - Données utiles
   
   Overhead = 558 - 500 = 58 octets
   
   Détail :
   - Ethernet : 14 + 4 = 18 octets
   - IP : 20 octets
   - TCP : 20 octets
   Total : 18 + 20 + 20 = 58 octets [OK]


7. EFFICACITÉ TRANSMISSION
   ───────────────────────

   Efficacité = Données utiles / Taille totale
   
   Efficacité = 500 / 558
              = 0.896
              = 89.6%
   
   Overhead représente : 58/558 = 10.4%


[GRAPHIQUE] RÉCAPITULATIF VISUEL

┌───────────────────────────────────────────────────┐
│ Couche 7 (SMTP) : [500 octets]                   │
├───────────────────────────────────────────────────┤
│ Couche 4 (TCP)  : [20o][500o] = 520o             │
├───────────────────────────────────────────────────┤
│ Couche 3 (IP)   : [20o][20o][500o] = 540o        │
├───────────────────────────────────────────────────┤
│ Couche 2 (Eth)  : [14o][20o][20o][500o][4o] = 558o│
└───────────────────────────────────────────────────┘

Overhead : 58 octets (10.4%)
Efficacité : 89.6%



═══════════════════════════════════════════════════════════
EXERCICE 3 : TCP vs UDP
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Pour chaque application, indiquez si elle utilise TCP ou UDP,
et justifiez votre choix.

1. Navigation web (HTTP)
2. Streaming vidéo en direct (Twitch)
3. Téléchargement fichier (FTP)
4. Appel vidéo (Zoom, Teams)
5. Email (SMTP)
6. Résolution DNS
7. Gaming en ligne (FPS)
8. Transfert fichier important (banque)
9. VoIP (téléphonie IP)
10. DHCP (attribution IP)


[OK] CORRECTION EXERCICE 3

1. Navigation web (HTTP)
   ─────────────────────

   PROTOCOLE : TCP
   
   Justification :
   [OK] Fiabilité nécessaire (page complète)
   [OK] Ordre important (HTML, CSS, JS)
   [OK] Latence acceptable (quelques ms)
   
   Port : 80 (HTTP), 443 (HTTPS)


2. Streaming vidéo en direct (Twitch)
   ───────────────────────────────────

   PROTOCOLE : UDP (généralement)
   
   Justification :
   [OK] Temps réel critique (faible latence)
   [OK] Perte quelques frames acceptable
   [X] Retransmission causerait décalage
   
   Note : Certains utilisent TCP (YouTube)
   
   Protocoles : RTP/UDP, RTMP, HLS/TCP


3. Téléchargement fichier (FTP)
   ─────────────────────────────

   PROTOCOLE : TCP
   
   Justification :
   [OK] Fiabilité CRUCIALE (fichier complet)
   [OK] Ordre nécessaire
   [OK] Retransmission acceptable
   
   Ports : 20 (données), 21 (contrôle)


4. Appel vidéo (Zoom, Teams)
   ──────────────────────────

   PROTOCOLE : UDP (principalement)
   
   Justification :
   [OK] Temps réel essentiel
   [OK] Faible latence prioritaire
   [OK] Quelques pertes audio/vidéo tolérées
   
   Note : Fallback sur TCP si UDP bloqué (firewall)
   
   Protocoles : RTP/UDP, WebRTC


5. Email (SMTP)
   ────────────

   PROTOCOLE : TCP
   
   Justification :
   [OK] Fiabilité nécessaire (message complet)
   [OK] Pas de contrainte temps réel
   [OK] Ordre important (SMTP commandes)
   
   Ports : 25, 587


6. Résolution DNS
   ──────────────

   PROTOCOLE : UDP (principalement)
   
   Justification :
   [OK] Requêtes courtes (1 paquet souvent)
   [OK] Rapidité (pas de handshake)
   [X] Handshake TCP = overhead inutile
   
   Note : TCP utilisé pour transferts de zones (grandes données)
   
   Port : 53 (UDP et TCP)


7. Gaming en ligne (FPS)
   ──────────────────────

   PROTOCOLE : UDP
   
   Justification :
   [OK] Latence CRITIQUE (<50ms)
   [OK] Position joueur temps réel
   [OK] Paquet perdu -> Ignorer (prochaine position)
   [X] Retransmission = lag inacceptable
   
   Note : Certains jeux mixent TCP (chat) + UDP (gameplay)


8. Transfert fichier important (banque)
   ─────────────────────────────────────

   PROTOCOLE : TCP
   
   Justification :
   [OK] Fiabilité ABSOLUE requise
   [OK] Intégrité données critique
   [OK] Un seul bit erroné = problème
   
   Souvent : TCP + TLS (chiffrement)


9. VoIP (téléphonie IP)
   ────────────────────

   PROTOCOLE : UDP
   
   Justification :
   [OK] Temps réel essentiel (<150ms)
   [OK] Voix humaine tolère petites pertes
   [OK] Codecs avec correction erreurs (FEC)
   [X] Retransmission = écho, coupures
   
   Protocoles : RTP/UDP, SIP


10. DHCP (attribution IP)
    ────────────────────

    PROTOCOLE : UDP
    
    Justification :
    [OK] Processus simple (4 messages)
    [OK] Broadcast initial (TCP impossible)
    [OK] Pas de connexion préexistante
    
    Ports : 67 (serveur), 68 (client)


[GRAPHIQUE] RÉSUMÉ

┌──────────────────────┬──────────┬────────────────┐
│   Application        │Protocole │  Raison clé    │
├──────────────────────┼──────────┼────────────────┤
│ Web (HTTP/HTTPS)     │   TCP    │ Fiabilité      │
│ Streaming direct     │   UDP    │ Temps réel     │
│ FTP                  │   TCP    │ Intégrité      │
│ Visio (Zoom)         │   UDP    │ Faible latence │
│ Email (SMTP)         │   TCP    │ Fiabilité      │
│ DNS                  │   UDP    │ Rapidité       │
│ Gaming               │   UDP    │ Latence        │
│ Transfert bancaire   │   TCP    │ Sécurité       │
│ VoIP                 │   UDP    │ Temps réel     │
│ DHCP                 │   UDP    │ Broadcast      │
└──────────────────────┴──────────┴────────────────┘

Règle générale :
- Fiabilité/Intégrité -> TCP
- Temps réel/Latence -> UDP



═══════════════════════════════════════════════════════════
EXERCICE 4 : DIAGNOSTIC PAR COUCHES
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Un utilisateur se plaint : "Je ne peux pas accéder à www.example.com"

Proposez une démarche de diagnostic méthodique en suivant
les couches OSI (bottom-up).

Pour chaque couche, indiquez :
- Que vérifier ?
- Quelle commande/outil utiliser ?
- Si OK, passer à la suivante ; si KO, action corrective.


[OK] CORRECTION EXERCICE 4

APPROCHE BOTTOM-UP (Couche 1 -> Couche 7)


COUCHE 1 - PHYSIQUE
═══════════════════

Vérifications :
──────────────

1. Câble réseau branché ?
   - Vérifier visuellement
   - LED carte réseau allumée ?

2. Câble endommagé ?
   - Vérifier pincement, coupure
   - Essayer autre câble

3. Port switch actif ?
   - LED switch allumée ?
   - Essayer autre port

Commandes :
───────────

Windows :
```
ipconfig
```
Chercher "Média déconnecté"

Linux :
```
ip link show
```
Chercher "state DOWN"

Si KO :
───────
- Rebrancher câble
- Remplacer câble
- Vérifier switch

Si OK -> Couche 2 [OK]


COUCHE 2 - LIAISON
══════════════════

Vérifications :
──────────────

1. Interface réseau activée ?
2. Adresse MAC visible ?
3. Switch fonctionne ?

Commandes :
───────────

Windows :
```
ipconfig /all
```
Vérifier "Adresse physique" présente

Linux :
```
ip link show
ip addr show
```

Vérifier état "UP"

Tester connectivité locale :
```
ping 192.168.1.1  (passerelle)
```

Si KO :
───────
- Activer interface réseau
- Vérifier pilote carte réseau
- Problème switch (voir Chapitre 2)

Si OK -> Couche 3 [OK]


COUCHE 3 - RÉSEAU
═════════════════

Vérifications :
──────────────

1. Adresse IP configurée ?
2. Masque sous-réseau correct ?
3. Passerelle par défaut définie ?
4. Route vers destination existe ?

Commandes :
───────────

Windows :
```
ipconfig
```

Vérifier :
- Adresse IPv4 : 192.168.1.x (pas 169.254.x.x APIPA)
- Masque : 255.255.255.0
- Passerelle : 192.168.1.1

```
ping 192.168.1.1
```
Passerelle répond ?

```
ping 8.8.8.8
```
Internet accessible (par IP) ?

Linux :
```
ip addr show
ip route show
ping -c 4 192.168.1.1
ping -c 4 8.8.8.8
```

Si KO :
───────

Pas d'IP (169.254.x.x) :
- Problème DHCP
- Configurer IP statique temporairement
- Vérifier serveur DHCP

Passerelle ne répond pas :
- Vérifier IP passerelle
- Problème routeur
- Problème réseau local

Ping 8.8.8.8 échoue :
- Problème routeur/Internet
- Vérifier connexion WAN routeur

Si OK -> Couche 4 [OK]


COUCHE 4 - TRANSPORT
════════════════════

Vérifications :
──────────────

1. Ports bloqués ?
2. Firewall ?
3. Connexion TCP établie ?

Commandes :
───────────

Windows :
```
telnet www.example.com 80
```
(Activer client Telnet si nécessaire)

Ou :
```
Test-NetConnection www.example.com -Port 80
```
(PowerShell)

Linux :
```
telnet www.example.com 80
```

Ou :
```
nc -zv www.example.com 80
```

Si connexion réussit :
"Connected to..."
-> Port ouvert [OK]

Si échec :
"Connection refused" -> Serveur refuse (normal si pas HTTP direct)
"Connection timed out" -> Firewall bloque

Si KO :
───────
- Vérifier firewall local (Windows Defender, iptables)
- Vérifier firewall réseau
- Problème serveur distant

Si OK -> Couche 7 [OK]


COUCHES 5-6 (généralement transparentes)
════════════════════════════════════════

Vérifications :
──────────────

Session/Chiffrement OK ?

Si HTTPS :
- Certificat valide ?
- TLS supporté ?

En pratique : Rarement la cause


COUCHE 7 - APPLICATION
══════════════════════

Vérifications :
──────────────

1. Résolution DNS ?
2. Problème serveur web ?
3. Problème navigateur ?

Commandes :
───────────

Test DNS :
```
nslookup www.example.com
```

Résultat attendu :
```
Serveur : dns.google
Adresse : 8.8.8.8

Nom : www.example.com
Address : 93.184.216.34
```

Si échec :
- "Server failed" -> Problème DNS
- Tester autre DNS (8.8.8.8)

Test HTTP direct :
```
curl http://www.example.com
```

Ou navigateur :
- Essayer http://93.184.216.34 (direct IP)
- Essayer autre navigateur
- Vider cache navigateur

Si KO :
───────

DNS ne résout pas :
- Changer serveurs DNS (8.8.8.8, 1.1.1.1)
- Vérifier fichier hosts

Serveur web ne répond pas :
- Problème serveur distant (hors contrôle)
- Vérifier statut site (isitdownrightnow.com)

Navigateur problème :
- Vider cache : Ctrl+Shift+Del
- Mode navigation privée
- Réinstaller navigateur


RÉSUMÉ MÉTHODOLOGIE
═══════════════════

1. Couche 1 : Câble branché ? LED ? [OK]
2. Couche 2 : Interface UP ? MAC visible ? [OK]
3. Couche 3 : IP configurée ? Ping passerelle ? Ping 8.8.8.8 ? [OK]
4. Couche 4 : Port ouvert ? Firewall ? [OK]
5. Couche 7 : DNS résout ? curl fonctionne ? [OK]

[IDEE] Approche systématique = Diagnostic efficace !


═══════════════════════════════════════════════════════════
FIN DES EXERCICES
═══════════════════════════════════════════════════════════
"""


# ============================================================================
# [DOCS] CONCLUSION CHAPITRE 4
# ============================================================================

"""
[BRAVO] FÉLICITATIONS !

Vous avez terminé le Chapitre 4 : Modèle OSI et TCP/IP


[GUIDE] RÉCAPITULATIF COMPLET

MODÈLE OSI (7 COUCHES)
──────────────────────

[OK] COUCHE 1 - PHYSIQUE :
   - Bits, signaux, câbles
   - Hubs, répéteurs
   - Encodage, modulation
   
[OK] COUCHE 2 - LIAISON :
   - Adressage MAC
   - Trames, FCS (CRC)
   - Switchs, CSMA/CD, CSMA/CA
   - VLANs, STP
   
[OK] COUCHE 3 - RÉSEAU :
   - Adressage IP
   - Routage, paquets
   - Routeurs
   - IP, ICMP, ARP
   
[OK] COUCHE 4 - TRANSPORT :
   - Ports, multiplexage
   - Segments (TCP), Datagrammes (UDP)
   - Fiabilité, contrôle flux
   - TCP (fiable), UDP (rapide)
   
[OK] COUCHE 5 - SESSION :
   - Gestion dialogues
   - Checkpoints
   - NetBIOS, RPC
   
[OK] COUCHE 6 - PRÉSENTATION :
   - Formats données
   - Chiffrement, compression
   - SSL/TLS, MIME
   
[OK] COUCHE 7 - APPLICATION :
   - Protocoles applicatifs
   - HTTP, FTP, SMTP, DNS, DHCP, SSH
   - Interface utilisateur


MODÈLE TCP/IP (4 COUCHES)
─────────────────────────

[OK] COUCHE 1 - ACCÈS RÉSEAU (OSI 1-2)
[OK] COUCHE 2 - INTERNET (OSI 3)
[OK] COUCHE 3 - TRANSPORT (OSI 4)
[OK] COUCHE 4 - APPLICATION (OSI 5-7)


CONCEPTS CLÉS
─────────────

[OK] Encapsulation / Désencapsulation
[OK] PDU par couche (Bits, Trame, Paquet, Segment, Données)
[OK] Headers ajoutés par chaque couche
[OK] Communication peer-to-peer
[OK] TCP vs UDP
[OK] Diagnostic par couches


[OBJECTIF] COMPÉTENCES ACQUISES

Vous savez maintenant :

[OK] Expliquer rôle de chaque couche OSI
[OK] Identifier protocoles par couche
[OK] Comprendre encapsulation complète
[OK] Différencier OSI et TCP/IP
[OK] Choisir TCP ou UDP selon besoin
[OK] Diagnostiquer problèmes réseau par couches
[OK] Calculer overhead et efficacité
[OK] Utiliser vocabulaire professionnel réseau


[PRO] APPLICATIONS PRATIQUES

Ces connaissances vous permettent de :

[OK] Comprendre fonctionnement complet réseau
[OK] Diagnostiquer méthodiquement (bottom-up)
[OK] Communiquer avec équipes (langage commun)
[OK] Concevoir architectures (couches appropriées)
[OK] Optimiser performances (comprendre overhead)
[OK] Sécuriser (savoir quoi protéger à quelle couche)
[OK] Passer certifications (CCNA base sur OSI)


[LIEN] LIEN AVEC CHAPITRES SUIVANTS

Ce chapitre est le CADRE pour TOUT le reste :

Chaque chapitre suivant approfondit UNE couche ou UN protocole :

- Chapitre 5 : Ethernet (Couches 1-2)
- Chapitre 6-7 : Wi-Fi (Couches 1-2)
- Chapitres 8-10 : IPv4 (Couche 3)
- Chapitre 11 : ARP, ICMP (Couche 3)
- Chapitres 12-13 : DNS, DHCP (Couche 7)
- Chapitre 14 : TCP détaillé (Couche 4)
- Chapitre 15 : UDP détaillé (Couche 4)
- Etc.

[IDEE] Référez-vous toujours au modèle OSI/TCP/IP pour situer chaque protocole !


-> PROCHAIN CHAPITRE : ETHERNET EN DÉTAIL

Au Chapitre 5, nous approfondirons :
- Historique Ethernet
- Normes IEEE 802.3
- Trames Ethernet détaillées
- CSMA/CD en profondeur
- Auto-négociation
- Gigabit et au-delà
- Exercices pratiques


[RAPIDE] EXCELLENT TRAVAIL !

Le Chapitre 4 était FONDAMENTAL - vous avez maintenant la base
théorique pour comprendre TOUS les protocoles réseau !

Quand vous êtes prêt : Chapitre 5 - Ethernet !


═══════════════════════════════════════════════════════════
[GUIDE] FIN DU CHAPITRE 4
═══════════════════════════════════════════════════════════
"""

# ============================================================================
# CHAPITRE 5 : ETHERNET
# ============================================================================

"""
[OBJECTIF] OBJECTIFS DU CHAPITRE

Ce chapitre approfondit ETHERNET, la technologie de réseau local dominante :
[OK] Historique et évolution d'Ethernet
[OK] Normes IEEE 802.3
[OK] Trame Ethernet en détail
[OK] CSMA/CD (détection de collision)
[OK] Auto-négociation et duplex
[OK] Évolution des débits (10 Mbps -> 400 Gbps)
[OK] Power over Ethernet (PoE)
[OK] Troubleshooting Ethernet

[IDEE] POURQUOI ETHERNET EST CRUCIAL ?

Ethernet est le standard de facto pour les réseaux locaux :
- 95%+ des réseaux LAN utilisent Ethernet
- Simple, fiable, standardisé
- Évolutif (10 Mbps -> 400 Gbps)
- Interopérable (tous les fabricants)

Comprendre Ethernet est ESSENTIEL pour tout professionnel réseau !


[DOCS] PLAN DU CHAPITRE

1. Historique d'Ethernet
2. Normes IEEE 802.3
3. Trame Ethernet détaillée
4. CSMA/CD (Carrier Sense Multiple Access with Collision Detection)
5. Half-Duplex vs Full-Duplex
6. Auto-négociation
7. Évolution des vitesses Ethernet
8. Power over Ethernet (PoE)
9. Ethernet commuté (Switched Ethernet)
10. Troubleshooting Ethernet
11. Exercices pratiques
"""


# ----------------------------------------------------------------------------
# [DOC] PARTIE 1 : HISTORIQUE D'ETHERNET
# ----------------------------------------------------------------------------

"""
HISTORIQUE D'ETHERNET


ORIGINES (1970s)

1973 : Robert Metcalfe (Xerox PARC)
───────────────────────────────────

Inventeur : Robert Metcalfe et David Boggs
Lieu : Xerox Palo Alto Research Center (PARC)
Objectif : Connecter ordinateurs Xerox Alto

Nom "Ethernet" :
- "Ether" : Ancienne théorie d'un média universel transportant lumière
- Métaphore : Câble coaxial = "éther" transportant données

Premier prototype : 2.94 Mbps

[GRAPHIQUE] Schéma conceptuel original :

Câble coaxial (bus partagé)
════════════════════════════════════════════
  │         │         │         │
 PC1       PC2       PC3       PC4

Tous partagent le même média physique


1980 : Ethernet DIX (Version 1)
────────────────────────────────

DIX = Digital, Intel, Xerox (consortium)

Spécifications :
- Débit : 10 Mbps
- Câble : Coaxial épais (10BASE5 - "Thicknet")
- Topologie : Bus
- Distance : 500 mètres

Publication : "The Ethernet - A Local Area Network" (1980)


1983 : Standardisation IEEE 802.3
──────────────────────────────────

IEEE (Institute of Electrical and Electronics Engineers)
Comité 802.3 : Standards Ethernet

Publication : IEEE 802.3 (1983)
Basé sur Ethernet DIX avec modifications mineures

[IDEE] Depuis, IEEE 802.3 = Standard officiel Ethernet


ÉVOLUTION DES VITESSES

┌──────┬────────────┬──────────┬────────────┐
│Année │  Norme     │  Débit   │   Média    │
├──────┼────────────┼──────────┼────────────┤
│ 1983 │ 10BASE5    │ 10 Mbps  │Coax épais  │
│ 1985 │ 10BASE2    │ 10 Mbps  │Coax fin    │
│ 1990 │ 10BASE-T   │ 10 Mbps  │Paire torsadée│
│ 1995 │ 100BASE-TX │ 100 Mbps │Cat5 (Fast) │
│ 1998 │ 1000BASE-T │ 1 Gbps   │Cat5e/Cat6  │
│ 2006 │ 10GBASE-T  │ 10 Gbps  │Cat6a/Cat7  │
│ 2010 │ 40GBASE-T  │ 40 Gbps  │Cat8        │
│ 2017 │ 100GBASE-T │ 100 Gbps │Fibre/Cat8  │
│ 2017 │ 200GBASE   │ 200 Gbps │Fibre       │
│ 2017 │ 400GBASE   │ 400 Gbps │Fibre       │
└──────┴────────────┴──────────┴────────────┘

Multiplication par 40,000 en ~35 ans !


TOPOLOGIES ETHERNET

TOPOLOGIE BUS (Historique)
──────────────────────────

Ethernet original (10BASE5, 10BASE2)

Câble coaxial unique :
════════════════════════════════════════════
  │         │         │         │
 PC1       PC2       PC3       PC4

Caractéristiques :
- Tous sur même segment
- Domaine de collision unique
- Une panne = Tout le réseau KO

Terminateurs 50Ω aux extrémités (éviter réflexions)

[X] Obsolète depuis ~1995


TOPOLOGIE ÉTOILE (Moderne)
──────────────────────────

Ethernet commuté (10BASE-T et supérieur)

         Switch
        ┌──┴──┐
     ┌──┼──┼──┼──┐
    PC1 PC2 PC3 PC4

Caractéristiques :
- Câbles point-à-point (switch <-> PC)
- Domaine de collision par port
- Résilience (une panne ≠ tout le réseau)

[OK] Standard depuis ~1995


ÉVOLUTION TECHNOLOGIQUE CLÉS

1990 : 10BASE-T (Paires torsadées)
───────────────────────────────────

Remplacement coaxial par Cat3/Cat5
-> Installation plus facile
-> Topologie étoile
-> Hubs puis Switchs


1995 : Fast Ethernet (100 Mbps)
────────────────────────────────

100BASE-TX sur Cat5
-> 10× plus rapide
-> Rétrocompatible 10BASE-T


1998 : Switchs démocratisés
────────────────────────────

Prix switchs chute
-> Remplacement hubs massif
-> Full-duplex devient standard
-> Fin des collisions


1999 : Gigabit Ethernet (1000 Mbps)
────────────────────────────────────

1000BASE-T sur Cat5e/Cat6
-> 100× plus rapide qu'origine
-> Standard actuel réseaux d'entreprise


2000s : Ethernet dominant
──────────────────────────

Token Ring, FDDI, autres -> Disparition
Ethernet = 95%+ des LANs


2010s : 10 Gigabit Ethernet démocratisé
────────────────────────────────────────

10GBASE-T sur Cat6a
-> Data centers, core réseau
-> Prix baisse progressivement


2020s : 100G/400G Ethernet
───────────────────────────

Hyperscalers (Google, Facebook, Amazon)
-> 100/400 Gbps par lien
-> Fibre optique exclusivement


POURQUOI ETHERNET A GAGNÉ ?

[OK] SIMPLICITÉ
   Simple à comprendre et déployer

[OK] OUVERTURE
   Standard IEEE ouvert (pas propriétaire)
   Tous fabricants interopèrent

[OK] ÉVOLUTIVITÉ
   Même trame de base depuis 1983
   Débits × 40,000, compatibilité préservée

[OK] COÛT
   Production masse -> Prix très bas
   Économies d'échelle

[OK] FLEXIBILITÉ
   Multiples médias (cuivre, fibre)
   Multiples débits (10M -> 400G)

[OK] ÉCOSYSTÈME
   Outils, formation, expertise abondants


[IDEE] Ethernet = VHS des réseaux
   Pas forcément le meilleur techniquement
   Mais adoption massive -> Standard de facto
"""


# ----------------------------------------------------------------------------
# [MESURE] PARTIE 2 : NORMES IEEE 802.3
# ----------------------------------------------------------------------------

"""
NORMES IEEE 802.3


NOMENCLATURE

Format : XXbaseYY[-ZZ]

XX : Débit (Mbps)
     10 = 10 Mbps
     100 = 100 Mbps
     1000 = 1 Gbps
     10G = 10 Gbps

base : Bande de base (baseband)
       Signification : Un seul signal à la fois
       Opposé : broadband (multiple signaux)

YY : Type média ou portée
     T = Twisted pair (paire torsadée)
     F = Fiber (fibre optique)
     2 = Coax fin (~200m)
     5 = Coax épais (~500m)
     S = Short wavelength (courte longueur d'onde)
     L = Long wavelength (longue longueur d'onde)

ZZ : Variante (optionnel)


PRINCIPALES NORMES (Chronologique)


10BASE5 (1983) - "Thicknet"
════════════════════════════

Débit : 10 Mbps
Média : Câble coaxial épais (diamètre ~1cm)
Topologie : Bus
Distance max : 500 mètres
Connecteur : Vampire tap (perce le câble)

Obsolète : Oui

Usage historique : Premier Ethernet standardisé


10BASE2 (1985) - "Thinnet" ou "Cheapernet"
═══════════════════════════════════════════

Débit : 10 Mbps
Média : Câble coaxial fin (RG-58)
Topologie : Bus
Distance max : 185 mètres (~200m)
Connecteur : BNC

Avantages vs 10BASE5 :
[OK] Câble plus fin, flexible
[OK] Moins cher
[OK] Installation plus facile

Obsolète : Oui


10BASE-T (1990)
═══════════════

Débit : 10 Mbps
Média : Paire torsadée Cat3
Topologie : Étoile (hub/switch central)
Distance max : 100 mètres
Connecteur : RJ45
Paires utilisées : 2 sur 4 (1-2 TX, 3-6 RX)

Révolution : Paires torsadées !

Avantages :
[OK] Câblage téléphonique existant réutilisable
[OK] Topologie étoile (résilience)
[OK] Installation facile

Standard bureautique années 90

Obsolète : Pratiquement (trop lent)


100BASE-TX (1995) - "Fast Ethernet"
════════════════════════════════════

Débit : 100 Mbps
Média : Paire torsadée Cat5
Topologie : Étoile
Distance max : 100 mètres
Connecteur : RJ45
Paires utilisées : 2 sur 4 (1-2, 3-6)
Encodage : 4B/5B + MLT-3

Avantages :
[OK] 10× plus rapide que 10BASE-T
[OK] Rétrocompatible (auto-négociation)
[OK] Même câblage Cat5

Standard bureautique fin 90s - début 2000s

Usage actuel : Encore présent réseaux basiques


100BASE-FX
══════════

Débit : 100 Mbps
Média : Fibre optique multimode
Distance max : 2 km (multimode), 20 km (monomode)
Connecteur : SC, ST

Usage : Liaisons inter-bâtiments


1000BASE-T (1999) - "Gigabit Ethernet"
═══════════════════════════════════════

Débit : 1000 Mbps (1 Gbps)
Média : Paire torsadée Cat5e ou Cat6
Topologie : Étoile
Distance max : 100 mètres
Connecteur : RJ45
Paires utilisées : 4 sur 4 (toutes !)
Encodage : PAM-5 (5 niveaux)

Complexité :
- 4 paires transmettent SIMULTANÉMENT
- Full-duplex sur chaque paire (émission + réception)
- Annulation d'écho (echo cancellation)
- 250 Mbaud × 4 paires = 1000 Mbps

Avantages :
[OK] 10× plus rapide que Fast Ethernet
[OK] Câblage Cat5e (peu coûteux)
[OK] Rétrocompatible

[OK] STANDARD ACTUEL (2024)
   Réseaux d'entreprise, domicile moderne


1000BASE-SX
═══════════

Débit : 1 Gbps
Média : Fibre multimode (850nm)
Distance max : 550 mètres (OM2)
Connecteur : LC, SC

Usage : Data center, backbone immeuble


1000BASE-LX
═══════════

Débit : 1 Gbps
Média : Fibre monomode (1310nm)
Distance max : 5 km (monomode), 10 km
Connecteur : LC, SC

Usage : Liaisons longue distance


10GBASE-T (2006) - "10 Gigabit Ethernet"
═════════════════════════════════════════

Débit : 10 Gbps
Média : Paire torsadée Cat6a ou Cat7
Topologie : Étoile
Distance max : 100 mètres (Cat6a), 55m (Cat6)
Connecteur : RJ45
Paires utilisées : 4 sur 4
Encodage : 128b/130b

Défis :
- Dissipation thermique élevée
- Consommation électrique importante
- Câblage haute qualité requis

Usage :
- Serveurs data center
- Uplinks switchs
- Stockage réseau (NAS, SAN)

Prix : Encore relativement élevé (2024)


10GBASE-SR/LR (Fibre)
═════════════════════

SR (Short Range) :
- Multimode (850nm)
- Distance : 300m (OM3), 400m (OM4)

LR (Long Range) :
- Monomode (1310nm)
- Distance : 10 km

Usage : Standard data center


25GBASE, 40GBASE, 100GBASE
═══════════════════════════

25 Gbps : 1 canal 25G
40 Gbps : 4 canaux 10G agrégés
100 Gbps : 4 canaux 25G ou 10 canaux 10G

Média : Fibre optique uniquement (transceivers SFP+/QSFP)

Usage : Hyperscalers, cloud providers


200GBASE, 400GBASE (2017+)
══════════════════════════

200 Gbps : 4 × 50G
400 Gbps : 8 × 50G

Média : Fibre optique (transceivers QSFP-DD, OSFP)

Usage : Backbone Internet, data centers géants


[GRAPHIQUE] TABLEAU RÉCAPITULATIF

┌────────────┬────────┬────────────┬──────────┬────────┐
│   Norme    │ Débit  │   Média    │ Distance │  Usage │
├────────────┼────────┼────────────┼──────────┼────────┤
│ 10BASE-T   │ 10M    │ Cat3       │  100m    │Obsolète│
│ 100BASE-TX │ 100M   │ Cat5       │  100m    │Basique │
│ 1000BASE-T │ 1G     │ Cat5e/6    │  100m    │Standard│
│ 10GBASE-T  │ 10G    │ Cat6a/7    │  100m    │Pro/DC  │
│ 1000BASE-SX│ 1G     │ Fibre MM   │  550m    │Backbone│
│ 10GBASE-SR │ 10G    │ Fibre MM   │  400m    │DC      │
│ 100GBASE-SR│ 100G   │ Fibre MM   │  100m    │DC Core │
└────────────┴────────┴────────────┴──────────┴────────┘

MM = Multimode
DC = Data Center


COMPATIBILITÉ ET AUTO-NÉGOCIATION

Tous les équipements modernes supportent auto-négociation :
- Détection automatique vitesse (10/100/1000 Mbps)
- Détection automatique duplex (half/full)
- Négociation à la connexion

Rétrocompatibilité :
- Switch Gigabit <-> PC Fast Ethernet -> 100 Mbps
- Switch Gigabit <-> PC Gigabit -> 1000 Mbps

[IDEE] Transparent pour l'utilisateur !
"""


# ----------------------------------------------------------------------------
# [PACKAGE] PARTIE 3 : TRAME ETHERNET DÉTAILLÉE
# ----------------------------------------------------------------------------

"""
TRAME ETHERNET II (DIX)


FORMAT COMPLET

┌──────────┬──────────┬──────────┬──────┬──────────┬─────┐
│Préambule │   SFD    │Dest MAC  │ Src  │EtherType │Données│ FCS │
│ 7 octets │ 1 octet  │ 6 octets │ 6 o  │ 2 octets │46-1500│ 4 o │
└──────────┴──────────┴──────────┴──────┴──────────┴─────┴─────┘
            ^                                              ^
      Couche Physique                               Couche Liaison
      (Non dans trame)                              (Dans trame)


TRAME SANS PRÉAMBULE (ce qui est capturé)

┌──────────┬──────────┬──────────┬──────────┬─────┐
│Dest MAC  │ Src MAC  │EtherType │ Données  │ FCS │
│ 6 octets │ 6 octets │ 2 octets │46-1500 o │ 4 o │
└──────────┴──────────┴──────────┴──────────┴─────┘

Taille minimum : 64 octets (18 header+trailer + 46 données)
Taille maximum : 1518 octets (18 + 1500)

Avec VLAN tag (802.1Q) : 1522 octets


CHAMPS DÉTAILLÉS


1. PRÉAMBULE (7 octets)
   ════════════════════

Valeur : 10101010 10101010 10101010 10101010 10101010 10101010 10101010

Rôle : Synchronisation horloge récepteur

Explication :
- Alternance 1-0 permet au récepteur de se "caler"
- Fréquence fixe détectable

Couche : Physique (non capturé par Wireshark)


2. SFD - START FRAME DELIMITER (1 octet)
   ══════════════════════════════════════

Valeur : 10101011

Rôle : Marquer début de trame

Différence avec préambule : Deux "1" consécutifs à la fin

Signification : "Attention, trame commence maintenant !"

Couche : Physique (non capturé par Wireshark)


3. ADRESSE MAC DESTINATION (6 octets)
   ═══════════════════════════════════

Format : XX:XX:XX:XX:XX:XX (hexadécimal)

Types :
- Unicast : Vers une seule machine
  Exemple : 00:1A:2B:3C:4D:5E

- Broadcast : Vers toutes les machines du segment
  Valeur : FF:FF:FF:FF:FF:FF

- Multicast : Vers un groupe
  Exemple : 01:00:5E:XX:XX:XX (IPv4 multicast)

Rôle : Identifier destinataire sur réseau local


4. ADRESSE MAC SOURCE (6 octets)
   ══════════════════════════════

Format : XX:XX:XX:XX:XX:XX

Rôle : Identifier émetteur

Utilisation :
- Switch apprend MAC source -> Port (table MAC)
- Récepteur connaît émetteur (réponses)

[IDEE] Ne peut PAS être broadcast/multicast


5. ETHERTYPE (2 octets)
   ════════════════════

Indique protocole de couche supérieure (Couche 3)

Valeurs courantes :

┌────────┬──────────────────────┐
│ Valeur │   Protocole          │
├────────┼──────────────────────┤
│ 0x0800 │ IPv4                 │
│ 0x0806 │ ARP                  │
│ 0x86DD │ IPv6                 │
│ 0x8100 │ VLAN tag (802.1Q)    │
│ 0x88CC │ LLDP                 │
│ 0x8847 │ MPLS unicast         │
│ 0x8848 │ MPLS multicast       │
└────────┴──────────────────────┘

Exemple : EtherType = 0x0800
-> Données contiennent paquet IPv4
-> Passer à stack IP


6. DONNÉES (46 - 1500 octets)
   ═══════════════════════════

Payload (charge utile)

Contenu : Paquet de couche 3 (IP, ARP, etc.)

MINIMUM : 46 octets
Pourquoi ? Trame totale minimum = 64 octets
64 - 18 (headers+FCS) = 46 octets

Si données < 46 octets -> PADDING ajouté
Exemple : Paquet IP 40 octets -> 6 octets padding (00)

MAXIMUM : 1500 octets
= MTU (Maximum Transmission Unit) Ethernet

Jumbo Frames : Jusqu'à 9000 octets (non-standard)


7. FCS - FRAME CHECK SEQUENCE (4 octets)
   ══════════════════════════════════════

CRC-32 (Cyclic Redundancy Check 32 bits)

Calculé sur : Dest MAC + Src MAC + EtherType + Données

Rôle : Détection d'erreurs

Processus :
1. Émetteur calcule CRC-32 sur trame
2. Ajoute résultat comme FCS
3. Transmet trame complète

4. Récepteur recalcule CRC-32
5. Compare avec FCS reçu
6. Si identique -> Trame OK [OK]
7. Si différent -> Trame corrompue, JETÉE [X]

[IDEE] DÉTECTION uniquement, pas de correction
   Si erreur -> Retransmission nécessaire (couches supérieures)


EXEMPLE TRAME COMPLÈTE (Wireshark)

Capture requête ARP :

Destination : FF:FF:FF:FF:FF:FF (Broadcast)
Source : 00:1A:2B:3C:4D:5E
Type : 0x0806 (ARP)
Données : Requête ARP (28 octets) + Padding (18 octets)
FCS : 0x1A2B3C4D

Taille totale : 64 octets (minimum)


TRAME AVEC VLAN TAG (802.1Q)

Format :

┌─────┬─────┬──────┬──────┬──────┬─────┐
│Dest │ Src │ VLAN │ Type │Données│ FCS │
│ 6o  │ 6o  │ 4o   │ 2o   │46-1500│ 4o  │
└─────┴─────┴──────┴──────┴──────┴─────┘

VLAN Tag (4 octets) :
┌─────────┬────────────────────────┐
│  TPID   │         TCI            │
│ 2 octets│      2 octets          │
│ 0x8100  │ PCP│CFI│   VLAN ID     │
│         │ 3b │1b │    12 bits    │
└─────────┴────────────────────────┘

TPID : Tag Protocol Identifier (toujours 0x8100)
PCP : Priority Code Point (0-7, QoS)
CFI : Canonical Format Indicator
VLAN ID : 1-4094 (0 et 4095 réservés)

Taille trame avec VLAN : 68-1522 octets


INTERPRÉTATION TRAME

Switch reçoit trame :

1. Lit MAC destination
2. Consulte table MAC
3. Si trouvé -> Transmet sur port correspondant (unicast)
4. Si non trouvé -> Flooding (tous ports sauf source)
5. Si broadcast (FF:FF:FF:FF:FF:FF) -> Flooding

Routeur reçoit trame Ethernet :

1. Vérifie MAC destination = Sa MAC ?
2. Si oui -> Retire encapsulation Ethernet
3. Lit EtherType -> 0x0800 (IPv4)
4. Passe paquet IP à stack IP (Couche 3)


TAILLES TRAMES

Minimum :
- Sans VLAN : 64 octets
- Avec VLAN : 68 octets

Maximum (Standard) :
- Sans VLAN : 1518 octets
- Avec VLAN : 1522 octets

Jumbo Frames (Non-standard) :
- Jusqu'à 9216 octets (typique data center)
- Avantage : Moins de overhead (moins de headers par données)
- Inconvénient : Tous équipements doivent supporter
"""


# ----------------------------------------------------------------------------
# [SIGNAL] PARTIE 4 : CSMA/CD (Carrier Sense Multiple Access with Collision Detection)
# ----------------------------------------------------------------------------

"""
CSMA/CD


CONTEXTE

Utilisé : Ethernet partagé (hubs, 10BASE-T, 100BASE-TX half-duplex)

Obsolète : Pratiquement (full-duplex élimine collisions)

Intérêt : Compréhension historique + Certification (CCNA)


PRINCIPE CSMA/CD

4 composantes :


1. CARRIER SENSE (CS) - Écoute de porteuse
   ═══════════════════════════════════════

Avant d'émettre, écouter le média

État média :
- IDLE (libre) : Personne n'émet -> OK pour émettre
- BUSY (occupé) : Quelqu'un émet -> ATTENDRE

Méthode : Détecter tension sur câble


2. MULTIPLE ACCESS (MA) - Accès multiple
   ═══════════════════════════════════════

Tous les nœuds ont un accès ÉGAL au média

Pas de priorité, pas de maître
-> Démocratique

Problème : Collisions possibles !


3. COLLISION DETECTION (CD) - Détection collision
   ════════════════════════════════════════════════

Pendant émission, ÉCOUTER simultanément

Signal reçu ≠ Signal émis ?
-> COLLISION détectée !

Méthode : Comparer tension émise vs reçue


4. BACKOFF - Temporisation aléatoire
   ═══════════════════════════════════

Après collision :
1. Arrêter transmission
2. Envoyer JAM signal (alerte autres)
3. Attendre délai ALÉATOIRE
4. Réessayer

Algorithme : Exponential Backoff (détaillé ci-dessous)


ALGORITHME DÉTAILLÉ


ÉTAPE 1 : Écouter (Carrier Sense)
──────────────────────────────────

Station veut émettre

Action : Écouter média

Si BUSY -> Attendre jusqu'à IDLE
Si IDLE -> Étape 2


ÉTAPE 2 : Attendre IFG (Inter-Frame Gap)
─────────────────────────────────────────

Même si média libre, attendre 9.6 µs (96 bit-times)

Pourquoi ? Laisser récepteurs "respirer" entre trames

IFG = 96 bits / 10 Mbps = 9.6 µs


ÉTAPE 3 : Émettre
──────────────────

Commencer transmission trame

Simultanément : ÉCOUTER (détection collision)


ÉTAPE 4 : Détection collision
──────────────────────────────

Pendant émission, comparer :
- Signal émis
- Signal reçu (écouté sur câble)

Si identiques -> OK, continuer

Si différents -> COLLISION ! Étape 5


ÉTAPE 5 : Traitement collision
───────────────────────────────

Actions :
1. ARRÊTER transmission immédiatement
2. Envoyer JAM signal (32-48 bits)
3. Incrémenter compteur tentatives
4. Si tentatives ≤ 16 -> Backoff (Étape 6)
5. Si tentatives > 16 -> ABANDONNER (erreur réseau)


ÉTAPE 6 : Backoff exponentiel
──────────────────────────────

Calcul délai d'attente :

k = min(tentatives, 10)
Délai = random(0, 2^k - 1) × slot_time

slot_time = 512 bit-times = 51.2 µs (10 Mbps)

Exemples :

Tentative 1 : k=1, délai = 0 ou 1 slot (0-51.2 µs)
Tentative 2 : k=2, délai = 0,1,2 ou 3 slots (0-153.6 µs)
Tentative 3 : k=3, délai = 0-7 slots (0-358.4 µs)
...
Tentative 10+ : k=10, délai = 0-1023 slots (0-52.4 ms)

Après attente -> Retour Étape 1


[GRAPHIQUE] EXEMPLE CONCRET

PC1 et PC2 veulent émettre simultanément

Temps 0 : Les deux écoutent -> IDLE [OK]
Temps 10µs : Les deux attendent IFG (9.6µs) [OK]
Temps 20µs : Les deux commencent émission !

Temps 25µs : Collision détectée ! [X]
- Signaux se superposent sur câble
- PC1 et PC2 détectent : reçu ≠ émis

Temps 26µs : 
- PC1 et PC2 arrêtent
- Envoient JAM signal
- PC1 : Tentative 1 -> Backoff 0 ou 1 slot
- PC2 : Tentative 1 -> Backoff 0 ou 1 slot

Supposons :
- PC1 tire 0 slot (0 µs) -> Émet immédiatement
- PC2 tire 1 slot (51.2 µs) -> Attend

Temps 36µs : PC1 réémet (PC2 écoute, détecte BUSY, attend)
Temps 100µs : PC1 finit transmission
Temps 110µs : PC2 détecte IDLE, attend IFG, émet [OK]

Collision résolue !


DOMAINE DE COLLISION

= Zone où collisions peuvent se produire

Hub : 1 domaine de collision (tous ports)
Switch : 1 domaine par port (pas de collisions)

[GRAPHIQUE] Illustration :

Hub :
  ┌───┴───┐
  │       │ <- 1 domaine de collision
  └───┬───┘    (tous partagent)
 PC1 PC2 PC3

Switch :
  ┌───┴───┐
  │ │ │ │ │ <- 3 domaines séparés
  └─┴─┴─┴─┘
 PC1 PC2 PC3


SLOT TIME

= Temps minimal pour détecter collision

Calcul : 2 × Temps propagation maximal

Ethernet 10 Mbps : 512 bit-times = 51.2 µs

Pourquoi 512 bits ?
- Distance max segment : 2500m
- Vitesse signal : ~200,000 km/s
- Aller-retour : 2 × 2500m / 200,000 km/s = 25 µs
- Marge sécurité : × 2 ≈ 51.2 µs


TRAME MINIMUM 64 OCTETS

Pourquoi 64 octets minimum ?

Durée émission ≥ 2 × Temps propagation max

64 octets × 8 = 512 bits
512 bits / 10 Mbps = 51.2 µs = Slot time [OK]

Si trame < 64 octets :
-> Émission finie avant détection collision
-> Collision non détectée !

Solution : Padding si données < 46 octets


EFFICACITÉ CSMA/CD

Charge faible (<30%) : Efficacité ~95%
Charge moyenne (30-70%) : Efficacité ~50-80%
Charge élevée (>70%) : Efficacité ~30% (collisions fréquentes)

[IDEE] C'est pourquoi hubs = Mauvaises performances charge élevée


OBSOLESCENCE CSMA/CD

Full-Duplex Ethernet (switchs) :
- Émission ET réception simultanées sur paires séparées
- Pas de collision possible !
- CSMA/CD désactivé

IEEE 802.3 2018 : CSMA/CD retiré pour 1 Gbps et +
(Gigabit Ethernet = Full-duplex uniquement)

[IDEE] CSMA/CD = Histoire
   Mais important pour compréhension Ethernet classique
"""


# ----------------------------------------------------------------------------
# [SYNC] PARTIE 5 : HALF-DUPLEX vs FULL-DUPLEX
# ----------------------------------------------------------------------------

"""
HALF-DUPLEX vs FULL-DUPLEX


HALF-DUPLEX
═══════════

= Communication bidirectionnelle NON SIMULTANÉE

Caractéristiques :
- Émission OU réception (pas les deux ensemble)
- Média partagé
- Collisions possibles
- CSMA/CD nécessaire

[GRAPHIQUE] Timeline :

A émet ──────[BLACK_RIGHT-POINTING_POINTER]
            B émet ──────[BLACK_RIGHT-POINTING_POINTER]
                      A émet ──────[BLACK_RIGHT-POINTING_POINTER]

(Tour à tour)

Équipements :
- Hubs
- 10BASE-T (avec hub)
- 100BASE-TX (avec hub)

Débit effectif : 50% du débit nominal
(Temps partagé entre émission/réception)

Exemple : 100 Mbps half-duplex
-> ~50 Mbps effectif par sens


FULL-DUPLEX
════════════

= Communication bidirectionnelle SIMULTANÉE

Caractéristiques :
- Émission ET réception simultanées
- Paires séparées (TX/RX)
- PAS de collisions
- CSMA/CD désactivé

[GRAPHIQUE] Timeline :

A émet ──────[BLACK_RIGHT-POINTING_POINTER]──────[BLACK_RIGHT-POINTING_POINTER]──────[BLACK_RIGHT-POINTING_POINTER]
B émet ──────[BLACK_RIGHT-POINTING_POINTER]──────[BLACK_RIGHT-POINTING_POINTER]──────[BLACK_RIGHT-POINTING_POINTER]

(Simultané)

Équipements :
- Switchs
- 1000BASE-T (toujours full-duplex)
- 10GBASE-T (toujours full-duplex)

Débit effectif : 100% dans chaque sens

Exemple : 100 Mbps full-duplex
-> 100 Mbps TX + 100 Mbps RX = 200 Mbps agrégé


CÂBLAGE HALF vs FULL

10/100 Mbps (RJ45 - 4 paires, 2 utilisées) :

Half-Duplex :
- Paire 1-2 : TX/RX partagé
- Paire 3-6 : TX/RX partagé
(Alternance selon qui émet)

Full-Duplex :
- Paire 1-2 : TX (émission)
- Paire 3-6 : RX (réception)
(Simultané sur paires séparées)


1000 Mbps (RJ45 - 4 paires, 4 utilisées) :

Full-Duplex uniquement :
- 4 paires utilisées
- Chaque paire : TX + RX simultané
- Annulation d'écho (echo cancellation)


NÉGOCIATION DUPLEX

Auto-négociation (Autoneg) :

Lors connexion, équipements négocient :
1. Vitesse (10/100/1000 Mbps)
2. Duplex (half/full)

Hiérarchie préférence (Auto-négociation) :
1. 1000 Mbps full-duplex
2. 100 Mbps full-duplex
3. 100 Mbps half-duplex
4. 10 Mbps full-duplex
5. 10 Mbps half-duplex

Résultat : Meilleure capacité commune


PROBLÈME : DUPLEX MISMATCH

Cause : Configuration manuelle incorrecte

Exemple :
Switch port : Full-duplex (forcé)
PC : Auto (détecte half-duplex par erreur)

Symptômes :
[X] Collisions excessives
[X] Erreurs FCS
[X] Performance dégradée (50% vitesse attendue)
[X] Connexion instable

Diagnostic :
```
show interface gigabitethernet 0/1
```

Vérifier : Duplex match des deux côtés

Solution : 
- Préférer auto-négociation des DEUX côtés
- Ou forcer full-duplex des DEUX côtés


COMPARAISON

┌────────────────┬─────────────┬─────────────┐
│   Critère      │ Half-Duplex │ Full-Duplex │
├────────────────┼─────────────┼─────────────┤
│ Direction      │Tour à tour  │ Simultané   │
│ Collisions     │    Oui      │    Non      │
│ CSMA/CD        │   Actif     │  Désactivé  │
│ Débit effectif │    ~50%     │    100%     │
│ Domaine collis.│   Partagé   │    Aucun    │
│ Équipement     │    Hub      │   Switch    │
│ Usage moderne  │ Obsolète    │  Standard   │
└────────────────┴─────────────┴─────────────┘


[IDEE] RECOMMANDATION :
[OK] TOUJOURS utiliser full-duplex
[OK] Auto-négociation des DEUX côtés
[X] Éviter configuration manuelle (sauf besoin spécifique)


VÉRIFICATION DUPLEX

Windows :
```
Get-NetAdapter | Select Name, LinkSpeed, FullDuplex
```

Linux :
```
ethtool eth0 | grep Duplex
```

Cisco Switch :
```
show interface gigabitethernet 0/1 | include duplex
```

Résultat attendu :
"Full-duplex" ou "Full" [OK]
"""


# ============================================================================
# [OBJECTIF] FIN PARTIE 1 DU CHAPITRE 5
# ============================================================================

"""
[DOCS] RÉCAPITULATIF PARTIE 1

Vous avez appris :

[OK] HISTORIQUE ETHERNET :
   - Invention 1973 (Xerox PARC)
   - Standardisation IEEE 802.3 (1983)
   - Évolution 10 Mbps -> 400 Gbps
   - Topologies : Bus -> Étoile
   
[OK] NORMES IEEE 802.3 :
   - Nomenclature XXbaseYY
   - 10BASE-T, 100BASE-TX, 1000BASE-T
   - 10GBASE-T, 100GBASE, 400GBASE
   - Compatibilité et auto-négociation
   
[OK] TRAME ETHERNET :
   - Format complet (Préambule, MAC, EtherType, Données, FCS)
   - 64-1518 octets (standard)
   - VLAN tag 802.1Q
   - CRC-32 pour détection erreurs
   
[OK] CSMA/CD :
   - Carrier Sense, Multiple Access, Collision Detection
   - Backoff exponentiel
   - Slot time, domaine de collision
   - Obsolète (full-duplex)
   
[OK] HALF vs FULL-DUPLEX :
   - Half : Tour à tour, collisions
   - Full : Simultané, pas de collisions
   - Duplex mismatch
   - Full-duplex = Standard moderne


-> SUITE : PARTIE 2

Dans le prochain fichier :
- Auto-négociation détaillée
- Évolution vitesses (Gigabit, 10G, au-delà)
- Power over Ethernet (PoE)
- Ethernet commuté (switched)
- Troubleshooting Ethernet
- Exercices pratiques
"""

# ============================================================================
# CHAPITRE 5 (PARTIE 2) : ETHERNET AVANCÉ ET EXERCICES
# ============================================================================


# ----------------------------------------------------------------------------
# [OUTIL] PARTIE 6 : AUTO-NÉGOCIATION (AUTONEGOTIATION)
# ----------------------------------------------------------------------------

"""
AUTO-NÉGOCIATION


DÉFINITION

Protocole permettant à deux équipements de négocier automatiquement :
- Vitesse (10/100/1000/10000 Mbps)
- Duplex (half/full)
- Contrôle de flux (pause frames)
- Capacités spécifiques (MDI/MDIX)

Standard : IEEE 802.3u (Fast Link Pulse - FLP)


POURQUOI AUTO-NÉGOCIATION ?

Problèmes avant auto-négociation :
[X] Configuration manuelle fastidieuse
[X] Erreurs fréquentes (duplex mismatch)
[X] Incompatibilité entre équipements

Avec auto-négociation :
[OK] Plug-and-play
[OK] Configuration optimale automatique
[OK] Compatibilité garantie


FONCTIONNEMENT

ÉTAPE 1 : Envoi FLP (Fast Link Pulse)
──────────────────────────────────────

Chaque équipement envoie séquence d'impulsions (FLP)

FLP contient :
- Capacités supportées (vitesses, duplex)
- Priorités
- Identifiant fabricant

Fréquence : ~16 ms par burst


ÉTAPE 2 : Réception et analyse
───────────────────────────────

Équipement reçoit FLP du partenaire
Analyse capacités communes


ÉTAPE 3 : Sélection configuration
──────────────────────────────────

Algorithme de priorité (de la plus haute à la plus basse) :

1. 10GBASE-T full-duplex
2. 1000BASE-T full-duplex
3. 1000BASE-T half-duplex
4. 100BASE-TX full-duplex
5. 100BASE-T4
6. 100BASE-TX half-duplex
7. 10BASE-T full-duplex
8. 10BASE-T half-duplex

Résultat : Meilleure capacité COMMUNE

Exemple :
- PC supporte : 10/100/1000 full-duplex
- Switch supporte : 10/100/1000 full-duplex
- Négociation : 1000 Mbps full-duplex [OK]


ÉTAPE 4 : Configuration link
─────────────────────────────

Les deux équipements configurent interface
Lien établi avec paramètres négociés


PARALLEL DETECTION

Mécanisme de secours si partenaire ne supporte pas auto-négociation

Équipement moderne détecte :
- 10BASE-T : Détection présence signal
- 100BASE-TX : Détection idle pattern

Configure automatiquement vitesse détectée
Duplex : half-duplex par défaut (sécurité)

[ATTENTION] Problème possible : Duplex mismatch
Si switch auto (-> full) et vieux hub (half)


LINK INTEGRITY TEST

Après établissement lien, échange périodique de signaux

10BASE-T : Normal Link Pulse (NLP) toutes les 16 ms
100BASE-TX : Idle patterns

But : Vérifier lien toujours actif
Si signaux arrêtent -> Lien considéré down


MDI/MDIX AUTO

MDI : Media Dependent Interface
MDIX : Media Dependent Interface Crossover

Problème historique :
- PC = MDI (émet sur pins 1-2)
- Switch = MDIX (émet sur pins 3-6)
- Besoin câble droit PC->Switch, câble croisé PC->PC

Auto MDI/MDIX (802.3ab - Gigabit Ethernet) :
Équipements détectent et inversent automatiquement pins

[OK] N'importe quel câble fonctionne !
[OK] Câble droit partout


VÉRIFICATION AUTO-NÉGOCIATION

Cisco Switch :
```
show interfaces gigabitethernet 0/1
```

Résultat :
```
GigabitEthernet0/1 is up, line protocol is up
  Hardware is Gigabit Ethernet, address is 0026.0b12.3456
  MTU 1500 bytes, BW 1000000 Kbit/sec, DLY 10 usec
  Full-duplex, 1000Mb/s, link type is auto, media type is 10/100/1000BaseTX
  ...
```

Mots-clés :
- "auto" : Auto-négociation active
- "Full-duplex" : Duplex négocié
- "1000Mb/s" : Vitesse négociée


Linux :
```
ethtool eth0
```

Résultat :
```
Settings for eth0:
    Supported ports: [ TP ]
    Supported link modes:   10baseT/Half 10baseT/Full
                            100baseT/Half 100baseT/Full
                            1000baseT/Full
    Supports auto-negotiation: Yes
    Advertised link modes:  10baseT/Half 10baseT/Full
                            100baseT/Half 100baseT/Full
                            1000baseT/Full
    Advertised auto-negotiation: Yes
    Speed: 1000Mb/s
    Duplex: Full
    Auto-negotiation: on
```


DÉSACTIVER AUTO-NÉGOCIATION (Déconseillé)

Cisco Switch :
```
interface gigabitethernet 0/1
 speed 1000
 duplex full
 no negotiation auto
```

[ATTENTION] À faire des DEUX côtés (sinon duplex mismatch !)


PROBLÈMES AUTO-NÉGOCIATION

Problème 1 : Duplex Mismatch
─────────────────────────────

Cause : Un côté auto, un côté forcé

Exemple :
- PC : Auto -> Détecte 100 Mbps mais half-duplex (défaut)
- Switch : Forcé 100 full-duplex

Symptômes :
- Connexion fonctionne mais lente
- Erreurs FCS
- Late collisions

Solution : Auto des deux côtés OU forcé des deux côtés


Problème 2 : Câble défectueux
──────────────────────────────

Symptômes :
- Négociation échoue
- Lien flapping (up/down répété)

Solution : Tester/remplacer câble


Problème 3 : Incompatibilité
────────────────────────────

Très rare avec équipements modernes

Solution : Mise à jour firmware


BONNES PRATIQUES

[OK] Laisser auto-négociation activée (défaut)
[OK] Éviter forcer vitesse/duplex (sauf besoin spécifique)
[OK] Si forcer, forcer des DEUX côtés
[OK] Utiliser câbles Cat5e minimum (Gigabit)
[OK] Vérifier configuration après connexion
"""


# ----------------------------------------------------------------------------
# [RAPIDE] PARTIE 7 : POWER OVER ETHERNET (PoE)
# ----------------------------------------------------------------------------

"""
POWER OVER ETHERNET (PoE)


DÉFINITION

Technologie permettant de transporter ÉLECTRICITÉ + DONNÉES
sur le même câble Ethernet.

Avantages :
[OK] Pas besoin prise électrique pour appareils
[OK] Installation flexible (plafond, murs)
[OK] Coût réduit (pas de câblage électrique)
[OK] Gestion centralisée alimentation (UPS)


STANDARDS PoE

┌────────────┬────────────┬──────────┬────────────┬─────────┐
│  Standard  │    Nom     │Puissance │Puissance   │  Année  │
│            │            │  PSE     │    PD      │         │
├────────────┼────────────┼──────────┼────────────┼─────────┤
│ 802.3af    │ PoE        │ 15.4 W   │ 12.95 W    │  2003   │
│ 802.3at    │ PoE+       │ 30 W     │ 25.5 W     │  2009   │
│ 802.3bt    │ PoE++      │ 60 W     │ 51 W       │  2018   │
│ 802.3bt    │ PoE++ Type4│ 100 W    │ 71 W       │  2018   │
└────────────┴────────────┴──────────┴────────────┴─────────┘

PSE : Power Sourcing Equipment (switch, injecteur)
PD : Powered Device (téléphone IP, caméra, AP)

Différence PSE/PD : Pertes dans câble (~15-20%)


802.3af (PoE) - 2003
════════════════════

Puissance : 15.4 W (PSE) -> 12.95 W (PD)
Tension : 44-57 VDC
Paires : 2 ou 4 (Alternative A ou B)

Appareils alimentés :
[OK] Téléphones IP basiques
[OK] Caméras IP basse résolution
[OK] Points d'accès Wi-Fi simples

Classe 0 : 0.44-12.95 W (défaut)
Classe 1 : 0.44-3.84 W
Classe 2 : 3.84-6.49 W
Classe 3 : 6.49-12.95 W


802.3at (PoE+) - 2009
═════════════════════

Puissance : 30 W (PSE) -> 25.5 W (PD)
Tension : 50-57 VDC
Paires : 2 ou 4

Appareils alimentés :
[OK] Téléphones IP avancés (écran tactile)
[OK] Caméras IP PTZ
[OK] Points d'accès Wi-Fi 802.11ac
[OK] Écrans d'affichage

Rétrocompatible 802.3af

Classe 4 : 12.95-25.5 W


802.3bt (PoE++) - 2018
══════════════════════

Type 3 (60 W) :
- Puissance : 60 W (PSE) -> 51 W (PD)
- Tension : 50-57 VDC
- Paires : 4 obligatoire

Type 4 (100 W) :
- Puissance : 100 W (PSE) -> 71 W (PD)
- Tension : 52-57 VDC
- Paires : 4 obligatoire

Appareils alimentés :
[OK] Points d'accès Wi-Fi 6 (802.11ax)
[OK] Caméras 4K PTZ
[OK] Écrans LED
[OK] Ordinateurs portables via USB-C
[OK] Mini PCs

Rétrocompatible 802.3af/at


MÉTHODES D'ALIMENTATION

Alternative A (Mode A)
──────────────────────

Alimentation sur paires données (1-2 et 3-6)

10/100 Mbps :
- Paires 1-2 : Données + Alimentation (+ 44-57V)
- Paires 3-6 : Données + Alimentation (- Return)
- Paires 4-5 et 7-8 : Inutilisées

Gigabit :
- Toutes paires utilisées pour données ET alimentation


Alternative B (Mode B)
──────────────────────

Alimentation sur paires libres (4-5 et 7-8)

10/100 Mbps :
- Paires 1-2 et 3-6 : Données uniquement
- Paires 4-5 : Alimentation (+)
- Paires 7-8 : Alimentation (-)

Gigabit :
- Mode B = 4 paires (données + alimentation sur toutes)


802.3bt (PoE++) :
─────────────────

4 paires obligatoire
Alimentation sur les 4 paires simultanément
-> Double puissance disponible


DÉTECTION ET CLASSIFICATION

ÉTAPE 1 : Détection
───────────────────

PSE (switch) envoie tension faible (2.8-10V)
Mesure résistance entre pins

Si résistance = 23.75-26.25 kΩ -> PD détecté [OK]
Sinon -> Pas de PD, pas d'alimentation

[ATTENTION] Évite alimenter équipements non-PoE (protection)


ÉTAPE 2 : Classification
────────────────────────

PSE envoie tension 15.5-20.5V
Mesure courant consommé

Courant -> Détermine classe (0-8)
Classe -> Puissance allouée

Exemple :
- Classe 3 (802.3af) : 12.95W
- Classe 4 (802.3at) : 25.5W


ÉTAPE 3 : Alimentation
──────────────────────

PSE fournit tension 44-57V selon classe
PD alimenté et fonctionne


ÉTAPE 4 : Monitoring
────────────────────

PSE surveille continuellement :
- Courant consommé
- Résistance (PD toujours connecté ?)

Si PD déconnecté -> Coupe alimentation


ÉQUIPEMENTS PoE

PSE (Power Sourcing Equipment)
───────────────────────────────

1. Switch PoE intégré
   ─────────────────
   
   Exemple : Cisco Catalyst 9200-48P
   - 48 ports PoE+
   - Budget power : 740W
   - Gère automatiquement distribution
   
   Avantages :
   [OK] Tout-en-un
   [OK] Gestion intelligente
   [OK] Moins de câbles

2. Injecteur PoE (Midspan)
   ───────────────────────
   
   Dispositif intermédiaire ajoutant PoE
   
   Switch non-PoE -> [Injecteur] -> Appareil PoE
   
   Types :
   - Mono-port (1 port)
   - Multi-ports (4, 8, 16 ports)
   
   Avantages :
   [OK] Ajoute PoE à switch existant
   [OK] Moins cher que remplacer switch
   
   Inconvénients :
   [X] Équipement supplémentaire
   [X] Point de défaillance additionnel


PD (Powered Device)
───────────────────

Exemples :
- Téléphones IP (VoIP)
- Caméras IP (surveillance)
- Points d'accès Wi-Fi
- Écrans d'affichage
- Contrôleurs d'accès (badges)
- Enceintes IP


BUDGET POWER

Switch PoE a budget power total limité

Exemple : Switch 24 ports PoE+
- Budget : 370W
- Par port : 30W max (802.3at)
- 24 × 30W = 720W (théorique)

Mais budget = 370W !
-> Peut alimenter ~12 ports à 30W chacun
-> Ou 24 ports à ~15W chacun

Gestion intelligente :
- Priorité par port configurable
- Allocation dynamique selon besoin réel


CALCUL BUDGET

Inventaire appareils :
- 12 téléphones IP : 7W chacun = 84W
- 6 caméras IP : 12W chacune = 72W
- 4 APs Wi-Fi : 20W chacun = 80W

Total : 84 + 72 + 80 = 236W

Budget switch nécessaire : 236W × 1.2 (marge) = 283W

Switch avec budget ≥ 283W requis


VÉRIFICATION PoE

Cisco Switch :
```
show power inline
```

Résultat :
```
Interface  Admin  Oper   Power   Device              Class
           State  State  (Watts)
---------- ------ ------ ------- ------------------- -----
Gi0/1      auto   on     15.4    IP Phone 7945       3
Gi0/2      auto   on     25.5    AIR-CAP3602I-E-K9   4
Gi0/3      auto   off    0.0     n/a                 n/a
...
Total: 40.9W     Available: 699.1W    Used: 40.9W
```


DÉPANNAGE PoE

Problème : Appareil PoE ne s'allume pas
────────────────────────────────────────

Vérifications :

1. Switch supporte PoE sur ce port ?
   ```
   show power inline gi0/1
   ```

2. Budget power suffisant ?
   ```
   show power inline
   ```
   Vérifier "Available"

3. Câble OK ? (Cat5e minimum, < 100m)
   Tester avec autre câble

4. Appareil compatible PoE ?
   Vérifier spécifications

5. Port administrativement activé ?
   ```
   interface gi0/1
    power inline auto
   ```

Solutions :
- Libérer budget (débrancher autres appareils)
- Utiliser injecteur PoE externe
- Remplacer câble
"""


# ----------------------------------------------------------------------------
# [RAPIDE] PARTIE 8 : GIGABIT ETHERNET ET AU-DELÀ
# ----------------------------------------------------------------------------

"""
GIGABIT ETHERNET (1000 Mbps)


1000BASE-T (Cuivre)
═══════════════════

Standard : IEEE 802.3ab (1999)

Caractéristiques :
- Débit : 1000 Mbps (1 Gbps)
- Média : Cat5e ou Cat6 (4 paires)
- Distance : 100 mètres
- Connecteur : RJ45
- Full-duplex uniquement

Encodage : PAM-5 (5 niveaux)
- 4 paires simultanées
- 250 Mbaud par paire
- 2 bits par symbole
- 250 Mbaud × 2 bits × 4 paires = 2000 Mbps
- Avec overhead encodage -> 1000 Mbps

Technologies clés :
- Echo cancellation (annulation d'écho)
- Full-duplex sur chaque paire (TX+RX simultané)
- DSP (Digital Signal Processing)

Standard actuel réseaux d'entreprise


1000BASE-SX (Fibre multimode)
══════════════════════════════

Standard : IEEE 802.3z (1998)

Caractéristiques :
- Débit : 1 Gbps
- Média : Fibre multimode (850nm)
- Distance : 220-550m (selon OM)
  * OM1 (62.5µm) : 220m
  * OM2 (50µm) : 275m
  * OM3 (50µm) : 550m
- Connecteur : LC, SC
- Transceiver : SFP (Small Form-factor Pluggable)

Usage : Backbone bâtiment, inter-étages


1000BASE-LX (Fibre monomode)
════════════════════════════

Standard : IEEE 802.3z (1998)

Caractéristiques :
- Débit : 1 Gbps
- Média : Fibre monomode (1310nm)
- Distance : 5-10 km
- Connecteur : LC, SC
- Transceiver : SFP

Usage : Liaisons inter-bâtiments, campus


10 GIGABIT ETHERNET (10 Gbps)
══════════════════════════════


10GBASE-T (Cuivre)
──────────────────

Standard : IEEE 802.3an (2006)

Caractéristiques :
- Débit : 10 Gbps
- Média : Cat6a ou Cat7 (Cat6 limité 55m)
- Distance : 100m (Cat6a), 55m (Cat6)
- Connecteur : RJ45
- Transceiver : RJ45 10GBASE-T

Encodage : 128b/130b + DSQ128 (16 niveaux)

Défis :
- Consommation élevée (5-8W par port)
- Dissipation thermique
- Coût élevé

Usage :
- Serveurs data center
- Uplinks switchs
- Stockage (NAS, SAN)


10GBASE-SR (Fibre multimode)
─────────────────────────────

Standard : IEEE 802.3ae (2002)

Caractéristiques :
- Débit : 10 Gbps
- Média : Fibre multimode (850nm)
- Distance : 26-400m (selon OM)
  * OM1 : 33m
  * OM2 : 82m
  * OM3 : 300m
  * OM4 : 400m
- Transceiver : SFP+ (Enhanced SFP)

Standard data center


10GBASE-LR (Fibre monomode)
───────────────────────────

Caractéristiques :
- Débit : 10 Gbps
- Média : Fibre monomode (1310nm)
- Distance : 10 km
- Transceiver : SFP+

Usage : Liaisons longue distance


25/40/100 GIGABIT ETHERNET
═══════════════════════════


25GBASE (25 Gbps)
─────────────────

Standard : IEEE 802.3by (2016)

Transceiver : SFP28 (1 canal 25G)

Fibre :
- 25GBASE-SR : 100m (OM4)
- 25GBASE-LR : 10 km (monomode)

Usage : Serveurs modernes (remplace 10G)


40GBASE (40 Gbps)
─────────────────

Standard : IEEE 802.3ba (2010)

Méthode : 4 canaux × 10G agrégés

Transceiver : QSFP+ (Quad SFP+)

Fibre :
- 40GBASE-SR4 : 100m (OM3), 150m (OM4)
- 40GBASE-LR4 : 10 km (monomode)

Usage : Uplinks data center


100GBASE (100 Gbps)
───────────────────

Standard : IEEE 802.3ba (2010), 802.3bj (2014)

Méthodes :
- 4 canaux × 25G (100GBASE-SR4)
- 10 canaux × 10G

Transceiver : QSFP28, CFP

Fibre :
- 100GBASE-SR4 : 70-100m (OM3/OM4)
- 100GBASE-LR4 : 10 km (monomode)
- 100GBASE-ER4 : 40 km (monomode)

Usage : Core réseau, hyperscalers


200/400 GIGABIT ETHERNET
═════════════════════════

200GBASE : 4 × 50G (IEEE 802.3bs - 2017)
400GBASE : 8 × 50G (IEEE 802.3bs - 2017)

Transceiver :
- QSFP56 (200G)
- QSFP-DD (Double Density - 400G)
- OSFP (Octal SFP - 400G)

Usage :
- Backbone Internet
- Interconnexion data centers géants
- Cloud providers (AWS, Google, Facebook)


ÉVOLUTION DÉBITS

┌──────┬───────────────────────────────┐
│Année │  Débit max commercialisé      │
├──────┼───────────────────────────────┤
│ 1983 │  10 Mbps (10BASE5)            │
│ 1995 │  100 Mbps (100BASE-TX)        │
│ 1999 │  1 Gbps (1000BASE-T)          │
│ 2002 │  10 Gbps (10GBASE-SR)         │
│ 2010 │  40 Gbps (40GBASE)            │
│ 2010 │  100 Gbps (100GBASE)          │
│ 2017 │  200 Gbps (200GBASE)          │
│ 2017 │  400 Gbps (400GBASE)          │
│ 2024 │  800 Gbps (802.3df - en cours)│
│ 2026?│  1.6 Tbps (en développement)  │
└──────┴───────────────────────────────┘

Multiplication par 160,000 en 40 ans !


CHOIX VITESSE SELON USAGE

Bureau utilisateur : 1 Gbps (1000BASE-T)
───────────────────────────────────────

Suffisant pour :
[OK] Navigation web
[OK] Email
[OK] Bureautique
[OK] Vidéoconférence HD

Switch accès : 1G ports, 10G uplinks


Serveurs : 10 Gbps minimum
──────────────────────────

Suffisant pour :
[OK] Virtualisation
[OK] Bases de données
[OK] Stockage réseau
[OK] Agrégation utilisateurs

Switch distribution : 10G/25G, 40G/100G uplinks


Core réseau : 40/100 Gbps et plus
──────────────────────────────────

Nécessaire pour :
[OK] Agrégation data center
[OK] Backbone inter-sites
[OK] Cloud providers

Switch core : 100G/400G
"""


# ----------------------------------------------------------------------------
# [RECHERCHE] PARTIE 9 : TROUBLESHOOTING ETHERNET
# ----------------------------------------------------------------------------

"""
TROUBLESHOOTING ETHERNET


APPROCHE MÉTHODIQUE

Suivre modèle OSI (bottom-up) :


COUCHE 1 - PHYSIQUE
═══════════════════

Symptômes :
- Pas de link
- LED éteinte
- "No cable detected"

Vérifications :

1. Câble branché ?
   [OK] Vérifier connexions physiques
   [OK] Vérifier clip RJ45 pas cassé

2. Câble endommagé ?
   [OK] Inspecter visuellement
   [OK] Tester avec testeur de câble
   [OK] Essayer câble connu fonctionnel

3. Bonne catégorie câble ?
   [OK] Gigabit -> Cat5e minimum
   [OK] 10G -> Cat6a minimum

4. Distance < 100m ?
   [OK] Mesurer longueur
   [OK] Si > 100m -> Utiliser fibre ou répéteur

5. Port switch actif ?
   [OK] Vérifier LED switch
   [OK] Essayer autre port
   [OK] Vérifier configuration switch

Commandes diagnostic :

Windows :
```
ipconfig /all
```
Chercher "Media disconnected"

Linux :
```
ip link show eth0
ethtool eth0 | grep "Link detected"
```

Cisco Switch :
```
show interface gi0/1 status
show interface gi0/1
```


COUCHE 2 - LIAISON
══════════════════

Symptômes :
- Link UP mais pas de trafic
- Erreurs FCS
- Collisions excessives
- Performance dégradée

Vérifications :

1. Duplex mismatch ?
   ─────────────────
   
   Cisco :
   ```
   show interface gi0/1 | include duplex
   ```
   
   Attendu : "Full-duplex" des deux côtés
   
   Solution : Auto-négociation ou forcer full des deux côtés

2. Vitesse mismatch ?
   ──────────────────
   
   Vérifier vitesse négociée = Vitesse attendue
   
   Cisco :
   ```
   show interface gi0/1 | include BW
   ```

3. Erreurs FCS (Frame Check Sequence) ?
   ────────────────────────────────────
   
   Cisco :
   ```
   show interface gi0/1 | include CRC
   ```
   
   Causes :
   - Câble défectueux
   - Interférences EMI
   - Duplex mismatch
   
   Solution : Remplacer câble, vérifier duplex

4. Collisions ?
   ────────────
   
   Cisco :
   ```
   show interface gi0/1 | include collision
   ```
   
   Late collisions : Duplex mismatch ou câble trop long
   
   Solution : Forcer full-duplex

5. Input/Output errors ?
   ─────────────────────
   
   Cisco :
   ```
   show interface gi0/1
   ```
   
   Ligne : "X input errors, Y CRC, Z frame, ..."
   
   Erreurs croissantes -> Problème physique

6. Table MAC correcte ?
   ────────────────────
   
   Cisco :
   ```
   show mac address-table interface gi0/1
   ```
   
   Vérifier MAC apprise sur bon port


PROBLÈMES FRÉQUENTS


Duplex Mismatch
═══════════════

Symptômes :
- Connexion lente (50% vitesse attendue)
- Erreurs FCS
- Late collisions
- "show interface" : nombreuses collisions

Diagnostic :
```
show interface gi0/1 | include duplex
```

Si un côté "half" et autre "full" -> MISMATCH [OK]

Solution :
```
interface gi0/1
 duplex full
 speed 1000
```

Ou laisser auto des deux côtés (préféré)


Câble défectueux
════════════════

Symptômes :
- Link flapping (up/down répété)
- Erreurs FCS
- Performance intermittente

Diagnostic :
1. Testeur de câble (TDR)
2. Observer compteurs erreurs :
   ```
   show interface gi0/1
   ```

Solution : Remplacer câble


Boucle réseau
═════════════

Symptômes :
- Broadcast storm
- CPU switch saturé
- Réseau complètement bloqué
- LEDs clignotent frénétiquement

Diagnostic :
```
show spanning-tree
```

Solution :
- Débrancher câble en boucle
- Activer Spanning Tree (STP)
- Activer BPDU Guard sur ports accès


Port saturé
═══════════

Symptômes :
- Performance dégradée
- Latence élevée
- Paquets droppés

Diagnostic :
```
show interface gi0/1 | include rate
```

Calculer utilisation :
Utilisation (%) = (Input rate + Output rate) / Bande passante

Si > 70% -> Saturé

Solution :
- Upgrader vitesse (1G -> 10G)
- Link aggregation (LACP)
- QoS (prioriser trafic critique)


COMMANDES DIAGNOSTIC ESSENTIELLES


Cisco IOS
─────────

Statut interface :
```
show interface gi0/1
show interface gi0/1 status
show ip interface brief
```

Statistiques :
```
show interface gi0/1 | include (errors|collision|CRC)
show interface gi0/1 counters
show interface gi0/1 counters errors
```

Réinitialiser compteurs :
```
clear counters gi0/1
```

Configuration :
```
show running-config interface gi0/1
```

Transceivers :
```
show interface gi0/1 transceiver
```

PoE :
```
show power inline gi0/1
```


Linux
─────

État interface :
```
ip link show eth0
ip addr show eth0
ethtool eth0
```

Statistiques :
```
ip -s link show eth0
ethtool -S eth0
```

Vitesse/Duplex :
```
ethtool eth0 | grep -E "Speed|Duplex"
```


OUTILS DIAGNOSTIC


Testeur de câble
────────────────

Teste :
[OK] Continuité (8 fils)
[OK] Court-circuit
[OK] Paires inversées
[OK] Distance jusqu'à défaut (TDR)

Exemples :
- Fluke Networks CableIQ
- Klein Tools VDV Scout Pro


Analyseur réseau
────────────────

Wireshark :
- Capture trames
- Analyse protocoles
- Détecte anomalies

Utilisation :
1. Capturer trafic port concerné
2. Filtrer par MAC/IP
3. Analyser trames (erreurs, retransmissions)


VÉRIFICATIONS PRÉVENTIVES

1. Monitoring régulier
   ───────────────────
   
   SNMP/Syslog pour alertes automatiques
   
   Surveiller :
   - Erreurs interface
   - Utilisation bande passante
   - État PoE
   - Température

2. Documentation
   ─────────────
   
   - Plan adressage
   - Cartographie réseau
   - Configuration backups

3. Maintenance câblage
   ───────────────────
   
   - Inspection visuelle périodique
   - Remplacement câbles suspects
   - Étiquetage clair

4. Firmware à jour
   ───────────────
   
   - Switchs
   - Transceivers
   - Cartes réseau
"""


# ----------------------------------------------------------------------------
# [COURS] EXERCICES PRATIQUES - CHAPITRE 5
# ----------------------------------------------------------------------------

"""
[IDEE] EXERCICES


═══════════════════════════════════════════════════════════
EXERCICE 1 : ANALYSE TRAME ETHERNET
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Capture Wireshark d'une trame Ethernet :

```
Destination: ff:ff:ff:ff:ff:ff
Source: 00:1a:2b:3c:4d:5e
Type: 0x0806 (ARP)
Data: 28 octets
Padding: 18 octets
FCS: 0x1a2b3c4d
```

Questions :

1. Quel est le type de cette trame (unicast/broadcast/multicast) ?
2. Quel protocole de couche 3 est encapsulé ?
3. Quelle est la taille totale de la trame (sans préambule) ?
4. Pourquoi y a-t-il du padding ?
5. Le FCS est-il correct ? (On suppose que oui)
6. Cette trame sera-t-elle transmise par un switch sur tous les ports ?


[OK] CORRECTION EXERCICE 1

1. TYPE DE TRAME
   ─────────────

   BROADCAST

   Explication :
   MAC destination = FF:FF:FF:FF:FF:FF
   -> Adresse broadcast Ethernet
   -> Tous les équipements du segment doivent recevoir


2. PROTOCOLE COUCHE 3
   ──────────────────

   ARP (Address Resolution Protocol)

   Explication :
   EtherType = 0x0806
   -> Code protocole ARP
   -> Résolution IP -> MAC


3. TAILLE TOTALE TRAME
   ───────────────────

   Calcul :
   - Destination MAC : 6 octets
   - Source MAC : 6 octets
   - EtherType : 2 octets
   - Data : 28 octets
   - Padding : 18 octets
   - FCS : 4 octets
   
   TOTAL : 6 + 6 + 2 + 28 + 18 + 4 = 64 octets


4. POURQUOI PADDING ?
   ──────────────────

   Trame Ethernet minimum = 64 octets (sans préambule)
   
   Sans padding :
   6 + 6 + 2 + 28 + 4 = 46 octets
   
   Manque : 64 - 46 = 18 octets
   
   Solution : Ajouter 18 octets de padding (0x00)
   
   Rôle padding :
   - Garantir taille minimum
   - Permettre détection collision (CSMA/CD)
   - Respecter slot time


5. FCS CORRECT ?
   ─────────────

   Oui (énoncé précise "on suppose que oui")
   
   Vérification :
   - Récepteur recalcule CRC-32 sur trame
   - Compare avec FCS reçu (0x1a2b3c4d)
   - Si identique -> Trame intègre [OK]
   
   Si différent -> Trame jetée (erreur transmission)


6. TRANSMISSION PAR SWITCH ?
   ─────────────────────────

   OUI, sur TOUS les ports (sauf port source)
   
   Explication :
   - MAC destination = Broadcast (FF:FF:FF:FF:FF:FF)
   - Switch DOIT transmettre broadcast sur tous ports
   - C'est le comportement normal pour ARP, DHCP, etc.
   
   Processus :
   1. Switch reçoit trame sur port X
   2. Lit MAC destination
   3. Détecte broadcast
   4. Flooding : Transmet sur tous ports actifs sauf X



═══════════════════════════════════════════════════════════
EXERCICE 2 : DIMENSIONNEMENT PoE
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Vous devez équiper un bureau avec :
- 24 téléphones IP (7W chacun)
- 12 caméras IP (15W chacune)
- 8 points d'accès Wi-Fi 6 (25W chacun)

Questions :

1. Quelle est la consommation totale ?
2. Avec une marge de 20%, quel budget power minimum ?
3. Quel standard PoE minimum pour chaque type d'appareil ?
4. Combien de switchs 24 ports PoE+ (budget 370W chacun) minimum ?
5. Si vous utilisez un switch 48 ports avec budget 740W, combien
   de ports resteront disponibles ?


[OK] CORRECTION EXERCICE 2

1. CONSOMMATION TOTALE
   ───────────────────

   Téléphones : 24 × 7W = 168W
   Caméras : 12 × 15W = 180W
   APs Wi-Fi 6 : 8 × 25W = 200W
   
   TOTAL : 168 + 180 + 200 = 548W


2. BUDGET AVEC MARGE 20%
   ─────────────────────

   Budget = Consommation × 1.20
   
   Budget = 548W × 1.20 = 657.6W
   
   Arrondi : 660W minimum


3. STANDARD PoE PAR APPAREIL
   ─────────────────────────

   Téléphones IP (7W) :
   -> 802.3af (PoE) [OK]
   Classe 2 : 3.84-6.49W disponible au PD
   OU Classe 3 : 6.49-12.95W (plus sûr)
   
   Caméras IP (15W) :
   -> 802.3at (PoE+) [OK]
   Classe 4 : 12.95-25.5W disponible au PD
   802.3af insuffisant (max 12.95W)
   
   APs Wi-Fi 6 (25W) :
   -> 802.3at (PoE+) [OK]
   Classe 4 : 12.95-25.5W disponible au PD
   Juste suffisant (limite haute)


4. NOMBRE DE SWITCHS 24P PoE+ (370W)
   ──────────────────────────────────

   Budget total nécessaire : 660W
   Budget par switch : 370W
   
   Nombre switchs = 660 / 370 = 1.78
   
   Arrondi supérieur : 2 switchs [OK]
   
   Répartition possible :
   
   Switch 1 (370W) :
   - 24 téléphones : 168W
   - 10 caméras : 150W
   Total : 318W < 370W [OK]
   
   Switch 2 (370W) :
   - 2 caméras : 30W
   - 8 APs : 200W
   Total : 230W < 370W [OK]
   
   Total : 318 + 230 = 548W [OK]


5. SWITCH 48 PORTS (740W)
   ──────────────────────

   Appareils total : 24 + 12 + 8 = 44 appareils
   
   Consommation : 548W < 740W [OK]
   
   Ports utilisés : 44
   Ports disponibles : 48 - 44 = 4 ports libres
   
   Vérification budget :
   Budget utilisé : 548W
   Budget restant : 740 - 548 = 192W
   
   Capacité résiduelle :
   - 192W / 25W (PoE+) = 7.6 ports PoE+ additionnels
   
   Mais seulement 4 ports physiques libres
   
   -> 4 ports disponibles avec budget suffisant [OK]



═══════════════════════════════════════════════════════════
EXERCICE 3 : DIAGNOSTIC DUPLEX MISMATCH
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Un utilisateur se plaint : "Mon PC est très lent sur le réseau"

Vous exécutez :

PC (Windows) :
```
ipconfig /all
Vitesse : 1 Gbps
État : Connecté
```

Switch (Cisco) :
```
show interface gi0/10
GigabitEthernet0/10 is up, line protocol is up
  Hardware is Gigabit Ethernet, address is 001a.2b3c.4d5e
  MTU 1500 bytes, BW 1000000 Kbit/sec
  Full-duplex, 1000Mb/s
  
  30 second input rate: 5000 bits/sec, 6 packets/sec
  30 second output rate: 4000 bits/sec, 5 packets/sec
  
  15432 packets input, 2048932 bytes
  158 input errors, 142 CRC, 16 frame, 0 overrun
  1245 packets output, 156783 bytes
  2841 collisions, 2156 late collisions
```

Questions :

1. Quel est le problème ?
2. Quels indices le confirment ?
3. Pourquoi l'utilisateur a quand même 1 Gbps affiché ?
4. Quelle est la solution ?


[OK] CORRECTION EXERCICE 3

1. PROBLÈME IDENTIFIÉ
   ──────────────────

   DUPLEX MISMATCH

   PC : Half-duplex (probablement)
   Switch : Full-duplex (confirmé)


2. INDICES CONFIRMANT
   ──────────────────

   [OK] COLLISIONS
      - 2841 collisions
      - 2156 LATE collisions
      
      Collisions en full-duplex = IMPOSSIBLE
      -> Un côté est en half-duplex
      
      Late collisions = Signature duplex mismatch

   [OK] ERREURS CRC
      - 142 CRC errors
      - 158 input errors total
      
      Taux erreur : 158 / 15432 = 1%
      Très élevé (devrait être < 0.01%)

   [OK] PERFORMANCE DÉGRADÉE
      - Utilisateur se plaint lenteur
      - Cohérent avec half-duplex (50% performance)


3. POURQUOI 1 Gbps AFFICHÉ ?
   ─────────────────────────

   Vitesse (speed) ≠ Duplex

   Auto-négociation a réussi sur :
   [OK] Vitesse : 1000 Mbps (Gigabit)
   
   Mais échoué sur :
   [X] Duplex : Half vs Full
   
   Cause probable :
   - Switch forcé "full-duplex" manuellement
   - PC en auto-négociation
   - PC détecte vitesse 1000 Mbps
   - PC assume half-duplex par défaut (sécurité)
   
   Résultat :
   - Connexion établie à 1 Gbps
   - Mais PC half, Switch full -> MISMATCH


4. SOLUTION
   ────────

   Option 1 : Auto-négociation des DEUX côtés (RECOMMANDÉ)
   ────────────────────────────────────────────────────────
   
   Sur switch :
   ```
   interface gi0/10
    no speed
    no duplex
    negotiation auto
   ```
   
   Sur PC : Laisser auto (défaut Windows)
   
   Redémarrer interface :
   ```
   shutdown
   no shutdown
   ```
   
   Vérifier :
   ```
   show interface gi0/10 | include duplex
   ```
   Attendu : "Full-duplex" avec auto-négociation


   Option 2 : Forcer full-duplex des DEUX côtés
   ─────────────────────────────────────────────
   
   Sur switch :
   ```
   interface gi0/10
    speed 1000
    duplex full
   ```
   
   Sur PC :
   Gestionnaire périphériques -> Carte réseau -> Propriétés
   Speed & Duplex -> 1.0 Gbps Full Duplex
   
   [ATTENTION] Moins flexible (pas d'adaptation automatique)


   Après correction :
   ──────────────────
   
   Réinitialiser compteurs :
   ```
   clear counters gi0/10
   ```
   
   Vérifier après quelques minutes :
   ```
   show interface gi0/10 | include collision
   ```
   
   Attendu : 0 collisions [OK]



═══════════════════════════════════════════════════════════
FIN DES EXERCICES
═══════════════════════════════════════════════════════════
"""


# ============================================================================
# [DOCS] CONCLUSION CHAPITRE 5
# ============================================================================

"""
[BRAVO] FÉLICITATIONS !

Vous avez terminé le Chapitre 5 : Ethernet


[GUIDE] RÉCAPITULATIF COMPLET

PARTIE 1 : FONDATIONS
─────────────────────

[OK] HISTORIQUE :
   - 1973 : Invention (Xerox PARC)
   - 1983 : Standardisation IEEE 802.3
   - Évolution : Bus -> Étoile
   - Débits : 10M -> 400G

[OK] NORMES IEEE 802.3 :
   - Nomenclature XXbaseYY
   - 10BASE-T, 100BASE-TX, 1000BASE-T
   - 10GBASE-T, 100GBASE, 400GBASE

[OK] TRAME ETHERNET :
   - Format : Dest MAC, Src MAC, Type, Data, FCS
   - Taille : 64-1518 octets
   - CRC-32 (FCS)
   - VLAN tag (802.1Q)

[OK] CSMA/CD :
   - Obsolète (full-duplex)
   - Backoff exponentiel
   - Slot time, domaine collision

[OK] DUPLEX :
   - Half : Tour à tour, collisions
   - Full : Simultané, aucune collision


PARTIE 2 : AVANCÉ
─────────────────

[OK] AUTO-NÉGOCIATION :
   - FLP (Fast Link Pulse)
   - Vitesse + Duplex
   - MDI/MDIX auto

[OK] PoE (Power over Ethernet) :
   - 802.3af : 15.4W (PoE)
   - 802.3at : 30W (PoE+)
   - 802.3bt : 60/100W (PoE++)
   - Budget power, détection/classification

[OK] GIGABIT ET AU-DELÀ :
   - 1000BASE-T : Standard actuel
   - 10GBASE-T : Data center
   - 25/40/100/400G : Hyperscalers
   - Fibre vs Cuivre

[OK] TROUBLESHOOTING :
   - Approche par couches
   - Duplex mismatch
   - Câble défectueux
   - Commandes diagnostic


[OBJECTIF] COMPÉTENCES ACQUISES

Vous savez maintenant :

[OK] Expliquer évolution Ethernet (histoire -> aujourd'hui)
[OK] Lire et interpréter trames Ethernet
[OK] Comprendre CSMA/CD (même si obsolète)
[OK] Différencier half vs full-duplex
[OK] Configurer auto-négociation
[OK] Dimensionner PoE
[OK] Choisir vitesse Ethernet selon besoin
[OK] Diagnostiquer problèmes Ethernet
[OK] Interpréter statistiques interface
[OK] Résoudre duplex mismatch


[PRO] APPLICATIONS PRATIQUES

Ces connaissances vous permettent de :

[OK] Concevoir réseaux Ethernet performants
[OK] Choisir équipements adaptés (vitesse, PoE)
[OK] Installer et câbler correctement
[OK] Diagnostiquer pannes efficacement
[OK] Optimiser performances
[OK] Éviter erreurs configuration courantes
[OK] Calculer budgets PoE
[OK] Interpréter captures Wireshark


[LIEN] LIEN AVEC AUTRES CHAPITRES

Ethernet est la BASE physique de :

- Chapitre 2 : Switchs (commutation Ethernet)
- Chapitre 4 : Couches 1-2 OSI (Ethernet = implémentation)
- Chapitre 8 : IP utilise Ethernet comme transport
- Chapitre 21 : VLANs (segmentation Ethernet)
- Chapitre 23 : STP (éviter boucles Ethernet)


-> PROCHAINS CHAPITRES

Les prochains chapitres approfondiront d'autres technologies :

- Chapitre 6-7 : Wi-Fi (802.11)
- Chapitre 8-10 : IPv4 (adressage, subnetting)
- Chapitre 11 : ARP, ICMP
- Chapitre 12-13 : DNS, DHCP
- Etc.


[RAPIDE] EXCELLENT TRAVAIL !

Ethernet est la FONDATION de presque tous les réseaux modernes.
Vous maîtrisez maintenant cette technologie essentielle !

Prenez une pause si besoin, puis continuez votre apprentissage !


═══════════════════════════════════════════════════════════
[GUIDE] FIN DU CHAPITRE 5 - ETHERNET
═══════════════════════════════════════════════════════════
"""

# ============================================================================
# CHAPITRE 6 : WI-FI (802.11) - PARTIE 1
# ============================================================================

"""
[OBJECTIF] OBJECTIFS DU CHAPITRE

Ce chapitre couvre Wi-Fi, la technologie de réseau sans fil dominante :
[OK] Historique et évolution Wi-Fi
[OK] Normes IEEE 802.11 (a/b/g/n/ac/ax/be)
[OK] Architecture Wi-Fi (modes, topologies)
[OK] Couche physique (fréquences, canaux, modulation)
[OK] Couche liaison (CSMA/CA, trames)
[OK] Sécurité Wi-Fi (WEP, WPA, WPA2, WPA3)
[OK] Qualité de service (QoS)
[OK] Roaming et handoff
[OK] Troubleshooting Wi-Fi

[IDEE] POURQUOI WI-FI EST CRUCIAL ?

Wi-Fi est omniprésent :
- Domiciles, entreprises, lieux publics
- Smartphones, laptops, IoT
- Complément indispensable à Ethernet
- Mobilité et flexibilité

Comprendre Wi-Fi est ESSENTIEL pour tout professionnel réseau moderne !


[DOCS] PLAN DU CHAPITRE

PARTIE 1 :
1. Historique et contexte Wi-Fi
2. Normes IEEE 802.11 (évolution)
3. Architecture Wi-Fi (modes, BSS, ESS)
4. Couche physique (fréquences, canaux)
5. Modulation et débits

PARTIE 2 :
6. Couche liaison (CSMA/CA, ACK)
7. Trames 802.11
8. Sécurité Wi-Fi
9. QoS et roaming
10. Troubleshooting et exercices
"""


# ----------------------------------------------------------------------------
# [RESEAU] PARTIE 1 : HISTORIQUE ET CONTEXTE WI-FI
# ----------------------------------------------------------------------------

"""
HISTORIQUE WI-FI


QU'EST-CE QUE WI-FI ?

Wi-Fi = Wireless Fidelity (officiellement)
En réalité : Marque déposée de Wi-Fi Alliance

Standard technique : IEEE 802.11

Wi-Fi Alliance :
- Organisation certification équipements
- Garantit interopérabilité
- Logo "Wi-Fi Certified"


CHRONOLOGIE

1997 : IEEE 802.11 (Original)
──────────────────────────────

Première norme sans fil standardisée
- Débit : 1-2 Mbps
- Fréquence : 2.4 GHz
- Portée : ~20 mètres intérieur

Adoption : Très limitée (lent, cher)


1999 : 802.11b
──────────────

Premier succès commercial Wi-Fi

- Débit : 11 Mbps
- Fréquence : 2.4 GHz
- Portée : ~35 mètres intérieur
- Modulation : DSSS (Direct Sequence Spread Spectrum)

Adoption : Explosion !
- Apple AirPort (1999)
- Laptops intégrant Wi-Fi
- Hotspots publics


1999 : 802.11a
──────────────

Norme haute performance (parallèle à 802.11b)

- Débit : 54 Mbps
- Fréquence : 5 GHz
- Portée : ~15 mètres intérieur (moins que 2.4 GHz)
- Modulation : OFDM

Adoption : Limitée
- Plus cher
- Incompatible 802.11b (fréquence différente)
- Moins de portée


2003 : 802.11g
──────────────

Meilleur des deux mondes

- Débit : 54 Mbps
- Fréquence : 2.4 GHz
- Portée : ~35 mètres intérieur
- Modulation : OFDM
- Rétrocompatible : 802.11b [OK]

Adoption : Très large
Standard domicile et entreprise (2003-2009)


2009 : 802.11n (Wi-Fi 4)
────────────────────────

Révolution : MIMO + 40 MHz

- Débit : 150-600 Mbps (selon config)
- Fréquences : 2.4 GHz ET 5 GHz (dual-band)
- Portée : ~70 mètres intérieur
- Technologies clés :
  * MIMO (Multiple Input Multiple Output) : 4×4 max
  * Canaux 40 MHz
  * Frame aggregation
  * Short Guard Interval

Adoption : Universelle
Standard entreprise (2009-2014)


2013 : 802.11ac (Wi-Fi 5)
─────────────────────────

Gigabit Wi-Fi !

- Débit : 433 Mbps - 6.9 Gbps
- Fréquence : 5 GHz uniquement
- Portée : ~35 mètres intérieur
- Technologies clés :
  * MU-MIMO (Multi-User MIMO) : 8×8
  * Canaux 80/160 MHz
  * 256-QAM
  * Beamforming

Vagues :
- Wave 1 (2013) : 1.3 Gbps max
- Wave 2 (2016) : 3.5 Gbps max, MU-MIMO

Adoption : Très large
Standard actuel entreprise et domicile haut de gamme


2019 : 802.11ax (Wi-Fi 6)
─────────────────────────

Efficacité et densité

- Débit : 600 Mbps - 9.6 Gbps
- Fréquences : 2.4 GHz ET 5 GHz
- Portée : Similaire 802.11ac
- Technologies clés :
  * OFDMA (Orthogonal Frequency-Division Multiple Access)
  * MU-MIMO 8×8 (uplink + downlink)
  * 1024-QAM
  * TWT (Target Wake Time) : Économie énergie IoT
  * BSS Coloring : Réduction interférences

Amélioration : 4× capacité en environnements denses

Adoption : En cours (2020-2024)
Futur standard


2020 : 802.11ax (Wi-Fi 6E)
──────────────────────────

Extension Wi-Fi 6 vers 6 GHz

- Débit : Identique Wi-Fi 6
- Fréquences : 2.4 GHz, 5 GHz, ET 6 GHz (nouveau !)
- Bande 6 GHz : 1200 MHz disponible
  * Canaux : Jusqu'à 59 canaux 20 MHz
  * Aucune interférence (bande vierge)

Avantage : Spectre vaste, peu encombré

Adoption : Progressive (régulation par pays)


2024 : 802.11be (Wi-Fi 7)
─────────────────────────

Prochaine génération (en déploiement)

- Débit : 40+ Gbps (théorique)
- Fréquences : 2.4, 5, 6 GHz
- Technologies clés :
  * Canaux 320 MHz
  * 4096-QAM
  * Multi-Link Operation (MLO)
  * 16×16 MU-MIMO

Usage : Ultra-haute performance
- Réalité virtuelle (VR/AR)
- Gaming 8K
- Streaming multiple 4K


ÉVOLUTION DÉBITS

┌─────────┬──────┬────────────┬─────────────┐
│ Norme   │Année │ Nom        │Débit max    │
├─────────┼──────┼────────────┼─────────────┤
│ 802.11  │ 1997 │ -          │ 2 Mbps      │
│ 802.11b │ 1999 │ -          │ 11 Mbps     │
│ 802.11a │ 1999 │ -          │ 54 Mbps     │
│ 802.11g │ 2003 │ -          │ 54 Mbps     │
│ 802.11n │ 2009 │ Wi-Fi 4    │ 600 Mbps    │
│ 802.11ac│ 2013 │ Wi-Fi 5    │ 6.9 Gbps    │
│ 802.11ax│ 2019 │ Wi-Fi 6/6E │ 9.6 Gbps    │
│ 802.11be│ 2024 │ Wi-Fi 7    │ 40+ Gbps    │
└─────────┴──────┴────────────┴─────────────┘

Multiplication par 20,000 en 25 ans !


NOMENCLATURE WI-FI ALLIANCE

Depuis 2018, noms simplifiés :

┌───────────┬─────────────┬────────────┐
│ Standard  │ Nom Wi-Fi   │ Génération │
├───────────┼─────────────┼────────────┤
│ 802.11n   │ Wi-Fi 4     │ 4ème       │
│ 802.11ac  │ Wi-Fi 5     │ 5ème       │
│ 802.11ax  │ Wi-Fi 6     │ 6ème       │
│ 802.11ax  │ Wi-Fi 6E    │ 6ème (6GHz)│
│ 802.11be  │ Wi-Fi 7     │ 7ème       │
└───────────┴─────────────┴────────────┘

Plus facile pour consommateurs !
"""


# ----------------------------------------------------------------------------
# [LISTE] PARTIE 2 : NORMES IEEE 802.11 DÉTAILLÉES
# ----------------------------------------------------------------------------

"""
NORMES 802.11 DÉTAILLÉES


802.11b (1999)
══════════════

Fréquence : 2.4 GHz (2.400-2.483 GHz)
Canaux : 14 canaux × 22 MHz
  - USA/Canada : Canaux 1-11
  - Europe : Canaux 1-13
  - Japon : Canaux 1-14

Modulation : DSSS (Direct Sequence Spread Spectrum)
Débits : 1, 2, 5.5, 11 Mbps

Portée :
- Intérieur : ~35 mètres
- Extérieur : ~100 mètres

Avantages :
[OK] Bonne portée (2.4 GHz traverse murs)
[OK] Compatibilité universelle

Inconvénients :
[X] Débit faible
[X] Bande encombrée (2.4 GHz)


802.11a (1999)
══════════════

Fréquence : 5 GHz (5.150-5.825 GHz)
Canaux : 24 canaux × 20 MHz (non-overlapping)

Modulation : OFDM (Orthogonal Frequency-Division Multiplexing)
Débits : 6, 9, 12, 18, 24, 36, 48, 54 Mbps

Portée :
- Intérieur : ~15 mètres
- Extérieur : ~50 mètres

Avantages :
[OK] Débit élevé (54 Mbps)
[OK] Moins d'interférences (5 GHz)
[OK] Canaux multiples non-overlapping

Inconvénients :
[X] Portée réduite (5 GHz)
[X] Moins de pénétration (murs)
[X] Incompatible 802.11b


802.11g (2003)
══════════════

Fréquence : 2.4 GHz (2.400-2.483 GHz)
Canaux : 14 canaux × 22 MHz

Modulation : OFDM (comme 802.11a)
Débits : 6, 9, 12, 18, 24, 36, 48, 54 Mbps

Rétrocompatibilité : 802.11b [OK]

Portée :
- Intérieur : ~35 mètres
- Extérieur : ~100 mètres

Avantages :
[OK] Débit élevé (54 Mbps)
[OK] Bonne portée (2.4 GHz)
[OK] Compatible 802.11b

Inconvénients :
[X] Bande encombrée (2.4 GHz)
[X] Ralentit si clients 802.11b présents


802.11n (Wi-Fi 4) - 2009
════════════════════════

Fréquences : 2.4 GHz ET/OU 5 GHz (dual-band)

Canaux :
- 2.4 GHz : 20 MHz ou 40 MHz
- 5 GHz : 20 MHz ou 40 MHz

Modulation : OFDM + MIMO

MIMO (Multiple Input Multiple Output) :
- Configuration : 1×1, 2×2, 3×3, 4×4
- 4×4 = 4 antennes TX, 4 antennes RX

Débits (théoriques) :

┌─────────┬────────┬────────┐
│ Config  │ 20 MHz │ 40 MHz │
├─────────┼────────┼────────┤
│ 1×1     │ 72M    │ 150M   │
│ 2×2     │ 144M   │ 300M   │
│ 3×3     │ 217M   │ 450M   │
│ 4×4     │ 289M   │ 600M   │
└─────────┴────────┴────────┘

Technologies clés :

1. MIMO (Multiple Input Multiple Output)
   ──────────────────────────────────────
   
   Plusieurs antennes simultanées
   -> Augmente débit ET fiabilité
   
   Spatial multiplexing : Plusieurs flux données parallèles

2. Canaux 40 MHz
   ─────────────
   
   Double largeur canal -> Double débit
   
   2.4 GHz : Problématique (canaux limités)
   5 GHz : Recommandé

3. Frame Aggregation
   ─────────────────
   
   A-MPDU (MAC Protocol Data Unit)
   -> Plusieurs trames en une seule transmission
   -> Moins d'overhead

4. Short Guard Interval (SGI)
   ──────────────────────────
   
   800ns -> 400ns
   -> Gain ~10% débit
   
   Risque : Plus sensible multi-path

Portée :
- Intérieur : ~70 mètres
- Extérieur : ~250 mètres

Avantages :
[OK] Débit élevé (150-600 Mbps)
[OK] Dual-band (flexibilité)
[OK] MIMO (fiabilité)
[OK] Rétrocompatible a/b/g


802.11ac (Wi-Fi 5) - 2013
═════════════════════════

Fréquence : 5 GHz UNIQUEMENT

Canaux : 20, 40, 80, 160 MHz

Modulation : OFDM + 256-QAM

MU-MIMO (Multi-User MIMO) :
- Configuration : Jusqu'à 8×8
- Downlink uniquement (Wave 1)
- Downlink + Uplink (Wave 2)

MU-MIMO vs MIMO :
- MIMO : Un utilisateur à la fois
- MU-MIMO : Plusieurs utilisateurs simultanément

Débits (théoriques) :

┌─────────┬────────┬────────┬────────┬────────┐
│ Config  │ 20 MHz │ 40 MHz │ 80 MHz │ 160MHz │
├─────────┼────────┼────────┼────────┼────────┤
│ 1×1     │ 87M    │ 200M   │ 433M   │ 867M   │
│ 2×2     │ 173M   │ 400M   │ 867M   │ 1.7G   │
│ 3×3     │ 260M   │ 600M   │ 1.3G   │ 2.6G   │
│ 4×4     │ 347M   │ 800M   │ 1.7G   │ 3.5G   │
│ 8×8     │ 693M   │ 1.6G   │ 3.5G   │ 6.9G   │
└─────────┴────────┴────────┴────────┴────────┘

Technologies clés :

1. 256-QAM
   ───────
   
   64-QAM (802.11n) : 6 bits/symbole
   256-QAM (802.11ac) : 8 bits/symbole
   -> +33% débit

2. Canaux larges (80/160 MHz)
   ──────────────────────────
   
   Plus de spectre -> Plus de débit
   
   160 MHz : Deux options
   - Contigus : 160 MHz d'un bloc
   - Non-contigus (80+80) : Deux blocs 80 MHz

3. Beamforming
   ───────────
   
   Focalisation signal vers client
   -> Meilleure qualité signal
   -> Plus de portée

4. MU-MIMO
   ───────
   
   AP peut servir 4 clients simultanément
   -> Efficacité environnements denses

Portée :
- Intérieur : ~35 mètres
- Extérieur : ~100 mètres

Avantages :
[OK] Débit très élevé (multi-Gigabit)
[OK] MU-MIMO (capacité)
[OK] 5 GHz (moins d'interférences)

Inconvénients :
[X] 5 GHz uniquement (pas 2.4 GHz)
[X] Portée réduite vs 2.4 GHz


802.11ax (Wi-Fi 6) - 2019
═════════════════════════

Fréquences : 2.4 GHz ET 5 GHz

Canaux : 20, 40, 80, 160 MHz

Modulation : OFDMA + 1024-QAM

OFDMA (Orthogonal Frequency-Division Multiple Access) :
- Subdivise canaux en Resource Units (RU)
- Plusieurs utilisateurs partagent un canal SIMULTANÉMENT
- Révolution vs OFDM classique !

Exemple :
Canal 20 MHz divisé en :
- 9 RU de 2 MHz (26 sous-porteuses)
-> 9 utilisateurs simultanés sur 1 canal !

MU-MIMO : 8×8 (uplink + downlink)

Débits (similaires 802.11ac mais EFFICACITÉ ^) :

┌─────────┬────────┬────────┬────────┬────────┐
│ Config  │ 20 MHz │ 40 MHz │ 80 MHz │ 160MHz │
├─────────┼────────┼────────┼────────┼────────┤
│ 1×1     │ 143M   │ 287M   │ 600M   │ 1.2G   │
│ 2×2     │ 287M   │ 574M   │ 1.2G   │ 2.4G   │
│ 4×4     │ 574M   │ 1.1G   │ 2.4G   │ 4.8G   │
│ 8×8     │ 1.1G   │ 2.3G   │ 4.8G   │ 9.6G   │
└─────────┴────────┴────────┴────────┴────────┘

Technologies clés :

1. OFDMA
   ─────
   
   Divise canaux pour plusieurs utilisateurs
   -> Latence réduite
   -> Capacité 4× supérieure environnements denses

2. 1024-QAM
   ────────
   
   256-QAM : 8 bits/symbole
   1024-QAM : 10 bits/symbole
   -> +25% débit (conditions optimales)

3. TWT (Target Wake Time)
   ──────────────────────
   
   Planification réveil appareils
   -> Économie batterie IoT (jusqu'à 7×)

4. BSS Coloring
   ────────────
   
   "Colorie" réseaux voisins
   -> Réduction interférences
   -> Réutilisation spatiale améliorée

5. MU-MIMO bidirectionnel
   ──────────────────────
   
   Uplink + Downlink simultanés
   -> Meilleure capacité upload

Avantages :
[OK] Efficacité environments denses
[OK] Latence réduite
[OK] Économie énergie (IoT)
[OK] 2.4 GHz amélioré (OFDMA)

Standard actuel et futur proche


802.11ax (Wi-Fi 6E) - 2020
══════════════════════════

Extension Wi-Fi 6 vers bande 6 GHz

Fréquences : 2.4 GHz, 5 GHz, 6 GHz

Bande 6 GHz : 5.925-7.125 GHz (USA)
- Largeur : 1200 MHz !
- Canaux : 59 × 20 MHz OU 29 × 40 MHz OU 14 × 80 MHz OU 7 × 160 MHz

Technologies : Identiques Wi-Fi 6

Avantages :
[OK] Spectre vaste et vierge
[OK] Aucune interférence (nouveau spectre)
[OK] Canaux 160 MHz nombreux
[OK] Performances maximales

Inconvénients :
[X] Régulation variable par pays
[X] Équipements plus chers
[X] Portée similaire 5 GHz


802.11be (Wi-Fi 7) - 2024
═════════════════════════

Prochaine génération (certification en cours)

Fréquences : 2.4, 5, 6 GHz

Canaux : 20, 40, 80, 160, 320 MHz (nouveau !)

Modulation : 4096-QAM

Débits : Jusqu'à 46 Gbps (théorique)

Technologies clés :

1. Canaux 320 MHz
   ──────────────
   
   Double vs 160 MHz
   -> Double débit potentiel

2. 4096-QAM
   ────────
   
   1024-QAM : 10 bits/symbole
   4096-QAM : 12 bits/symbole
   -> +20% débit

3. Multi-Link Operation (MLO)
   ──────────────────────────
   
   Utilise PLUSIEURS bandes SIMULTANÉMENT
   Exemple : 5 GHz + 6 GHz en parallèle
   -> Débit agrégé
   -> Basculement instantané si problème

4. 16×16 MU-MIMO
   ─────────────
   
   Double vs Wi-Fi 6 (8×8)
   -> Plus de clients simultanés

Avantages :
[OK] Débit extrême (40+ Gbps)
[OK] Latence ultra-faible (<5ms)
[OK] Fiabilité (MLO)

Usage :
- VR/AR haute résolution
- Gaming cloud 8K
- Streaming multiple 4K/8K
- Transferts fichiers massifs


COMPARAISON NORMES

┌───────┬──────┬──────────┬──────────┬───────────────┬──────────┐
│Norme  │Année │Fréquence │Débit max │Modulation     │ Usage    │
├───────┼──────┼──────────┼──────────┼───────────────┼──────────┤
│802.11b│ 1999 │ 2.4 GHz  │ 11 Mbps  │ DSSS          │Obsolète  │
│802.11a│ 1999 │ 5 GHz    │ 54 Mbps  │ OFDM          │Obsolète  │
│802.11g│ 2003 │ 2.4 GHz  │ 54 Mbps  │ OFDM          │Rare      │
│802.11n│ 2009 │ 2.4/5GHz │ 600 Mbps │ OFDM+MIMO     │Courant   │
│802.11ac│2013 │ 5 GHz    │ 6.9 Gbps │ OFDM+256QAM   │Standard  │
│802.11ax│2019 │2.4/5/6GHz│ 9.6 Gbps │ OFDMA+1024QAM │Actuel    │
│802.11be│2024 │2.4/5/6GHz│ 46 Gbps  │ 4096QAM       │Futur     │
└───────┴──────┴──────────┴──────────┴───────────────┴──────────┘
"""


# ----------------------------------------------------------------------------
# [CONSTRUCTION] PARTIE 3 : ARCHITECTURE WI-FI
# ----------------------------------------------------------------------------

"""
ARCHITECTURE WI-FI


MODES DE FONCTIONNEMENT

Wi-Fi supporte plusieurs modes (topologies) :


MODE INFRASTRUCTURE (Le plus courant)
═════════════════════════════════════

Clients connectés via Point d'Accès (AP)

┌─────────────────────────────────────────┐
│              Point d'Accès              │
│              (AP / Routeur)             │
└─────────────────────────────────────────┘
        v           v           v
      ┌───┐       ┌───┐       ┌───┐
      │PC1│       │PC2│       │PC3│
      └───┘       └───┘       └───┘

Caractéristiques :
- AP = Pont entre Wi-Fi et Ethernet
- Clients communiquent via AP
- PC1->PC2 : PC1->AP->PC2 (même si proche !)

Usage :
[OK] Domicile (box Internet)
[OK] Entreprise (APs multiples)
[OK] Lieux publics (hotspots)

Avantages :
[OK] Gestion centralisée (AP)
[OK] Connexion Internet via AP
[OK] Roaming entre APs


MODE AD-HOC (IBSS - Independent Basic Service Set)
═══════════════════════════════════════════════════

Clients communiquent directement (peer-to-peer)

      ┌───┐ <-──────-> ┌───┐
      │PC1│          │PC2│
      └───┘ <-──────-> └───┘
        ^v               ^v
      ┌───┐ <-──────->  ┌───┐
      │PC3│           │PC4│
      └───┘           └───┘

Caractéristiques :
- Pas d'AP
- Connexions directes entre clients
- Réseau temporaire

Usage :
- Transfert fichiers direct (PC à PC)
- Gaming local
- Situations d'urgence (pas d'infrastructure)

Inconvénients :
[X] Pas d'accès Internet (sauf partage)
[X] Portée limitée
[X] Peu utilisé aujourd'hui


MODE MESH (802.11s)
═══════════════════

Réseau maillé sans fil

      ┌────┐ <-──-> ┌────┐
      │AP1 │      │AP2 │
      └────┘ <-──-> └────┘
        ^v     ×      ^v
      ┌────┐ <-──-> ┌────┐
      │AP3 │      │AP4 │
      └────┘      └────┘

Caractéristiques :
- APs interconnectés sans fil
- Routage automatique (multi-hop)
- Auto-organisation

Usage :
- Grandes zones (campus, entrepôts)
- Zones sans câblage Ethernet
- Extension couverture facile

Avantages :
[OK] Flexibilité déploiement
[OK] Résilience (chemins multiples)
[OK] Extension facile

Exemples :
- Google Wifi
- Netgear Orbi
- TP-Link Deco


Wi-Fi DIRECT (P2P)
══════════════════

Connexion directe avec découverte automatique

      ┌──────────┐  <-─────-> ┌──────────┐
      │Smartphone│          │Imprimante│
      └──────────┘          └──────────┘

Caractéristiques :
- Un appareil = "Group Owner" (GO)
- GO agit comme mini-AP
- Autres se connectent au GO

Usage :
- Impression sans fil
- Cast écran (Miracast)
- Transfert fichiers (Android Beam)

Avantages :
[OK] Pas besoin réseau existant
[OK] Configuration automatique
[OK] Sécurisé (WPA2)


TERMINOLOGIE ARCHITECTURE


BSS (Basic Service Set)
═══════════════════════

= Un AP + ses clients

┌─────────────────────────────────┐  <- BSS
│                                 │
│           ┌────┐                │
│           │ AP │                │
│           └────┘                │
│        <-    v    ->              │
│     ┌───┐ ┌───┐ ┌───┐           │
│     │PC1│ │PC2│ │PC3│           │
│     └───┘ └───┘ └───┘           │
└─────────────────────────────────┘

BSSID (BSS Identifier) :
- Identifiant unique du BSS
- = Adresse MAC de l'AP
- Exemple : 00:1A:2B:3C:4D:5E

SSID (Service Set Identifier) :
- Nom réseau Wi-Fi (32 caractères max)
- Exemple : "MonReseauWiFi"
- Peut être caché (SSID masqué)

Un AP peut avoir plusieurs SSID (VLAN différents)


ESS (Extended Service Set)
══════════════════════════

= Plusieurs BSS interconnectés (même SSID)

┌─────────────────────────────────────────────┐  <- ESS
│  ┌─────────────┐           ┌─────────────┐  │
│  │    BSS 1    │           │    BSS 2    │  │
│  │   ┌────┐    │           │   ┌────┐    │  │
│  │   │AP1 │    │ <-Ethernet->│   │AP2 │    │  │
│  │   └────┘    │           │   └────┘    │  │
│  │  ┌───┐┌───┐ │           │ ┌───┐┌───┐  │  │
│  │  │PC1││PC2│ │           │ │PC3││PC4│  │  │
│  │  └───┘└───┘ │           │ └───┘└───┘  │  │
│  └─────────────┘           └─────────────┘  │
└─────────────────────────────────────────────┘

Caractéristiques :
- Même SSID sur tous APs
- Clients peuvent roamer entre APs
- Distribution System (DS) : Backbone Ethernet

ESSID = SSID (même chose en pratique)

Utilisation :
- Entreprises (bureaux multiples)
- Domicile multi-étages
- Grandes zones


DS (Distribution System)
════════════════════════

Réseau interconnectant les APs (généralement Ethernet)

        [Internet]
            │
        ┌───┴───┐
        │Switch │
        └───┬───┘
      ┌─────┴─────┐
    ┌─┴─┐       ┌─┴─┐
    │AP1│       │AP2│
    └───┘       └───┘

DS permet :
- Trafic inter-BSS (PC1 sur AP1 -> PC2 sur AP2)
- Connexion Internet partagée
- Roaming client entre APs


CANAUX ET CELLULES

Concept cellulaire :

Zone couverte divisée en cellules (BSS)

    ┌─────┐
    │ C1  │ <- Canal 1
    └─────┘
         ┌─────┐
         │ C6  │ <- Canal 6
         └─────┘
    ┌─────┐
    │ C11 │ <- Canal 11
    └─────┘

Réutilisation canaux :
- Canaux non-overlapping (1, 6, 11 en 2.4 GHz)
- Cellules adjacentes = Canaux différents
- Évite interférences co-canal

Pattern hexagonal classique :

     1       6      11      1
       6   11   1     6   11
    11   1     6   11   1
       6   11   1     6


ROAMING

Déplacement client entre APs (même ESS)

Client se déplace :
AP1 (RSSI -50 dBm) -> AP2 (RSSI -70 dBm) -> AP3 (RSSI -55 dBm)

Processus :
1. Client détecte signal AP1 faible
2. Scan autres APs (même SSID)
3. Trouve AP3 signal meilleur
4. Déconnexion AP1
5. Ré-association AP3
6. Transfert session (layer 2)

Standards roaming :
- 802.11r (Fast Roaming) : Handoff <50ms
- 802.11k (Resource Measurement) : Info canaux voisins
- 802.11v (Network Management) : AP suggère meilleur voisin

[IDEE] Détails roaming en Partie 2
"""


# ============================================================================
# [OBJECTIF] FIN PARTIE 1 DU CHAPITRE 6
# ============================================================================

"""
[DOCS] RÉCAPITULATIF PARTIE 1

Vous avez appris :

[OK] HISTORIQUE WI-FI :
   - 1997-2024 : 802.11 -> 802.11be
   - Évolution débits : 2 Mbps -> 40+ Gbps
   - Nomenclature Wi-Fi 4/5/6/7
   
[OK] NORMES DÉTAILLÉES :
   - 802.11b/a/g (historique)
   - 802.11n (MIMO, dual-band)
   - 802.11ac (MU-MIMO, Gigabit)
   - 802.11ax (OFDMA, Wi-Fi 6/6E)
   - 802.11be (Wi-Fi 7, 320 MHz, MLO)
   
[OK] ARCHITECTURE :
   - Modes : Infrastructure, Ad-hoc, Mesh, Wi-Fi Direct
   - BSS, ESS, BSSID, SSID
   - Distribution System
   - Roaming entre APs


-> SUITE : PARTIE 2

Dans le prochain fichier :
- Couche physique (fréquences, canaux, modulation)
- Couche liaison (CSMA/CA, trames 802.11)
- Sécurité Wi-Fi (WEP, WPA, WPA2, WPA3)
- QoS et roaming avancé
- Troubleshooting Wi-Fi
- Exercices pratiques
"""

# ============================================================================
# CHAPITRE 6 : WI-FI (802.11) - PARTIE 2
# ============================================================================


# ----------------------------------------------------------------------------
# [RADIO] PARTIE 4 : COUCHE PHYSIQUE - FRÉQUENCES ET CANAUX
# ----------------------------------------------------------------------------

"""
COUCHE PHYSIQUE WI-FI


BANDES DE FRÉQUENCES

Wi-Fi utilise bandes ISM (Industrial, Scientific, Medical)
= Bandes libres (sans licence)


BANDE 2.4 GHz
═════════════

Fréquences : 2.400 - 2.483 GHz (83 MHz total)

Standards utilisant 2.4 GHz :
- 802.11b/g/n/ax

Canaux : 14 canaux × 20 MHz (numérotés 1-14)

Largeur canal : 22 MHz (802.11b/g) ou 20 MHz (802.11n/ax)

Espacement canaux : 5 MHz

Problème : CHEVAUCHEMENT !

[GRAPHIQUE] Illustration canaux 2.4 GHz :

        2.400 GHz                               2.483 GHz
          │                                         │
  ┌───────┴───────┬───────┬───────┬───────┬─────────┴─┐
  │   C1 (22MHz)  │       │       │       │           │
  └───────────────┴───────┴───────┴───────┴───────────┘
      ├─5MHz─┤
          ┌───────┬───────┬───────┬───────┬───────┐
          │   C2  │       │       │       │       │
          └───────┴───────┴───────┴───────┴───────┘
              ├─5MHz─┤
                  ┌───────┬───────┬───────┬───────┐
                  │   C3  │       │       │       │
                  └───────┴───────┴───────┴───────┘

Canal 1 (2412 MHz) chevauche canaux 2, 3, 4, 5


CANAUX NON-OVERLAPPING

Seulement 3 canaux ne se chevauchent PAS :

┌────────┬───────────┬────────────┐
│ Canal  │Fréquence  │ Région     │
├────────┼───────────┼────────────┤
│   1    │ 2412 MHz  │ Universel  │
│   6    │ 2437 MHz  │ Universel  │
│  11    │ 2462 MHz  │ Universel  │
│  13    │ 2472 MHz  │ Europe     │
│  14    │ 2484 MHz  │ Japon      │
└────────┴───────────┴────────────┘

Configuration optimale 2.4 GHz :
- 3 APs maximum sans interférence
- Canaux : 1, 6, 11

[GRAPHIQUE] Pattern déploiement :

     AP1      AP2      AP3      AP1
     C1       C6       C11      C1
       AP2      AP3      AP1
       C6       C11      C1


Restrictions géographiques :

USA/Canada : Canaux 1-11
Europe : Canaux 1-13
Japon : Canaux 1-14 (14 = 802.11b uniquement)


Avantages 2.4 GHz :
[OK] Meilleure portée (traverse murs)
[OK] Compatibilité universelle
[OK] Portée ~35m intérieur, ~100m extérieur

Inconvénients 2.4 GHz :
[X] Seulement 3 canaux non-overlapping
[X] Très encombrée (Wi-Fi, Bluetooth, micro-ondes, etc.)
[X] Interférences multiples


BANDE 5 GHz
═══════════

Fréquences : 5.150 - 5.825 GHz (675 MHz total)

Standards utilisant 5 GHz :
- 802.11a/n/ac/ax

Canaux : 24+ canaux × 20 MHz (selon pays)

Tous non-overlapping ! [OK]

[GRAPHIQUE] Sous-bandes 5 GHz (USA) :

UNII-1 (Indoor) : 5.150 - 5.250 GHz
- Canaux : 36, 40, 44, 48
- Puissance max : 50 mW (17 dBm)
- Usage : Intérieur uniquement

UNII-2A : 5.250 - 5.350 GHz
- Canaux : 52, 56, 60, 64
- Puissance max : 250 mW (24 dBm)
- DFS requis (Dynamic Frequency Selection)

UNII-2C (Extended) : 5.470 - 5.725 GHz
- Canaux : 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144
- Puissance max : 250 mW
- DFS requis

UNII-3 : 5.725 - 5.825 GHz
- Canaux : 149, 153, 157, 161, 165
- Puissance max : 1000 mW (30 dBm)
- Pas de DFS


DFS (Dynamic Frequency Selection) :
───────────────────────────────────

Requis canaux 52-144

Raison : Éviter interférences avec radars (météo, militaires)

Fonctionnement :
1. AP scanne canal 60 secondes avant utilisation
2. Si radar détecté -> Change de canal
3. Monitoring continu pendant utilisation
4. Si radar détecté -> Changement immédiat (<10s)

Impact : Possible brève interruption service


Canaux larges (802.11n/ac/ax) :

40 MHz : Deux canaux 20 MHz adjacents
- Exemple : 36+40 = Canal 38 (40 MHz)

80 MHz : Quatre canaux 20 MHz
- Exemple : 36+40+44+48 = Canal 42 (80 MHz)

160 MHz : Huit canaux 20 MHz
- Exemple : 36-64 = Canal 50 (160 MHz)
- Ou 80+80 non-contigus

Règle : Plus large canal -> Plus de débit MAIS moins de canaux disponibles


Avantages 5 GHz :
[OK] Nombreux canaux non-overlapping
[OK] Moins d'interférences
[OK] Canaux larges disponibles (80/160 MHz)
[OK] Meilleur pour haute densité

Inconvénients 5 GHz :
[X] Portée réduite (~50% vs 2.4 GHz)
[X] Moins de pénétration (murs)
[X] DFS peut causer interruptions


BANDE 6 GHz (Wi-Fi 6E)
══════════════════════

Fréquences : 5.925 - 7.125 GHz (1200 MHz total)

Standards : 802.11ax (Wi-Fi 6E), 802.11be (Wi-Fi 7)

Canaux :
- 59 canaux × 20 MHz
- 29 canaux × 40 MHz
- 14 canaux × 80 MHz
- 7 canaux × 160 MHz
- 3 canaux × 320 MHz (Wi-Fi 7)

Tous non-overlapping ! [OK]

Avantages 6 GHz :
[OK] Spectre très vaste (1200 MHz)
[OK] Vierge (pas d'équipements existants)
[OK] Aucune interférence
[OK] Multiples canaux 160 MHz
[OK] Canaux 320 MHz (Wi-Fi 7)

Inconvénients 6 GHz :
[X] Régulation variable par pays (pas partout disponible)
[X] Portée similaire 5 GHz
[X] Équipements plus récents/chers

Disponibilité :
- USA : 1200 MHz (2020)
- Europe : 480 MHz (2021), extension en cours
- Autres : Variable


COMPARAISON BANDES

┌──────────┬─────────┬──────────┬─────────┬────────────┐
│  Bande   │ Portée  │  Canaux  │Interf.  │   Usage    │
├──────────┼─────────┼──────────┼─────────┼────────────┤
│ 2.4 GHz  │ Élevée  │ 3 (non-O)│ Élevée  │Compatibilité│
│ 5 GHz    │ Moyenne │ 24+ (non-O)│Moyenne│ Standard   │
│ 6 GHz    │ Moyenne │ 59+ (non-O)│ Faible│ Haute perf │
└──────────┴─────────┴──────────┴─────────┴────────────┘

Recommandation déploiement :
- 2.4 GHz : IoT, compatibilité, longue portée
- 5 GHz : Clients modernes, performance
- 6 GHz : Très haute performance, faible latence


PUISSANCE ÉMISSION

Puissance maximale réglementée par pays

EIRP (Effective Isotropic Radiated Power) :
= Puissance émetteur + Gain antenne - Pertes câble

USA (FCC) :
- 2.4 GHz : 1000 mW (30 dBm) EIRP
- 5 GHz : Variable selon sous-bande (17-30 dBm)
- 6 GHz : 30 dBm

Europe (ETSI) :
- 2.4 GHz : 100 mW (20 dBm) EIRP
- 5 GHz : Variable (23-30 dBm)

Réglage puissance AP :
- Automatique (recommandé) : Ajuste selon environnement
- Manuel : Contrôle précis (éviter over-coverage)


SENSIBILITÉ RÉCEPTEUR

Sensibilité = Puissance minimale signal décodable

Exemple 802.11ac :

┌──────────┬─────────────┐
│  Débit   │ Sensibilité │
├──────────┼─────────────┤
│ 6 Mbps   │ -93 dBm     │
│ 54 Mbps  │ -75 dBm     │
│ 433 Mbps │ -66 dBm     │
│ 867 Mbps │ -63 dBm     │
└──────────┴─────────────┘

Principe : Débit élevé -> Sensibilité réduite (signal fort requis)

RSSI (Received Signal Strength Indicator) :
- Excellent : -50 dBm ou mieux
- Bon : -60 dBm
- Moyen : -70 dBm
- Faible : -80 dBm
- Très faible : -90 dBm

SNR (Signal-to-Noise Ratio) :
SNR (dB) = RSSI - Noise Floor

Recommandations :
- VoIP : SNR ≥ 25 dB
- Vidéo HD : SNR ≥ 35 dB
- Données : SNR ≥ 20 dB
"""


# ----------------------------------------------------------------------------
# [MELANGE] PARTIE 5 : COUCHE LIAISON - CSMA/CA
# ----------------------------------------------------------------------------

"""
CSMA/CA (Carrier Sense Multiple Access with Collision Avoidance)


POURQUOI PAS CSMA/CD ?

CSMA/CD (Ethernet) :
- Détecte collisions pendant émission
- Émet + Écoute simultanément

Wi-Fi : IMPOSSIBLE !
- Half-duplex (radio)
- Signal émis >> Signal reçu (masquage)
- Impossible détecter collision pendant émission

Solution : CSMA/CA = ÉVITER collisions


PRINCIPE CSMA/CA


ÉTAPE 1 : Écouter canal (Carrier Sense)
────────────────────────────────────────

Station veut émettre

Action : Écouter média (CCA - Clear Channel Assessment)

CCA combine :
- Energy Detection (ED) : Puissance RF > seuil ?
- Carrier Sense (CS) : Signal 802.11 détecté ?

Si BUSY -> Attendre
Si IDLE -> Étape 2


ÉTAPE 2 : Attendre DIFS (DCF Interframe Space)
───────────────────────────────────────────────

Même si canal libre, attendre DIFS

DIFS = Distributed Coordination Function IFS
Durée : 34 µs (802.11a/g), 28 µs (802.11n à 5 GHz)

Rôle : Priorisation types de trafic

Hiérarchie IFS :

SIFS (Short IFS) : 10-16 µs
- ACK, CTS, fragments
- Priorité MAXIMALE

PIFS (PCF IFS) : SIFS + slot
- Point Coordination Function
- Rarement utilisé

DIFS (DCF IFS) : SIFS + 2×slot
- Données normales
- Priorité NORMALE

AIFS (Arbitration IFS) : Configurable (QoS)
- 802.11e (WMM)
- Priorités variables


ÉTAPE 3 : Backoff aléatoire
────────────────────────────

Après DIFS, attendre backoff aléatoire

Pourquoi ? Si plusieurs stations attendent DIFS simultanément
-> Émettraient ensemble -> Collision !

Backoff = random(0, CW) × slot_time

CW = Contention Window
- Initial : CWmin (15 ou 31)
- Après collision : Double (exponential backoff)
- Maximum : CWmax (1023)

slot_time : 9 µs (802.11a/g/n à 5 GHz)

Exemple :
- Station A : CW=31 -> Tire 12 -> Attend 12×9µs = 108µs
- Station B : CW=31 -> Tire 25 -> Attend 25×9µs = 225µs

Station A émet en premier ! [OK]

Pendant backoff :
- Si canal devient BUSY -> Geler compteur
- Quand canal redevient IDLE -> Reprendre décompte


ÉTAPE 4 : Émettre
──────────────────

Compteur backoff = 0 -> Émettre trame

Trame contient :
- Duration field : Temps nécessaire pour transmission + ACK

Toutes stations entendant trame :
-> Mettent à jour NAV (Network Allocation Vector)
-> Considèrent canal BUSY pendant Duration


ÉTAPE 5 : Attendre ACK
──────────────────────

Émetteur attend ACK (acquittement)

Récepteur :
- Reçoit trame correctement (CRC OK)
- Attend SIFS (10-16 µs - Priorité haute !)
- Envoie ACK

Émetteur :
- ACK reçu -> Transmission réussie [OK]
- Pas d'ACK -> Timeout -> Retransmission


GESTION COLLISIONS

Si collision (deux stations émettent simultanément) :
1. Trames corrompues
2. CRC échoue
3. Pas d'ACK envoyé
4. Timeout émetteurs
5. CW double : CW = min(2×CW, CWmax)
6. Nouveau backoff aléatoire
7. Réessai

Après transmission réussie :
- CW retourne à CWmin


RTS/CTS (Request To Send / Clear To Send)
═══════════════════════════════════════════

Mécanisme optionnel pour éviter problème "nœud caché"


PROBLÈME NŒUD CACHÉ

Station A <-──30m──-> AP <-──30m──-> Station B

A et B hors de portée l'une de l'autre
-> Ne détectent pas émissions mutuelles
-> Émettent simultanément vers AP
-> Collision à l'AP !


SOLUTION : RTS/CTS

Processus :

1. Station A veut émettre
2. A envoie RTS (Request To Send) vers AP
   - Contient : Durée transmission souhaitée

3. AP répond CTS (Clear To Send)
   - Contient : Durée réservée

4. Station B entend CTS (même si pas RTS)
   - Met à jour NAV
   - Se tait pendant durée indiquée

5. Station A émet données
   - Pas de collision ! [OK]

6. AP envoie ACK

[GRAPHIQUE] Timeline :

A: ─RTS─[BLACK_RIGHT-POINTING_POINTER][SIFS]───────DATA────────[BLACK_RIGHT-POINTING_POINTER][SIFS][BLACK_LEFT-POINTING_POINTER]─ACK─
AP:      [BLACK_LEFT-POINTING_POINTER][SIFS]─CTS─[BLACK_RIGHT-POINTING_POINTER]           ─[BLACK_RIGHT-POINTING_POINTER][SIFS]─ACK──[BLACK_RIGHT-POINTING_POINTER]
B:             [BLACK_LEFT-POINTING_POINTER]CTS─[BLACK_RIGHT-POINTING_POINTER][─────NAV─────]
                     (Se tait)


Configuration RTS/CTS :

Seuil RTS : Taille trame minimale pour déclencher RTS/CTS
- Défaut : 2347 octets (désactivé en pratique)
- Si trame ≥ Seuil -> Utilise RTS/CTS
- Si trame < Seuil -> Direct

Avantages RTS/CTS :
[OK] Résout problème nœud caché
[OK] Réduit coût collisions (petites trames RTS/CTS vs grandes trames données)

Inconvénients RTS/CTS :
[X] Overhead (4 trames au lieu de 2)
[X] Réduit débit effectif

Recommandation :
- Activer si nœuds cachés fréquents
- Désactiver sinon (overhead inutile)


NAV (Network Allocation Vector)
════════════════════════════════

Virtual Carrier Sense

Chaque station maintient compteur NAV
- NAV > 0 -> Canal considéré BUSY (même si silence radio)
- NAV = 0 -> Canal peut être IDLE

Mise à jour NAV :
- Chaque trame entendue contient Duration
- NAV = max(NAV, Duration)

Rôle : Coordonner accès sans écouter constamment


FRAGMENTATION

Grandes trames peuvent être fragmentées

Avantages :
- Réduit probabilité erreur (plus petits morceaux)
- Si erreur, retransmettre fragment uniquement (pas tout)

Seuil fragmentation : 2346 octets (configurable)

Processus :
1. Trame 3000 octets, seuil 1500
2. Fragmentation en 2 fragments (1500 + 1500)
3. Transmission :
   - Fragment 1 + ACK
   - Fragment 2 + ACK

Plus utilisé aujourd'hui (overhead, complexité)


AGRÉGATION (802.11n+)

Inverse de fragmentation : Combiner trames

A-MSDU (Aggregate MAC Service Data Unit) :
- Plusieurs paquets IP en une trame 802.11
- Limite : 3839 ou 7935 octets
- Une seule transmission, un seul ACK

A-MPDU (Aggregate MAC Protocol Data Unit) :
- Plusieurs trames 802.11 en une transmission PHY
- Limite : 65535 octets (802.11n), 1 Mo (802.11ac)
- ACK groupé (Block ACK)

Avantages :
[OK] Réduit overhead (moins de headers/ACKs)
[OK] Augmente débit effectif (30-40%)

Standard depuis 802.11n
"""


# ----------------------------------------------------------------------------
# [SECURISE] PARTIE 6 : SÉCURITÉ WI-FI
# ----------------------------------------------------------------------------

"""
SÉCURITÉ WI-FI


ÉVOLUTION SÉCURITÉ

1999 : WEP (Wired Equivalent Privacy) [X]
2003 : WPA (Wi-Fi Protected Access)
2004 : WPA2 (802.11i)
2018 : WPA3

Objectifs sécurité :
1. Confidentialité (chiffrement)
2. Intégrité (détection modification)
3. Authentification (vérifier identité)


WEP (Wired Equivalent Privacy) - OBSOLÈTE
══════════════════════════════════════════

Standard : 802.11 (1999)

Chiffrement : RC4 (stream cipher)
Clé : 64 bits (40 bits effectifs) ou 128 bits

Authentification :
- Open System : Aucune (juste SSID)
- Shared Key : Challenge-response WEP

Fonctionnement :
1. Clé partagée (PSK - Pre-Shared Key)
2. IV (Initialization Vector) 24 bits + Clé -> RC4
3. Chiffrement données
4. CRC-32 pour intégrité

[X] VULNÉRABILITÉS MAJEURES :

1. IV trop court (24 bits)
   - Collision après ~5000 paquets
   - Réutilisation IV -> Révèle clé

2. CRC-32 faible
   - Modification détectable mais pas sécurisé
   - Attaques bit-flipping possibles

3. Clé statique
   - Jamais changée
   - Capture suffisante -> Crack

Outils crack WEP :
- Aircrack-ng : Crack WEP en <5 minutes

[ATTENTION] NE JAMAIS UTILISER WEP !


WPA (Wi-Fi Protected Access) - 2003
════════════════════════════════════

Solution intermédiaire (avant WPA2)

Chiffrement : TKIP (Temporal Key Integrity Protocol)
- Toujours RC4 mais amélioré
- Clé change toutes les 10000 trames
- MIC (Message Integrity Check) remplace CRC

Authentification :
- WPA-Personal (PSK - Pre-Shared Key)
- WPA-Enterprise (802.1X / RADIUS)

Améliorations vs WEP :
[OK] Clés dynamiques (TKIP)
[OK] IV 48 bits (vs 24)
[OK] MIC (Michael) meilleur que CRC

Faiblesses :
[X] TKIP toujours vulnérable
[X] Rétrocompatible matériel WEP (limitations)

Status : Déprécié (utiliser WPA2 minimum)


WPA2 (802.11i) - 2004
═════════════════════

Standard actuel (jusqu'à récemment)

Chiffrement : CCMP (Counter Mode CBC-MAC Protocol)
- AES (Advanced Encryption Standard)
- Bloc cipher 128 bits
- Mode CTR pour chiffrement
- CBC-MAC pour intégrité

Authentification :
- WPA2-Personal (PSK)
- WPA2-Enterprise (802.1X / RADIUS)


WPA2-PERSONAL (PSK)
───────────────────

Utilisation : Domicile, petites entreprises

Clé partagée (PSK) : 8-63 caractères ASCII

Processus 4-Way Handshake :

1. AP envoie ANonce (random)
2. Client calcule PTK (Pairwise Transient Key)
   PTK = PRF(PMK, ANonce, SNonce, AP_MAC, Client_MAC)
   PMK dérivé du PSK (passphrase)
3. Client envoie SNonce + MIC
4. AP vérifie MIC, envoie GTK (Group Temporal Key)
5. Client confirme

Clés générées :
- PMK (Pairwise Master Key) : Dérivé PSK
- PTK (Pairwise Transient Key) : Chiffrement unicast
- GTK (Group Temporal Key) : Chiffrement broadcast/multicast

Avantages :
[OK] Chiffrement AES fort
[OK] Configuration simple

Inconvénients :
[X] PSK partagée (compromission = tous compromis)
[X] Vulnérable attaques dictionnaire (PSK faible)
[X] Pas de gestion centralisée


WPA2-ENTERPRISE (802.1X)
────────────────────────

Utilisation : Entreprises, grandes organisations

Authentification : 802.1X / EAP (Extensible Authentication Protocol)

Composants :
- Supplicant : Client Wi-Fi
- Authenticator : AP (passe messages)
- Authentication Server : RADIUS

Processus :
1. Client se connecte AP (non-authentifié)
2. AP demande identité (EAP-Request Identity)
3. Client répond (username)
4. AP relaye vers RADIUS
5. RADIUS challenge client (selon méthode EAP)
6. Authentification (certificats, login/password)
7. Si succès : RADIUS envoie clés à AP
8. AP autorise client (portail ouvert)

Méthodes EAP courantes :

EAP-TLS :
- Certificats client + serveur
- Sécurité maximale
- Complexe (PKI requis)

EAP-TTLS :
- Certificat serveur uniquement
- Client : username/password dans tunnel
- Équilibre sécurité/simplicité

PEAP (Protected EAP) :
- Similaire EAP-TTLS
- Tunnel TLS protège authentification
- Très courant entreprises

EAP-FAST :
- Cisco propriétaire
- PAC (Protected Access Credential)
- Pas de certificat requis

Avantages :
[OK] Authentification individuelle (pas PSK partagée)
[OK] Clés uniques par utilisateur
[OK] Gestion centralisée (RADIUS)
[OK] Révocation utilisateurs
[OK] Audit connexions

Inconvénients :
[X] Infrastructure complexe (RADIUS, certificats)
[X] Coût plus élevé


VULNÉRABILITÉ WPA2 : KRACK (2017)
──────────────────────────────────

KRACK = Key Reinstallation Attack

Exploit faille 4-way handshake
-> Réinstallation clé
-> Réutilisation nonce
-> Décryptage trafic

Impact : Tous équipements WPA2

Solution : Patches firmware
Status : Corrigé sur équipements à jour


WPA3 (2018)
═══════════

Nouvelle génération sécurité Wi-Fi

Améliorations majeures :


1. SAE (Simultaneous Authentication of Equals)
   ───────────────────────────────────────────
   
   Remplace PSK dans WPA3-Personal
   
   Basé : Dragonfly key exchange (résistant attaques dictionnaire)
   
   Avantages :
   [OK] Forward Secrecy : Capture passé ≠ Déchiffrer si PSK compromis
   [OK] Résistant offline dictionary attacks
   [OK] Protection même avec PSK faible

2. 192-bit Security (WPA3-Enterprise)
   ───────────────────────────────────
   
   Suite cryptographique renforcée :
   - GCMP-256 (chiffrement)
   - HMAC-SHA-384 (intégrité)
   - ECDHE/ECDSA-384 (échange clés)
   
   Usage : Gouvernements, infrastructures critiques

3. Protected Management Frames (PMF) - Obligatoire
   ────────────────────────────────────────────────
   
   Chiffre trames management (deauth, disassoc)
   -> Empêche attaques deauthentication

4. Easy Connect (DPP - Device Provisioning Protocol)
   ──────────────────────────────────────────────────
   
   Provisioning simplifié appareils sans écran (IoT)
   QR code / NFC pour configuration
   
5. Enhanced Open (OWE - Opportunistic Wireless Encryption)
   ─────────────────────────────────────────────────────────
   
   Chiffrement réseaux "ouverts" (sans mot de passe)
   Protection contre écoute passive (hotspots publics)


WPA3-Personal vs WPA2-Personal :

┌──────────────────┬──────────────┬──────────────┐
│   Critère        │    WPA2      │    WPA3      │
├──────────────────┼──────────────┼──────────────┤
│ Auth             │ PSK (4-way)  │ SAE          │
│ Dictionary attack│ Vulnérable   │ Résistant    │
│ Forward Secrecy  │ Non          │ Oui          │
│ PMF              │ Optionnel    │ Obligatoire  │
│ Chiffrement      │ CCMP (AES)   │ GCMP (AES)   │
└──────────────────┴──────────────┴──────────────┘


Déploiement WPA3 :

Modes transition :
- WPA3-only : Sécurité max, incompatibilité anciens clients
- WPA2/WPA3 Transition : Compatibilité, sécurité réduite
- WPA2-only : Compatible, moins sécurisé

Recommandation 2024 :
- Nouveaux déploiements : WPA3
- Existants : WPA2/WPA3 transition


MEILLEURES PRATIQUES SÉCURITÉ WI-FI

[OK] WPA3 (ou WPA2 minimum)
[OK] PSK fort (20+ caractères, aléatoire)
[OK] SSID unique (pas défaut)
[OK] Désactiver WPS (vulnérable)
[OK] Désactiver UPnP
[OK] Segmentation réseau (invités séparés)
[OK] VLANs multiples
[OK] Filtrage MAC (couche additionnelle, pas principale)
[OK] Mises à jour firmware régulières
[OK] Monitoring (détection intrusions)

[X] NE JAMAIS :
- WEP
- WPA-TKIP
- SSID caché comme seule sécurité
- WPS PIN
- Mot de passe par défaut
"""


# ----------------------------------------------------------------------------
# [SON] PARTIE 7 : QoS (Quality of Service) ET ROAMING
# ----------------------------------------------------------------------------

"""
QoS WI-FI (802.11e / WMM)


PROBLÈME SANS QoS

Wi-Fi CSMA/CA = Best effort
Toutes trames égales

Problèmes :
- VoIP coupée si téléchargement actif
- Vidéo saccadée si backup réseau
- Gaming laggy si streaming


SOLUTION : 802.11e (WMM)

WMM = Wi-Fi Multimedia (certification Wi-Fi Alliance)
Basé : 802.11e EDCA (Enhanced Distributed Channel Access)


CATÉGORIES QoS (Access Categories - AC)

4 catégories prioritaires :

┌────────────┬──────────┬──────────┬─────────────┐
│ Catégorie  │ Priorité │  AIFSN   │   CWmin     │
├────────────┼──────────┼──────────┼─────────────┤
│ AC_VO      │ Highest  │    2     │   3 (2^2-1) │
│ (Voice)    │    4     │          │             │
├────────────┼──────────┼──────────┼─────────────┤
│ AC_VI      │  High    │    2     │   7 (2^3-1) │
│ (Video)    │    3     │          │             │
├────────────┼──────────┼──────────┼─────────────┤
│ AC_BE      │ Normal   │    3     │  15 (2^4-1) │
│(Best Effort)│   2     │          │             │
├────────────┼──────────┼──────────┼─────────────┤
│ AC_BK      │  Low     │    7     │  15 (2^4-1) │
│(Background)│    1     │          │             │
└────────────┴──────────┴──────────┴─────────────┘

AIFSN = Arbitration IFS Number
- Plus petit = Priorité plus haute
- AIFS = AIFSN × slot_time + SIFS

CWmin = Contention Window minimum
- Plus petit = Moins de backoff -> Transmission plus rapide


Fonctionnement :

Station avec trame AC_VO (VoIP) :
1. Attend AIFS[VO] = 2×slot + SIFS = 28µs
2. Backoff dans CWmin[VO] = 0-3
3. Émet rapidement !

Station avec trame AC_BK (backup) :
1. Attend AIFS[BK] = 7×slot + SIFS = 73µs
2. Backoff dans CWmin[BK] = 0-15
3. Émet après les autres


Mapping applications -> AC :

AC_VO (Voice) :
- VoIP (SIP, Skype)
- Softphones

AC_VI (Video) :
- Streaming vidéo (Netflix, YouTube)
- Visioconférence (Zoom, Teams)

AC_BE (Best Effort) :
- Web (HTTP, HTTPS)
- Email
- Par défaut

AC_BK (Background) :
- Transferts fichiers (FTP, backup)
- Mises à jour logicielles


Marquage QoS :

Couche 2 (802.1p) : 3 bits dans tag VLAN
Couche 3 (DSCP) : 6 bits dans header IP

Mapping DSCP -> AC :

┌───────────────┬─────────┬──────────┐
│     DSCP      │  Nom    │    AC    │
├───────────────┼─────────┼──────────┤
│ 46 (EF)       │ VoIP    │  AC_VO   │
│ 34 (AF41)     │ Video   │  AC_VI   │
│ 0 (BE)        │ Default │  AC_BE   │
│ 8 (CS1)       │ Scavenger│ AC_BK   │
└───────────────┴─────────┴──────────┘


Admission Control :

TSPEC (Traffic Specification) :
- Client demande ressources (débit, latence)
- AP accepte ou refuse selon capacité
- Garantit QoS si accepté

Utilisé : VoIP, vidéo critique


ROAMING WI-FI


Roaming = Transition client entre APs (même ESS)


PROCESSUS ROAMING BASIQUE

1. SCANNING
   ────────
   
   Client détecte signal AP actuel faible (RSSI < -75 dBm)
   
   Passive Scan :
   - Écoute Beacon frames (envoyées par APs toutes les 100ms)
   - Détecte APs disponibles (même SSID)
   
   Active Scan :
   - Envoie Probe Request (broadcast ou SSID spécifique)
   - APs répondent Probe Response
   - Plus rapide mais consomme plus

2. DÉCISION
   ────────
   
   Client choisit meilleur AP selon :
   - RSSI (signal strength)
   - SNR (signal-to-noise ratio)
   - Charge AP (optionnel)
   - Bande fréquence (préférence 5GHz)
   
   Décision : Côté CLIENT (pas AP)

3. AUTHENTIFICATION
   ────────────────
   
   Client s'authentifie nouveau AP
   - WPA2 : 4-way handshake complet
   - Durée : 50-200 ms

4. RÉ-ASSOCIATION
   ──────────────
   
   Client envoie Reassociation Request -> Nouvel AP
   Nouvel AP répond Reassociation Response
   
   AP informe ancien AP (via DS)
   Ancien AP libère ressources

5. TRANSFERT SESSION
   ─────────────────
   
   Buffers transmis ancien AP -> Nouveau AP
   Session maintenue (pas de déconnexion TCP)


PROBLÈME : Latence roaming traditionnelle = 50-400ms
-> Inacceptable VoIP, vidéo temps réel !


ROAMING RAPIDE (802.11r - Fast Roaming)
════════════════════════════════════════

Standard : IEEE 802.11r (2008)

Objectif : Réduire latence roaming à < 50ms

Innovation : PMK caching

Processus :

1. Connexion initiale AP1 : 4-way handshake complet
2. PMK (Pairwise Master Key) stocké client + serveur RADIUS
3. Roaming vers AP2 :
   - PMK réutilisé (pas re-authentification RADIUS !)
   - Only 4-way handshake local avec AP2
   - Durée : <50ms [OK]

Over-the-DS FT (Fast Transition) :
- Ré-association via système distribution (Ethernet)
- Client reste connecté AP1 pendant négociation AP2
- Basculement instantané

Over-the-Air FT :
- Ré-association directe via Wi-Fi
- Légèrement plus lent


802.11k (Radio Resource Management)
════════════════════════════════════

AP fournit informations sur APs voisins

Client reçoit :
- Liste APs voisins (BSSID, canal, RSSI)
- Évite scan complet
- Décision roaming plus rapide

Neighbor Report :
AP envoie liste APs recommandés
-> Client scanne uniquement ces canaux


802.11v (Network Management)
═════════════════════════════

AP suggère roaming (BSS Transition Management)

Scénarios :
- AP surchargé -> Suggère client vers AP moins chargé
- Maintenance AP -> Suggère clients vers autres APs
- Meilleur signal disponible

Client peut accepter ou refuser


ROAMING OPTIMAL (802.11r + 11k + 11v)
══════════════════════════════════════

Configuration :
[OK] 802.11r : Fast transition
[OK] 802.11k : Neighbor reports
[OK] 802.11v : BSS transition management

Résultat :
- Latence roaming : 20-50ms
- Décisions optimales
- VoIP sans coupure
- Vidéo sans interruption


CONFIGURATION ROAMING

Seuil RSSI roaming : -70 dBm (typique)
- Client scan si RSSI < -70 dBm
- Roame si AP meilleur trouvé (RSSI > actuel + hysteresis)

Hysteresis : 5-10 dB
- Évite ping-pong (roaming constant)
- AP2 doit être significativement meilleur

Band steering :
- Préférer 5 GHz sur 2.4 GHz
- AP refuse association 2.4 GHz si 5 GHz disponible
- Meilleur débit, moins d'interférences
"""


# ----------------------------------------------------------------------------
# [OUTIL] PARTIE 8 : TROUBLESHOOTING WI-FI
# ----------------------------------------------------------------------------

"""
TROUBLESHOOTING WI-FI


APPROCHE MÉTHODIQUE

Problèmes Wi-Fi fréquents :
1. Pas de connexion
2. Performance dégradée
3. Déconnexions fréquentes
4. Portée insuffisante
5. Interférences


PROBLÈME 1 : PAS DE CONNEXION
══════════════════════════════

Symptômes :
- Réseau visible mais échec connexion
- Réseau invisible
- Authentification échoue


ÉTAPE 1 : Vérifier visibilité réseau
────────────────────────────────────

Windows :
```
netsh wlan show networks
```

Réseau visible ? [OK] -> Étape 2
Réseau invisible ? -> Vérifications AP :

1. SSID broadcasting activé ?
   - Configuration AP : SSID broadcast ON
   
2. AP alimenté et fonctionnel ?
   - LED status
   - Connexion Ethernet AP
   
3. Canal utilisé supporté ?
   - DFS en cours ? (changement canal)
   - Pays configuration correcte ?

4. Distance/Obstacles ?
   - Trop loin AP ?
   - Murs épais ?


ÉTAPE 2 : Authentification
───────────────────────────

Échec authentification -> Vérifier :

1. Mot de passe correct ?
   - Sensible casse
   - Caractères spéciaux

2. Mode sécurité compatible ?
   - Client supporte WPA2/WPA3 ?
   - Vérifier compatibility mode

3. Certificats (Enterprise) ?
   - Certificat serveur valide ?
   - Certificat client installé ?

4. RADIUS fonctionnel (Enterprise) ?
   - Serveur RADIUS accessible ?
   - Credentials valides ?


ÉTAPE 3 : Association
─────────────────────

Authentifié mais pas associé :

1. AP saturé ?
   - Limite clients atteinte ?
   - Vérifier nombre clients connectés

2. Filtrage MAC activé ?
   - Vérifier whitelist AP

3. DHCP disponible ?
   - Pool adresses épuisé ?
   - Serveur DHCP fonctionnel ?


PROBLÈME 2 : PERFORMANCE DÉGRADÉE
═══════════════════════════════════

Symptômes :
- Débit faible
- Latence élevée
- Taux d'erreur


DIAGNOSTIC :

1. Vérifier RSSI (Signal Strength)
   ───────────────────────────────
   
   Windows :
   ```
   netsh wlan show interfaces
   ```
   
   Chercher : "Signal" (%)
   
   Conversion approximative :
   - 100% : -30 dBm (Excellent)
   - 80% : -50 dBm (Très bon)
   - 60% : -60 dBm (Bon)
   - 40% : -70 dBm (Moyen)
   - 20% : -80 dBm (Faible)
   
   Linux :
   ```
   iwconfig wlan0
   ```
   
   Si RSSI < -70 dBm :
   - Rapprocher AP
   - Ajouter AP
   - Augmenter puissance TX
   - Vérifier antennes

2. Vérifier débit négocié
   ──────────────────────
   
   Windows :
   ```
   netsh wlan show interfaces | findstr "Receive Transmit"
   ```
   
   Exemple :
   ```
   Receive rate (Mbps)  : 866
   Transmit rate (Mbps) : 866
   ```
   
   Si débit faible (ex: 6 Mbps) :
   - Signal faible -> Débit adaptatif réduit
   - Interférences
   - Client ancien (802.11g)

3. Tester interférences
   ────────────────────
   
   Outils :
   - inSSIDer (Windows)
   - Wi-Fi Analyzer (Android)
   - NetSpot (Mac)
   
   Vérifier :
   - Canal saturé ? (nombreux APs même canal)
   - Canaux overlapping ?
   - Interférences non-Wi-Fi ? (Bluetooth, micro-ondes)
   
   Solutions :
   - Changer canal (1, 6, 11 en 2.4 GHz)
   - Passer en 5 GHz
   - Réduire puissance TX (éviter over-coverage)

4. Vérifier utilisation canal
   ──────────────────────────
   
   AP surchargé ?
   
   Cisco :
   ```
   show ap summary
   show ap stats 802.11a <ap-name>
   ```
   
   Chercher :
   - Nombre clients par AP (>30 = saturé)
   - Utilisation canal (>70% = saturé)
   
   Solutions :
   - Ajouter APs
   - Répartir charge (band steering)
   - Limiter clients par AP

5. Taux d'erreur
   ─────────────
   
   ```
   netsh wlan show interfaces | findstr "State"
   ```
   
   Cisco AP :
   ```
   show ap stats 802.11a <ap-name>
   ```
   
   Chercher : Retry rate, CRC errors
   
   Retry rate élevé (>20%) :
   - Interférences
   - Signal faible
   - Obstacles

6. Bande fréquence
   ───────────────
   
   Client sur 2.4 GHz alors que 5 GHz disponible ?
   
   Solutions :
   - Band steering (AP force 5 GHz)
   - Désactiver 2.4 GHz SSID
   - Client prefer 5 GHz


PROBLÈME 3 : DÉCONNEXIONS FRÉQUENTES
═════════════════════════════════════

Symptômes :
- Connexion drops régulières
- Roaming excessif


DIAGNOSTIC :

1. Vérifier logs
   ─────────────
   
   Windows Event Viewer :
   Applications and Services -> Microsoft -> Windows -> WLAN-AutoConfig
   
   Chercher :
   - Deauthentication frames
   - Disassociation
   - Raisons

2. Interférences dynamiques
   ────────────────────────
   
   Micro-ondes (2.4 GHz) :
   - Vérifier emplacement
   - Passer 5 GHz
   
   DFS (5 GHz) :
   - Radar détecté -> Changement canal
   - Utiliser canaux non-DFS (149-165)

3. Roaming agressif
   ────────────────
   
   Client roame trop fréquemment ?
   
   - Augmenter seuil roaming (-75 dBm)
   - Augmenter hysteresis (10 dB)
   - Réduire chevauchement APs

4. Attaque deauth
   ──────────────
   
   Attaque malveillante (deauth frames)
   
   Solution :
   - WPA3 (PMF obligatoire)
   - WPA2 avec PMF activé
   
   Configuration :
   ```
   Cisco WLC: Security > Wireless Protection Policies > Management Frame Protection
   ```


PROBLÈME 4 : PORTÉE INSUFFISANTE
═════════════════════════════════

Solutions :

1. Ajouter APs
   ───────────
   
   Espacement recommandé :
   - 2.4 GHz : 30-50m intérieur
   - 5 GHz : 15-25m intérieur

2. Augmenter puissance TX
   ───────────────────────
   
   [ATTENTION] Attention :
   - Over-coverage -> Interférences
   - Clients faible TX -> Asymétrie
   
   Recommandation : Auto power

3. Antennes externes
   ──────────────────
   
   Types :
   - Omnidirectionnelle : Couverture 360°
   - Directionnelle : Couverture ciblée (couloir)
   - Secteur : Couverture 90-120°

4. Répéteurs / Extenders
   ──────────────────────
   
   [ATTENTION] Réduit débit de 50%
   
   Préférer :
   - Mesh (802.11s)
   - APs câblés additionnels


OUTILS DIAGNOSTIC


Site Survey Tools
─────────────────

Ekahau Site Survey (Pro) :
- Heatmaps couverture
- Prédictif et mesures réelles
- Analyse interférences

NetSpot (Accessible) :
- Heatmaps
- Multi-plateforme
- Gratuit version basique


Analyseurs Spectre
──────────────────

Wi-Spy (MetaGeek) :
- Analyse RF 2.4/5 GHz
- Détecte interférences non-Wi-Fi
- Visualisation temps réel


Sniffers Wi-Fi
──────────────

Wireshark :
- Capture trames 802.11
- Analyse protocoles
- Mode monitor requis

AirPcap (Windows) :
- Adaptateur capture Wi-Fi
- Compatible Wireshark


Commandes essentielles
──────────────────────

Windows :
```
netsh wlan show interfaces
netsh wlan show networks
netsh wlan show profiles
```

Linux :
```
iwconfig
iw dev wlan0 info
iw dev wlan0 scan
```

Cisco WLC :
```
show ap summary
show client summary
show wlan summary
show interference <ap-name>
```


BONNES PRATIQUES DÉPLOIEMENT

[OK] Site survey préalable (prédictif + réel)
[OK] Canaux non-overlapping (1, 6, 11)
[OK] Puissance TX automatique
[OK] Band steering (5 GHz prioritaire)
[OK] 802.11r/k/v (roaming rapide)
[OK] QoS activé (WMM)
[OK] VLANs séparés (corporate / guest / IoT)
[OK] Monitoring continu (SNMP, syslog)
[OK] Firmware à jour
[OK] Documentation (carte APs, canaux, SSID)
"""


# ----------------------------------------------------------------------------
# [COURS] EXERCICES PRATIQUES - CHAPITRE 6
# ----------------------------------------------------------------------------

"""
[IDEE] EXERCICES


═══════════════════════════════════════════════════════════
EXERCICE 1 : PLANIFICATION CANAUX 2.4 GHz
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Vous devez déployer 9 APs Wi-Fi dans un bâtiment sur 3 étages
(3 APs par étage, disposition régulière).

Configuration :
- Fréquence : 2.4 GHz uniquement
- Norme : 802.11n
- Canaux disponibles : 1-11 (USA)

Questions :

1. Combien de canaux non-overlapping en 2.4 GHz ?
2. Quel pattern de canaux utiliser pour les 9 APs ?
3. Pourquoi ne pas utiliser les canaux 2, 3, 4, 5, 7, 8, 9, 10 ?
4. Si on utilisait 5 GHz, combien de canaux non-overlapping ?
5. Pourquoi 5 GHz serait préférable pour ce déploiement ?


[OK] CORRECTION EXERCICE 1

1. CANAUX NON-OVERLAPPING 2.4 GHz
   ───────────────────────────────

   3 canaux non-overlapping
   
   Canaux : 1, 6, 11
   
   Explication :
   - Chaque canal = 22 MHz largeur
   - Espacement = 5 MHz
   - Canal 1 : 2401-2423 MHz
   - Canal 6 : 2426-2448 MHz (pas de chevauchement avec 1)
   - Canal 11 : 2451-2473 MHz (pas de chevauchement avec 6)
   
   Canaux 2-5, 7-10 chevauchent partiellement


2. PATTERN 9 APs
   ─────────────

   Pattern optimal (3 canaux répétés) :
   
   Étage 3 :  AP7(C1)  AP8(C6)  AP9(C11)
   
   Étage 2 :  AP4(C6)  AP5(C11) AP6(C1)
   
   Étage 1 :  AP1(C11) AP2(C1)  AP3(C6)
   
   Règles :
   - APs adjacents horizontalement : Canaux différents
   - APs adjacents verticalement : Canaux différents
   - Rotation pattern par étage
   
   Vérification :
   - AP1 (C11) voisins : AP2 (C1)[OK], AP4 (C6)[OK]
   - AP5 (C11) voisins : AP4 (C6)[OK], AP6 (C1)[OK], AP2 (C1)[OK], AP8 (C6)[OK]
   
   Pas de voisins directs sur même canal ! [OK]


3. POURQUOI PAS CANAUX 2-5, 7-10 ?
   ────────────────────────────────

   Ces canaux CHEVAUCHENT les canaux principaux (1, 6, 11)
   
   Exemple Canal 3 :
   - Fréquence : 2421 MHz
   - Largeur : 2410-2432 MHz
   - Chevauche Canal 1 (2401-2423 MHz) : Oui ! [X]
   - Chevauche Canal 6 (2426-2448 MHz) : Oui ! [X]
   
   Utiliser canal 3 créerait interférences avec C1 ET C6
   -> Dégradation performance tous les APs
   
   Principe :
   N'utiliser QUE canaux non-overlapping (1, 6, 11)
   -> Évite interférences co-canal et adjacent-canal


4. CANAUX NON-OVERLAPPING 5 GHz
   ─────────────────────────────

   24+ canaux non-overlapping (selon pays)
   
   USA (FCC) :
   - UNII-1 : 36, 40, 44, 48 (4 canaux)
   - UNII-2A : 52, 56, 60, 64 (4 canaux)
   - UNII-2C : 100, 104, ... 144 (12 canaux)
   - UNII-3 : 149, 153, 157, 161, 165 (5 canaux)
   
   Total : ~25 canaux × 20 MHz non-overlapping
   
   Avec canaux 80 MHz :
   - 6 canaux 80 MHz disponibles
   - Encore largement suffisant pour 9 APs


5. POURQUOI 5 GHz PRÉFÉRABLE ?
   ───────────────────────────

   Avantages 5 GHz pour 9 APs :
   
   [OK] NOMBREUX CANAUX
      25 canaux vs 3 en 2.4 GHz
      -> Pas de réutilisation canal nécessaire
      -> Chaque AP peut avoir canal unique
      -> Zéro interférence co-canal
   
   [OK] CANAUX LARGES
      80 MHz ou 160 MHz disponibles
      -> Débits plus élevés
      -> 2.4 GHz limité à 20 MHz (40 MHz problématique)
   
   [OK] MOINS D'INTERFÉRENCES
      5 GHz moins encombrée (pas Bluetooth, micro-ondes)
      -> Performance plus stable
   
   [OK] 802.11ac/ax
      Normes modernes optimisées pour 5 GHz
      -> Débits Gigabit
   
   Configuration recommandée 5 GHz :
   - 9 APs sur canaux différents
   - Exemple : 36, 40, 44, 48, 52, 56, 149, 153, 157
   - Largeur : 20 ou 40 MHz (9 APs proximité)
   
   Dual-band optimal :
   - 5 GHz : Clients modernes, haute performance
   - 2.4 GHz : IoT, compatibilité, longue portée



═══════════════════════════════════════════════════════════
EXERCICE 2 : DIAGNOSTIC PERFORMANCE WI-FI
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Un utilisateur se plaint : "Wi-Fi très lent, téléchargements à 5 Mbps"

Configuration :
- AP : 802.11ac (Wi-Fi 5)
- Client : Laptop 802.11ac (2×2)
- Fréquence : 5 GHz
- Canal : 149 (80 MHz)
- Connexion Ethernet AP : 1 Gbps
- Pas d'autres clients actifs

Diagnostic (netsh wlan show interfaces) :

```
SSID                : MonEntreprise
Network type        : Infrastructure
Radio type          : 802.11ac
Authentication      : WPA2-Personal
Cipher              : CCMP
Connection mode     : Auto Connect
Channel             : 149
Receive rate (Mbps) : 866
Transmit rate (Mbps): 866
Signal              : 40%
```

Questions :

1. Quel est le débit théorique maximum attendu (802.11ac, 2×2, 80 MHz) ?
2. Le débit négocié (866 Mbps) est-il cohérent ?
3. Convertir Signal 40% en dBm approximatif.
4. Ce RSSI est-il suffisant pour 866 Mbps ?
5. Quel est probablement le problème ?
6. Quelles solutions proposer ?


[OK] CORRECTION EXERCICE 2

1. DÉBIT THÉORIQUE MAX
   ───────────────────

   802.11ac, 2×2 MIMO, 80 MHz :
   
   Formule :
   Débit = Nb_streams × Débit_par_stream
   
   Débit par stream (80 MHz, 256-QAM, SGI) : 433 Mbps
   
   2×2 MIMO : 2 streams
   
   Débit max = 2 × 433 = 866 Mbps [OK]
   
   (Correspond configuration client laptop)


2. DÉBIT NÉGOCIÉ COHÉRENT ?
   ────────────────────────

   OUI, 866 Mbps est cohérent
   
   Explication :
   - Client : 2×2 802.11ac
   - AP : Support 802.11ac (assumé ≥2×2)
   - Canal 80 MHz
   - 256-QAM
   
   Auto-négociation a sélectionné :
   - MCS 9 (256-QAM)
   - 2 streams
   - 80 MHz
   -> 866 Mbps
   
   Débit PHY (couche physique) = Maximum possible [OK]


3. CONVERSION SIGNAL % -> dBm
   ──────────────────────────

   Signal : 40%
   
   Approximation :
   40% ≈ -70 dBm
   
   Échelle approximative :
   - 100% : -30 dBm
   - 80% : -50 dBm
   - 60% : -60 dBm
   - 40% : -70 dBm <- Notre cas
   - 20% : -80 dBm
   
   RSSI = -70 dBm


4. RSSI SUFFISANT POUR 866 Mbps ?
   ───────────────────────────────

   NON, insuffisant ! [X]
   
   Sensibilité requise 256-QAM (MCS 9) :
   Typique : -66 dBm
   
   RSSI actuel : -70 dBm
   
   Différence : -70 - (-66) = -4 dB
   -> Signal 4 dB SOUS seuil optimal !
   
   Conséquences :
   - Taux d'erreur élevé
   - Retransmissions fréquentes
   - Débit effectif très réduit
   
   Bien que négocié à 866 Mbps, nombreuses retransmissions
   -> Débit réel ~5 Mbps (cohérent plainte utilisateur !)


5. PROBLÈME IDENTIFIÉ
   ──────────────────

   SIGNAL TROP FAIBLE pour débit négocié
   
   Paradoxe :
   - PHY rate (négocié) : 866 Mbps [OK]
   - Throughput (réel) : 5 Mbps [X]
   
   Cause :
   - RSSI -70 dBm insuffisant pour 256-QAM
   - Taux d'erreur FCS élevé
   - Retransmissions constantes
   - Overhead retransmissions >> Données utiles
   
   Exemple :
   - Envoie 100 trames
   - 80 trames échouent (CRC erreur)
   - 80 retransmissions
   - Débit effectif = 100/180 × 866 ≈ 481 Mbps théorique
   - Avec overhead réel ≈ 5 Mbps pratique
   
   Diagnostic confirmé :
   Signal faible + Modulation élevée = Performance catastrophique


6. SOLUTIONS
   ─────────

   Solution 1 : RAPPROCHER CLIENT DE L'AP
   ───────────────────────────────────────
   
   Objectif : RSSI > -60 dBm
   
   Actions :
   - Déplacer laptop plus près AP
   - Éliminer obstacles (murs, meubles métalliques)
   - Vérifier ligne de vue
   
   Résultat attendu :
   - RSSI -50 à -60 dBm
   - 256-QAM stable
   - Débit réel 400-600 Mbps


   Solution 2 : AJOUTER AP
   ───────────────────────
   
   Si déplacement impossible
   
   Actions :
   - Installer AP additionnel
   - Espacement optimisé (20-30m)
   - Canaux différents (ex: 36 vs 149)


   Solution 3 : FORCER DÉBIT INFÉRIEUR (Temporaire)
   ─────────────────────────────────────────────────
   
   Forcer MCS plus bas (plus robuste)
   
   Exemple :
   - MCS 7 (64-QAM) au lieu de MCS 9 (256-QAM)
   - Sensibilité : -72 dBm (vs -66 dBm)
   - Débit négocié : 650 Mbps (vs 866)
   - Mais débit RÉEL : 300-400 Mbps (vs 5 Mbps)
   
   Configuration client :
   Windows : Propriétés carte réseau -> Avancé -> 802.11ac MCS
   
   [ATTENTION] Temporaire, préférer solution 1 ou 2


   Solution 4 : VÉRIFIER INTERFÉRENCES
   ────────────────────────────────────
   
   Si RSSI bon mais performance mauvaise
   
   Outils :
   - Wi-Fi Analyzer
   - Vérifier canal 149 saturé ?
   - Interférences co-canal ?
   
   Actions :
   - Changer canal (ex: 149 -> 36)
   - Réduire puissance TX voisins (éviter over-coverage)
   
   
   Recommandation prioritaire :
   1. Rapprocher laptop ou ajouter AP (solution durable)
   2. Vérifier interférences
   3. Forcer débit inférieur (temporaire uniquement)



═══════════════════════════════════════════════════════════
EXERCICE 3 : SÉCURITÉ WI-FI
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Vous devez sécuriser les réseaux Wi-Fi d'une PME (50 employés).

Besoins :
- Réseau corporate (employés authentifiés individuellement)
- Réseau invités (accès Internet uniquement, pas d'authentification)
- Réseau IoT (caméras, imprimantes - faible sécurité acceptable)

Questions :

1. Quelle sécurité pour réseau corporate ? Justifier.
2. Quelle sécurité pour réseau invités ? Justifier.
3. Quelle sécurité pour réseau IoT ?
4. Faut-il utiliser des VLANs ? Pourquoi ?
5. Faut-il masquer les SSID ? Pourquoi ?
6. Autres recommandations sécurité ?


[OK] CORRECTION EXERCICE 3

1. RÉSEAU CORPORATE
   ────────────────

   WPA2-Enterprise (ou WPA3-Enterprise)
   
   Configuration :
   - Standard : 802.1X
   - Authentification : RADIUS
   - Méthode EAP : PEAP-MSCHAPv2 (simple) ou EAP-TLS (plus sûr)
   - Chiffrement : AES-CCMP
   
   Justification :
   
   [OK] AUTHENTIFICATION INDIVIDUELLE
      - Chaque employé : Identifiants uniques (AD, LDAP)
      - Révocation individuelle possible (départ employé)
      - Audit connexions (qui, quand, où)
   
   [OK] SÉCURITÉ RENFORCÉE
      - Pas de PSK partagée
      - Clés uniques par utilisateur
      - Forward secrecy (WPA3)
   
   [OK] GESTION CENTRALISÉE
      - RADIUS server
      - Politiques centralisées
      - Changements propagés automatiquement
   
   Infrastructure requise :
   - Serveur RADIUS (ex: FreeRADIUS, Microsoft NPS)
   - Annuaire utilisateurs (Active Directory, LDAP)
   - Certificats (serveur RADIUS, optionnel client)
   
   Exemple configuration :
   - SSID : "CorpNetwork"
   - Sécurité : WPA2-Enterprise
   - RADIUS IP : 192.168.10.5
   - Shared secret : (secret fort)
   - VLAN : 10 (corporate)


2. RÉSEAU INVITÉS
   ───────────────

   WPA3-Personal (ou WPA2-Personal si WPA3 indisponible)
   
   Configuration :
   - Mode : WPA3-Personal (SAE)
   - PSK : Mot de passe complexe (20+ caractères)
   - Rotation PSK : Mensuelle
   
   Alternative : Portail captif (Captive Portal)
   - Pas de WPA (Open)
   - Enhanced Open (OWE) si WPA3 disponible
   - Authentification web (email, SMS)
   - Session limitée (24h)
   
   Justification :
   
   [OK] SIMPLICITÉ
      - Pas d'identifiants individuels
      - PSK communiqué facilement
   
   [OK] ISOLATION
      - Client isolation (empêche invités de se voir)
      - Pas d'accès réseau corporate
      - Internet uniquement
   
   [OK] SÉCURITÉ BASIQUE
      - Chiffrement trafic (WPA3)
      - Protection passive eavesdropping
   
   Recommandation portail captif :
   - Termes & Conditions acceptés
   - Log connexions (légal)
   - Débit limité (QoS)
   - Accès temporaire


3. RÉSEAU IoT
   ───────────

   WPA2-Personal minimum (WPA3-Personal préféré)
   
   Configuration :
   - Mode : WPA2-Personal
   - PSK : Mot de passe fort (différent corporate/invités)
   - VLAN dédié
   
   Justification :
   
   [OK] COMPATIBILITÉ
      - Certains IoT anciens pas WPA3
      - WPA2 universellement supporté
   
   [ATTENTION] LIMITATIONS IoT
      - Devices IoT souvent faible sécurité
      - Pas de support 802.1X
      - Firmware rarement mis à jour
   
   [OK] ISOLATION CRITIQUE
      - VLAN séparé corporate
      - Firewall bloque IoT -> Corporate
      - Permet IoT -> Internet (updates)
   
   Segmentation :
   - IoT ne peut PAS accéder corporate
   - Corporate peut gérer IoT (admin)
   - IoT peut Internet (cloud, updates)


4. VLANs NÉCESSAIRES ?
   ───────────────────

   OUI, ABSOLUMENT ! [OK]
   
   Configuration :
   
   VLAN 10 : Corporate
   - Accès : Ressources entreprise
   - Serveurs, imprimantes, NAS
   - Firewall : Restrictif selon politiques
   
   VLAN 20 : Invités
   - Accès : Internet uniquement
   - Firewall : Bloque tout sauf Internet
   - QoS : Débit limité
   
   VLAN 30 : IoT
   - Accès : Internet + Gestion admin
   - Firewall : Bloque Corporate
   - Permet Corporate -> IoT (gestion)
   
   [GRAPHIQUE] Règles Firewall :
   
   ┌──────────────┬──────────┬────────┬─────────┐
   │   Source     │Corporate │Invités │  IoT    │
   ├──────────────┼──────────┼────────┼─────────┤
   │ Corporate    │   [OK]     │   [X]   │ [OK](Admin)│
   │ Invités      │   [X]     │   [X]   │   [X]    │
   │ IoT          │   [X]     │   [X]   │   [OK]    │
   │ Internet     │   [OK]     │   [OK]   │   [OK]    │
   └──────────────┴──────────┴────────┴─────────┘
   
   Avantages VLANs :
   [OK] Isolation sécurité
   [OK] Segmentation trafic
   [OK] Politiques différenciées
   [OK] Limite propagation attaques


5. MASQUER SSID ?
   ──────────────

   NON, inutile et problématique [X]
   
   Raisons :
   
   [X] FAUSSE SÉCURITÉ
      - SSID détectable (Probe requests clients)
      - Outils : airodump-ng révèle SSID caché instantanément
      - Aucune protection réelle
   
   [X] PROBLÈMES CONNEXION
      - Clients doivent broadcaster SSID (probe requests)
      - Révèle présence réseau partout (hors site)
      - Roaming dégradé
   
   [X] COMPATIBILITÉ
      - Certains devices problèmes SSID caché
      - Complexité configuration utilisateurs
   
   Recommandation :
   [OK] SSID visible
   [OK] Nom non-descriptif (pas "EntrepriseXYZ-Admin")
   [OK] Sécurité = WPA2/WPA3 (pas obscurité)


6. AUTRES RECOMMANDATIONS
   ───────────────────────

   [OK] DÉSACTIVER WPS (Wi-Fi Protected Setup)
      - Vulnérabilité connue (brute force PIN)
      - Aucun usage professionnel
   
   [OK] DÉSACTIVER ANCIENS PROTOCOLES
      - WEP : Jamais
      - WPA-TKIP : Déprécié
      - 802.11b : Ralentit tout réseau
   
   [OK] PMF (Protected Management Frames)
      - WPA3 : Obligatoire
      - WPA2 : Activer (protection deauth attacks)
   
   [OK] ROTATION PSK (Invités/IoT)
      - Mensuelle ou trimestrielle
      - Après départ employé (si PSK connu)
   
   [OK] MONITORING
      - IDS/IPS Wi-Fi (détection intrusions)
      - Logs connexions
      - Alertes anomalies
   
   [OK] FIRMWARE À JOUR
      - APs
      - Contrôleur Wi-Fi
      - Patchs sécurité réguliers
   
   [OK] AUDITS RÉGULIERS
      - Pentest Wi-Fi (annuel)
      - Vérifier configurations
      - Test politiques firewall



═══════════════════════════════════════════════════════════
FIN DES EXERCICES
═══════════════════════════════════════════════════════════
"""


# ============================================================================
# [DOCS] CONCLUSION CHAPITRE 6
# ============================================================================

"""
[BRAVO] FÉLICITATIONS !

Vous avez terminé le Chapitre 6 : Wi-Fi (802.11)


[GUIDE] RÉCAPITULATIF COMPLET

PARTIE 1 : FONDATIONS
─────────────────────

[OK] HISTORIQUE :
   - 1997-2024 : 802.11 -> 802.11be (Wi-Fi 7)
   - Évolution : 2 Mbps -> 40+ Gbps
   - Nomenclature : Wi-Fi 4/5/6/7
   
[OK] NORMES :
   - 802.11b/a/g (historique)
   - 802.11n (MIMO, 600 Mbps)
   - 802.11ac (MU-MIMO, 6.9 Gbps)
   - 802.11ax (OFDMA, Wi-Fi 6/6E, 9.6 Gbps)
   - 802.11be (Wi-Fi 7, 40+ Gbps)
   
[OK] ARCHITECTURE :
   - Modes : Infrastructure, Ad-hoc, Mesh
   - BSS, ESS, SSID, BSSID
   - Roaming entre APs


PARTIE 2 : TECHNIQUE AVANCÉE
─────────────────────────────

[OK] COUCHE PHYSIQUE :
   - Bandes : 2.4, 5, 6 GHz
   - Canaux : 1/6/11 (2.4 GHz), 24+ (5 GHz), 59+ (6 GHz)
   - RSSI, SNR, sensibilité
   
[OK] CSMA/CA :
   - Carrier Sense + Backoff
   - RTS/CTS (nœud caché)
   - NAV, fragmentation, agrégation
   - Différences vs CSMA/CD
   
[OK] SÉCURITÉ :
   - WEP (obsolète) [X]
   - WPA/WPA2 (actuel)
   - WPA3 (futur) : SAE, PMF, Enhanced Open
   - Enterprise vs Personal
   - 802.1X / RADIUS
   
[OK] QoS ET ROAMING :
   - WMM (4 catégories AC)
   - 802.11r (Fast Roaming <50ms)
   - 802.11k (Resource Management)
   - 802.11v (BSS Transition)
   
[OK] TROUBLESHOOTING :
   - Diagnostic méthodique
   - Outils (Wireshark, site survey)
   - Problèmes fréquents
   - Commandes essentielles


[OBJECTIF] COMPÉTENCES ACQUISES

Vous savez maintenant :

[OK] Comprendre évolution Wi-Fi
[OK] Choisir norme adaptée (n/ac/ax)
[OK] Planifier canaux (2.4/5/6 GHz)
[OK] Configurer sécurité (WPA2/WPA3)
[OK] Déployer architecture (BSS/ESS)
[OK] Optimiser roaming (802.11r/k/v)
[OK] Implémenter QoS (WMM)
[OK] Diagnostiquer problèmes Wi-Fi
[OK] Interpréter RSSI, SNR, débits
[OK] Concevoir réseaux Wi-Fi professionnels


[PRO] APPLICATIONS PRATIQUES

Ces connaissances vous permettent de :

[OK] Concevoir réseaux Wi-Fi entreprise
[OK] Dimensionner infrastructure (APs, canaux)
[OK] Sécuriser correctement (WPA2/3, VLANs)
[OK] Optimiser performances (canaux, QoS)
[OK] Diagnostiquer pannes efficacement
[OK] Déployer roaming transparent
[OK] Gérer densité utilisateurs
[OK] Auditer sécurité Wi-Fi


[LIEN] LIEN AVEC AUTRES CHAPITRES

Wi-Fi complète Ethernet :

- Chapitre 2 : APs = Équipements réseau
- Chapitre 3 : Modulation (OFDM, QAM)
- Chapitre 4 : Couches 1-2 OSI (Wi-Fi = implémentation)
- Chapitre 5 : Ethernet (backbone APs)
- Chapitre 21 : VLANs (segmentation Wi-Fi)


-> PROCHAINS CHAPITRES

Maintenant que vous maîtrisez les couches 1-2 (Ethernet + Wi-Fi),
les prochains chapitres approfondiront les couches supérieures :

- IPv4 (Adressage, subnetting)
- Protocoles réseau (ARP, ICMP, DNS, DHCP)
- TCP/UDP détaillé
- Routage (statique, dynamique)


[RAPIDE] EXCELLENT TRAVAIL !

Wi-Fi est ESSENTIEL dans les réseaux modernes.
Vous maîtrisez maintenant cette technologie complexe !


═══════════════════════════════════════════════════════════
[GUIDE] FIN DU CHAPITRE 6 - WI-FI (802.11)
═══════════════════════════════════════════════════════════
"""

# ============================================================================
# CHAPITRE 7 : ADRESSAGE MAC (MEDIA ACCESS CONTROL)
# ============================================================================

"""
[OBJECTIF] OBJECTIFS DU CHAPITRE

Ce chapitre couvre l'adressage MAC, fondamental pour la couche liaison :
[OK] Structure adresse MAC
[OK] Types d'adresses (Unicast, Multicast, Broadcast)
[OK] OUI (Organizationally Unique Identifier)
[OK] Adresses MAC spéciales
[OK] Tables MAC des switchs
[OK] Apprentissage et vieillissement
[OK] ARP (résolution IP->MAC)
[OK] Attaques et sécurité MAC
[OK] Troubleshooting adressage MAC

[IDEE] POURQUOI MAC EST CRUCIAL ?

L'adressage MAC est la BASE de la couche 2 :
- Identifie PHYSIQUEMENT chaque interface réseau
- Permet commutation Ethernet efficace
- Essentiel pour communication locale
- Utilisé par ARP pour résolution IP->MAC
- Fondement sécurité réseau (filtrage MAC)

Comprendre MAC est ESSENTIEL pour diagnostiquer problèmes réseau !


[DOCS] PLAN DU CHAPITRE

1. Introduction adressage MAC
2. Structure adresse MAC (48 bits)
3. OUI et fabricants
4. Types d'adresses (Unicast, Multicast, Broadcast)
5. Tables MAC des switchs
6. ARP (Address Resolution Protocol)
7. Sécurité et attaques MAC
8. Troubleshooting
9. Exercices pratiques
"""


# ----------------------------------------------------------------------------
# [RESEAU] PARTIE 1 : INTRODUCTION ADRESSAGE MAC
# ----------------------------------------------------------------------------

"""
INTRODUCTION ADRESSAGE MAC


QU'EST-CE QU'UNE ADRESSE MAC ?

MAC = Media Access Control

Aussi appelée :
- Adresse physique (Physical Address)
- Adresse matérielle (Hardware Address)
- Adresse Ethernet (dans contexte Ethernet)
- Adresse de couche 2 (Layer 2 Address)

Définition :
Identifiant UNIQUE attribué à chaque interface réseau

Couche OSI : Couche 2 (Liaison de données)


CARACTÉRISTIQUES

Longueur : 48 bits (6 octets)

Format : XX:XX:XX:XX:XX:XX (hexadécimal)

Exemple : 00:1A:2B:3C:4D:5E

Unicité : Théoriquement unique mondialement
(2^48 = 281,474,976,710,656 adresses possibles)

Attribution : Gravée en usine (ROM carte réseau)

Permanence : Fixe (en principe)
Note : Modifiable logiciellement sur certains systèmes


RÔLE DANS RÉSEAU

Communication locale :
- Switch utilise adresses MAC pour commutation
- Trame Ethernet contient MAC source et destination
- Communication directe entre équipements même segment


Différence MAC vs IP :

┌────────────┬──────────────┬──────────────┐
│  Critère   │     MAC      │      IP      │
├────────────┼──────────────┼──────────────┤
│ Couche OSI │ 2 (Liaison)  │ 3 (Réseau)   │
│ Longueur   │ 48 bits      │ 32 bits (v4) │
│ Portée     │ Local (LAN)  │ Global (WAN) │
│ Changement │ Fixe (HW)    │ Configurable │
│ Routage    │ Non routable │ Routable     │
│ Exemple    │00:1A:2B:...  │192.168.1.10  │
└────────────┴──────────────┴──────────────┘


ANALOGIE

MAC = Numéro châssis voiture (VIN)
- Unique mondialement
- Gravé usine
- Permanent (normalement)
- Identifie véhicule physiquement

IP = Adresse postale
- Configurable
- Change selon localisation
- Permet acheminement


HISTORIQUE

1980 : Xerox définit Ethernet
────────────────────────────

Adresse 48 bits adoptée

Pourquoi 48 bits ?
- Compromis : Assez grand (unicité), assez court (overhead)
- 16 millions OUI possibles (24 bits)
- 16 millions adresses par OUI (24 bits)


1984 : IEEE standardise
───────────────────────

IEEE 802 adopte format 48 bits

IEEE gère attribution OUI aux fabricants


Aujourd'hui :
─────────────

Format 48 bits universel :
- Ethernet
- Wi-Fi
- Bluetooth
- Tous réseaux IEEE 802
"""


# ----------------------------------------------------------------------------
# [NOMBRE] PARTIE 2 : STRUCTURE ADRESSE MAC
# ----------------------------------------------------------------------------

"""
STRUCTURE ADRESSE MAC


FORMAT 48 BITS

6 octets = 48 bits

Notation : Hexadécimale avec séparateurs

Formats courants :

┌──────────────────────┬─────────────────┐
│   Format             │    Exemple      │
├──────────────────────┼─────────────────┤
│ Deux-points (Linux)  │00:1A:2B:3C:4D:5E│
│ Tiret (Windows)      │00-1A-2B-3C-4D-5E│
│ Point (Cisco)        │001A.2B3C.4D5E   │
│ Sans séparateur      │001A2B3C4D5E     │
└──────────────────────┴─────────────────┘

Tous représentent la même adresse !


DIVISION OUI / NIC

48 bits divisés en deux parties :

┌─────────────────────┬─────────────────────┐
│   OUI (24 bits)     │    NIC (24 bits)    │
│ Organizationally    │ Network Interface   │
│ Unique Identifier   │ Controller          │
├─────────────────────┼─────────────────────┤
│    00:1A:2B         │     3C:4D:5E        │
│   Fabricant         │   Numéro série      │
└─────────────────────┴─────────────────────┘


OUI (Organizationally Unique Identifier) - 24 bits
═══════════════════════════════════════════════════

Attribué par IEEE aux fabricants

Format : 3 premiers octets

Exemples OUI célèbres :

┌──────────┬─────────────────────────┐
│   OUI    │      Fabricant          │
├──────────┼─────────────────────────┤
│ 00:00:0C │ Cisco Systems           │
│ 00:03:93 │ Apple, Inc.             │
│ 00:50:56 │ VMware, Inc.            │
│ 08:00:27 │ Oracle VirtualBox       │
│ 00:15:5D │ Microsoft Hyper-V       │
│ 00:1B:63 │ Apple, Inc.             │
│ 00:1D:7E │ Cisco SPVTG             │
│ B8:27:EB │ Raspberry Pi Foundation │
│ DC:A6:32 │ Raspberry Pi Foundation │
│ E4:5F:01 │ Raspberry Pi Foundation │
└──────────┴─────────────────────────┘

Recherche OUI : https://maclookup.app ou https://macvendors.com


NIC (Network Interface Controller) - 24 bits
═════════════════════════════════════════════

Numéro unique attribué par fabricant

Format : 3 derniers octets

Unicité : Fabricant assure unicité dans son OUI

Exemple :
OUI Cisco : 00:00:0C
Carte 1 : 00:00:0C:12:34:56
Carte 2 : 00:00:0C:12:34:57
...


BITS SPÉCIAUX (1ER OCTET)

Premier octet contient 2 bits spéciaux :

Format binaire premier octet : ABXXXXXX

┌─────────────────────────────────────────┐
│  Bit 0 (LSB) : I/G (Individual/Group)   │
│  Bit 1       : U/L (Universal/Local)    │
└─────────────────────────────────────────┘


BIT I/G (Individual/Group) - Bit 0
═══════════════════════════════════

Position : Bit le moins significatif (LSB) du 1er octet

Valeurs :
- 0 = Individual (Unicast)
- 1 = Group (Multicast/Broadcast)

Exemple :

00:1A:2B:3C:4D:5E
^^
00 en hex = 00000000 en binaire
           Bit 0 = 0 -> Unicast [OK]

01:00:5E:00:00:00
^^
01 en hex = 00000001 en binaire
           Bit 0 = 1 -> Multicast [OK]


BIT U/L (Universal/Local) - Bit 1
══════════════════════════════════

Position : Bit 1 du 1er octet

Valeurs :
- 0 = Globally unique (Universal)
- 1 = Locally administered

Globally unique (U=0) :
Attribuée par IEEE/fabricant
Garantie unicité mondiale

Locally administered (U=1) :
Modifiée localement (admin réseau)
Unicité non garantie globalement

Exemple :

00:1A:2B:3C:4D:5E
^^
00 en hex = 00000000 en binaire
           Bit 1 = 0 -> Globale (IEEE) [OK]

02:00:00:00:00:01
^^
02 en hex = 00000010 en binaire
           Bit 1 = 1 -> Locale (admin) [OK]


Utilisation adresses locales :
- Machines virtuelles
- Interfaces VPN
- Tests / Lab
- Personnalisation admin


VISUALISATION BITS SPÉCIAUX

Premier octet : Bit 7 6 5 4 3 2 1 0
                     X X X X X U I
                               │ └─ I/G bit
                               └─── U/L bit

Exemples :

00 = 0000000 0 -> Unicast, Global
   bit U=0 ─┘ └─ bit I=0

01 = 0000000 1 -> Multicast, Global
           └─ bit I=1

02 = 0000001 0 -> Unicast, Local
       └───┘    bit U=1

03 = 0000001 1 -> Multicast, Local
"""


# ----------------------------------------------------------------------------
# [LISTE] PARTIE 3 : TYPES D'ADRESSES MAC
# ----------------------------------------------------------------------------

"""
TYPES D'ADRESSES MAC


UNICAST (One-to-One)
════════════════════

Définition : Adresse unique d'une interface

Bit I/G = 0 (bit 0 du 1er octet = 0)

Caractéristiques :
- Destinataire : UNE seule interface
- Communication point-à-point
- Type le plus courant

Exemple : 00:1A:2B:3C:4D:5E

Usage :
- Communication normale PC -> PC
- PC -> Switch
- Switch -> Routeur

Comportement switch :
- Consulte table MAC
- Transmet UNIQUEMENT sur port destination
- Pas de flooding (si MAC connue)


MULTICAST (One-to-Many)
═══════════════════════

Définition : Adresse groupe (plusieurs interfaces)

Bit I/G = 1 (bit 0 du 1er octet = 1)

Caractéristiques :
- Destinataires : GROUPE d'interfaces
- Communication un-vers-plusieurs
- Abonnement au groupe requis

Format :
- 1er octet : Bit 0 = 1
- Valeurs impairs 1er octet : 01, 03, 05, 07, 09...


MULTICAST IPv4 (01:00:5E:XX:XX:XX)
───────────────────────────────────

Format : 01:00:5E:0X:XX:XX

Plage : 01:00:5E:00:00:00 - 01:00:5E:7F:FF:FF

Mapping IP multicast -> MAC multicast :

IP multicast : 224.0.0.0 - 239.255.255.255

Formule : MAC = 01:00:5E + 23 derniers bits IP

Exemple :

IP : 224.0.0.5 (OSPF)
Binaire : 11100000.00000000.00000000.00000101
23 bits : 0000000.00000000.00000101
Hex : 00:00:05
MAC : 01:00:5E:00:00:05 [OK]

Exemples courants :

┌──────────────┬─────────────────┬──────────────┐
│  IP Multicast│   MAC Multicast │   Usage      │
├──────────────┼─────────────────┼──────────────┤
│ 224.0.0.1    │ 01:00:5E:00:00:01│Tous hôtes    │
│ 224.0.0.2    │ 01:00:5E:00:00:02│Tous routeurs │
│ 224.0.0.5    │ 01:00:5E:00:00:05│OSPF routers  │
│ 224.0.0.9    │ 01:00:5E:00:00:09│RIPv2 routers │
│ 224.0.0.13   │ 01:00:5E:00:00:0D│PIM routers   │
└──────────────┴─────────────────┴──────────────┘


MULTICAST IPv6 (33:33:XX:XX:XX:XX)
───────────────────────────────────

Format : 33:33 + 32 derniers bits IPv6

Exemple :

IPv6 : FF02::1 (tous nœuds local)
MAC : 33:33:00:00:00:01

IPv6 : FF02::2 (tous routeurs local)
MAC : 33:33:00:00:00:02


MULTICAST Autres protocoles
────────────────────────────

Spanning Tree : 01:80:C2:00:00:00 (BPDU)
LLDP : 01:80:C2:00:00:0E
PAUSE (Flow Control) : 01:80:C2:00:00:01


Comportement switch :
- Flooding sur tous ports (par défaut)
- IGMP snooping : Transmet uniquement sur ports abonnés


BROADCAST (One-to-All)
══════════════════════

Définition : Adresse vers TOUS sur segment

Valeur : FF:FF:FF:FF:FF:FF (tous bits à 1)

Caractéristiques :
- Destinataires : TOUS les équipements du segment
- Communication un-vers-tous

Exemple : FF:FF:FF:FF:FF:FF

Usage :
- ARP Request : "Qui a l'IP 192.168.1.10 ?"
- DHCP Discovery : Client cherche serveur
- NetBIOS name resolution
- Wake-on-LAN

Comportement switch :
- Flooding sur TOUS les ports (sauf source)
- Domaine broadcast = VLAN


Limitation :
- Ne traverse PAS routeurs (Layer 3)
- Limité au segment local (VLAN)


COMPARAISON TYPES

┌───────────┬──────────┬─────────────┬──────────────┐
│   Type    │  Bit I/G │Destinataire │   Exemple    │
├───────────┼──────────┼─────────────┼──────────────┤
│ Unicast   │    0     │ Un seul     │00:1A:2B:..   │
│ Multicast │    1     │ Groupe      │01:00:5E:..   │
│ Broadcast │    1     │ Tous        │FF:FF:FF:FF:.│
└───────────┴──────────┴─────────────┴──────────────┘

Note : Broadcast = Cas spécial de Multicast (tous bits à 1)
"""


# ----------------------------------------------------------------------------
# [ARCHIVE] PARTIE 4 : TABLES MAC DES SWITCHS
# ----------------------------------------------------------------------------

"""
TABLES MAC (CAM - Content Addressable Memory)


RÔLE

Switch maintient table MAC (ou CAM table)

Contenu : Mapping MAC address -> Port

But : Savoir sur quel port transmettre trame


STRUCTURE TABLE MAC

Entrée typique :

┌────────────────────┬──────┬──────┬────────────┐
│   MAC Address      │ Port │ VLAN │    Type    │
├────────────────────┼──────┼──────┼────────────┤
│ 00:1A:2B:3C:4D:5E  │ Gi0/1│  1   │  Dynamic   │
│ 00:50:56:AB:CD:EF  │ Gi0/2│  1   │  Dynamic   │
│ 00:0C:29:11:22:33  │ Gi0/5│  10  │  Dynamic   │
│ 00:11:22:33:44:55  │ Gi0/1│  1   │  Static    │
└────────────────────┴──────┴──────┴────────────┘

Champs :
- MAC Address : Adresse MAC apprise
- Port : Interface physique
- VLAN : VLAN ID
- Type : Dynamic (appris) ou Static (configuré)
- Age : Temps depuis dernière vue (secondes)


APPRENTISSAGE MAC (MAC Learning)
═════════════════════════════════

Processus automatique :

1. RÉCEPTION TRAME
   ───────────────
   
   Switch reçoit trame sur port Gi0/1
   
   Trame :
   - MAC Source : 00:1A:2B:3C:4D:5E
   - MAC Destination : 00:50:56:AB:CD:EF

2. APPRENTISSAGE SOURCE
   ────────────────────
   
   Switch examine MAC Source : 00:1A:2B:3C:4D:5E
   
   Question : Cette MAC est dans table ?
   
   Si NON -> Ajouter :
   ┌────────────────────┬──────┬──────┬────────┐
   │ 00:1A:2B:3C:4D:5E  │ Gi0/1│  1   │Dynamic │
   └────────────────────┴──────┴──────┴────────┘
   
   Si OUI -> Rafraîchir timer (reset aging)

3. CONSULTATION DESTINATION
   ────────────────────────
   
   Switch examine MAC Destination : 00:50:56:AB:CD:EF
   
   Question : Cette MAC est dans table ?
   
   Si OUI (ex: port Gi0/2) :
   -> Transmettre UNIQUEMENT sur Gi0/2 [OK] (Switching)
   
   Si NON :
   -> Flooding sur TOUS ports sauf source [X] (comme hub)

4. TRANSMISSION
   ────────────
   
   Trame transmise vers destination


EXEMPLE DÉTAILLÉ

Topologie :

        Switch
     ┌────┴────┐
   Gi0/1  Gi0/2  Gi0/3
     │      │      │
    PC1    PC2    PC3
  (MAC_A) (MAC_B) (MAC_C)


État initial : Table MAC vide
───────────────────────────────

┌────────────┬──────┬──────┐
│ MAC        │ Port │ VLAN │
├────────────┼──────┼──────┤
│ (vide)     │      │      │
└────────────┴──────┴──────┘


Étape 1 : PC1 -> PC2
────────────────────

PC1 envoie trame vers PC2

Trame : Src=MAC_A, Dst=MAC_B

Switch reçoit sur Gi0/1 :
1. Apprend : MAC_A -> Gi0/1
2. MAC_B inconnu -> Flooding (Gi0/2 ET Gi0/3)

Table MAC après :
┌────────┬──────┬──────┐
│ MAC_A  │Gi0/1 │  1   │
└────────┴──────┴──────┘

PC2 et PC3 reçoivent trame
PC2 accepte (MAC_B = sa MAC)
PC3 ignore (MAC_B ≠ sa MAC)


Étape 2 : PC2 -> PC1 (Réponse)
──────────────────────────────

PC2 répond à PC1

Trame : Src=MAC_B, Dst=MAC_A

Switch reçoit sur Gi0/2 :
1. Apprend : MAC_B -> Gi0/2
2. MAC_A connu (Gi0/1) -> Transmet UNIQUEMENT Gi0/1 [OK]

Table MAC après :
┌────────┬──────┬──────┐
│ MAC_A  │Gi0/1 │  1   │
│ MAC_B  │Gi0/2 │  1   │
└────────┴──────┴──────┘


Étape 3 : PC1 -> PC2 (Suite)
────────────────────────────

PC1 envoie nouvelle trame vers PC2

Trame : Src=MAC_A, Dst=MAC_B

Switch reçoit sur Gi0/1 :
1. MAC_A déjà connu -> Rafraîchir timer
2. MAC_B connu (Gi0/2) -> Transmet UNIQUEMENT Gi0/2 [OK]

Pas de flooding ! Performance maximale [OK]


VIEILLISSEMENT (Aging)
═══════════════════════

Entrées MAC ne sont PAS permanentes (sauf statiques)

Aging Timer : 300 secondes (5 minutes) par défaut

Fonctionnement :
1. MAC apprise -> Timer = 300s
2. Trame reçue avec cette MAC source -> Reset timer à 300s
3. Timer atteint 0 -> Suppression entrée

Pourquoi aging ?
- PC déplacé vers autre port -> Ancienne entrée invalide
- PC débranché -> Libérer mémoire table
- Éviter entrées obsolètes

Configuration Cisco :
```
mac address-table aging-time 300
```

Valeurs typiques : 60-600 secondes


TAILLE TABLE MAC

Limitation : Mémoire TCAM (Ternary Content-Addressable Memory)

Exemples capacités :

┌─────────────────────┬───────────────┐
│   Switch            │ Entrées max   │
├─────────────────────┼───────────────┤
│ SOHO (8 ports)      │ 2,000-4,000   │
│ SMB (24 ports)      │ 8,000-16,000  │
│ Enterprise (48p)    │ 32,000-128,000│
│ Data Center         │ 256,000+      │
└─────────────────────┴───────────────┘

Saturation table :
- Nouvelles MACs non apprises
- Flooding permanent (comme hub) [X]
- Performance dégradée


ENTRÉES STATIQUES

Administrateur peut configurer manuellement

Cisco :
```
mac address-table static 00AA.BBCC.DDEE vlan 1 interface Gi0/1
```

Caractéristiques :
- Permanentes (pas d'aging)
- Priorité sur dynamiques
- Utiles pour sécurité (port security)


COMMANDES DIAGNOSTIC

Cisco IOS :
```
show mac address-table
show mac address-table dynamic
show mac address-table address 00:1A:2B:3C:4D:5E
show mac address-table interface Gi0/1
show mac address-table count
clear mac address-table dynamic
```

Exemple sortie :
```
Mac Address Table
-------------------------------------------
Vlan    Mac Address       Type        Ports
----    -----------       --------    -----
   1    001a.2b3c.4d5e    DYNAMIC     Gi0/1
   1    0050.56ab.cdef    DYNAMIC     Gi0/2
  10    000c.2911.2233    DYNAMIC     Gi0/5
Total Mac Addresses for this criterion: 3
```
"""


# ----------------------------------------------------------------------------
# [SYNC] PARTIE 5 : ARP (ADDRESS RESOLUTION PROTOCOL)
# ----------------------------------------------------------------------------

"""
ARP (ADDRESS RESOLUTION PROTOCOL)


PROBLÈME À RÉSOUDRE

Communication IP nécessite adresse MAC !

PC1 veut envoyer paquet IP vers PC2

PC1 connaît : IP de PC2 (192.168.1.20)
PC1 NE connaît PAS : MAC de PC2 (?)

Solution : ARP résout IP -> MAC


RÔLE ARP

ARP = Pont entre Couche 2 (MAC) et Couche 3 (IP)

Fonction : Résolution IP -> MAC sur réseau local

Standard : RFC 826 (1982)


FONCTIONNEMENT ARP


ÉTAPE 1 : ARP REQUEST (Requête)
────────────────────────────────

PC1 veut communiquer avec 192.168.1.20

PC1 envoie ARP Request (BROADCAST) :

Trame Ethernet :
- MAC Dst : FF:FF:FF:FF:FF:FF (Broadcast)
- MAC Src : 00:1A:2B:3C:4D:5E (MAC de PC1)
- Type : 0x0806 (ARP)

Paquet ARP :
- Opcode : 1 (Request)
- Sender MAC : 00:1A:2B:3C:4D:5E
- Sender IP : 192.168.1.10
- Target MAC : 00:00:00:00:00:00 (inconnu)
- Target IP : 192.168.1.20 (cherché)

Question broadcast : "Qui a l'IP 192.168.1.20 ?"


ÉTAPE 2 : Réception par tous
─────────────────────────────

Broadcast -> TOUS les équipements du segment reçoivent

Chaque équipement examine Target IP :
- 192.168.1.20 = Mon IP ? -> Répondre
- 192.168.1.20 ≠ Mon IP ? -> Ignorer


ÉTAPE 3 : ARP REPLY (Réponse)
──────────────────────────────

PC2 (192.168.1.20) reconnaît son IP

PC2 envoie ARP Reply (UNICAST) :

Trame Ethernet :
- MAC Dst : 00:1A:2B:3C:4D:5E (MAC de PC1)
- MAC Src : 00:50:56:AB:CD:EF (MAC de PC2)
- Type : 0x0806 (ARP)

Paquet ARP :
- Opcode : 2 (Reply)
- Sender MAC : 00:50:56:AB:CD:EF
- Sender IP : 192.168.1.20
- Target MAC : 00:1A:2B:3C:4D:5E
- Target IP : 192.168.1.10

Réponse unicast : "192.168.1.20 = 00:50:56:AB:CD:EF"


ÉTAPE 4 : Mise en cache
───────────────────────

PC1 reçoit ARP Reply

PC1 ajoute à sa cache ARP :
```
192.168.1.20 -> 00:50:56:AB:CD:EF
```

PC1 peut maintenant envoyer trames Ethernet vers PC2 [OK]


FORMAT PAQUET ARP

┌────────────────────────────────────────┐
│ Hardware Type (2 octets) : 1 (Ethernet)│
├────────────────────────────────────────┤
│ Protocol Type (2 octets) : 0x0800 (IP) │
├────────────────────────────────────────┤
│ HW Addr Len (1 octet) : 6 (MAC)        │
├────────────────────────────────────────┤
│ Protocol Addr Len (1 octet) : 4 (IPv4) │
├────────────────────────────────────────┤
│ Opcode (2 octets) : 1=Request, 2=Reply │
├────────────────────────────────────────┤
│ Sender MAC Address (6 octets)          │
├────────────────────────────────────────┤
│ Sender IP Address (4 octets)           │
├────────────────────────────────────────┤
│ Target MAC Address (6 octets)          │
├────────────────────────────────────────┤
│ Target IP Address (4 octets)           │
└────────────────────────────────────────┘


CACHE ARP

Chaque système maintient table ARP (cache)

Windows :
```
arp -a
```

Exemple sortie :
```
Interface: 192.168.1.10 --- 0x5
  Adresse Internet      Adresse physique      Type
  192.168.1.1           00-11-22-33-44-55     dynamique
  192.168.1.20          00-50-56-ab-cd-ef     dynamique
  192.168.1.255         ff-ff-ff-ff-ff-ff     statique
```

Linux :
```
ip neighbor show
```
ou
```
arp -n
```

Entrées :
- Dynamiques : Apprises par ARP (aging ~120-300s)
- Statiques : Configurées manuellement


TYPES ENTRÉES ARP

Dynamic (Dynamique) :
- Apprises automatiquement
- Aging timer (expiration)
- Supprimées si non utilisées

Static (Statique) :
- Configurées manuellement
- Permanentes
- Utiles pour sécurité

Incomplete (Incomplète) :
- Résolution en cours
- Pas encore de réponse

Stale (Obsolète) :
- Expirée mais gardée temporairement


GRATUITOUS ARP
══════════════

ARP Request spécial :
- Sender IP = Target IP (même IP)
- But : Annoncer/Vérifier sa propre IP

Usages :

1. DÉTECTION DUPLICATE IP
   ───────────────────────
   
   PC démarre, envoie Gratuitous ARP pour sa propre IP
   Si réponse -> Duplicate IP detected ! [X]

2. MISE À JOUR CACHES
   ──────────────────
   
   Carte réseau changée (nouvelle MAC, même IP)
   Gratuitous ARP force mise à jour caches voisins

3. FAILOVER / VRRP
   ───────────────
   
   Routeur backup devient master
   Envoie Gratuitous ARP pour IP virtuelle
   -> Clients mettent à jour cache immédiatement


PROXY ARP
═════════

Routeur répond ARP Request pour autre réseau

Scénario :
PC1 (192.168.1.10/24) pense PC2 (192.168.2.20) est local
(Mauvais masque configuré : /16 au lieu de /24)

PC1 envoie ARP Request pour 192.168.2.20

Routeur (192.168.1.1) voit requête :
- Connaît 192.168.2.0/24 via autre interface
- Répond avec SA PROPRE MAC

PC1 envoie paquets vers MAC routeur
Routeur route vers 192.168.2.0/24 [OK]

Problème masqué (configuration incorrecte)

Généralement désactivé (sauf besoin spécifique)


COMMANDES ARP

Windows :
```
arp -a                     # Afficher cache
arp -d                     # Vider cache
arp -s 192.168.1.20 00-11-22-33-44-55  # Entrée statique
```

Linux :
```
ip neighbor show           # Afficher cache
ip neighbor flush all      # Vider cache
ip neighbor add 192.168.1.20 lladdr 00:11:22:33:44:55 dev eth0  # Statique
```

Cisco :
```
show arp
clear arp-cache
arp 192.168.1.20 0011.2233.4455 ARPA
```
"""


# ----------------------------------------------------------------------------
# [VERROUILLE] PARTIE 6 : SÉCURITÉ ET ATTAQUES MAC
# ----------------------------------------------------------------------------

"""
SÉCURITÉ ADRESSAGE MAC


ATTAQUES COURANTES


1. MAC FLOODING (MAC Flooding Attack)
══════════════════════════════════════

But : Saturer table MAC du switch

Méthode :
1. Attaquant génère milliers de trames
2. Chaque trame : MAC source DIFFÉRENTE (aléatoire)
3. Switch apprend toutes ces MACs
4. Table MAC sature (capacité dépassée)

Conséquence :
Switch ne peut plus apprendre nouvelles MACs
-> Mode "fail-open" : Flooding permanent
-> Switch agit comme HUB [X]
-> Attaquant peut sniffer tout le trafic !

Outil : macof (partie dsniff)

Protection :
- Port Security (limite MACs par port)
- Storm Control (limite broadcasts)
- Dynamic ARP Inspection


2. MAC SPOOFING (Usurpation MAC)
═════════════════════════════════

But : Se faire passer pour autre équipement

Méthode :
1. Attaquant change sa MAC
2. Utilise MAC d'une victime
3. Trafic destiné victime -> Attaquant

Windows :
```
# Registre Windows ou outils tiers
```

Linux :
```
ip link set dev eth0 address 00:11:22:33:44:55
```

macOS :
```
sudo ifconfig en0 ether 00:11:22:33:44:55
```

Scénarios :
- Contourner filtrage MAC (fausse sécurité)
- Man-in-the-middle
- Vol de session

Protection :
- Port Security avec sticky MAC
- 802.1X authentication (authentification robuste)
- NAC (Network Access Control)


3. ARP SPOOFING / POISONING
════════════════════════════

But : Intercepter trafic (Man-in-the-Middle)

Méthode :
1. Attaquant envoie faux ARP Replies
2. Victimes : "Passerelle = MAC attaquant"
3. Trafic passe par attaquant

Exemple :

Réseau normal :
PC1 -> [Passerelle] -> Internet

Après ARP Poisoning :
PC1 -> [Attaquant] -> [Passerelle] -> Internet
         ^
    Sniffe tout !

Outils :
- arpspoof (dsniff)
- Ettercap
- Cain & Abel

Protection :
- Dynamic ARP Inspection (DAI)
- Entrées ARP statiques (pénible)
- DHCP Snooping + DAI
- Switches avec fonctions sécurité


CONTRE-MESURES


PORT SECURITY
═════════════

Limite nombre MACs par port

Configuration Cisco :
```
interface GigabitEthernet0/1
 switchport mode access
 switchport port-security
 switchport port-security maximum 2
 switchport port-security violation restrict
 switchport port-security mac-address sticky
```

Paramètres :

Maximum : Nombre MACs autorisées (1-8192)

Violation actions :
- Protect : Drop silencieux
- Restrict : Drop + log + compteur
- Shutdown : Shutdown port (err-disabled)

MAC address types :
- Static : Configurée manuellement
- Dynamic : Apprise (oubliée au reboot)
- Sticky : Apprise ET sauvegardée (persiste reboot)


DHCP SNOOPING
═════════════

Protège contre rogue DHCP servers

Principe :
- Ports "trusted" : Serveurs DHCP légitimes
- Ports "untrusted" : Clients (pas de DHCP Offer permis)

Build DHCP Binding Table :
```
MAC | IP | Port | VLAN | Lease
```

Configuration Cisco :
```
ip dhcp snooping
ip dhcp snooping vlan 1-100
interface Gi0/1
 ip dhcp snooping trust
```


DYNAMIC ARP INSPECTION (DAI)
════════════════════════════

Valide paquets ARP

Principe :
- Utilise DHCP Snooping binding table
- Vérifie cohérence MAC-IP dans ARP
- Bloque ARP invalides

Configuration Cisco :
```
ip arp inspection vlan 1-100
interface Gi0/1
 ip arp inspection trust
```


IP SOURCE GUARD
═══════════════

Filtre paquets IP selon MAC-IP binding

Empêche IP spoofing

Configuration Cisco :
```
interface Gi0/2
 ip verify source
```


802.1X AUTHENTICATION
═════════════════════

Authentification avant accès réseau

Composants :
- Supplicant : Client (PC)
- Authenticator : Switch
- Authentication Server : RADIUS

Avantages :
[OK] Authentification forte (username/password ou certificat)
[OK] Dynamique (utilisateur spécifique, pas machine)
[OK] Impossible usurper (cryptographique)

Protection ultime mais complexe


BONNES PRATIQUES SÉCURITÉ MAC

[OK] Port Security sur ports accès
[OK] DHCP Snooping activé
[OK] DAI (Dynamic ARP Inspection)
[OK] 802.1X si possible (entreprise)
[OK] Désactiver ports inutilisés
[OK] VLANs séparés (segmentation)
[OK] Monitoring anomalies (SIEM)
[OK] Firmware switchs à jour
```


# ----------------------------------------------------------------------------
# [OUTIL] PARTIE 7 : TROUBLESHOOTING ADRESSAGE MAC
# ----------------------------------------------------------------------------

"""
TROUBLESHOOTING ADRESSAGE MAC


PROBLÈMES COURANTS


1. TABLE MAC SATURÉE
════════════════════

Symptômes :
- Performance dégradée globale
- Flooding permanent
- Switch agit comme hub

Diagnostic :
```
show mac address-table count
```

Vérifier : Nombre entrées vs capacité max

Solution :
- Vider table : clear mac address-table dynamic
- Activer Port Security
- Augmenter aging time (libérer entrées)
- Si attack : Identifier source (port security violation)


2. MAC FLAPPING
═══════════════

Symptôme : Même MAC apparaît sur ports différents (oscillation)

Causes :
- Boucle réseau (câble redondant sans STP)
- Switch en cascade mal configuré
- Attaque MAC spoofing

Diagnostic :
```
show mac address-table address 0011.2233.4455
```

Observer si port change fréquemment

Cisco log :
```
%SW_MATM-4-MACFLAP_NOTIF: Host 0011.2233.4455 flapped between
Gi0/1 and Gi0/2
```

Solution :
- Vérifier câblage (boucle physique ?)
- Activer STP si désactivé
- Vérifier erreurs de configuration


3. DUPLICATE MAC
════════════════

Symptôme : Deux équipements même MAC

Causes :
- MAC clonée (VM mal configurée)
- Carte réseau défectueuse
- Attaque intentionnelle

Diagnostic :
```
show mac address-table | include 0011.2233.4455
```

Si apparaît sur >1 ports -> Duplicate [OK]

Solution :
- Identifier équipements concernés
- Reconfigurer MAC (VM)
- Remplacer carte réseau
- Investigation sécurité si malveillant


4. ARP CACHE CORRUPTION
═══════════════════════

Symptôme : Connectivité intermittente

Causes :
- ARP Poisoning attack
- Duplicate IP
- Gratuitous ARP invalide

Diagnostic :
```
arp -a  (Windows)
ip neighbor show  (Linux)
```

Vérifier entrées suspectes (MAC incorrecte pour IP)

Solution :
- Vider cache ARP :
  Windows : arp -d
  Linux : ip neighbor flush all
  
- Activer DAI (Dynamic ARP Inspection)
- Entrées statiques (temporaire)


5. COMMUNICATION LOCALE IMPOSSIBLE
═══════════════════════════════════

Symptôme : PC1 ne peut joindre PC2 (même réseau)

Vérifications :

Étape 1 : Vérifier table MAC switch
```
show mac address-table interface Gi0/1
show mac address-table interface Gi0/2
```

MACs présentes ? Si non -> Problème Couche 1-2

Étape 2 : Vérifier cache ARP
```
arp -a
```

IP présente ? MAC correcte ?

Étape 3 : Test ARP manuel
```
ping 192.168.1.20  (force ARP)
arp -a  (vérifier ajout)
```

Étape 4 : Capture Wireshark
- Voir ARP Request émis ?
- ARP Reply reçu ?
- Paquets ICMP échangés ?


COMMANDES DIAGNOSTIC


Windows
═══════

```
arp -a                    # Cache ARP
ipconfig /all             # MAC interface
getmac                    # MACs toutes interfaces
netsh interface show interface
```


Linux
═════

```
ip link show              # Interfaces et MACs
ip neighbor show          # Cache ARP
arp -n                    # Cache ARP (ancien)
ip -s link                # Statistiques
ethtool eth0              # Détails interface
```


Cisco Switch
════════════

```
show mac address-table
show mac address-table dynamic
show mac address-table interface Gi0/1
show mac address-table address 0011.2233.4455
show mac address-table count
show mac address-table aging-time
show mac address-table notification

show arp
show ip arp
clear mac address-table dynamic
clear arp-cache

show port-security
show port-security address
show port-security interface Gi0/1
```


Wireshark
═════════

Filtres utiles :
```
arp                       # Tous paquets ARP
eth.src == 00:11:22:33:44:55   # Source MAC
eth.dst == ff:ff:ff:ff:ff:ff   # Broadcast
eth.addr == 00:11:22:33:44:55  # Src OU Dst
```


OUTILS ANALYSE


tcpdump (Linux)
═══════════════

```
tcpdump -i eth0 arp
tcpdump -i eth0 'ether src 00:11:22:33:44:55'
tcpdump -i eth0 'ether dst ff:ff:ff:ff:ff:ff'
```


arpwatch (Linux)
════════════════

Monitoring cache ARP

Détecte :
- Nouvelles MACs
- Changements MAC pour IP
- Flip-flops

```
sudo apt install arpwatch
sudo arpwatch -i eth0
```


MÉTHODOLOGIE DIAGNOSTIC

1. VÉRIFIER COUCHE 1
   ─────────────────
   
   Câble branché ? LED active ?

2. VÉRIFIER COUCHE 2
   ─────────────────
   
   - Table MAC switch OK ?
   - Port-security violations ?
   - VLAN correct ?

3. VÉRIFIER ARP
   ────────────
   
   - Cache ARP correct ?
   - ARP Request/Reply échangés ?

4. CAPTURE RÉSEAU
   ──────────────
   
   Wireshark / tcpdump
   Analyser trames réelles

5. TESTS ISOLÉS
   ────────────
   
   - Ping loopback (127.0.0.1)
   - Ping IP local
   - Ping passerelle
   - Ping externe
"""


# ----------------------------------------------------------------------------
# [COURS] EXERCICES PRATIQUES - CHAPITRE 7
# ----------------------------------------------------------------------------

"""
[IDEE] EXERCICES


═══════════════════════════════════════════════════════════
EXERCICE 1 : ANALYSE ADRESSES MAC
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Analysez les adresses MAC suivantes :

1. 00:1A:2B:3C:4D:5E
2. 01:00:5E:00:00:05
3. FF:FF:FF:FF:FF:FF
4. 02:00:00:00:00:01
5. 33:33:00:00:00:01

Pour chacune, déterminez :
a) Type (Unicast/Multicast/Broadcast)
b) Scope (Universal/Local)
c) Usage probable


[OK] CORRECTION EXERCICE 1

1. 00:1A:2B:3C:4D:5E
   ─────────────────

   Premier octet : 00 (hex) = 00000000 (bin)
   Bit 0 (I/G) : 0
   Bit 1 (U/L) : 0
   
   a) Type : UNICAST (I/G=0)
   b) Scope : UNIVERSAL (U/L=0)
   c) Usage : Adresse MAC standard d'une carte réseau
      OUI : 00:1A:2B = Cisco Systems
      -> Interface réseau Cisco


2. 01:00:5E:00:00:05
   ─────────────────

   Premier octet : 01 (hex) = 00000001 (bin)
   Bit 0 (I/G) : 1
   Bit 1 (U/L) : 0
   
   a) Type : MULTICAST (I/G=1)
   b) Scope : UNIVERSAL (U/L=0)
   c) Usage : Multicast IPv4
      Format : 01:00:5E:XX:XX:XX
      Spécifiquement : 01:00:5E:00:00:05
      -> IP multicast 224.0.0.5 (OSPF routers)


3. FF:FF:FF:FF:FF:FF
   ─────────────────

   Tous bits à 1
   
   a) Type : BROADCAST (cas spécial multicast)
   b) Scope : UNIVERSAL
   c) Usage : Diffusion vers TOUS équipements du segment
      - ARP Request
      - DHCP Discovery
      - NetBIOS


4. 02:00:00:00:00:01
   ─────────────────

   Premier octet : 02 (hex) = 00000010 (bin)
   Bit 0 (I/G) : 0
   Bit 1 (U/L) : 1
   
   a) Type : UNICAST (I/G=0)
   b) Scope : LOCAL (U/L=1)
   c) Usage : Adresse administrée localement
      Probablement :
      - Machine virtuelle (VM)
      - Interface VPN
      - Configuration manuelle admin


5. 33:33:00:00:00:01
   ─────────────────

   Premier octet : 33 (hex) = 00110011 (bin)
   Bit 0 (I/G) : 1
   Bit 1 (U/L) : 1
   
   a) Type : MULTICAST (I/G=1)
   b) Scope : LOCAL (U/L=1)
   c) Usage : Multicast IPv6
      Format : 33:33:XX:XX:XX:XX
      Spécifiquement : 33:33:00:00:00:01
      -> IPv6 multicast FF02::1 (tous nœuds local)



═══════════════════════════════════════════════════════════
EXERCICE 2 : TABLE MAC ET COMMUTATION
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Topologie :

        Switch
     ┌────┴────┐
   Gi0/1  Gi0/2  Gi0/3
     │      │      │
    PC1    PC2    PC3
   MAC_A  MAC_B  MAC_C

Table MAC initiale : VIDE

Séquence d'événements :

1. PC1 envoie broadcast (ARP Request)
2. PC2 répond unicast à PC1 (ARP Reply)
3. PC1 envoie unicast à PC2 (Data)
4. PC3 envoie unicast à PC1 (Data)
5. PC2 envoie unicast à PC3 (Data)

Questions :

Pour chaque événement, indiquez :
a) Quelle(s) MAC(s) apprises par le switch ?
b) État table MAC après événement
c) Quels ports reçoivent la trame ?


[OK] CORRECTION EXERCICE 2

État initial :
─────────────

Table MAC : VIDE

┌────────┬──────┐
│  MAC   │ Port │
├────────┼──────┤
│ (vide) │      │
└────────┴──────┘


Événement 1 : PC1 -> Broadcast (ARP Request)
────────────────────────────────────────────

Trame : Src=MAC_A, Dst=FF:FF:FF:FF:FF:FF

a) MAC apprise : MAC_A (source)

b) Table MAC :
┌────────┬──────┐
│  MAC   │ Port │
├────────┼──────┤
│ MAC_A  │Gi0/1 │
└────────┴──────┘

c) Ports recevant trame :
   Broadcast -> TOUS sauf source
   -> Gi0/2 (PC2) [OK]
   -> Gi0/3 (PC3) [OK]


Événement 2 : PC2 -> PC1 (ARP Reply unicast)
────────────────────────────────────────────

Trame : Src=MAC_B, Dst=MAC_A

a) MAC apprise : MAC_B (source)

b) Table MAC :
┌────────┬──────┐
│  MAC   │ Port │
├────────┼──────┤
│ MAC_A  │Gi0/1 │
│ MAC_B  │Gi0/2 │
└────────┴──────┘

c) Ports recevant trame :
   Unicast vers MAC_A (connu: Gi0/1)
   -> Gi0/1 (PC1) [OK] UNIQUEMENT
   
   Pas de flooding (MAC_A dans table) [OK]


Événement 3 : PC1 -> PC2 (Data unicast)
───────────────────────────────────────

Trame : Src=MAC_A, Dst=MAC_B

a) MAC apprise : Aucune (MAC_A déjà connue)
   Timer MAC_A rafraîchi

b) Table MAC : INCHANGÉE
┌────────┬──────┐
│  MAC   │ Port │
├────────┼──────┤
│ MAC_A  │Gi0/1 │
│ MAC_B  │Gi0/2 │
└────────┴──────┘

c) Ports recevant trame :
   Unicast vers MAC_B (connu: Gi0/2)
   -> Gi0/2 (PC2) [OK] UNIQUEMENT


Événement 4 : PC3 -> PC1 (Data unicast)
───────────────────────────────────────

Trame : Src=MAC_C, Dst=MAC_A

a) MAC apprise : MAC_C (source, nouvelle)

b) Table MAC :
┌────────┬──────┐
│  MAC   │ Port │
├────────┼──────┤
│ MAC_A  │Gi0/1 │
│ MAC_B  │Gi0/2 │
│ MAC_C  │Gi0/3 │
└────────┴──────┘

c) Ports recevant trame :
   Unicast vers MAC_A (connu: Gi0/1)
   -> Gi0/1 (PC1) [OK] UNIQUEMENT


Événement 5 : PC2 -> PC3 (Data unicast)
───────────────────────────────────────

Trame : Src=MAC_B, Dst=MAC_C

a) MAC apprise : Aucune (MAC_B déjà connue)
   Timer MAC_B rafraîchi

b) Table MAC : INCHANGÉE
┌────────┬──────┐
│  MAC   │ Port │
├────────┼──────┤
│ MAC_A  │Gi0/1 │
│ MAC_B  │Gi0/2 │
│ MAC_C  │Gi0/3 │
└────────┴──────┘

c) Ports recevant trame :
   Unicast vers MAC_C (connu: Gi0/3)
   -> Gi0/3 (PC3) [OK] UNIQUEMENT


RÉSUMÉ :
────────

Flooding : Événement 1 uniquement (broadcast)
Commutation : Événements 2-5 (unicast, MACs connues)

Performance : 4/5 trames = Commutation efficace [OK]
1/5 trame = Flooding nécessaire (broadcast légitime)



═══════════════════════════════════════════════════════════
FIN DES EXERCICES
═══════════════════════════════════════════════════════════
"""


# ============================================================================
# [DOCS] CONCLUSION CHAPITRE 7
# ============================================================================

"""
[BRAVO] FÉLICITATIONS !

Vous avez terminé le Chapitre 7 : Adressage MAC


[GUIDE] RÉCAPITULATIF COMPLET

[OK] INTRODUCTION :
   - MAC = Adresse physique Couche 2
   - 48 bits (6 octets)
   - Unique par interface réseau
   - Différence MAC vs IP

[OK] STRUCTURE :
   - Format hexadécimal (XX:XX:XX:XX:XX:XX)
   - OUI (24 bits) : Fabricant
   - NIC (24 bits) : Numéro série
   - Bits spéciaux : I/G (bit 0), U/L (bit 1)

[OK] TYPES ADRESSES :
   - Unicast : One-to-one
   - Multicast : One-to-many (01:00:5E, 33:33)
   - Broadcast : One-to-all (FF:FF:FF:FF:FF:FF)

[OK] TABLES MAC :
   - CAM table des switchs
   - Apprentissage automatique
   - Aging (300s défaut)
   - Commutation vs Flooding

[OK] ARP :
   - Résolution IP -> MAC
   - ARP Request (broadcast)
   - ARP Reply (unicast)
   - Cache ARP

[OK] SÉCURITÉ :
   - MAC Flooding attack
   - MAC Spoofing
   - ARP Poisoning
   - Contre-mesures : Port Security, DAI, 802.1X

[OK] TROUBLESHOOTING :
   - Diagnostic tables MAC
   - Analyse cache ARP
   - Commandes (show, arp, ip neighbor)
   - Méthodologie


[OBJECTIF] COMPÉTENCES ACQUISES

Vous savez maintenant :

[OK] Comprendre structure adresses MAC
[OK] Identifier types (unicast/multicast/broadcast)
[OK] Reconnaître fabricants (OUI)
[OK] Analyser tables MAC des switchs
[OK] Comprendre apprentissage MAC
[OK] Maîtriser processus ARP
[OK] Identifier attaques MAC
[OK] Configurer sécurité (Port Security)
[OK] Diagnostiquer problèmes Couche 2


[PRO] APPLICATIONS PRATIQUES

Ces connaissances vous permettent de :

[OK] Diagnostiquer problèmes commutation
[OK] Configurer sécurité switchs
[OK] Analyser trafic réseau (Wireshark)
[OK] Comprendre fonctionnement VLAN
[OK] Détecter attaques réseau
[OK] Optimiser performances switchs
[OK] Implémenter filtrage MAC
[OK] Résoudre conflits ARP


[LIEN] LIEN AVEC AUTRES CHAPITRES

L'adressage MAC est central pour :

- Chapitre 2 : Switchs (utilisent tables MAC)
- Chapitre 4 : Couche 2 OSI (MAC = implémentation)
- Chapitre 5 : Ethernet (trames contiennent MACs)
- Chapitre 6 : Wi-Fi (BSSID = adresse MAC AP)
- Chapitre 8 : IPv4 (ARP résout IP->MAC)
- Chapitre 21 : VLANs (tables MAC par VLAN)


-> SUITE DU GUIDE

Ordre logique maintenant :

- Chapitre 8 : IPv4 (déjà complété [OK])
- Chapitre 9 : IPv6
- Chapitre 10 : Transition IPv4/IPv6
- Chapitre 11 : ARP, ICMP (protocoles réseau)


[RAPIDE] EXCELLENT TRAVAIL !

L'adressage MAC est FONDAMENTAL pour comprendre
les réseaux au niveau Couche 2.

Vous maîtrisez maintenant les bases de la commutation Ethernet !


═══════════════════════════════════════════════════════════
[GUIDE] FIN DU CHAPITRE 7 - ADRESSAGE MAC
═══════════════════════════════════════════════════════════
"""

# ============================================================================
# CHAPITRE 8 : IPv4 (INTERNET PROTOCOL VERSION 4) - PARTIE 1
# ============================================================================

"""
[OBJECTIF] OBJECTIFS DU CHAPITRE

Ce chapitre couvre IPv4, le protocole d'adressage Internet fondamental :
[OK] Structure et format adresses IPv4
[OK] Classes d'adresses (A, B, C, D, E)
[OK] Masques de sous-réseau
[OK] Adresses publiques vs privées
[OK] Adresses spéciales (loopback, broadcast, etc.)
[OK] Subnetting (découpage réseaux)
[OK] VLSM (Variable Length Subnet Mask)
[OK] Supernetting / CIDR
[OK] Calculs d'adressage pratiques

[IDEE] POURQUOI IPv4 EST CRUCIAL ?

IPv4 est la BASE de l'Internet :
- Protocole d'adressage Couche 3 (OSI)
- Identifie TOUS les équipements réseau
- Permet routage inter-réseaux
- Standard depuis 1981 (40+ ans !)
- Toujours majoritaire malgré IPv6

Maîtriser IPv4 est ESSENTIEL pour tout professionnel réseau !


[DOCS] PLAN DU CHAPITRE

PARTIE 1 :
1. Introduction IPv4
2. Structure adresse IPv4
3. Classes d'adresses (A, B, C, D, E)
4. Masques de sous-réseau
5. Adresses publiques vs privées
6. Adresses spéciales

PARTIE 2 :
7. Subnetting (découpage)
8. VLSM (masques variables)
9. Supernetting / CIDR
10. Exercices pratiques avancés
"""


# ----------------------------------------------------------------------------
# [WEB] PARTIE 1 : INTRODUCTION IPv4
# ----------------------------------------------------------------------------

"""
INTRODUCTION IPv4


QU'EST-CE QU'IPv4 ?

IPv4 = Internet Protocol version 4

Protocole Couche 3 (Réseau) du modèle OSI

Rôle :
- Adressage logique (identifier équipements)
- Routage (acheminer paquets entre réseaux)
- Fragmentation (adapter taille paquets)

Standard : RFC 791 (1981)


HISTORIQUE

1981 : Publication RFC 791 (IPv4)
──────────────────────────────────

Remplace NCP (Network Control Program)

Adresses : 32 bits
Espace d'adressage : 2^32 = 4,294,967,296 adresses (~4.3 milliards)


1990s : Explosion Internet
──────────────────────────

Croissance exponentielle utilisateurs
-> Épuisement prévu adresses IPv4


1993 : CIDR introduit
─────────────────────

Classless Inter-Domain Routing
Remplacement classes rigides
Utilisation plus efficace adresses


1996 : IPv6 standardisé
───────────────────────

RFC 2460
128 bits d'adressage (340 undécillions d'adresses)
Solution long terme

Mais adoption lente...


2011 : Épuisement pool IANA
───────────────────────────

IANA (Internet Assigned Numbers Authority)
Dernier bloc /8 alloué (3 février 2011)

Pools régionaux (RIRs) épuisés progressivement :
- APNIC (Asie-Pacifique) : 2011
- RIPE NCC (Europe) : 2012
- LACNIC (Amérique Latine) : 2014
- ARIN (Amérique du Nord) : 2015


Aujourd'hui (2024)
──────────────────

IPv4 : Toujours dominant (~95% trafic)
IPv6 : Adoption progressive (~30% trafic global)

Coexistence IPv4/IPv6 (dual-stack)

Solutions pénurie IPv4 :
- NAT (Network Address Translation)
- Réutilisation adresses privées
- Marché secondaire adresses publiques


RÔLE IPv4 DANS RÉSEAU

Position : Couche 3 (Réseau) OSI

┌─────────────────────────────────────┐
│     Application (HTTP, FTP...)      │ <- Couche 7
├─────────────────────────────────────┤
│     Transport (TCP, UDP)            │ <- Couche 4
├─────────────────────────────────────┤
│     Réseau (IP, ICMP, ARP)          │ <- Couche 3 *
├─────────────────────────────────────┤
│     Liaison (Ethernet, Wi-Fi)       │ <- Couche 2
├─────────────────────────────────────┤
│     Physique (Câbles, RF)           │ <- Couche 1
└─────────────────────────────────────┘

Encapsulation :

[Ethernet Header][IP Header][TCP Header][Données][Ethernet Trailer]
                  ^
              IPv4 (Couche 3)


PRINCIPES FONDAMENTAUX

1. ADRESSAGE LOGIQUE
   ─────────────────
   
   IP ≠ MAC
   
   MAC (Couche 2) :
   - Physique (hardware)
   - 48 bits
   - Unique fabricant
   - Local (réseau local uniquement)
   
   IP (Couche 3) :
   - Logique (software)
   - 32 bits (IPv4)
   - Configurable
   - Global (Internet entier)

2. ROUTAGE
   ───────
   
   IP permet communication entre réseaux différents
   
   Réseau A (192.168.1.0/24) <-> Routeur <-> Réseau B (10.0.0.0/8)
   
   Routeur examine IP destination
   -> Détermine chemin optimal
   -> Transmet vers prochain saut (next-hop)

3. CONNECTIONLESS (Sans connexion)
   ───────────────────────────────
   
   IP = Best effort
   Pas de garantie livraison
   
   TCP (Couche 4) ajoute fiabilité si nécessaire

4. FRAGMENTATION
   ─────────────
   
   Si paquet trop gros pour réseau suivant (MTU)
   -> IP fragmente
   -> Réassemble destination
   
   Évité aujourd'hui (Path MTU Discovery)
"""


# ----------------------------------------------------------------------------
# [NOMBRE] PARTIE 2 : STRUCTURE ADRESSE IPv4
# ----------------------------------------------------------------------------

"""
STRUCTURE ADRESSE IPv4


FORMAT

Adresse IPv4 : 32 bits

Notation : Décimale pointée (dotted-decimal)

Format : X.X.X.X
où X = 0-255 (8 bits = 1 octet)

Exemple : 192.168.1.10


CONVERSION BINAIRE <-> DÉCIMAL

Décimal -> Binaire :

192.168.1.10

192 = 11000000
168 = 10101000
1   = 00000001
10  = 00001010

Complet : 11000000.10101000.00000001.00001010


Binaire -> Décimal :

Valeurs positions (8 bits) :
┌───┬───┬───┬───┬───┬───┬───┬───┐
│128│ 64│ 32│ 16│  8│  4│  2│  1│
└───┴───┴───┴───┴───┴───┴───┴───┘

Exemple : 11000000

Position : 1   1   0   0   0   0   0   0
Valeur :   128 64  32  16  8   4   2   1
          [OK]   [OK]   [X]   [X]   [X]   [X]   [X]   [X]

Somme : 128 + 64 = 192 [OK]


TABLEAU CONVERSION RAPIDE

┌─────────┬────────────┐
│ Décimal │  Binaire   │
├─────────┼────────────┤
│    0    │ 00000000   │
│   128   │ 10000000   │
│   192   │ 11000000   │
│   224   │ 11100000   │
│   240   │ 11110000   │
│   248   │ 11111000   │
│   252   │ 11111100   │
│   254   │ 11111110   │
│   255   │ 11111111   │
└─────────┴────────────┘


STRUCTURE RÉSEAU vs HÔTE

Adresse IP divisée en DEUX parties :

┌─────────────────┬─────────────────┐
│   Partie Réseau │  Partie Hôte    │
└─────────────────┴─────────────────┘

Partie Réseau (Network) :
- Identifie le RÉSEAU
- Tous hôtes d'un réseau = Même partie réseau

Partie Hôte (Host) :
- Identifie l'HÔTE dans le réseau
- Unique au sein du réseau

Exemple : 192.168.1.10/24

/24 = Masque 255.255.255.0
-> 24 premiers bits = Réseau
-> 8 derniers bits = Hôte

Réseau : 192.168.1.0
Hôte : 0.0.0.10 (10 en décimal)

Adresse complète : 192.168.1 (réseau) + 10 (hôte)


ANALOGIE : ADRESSE POSTALE

Adresse IP = Adresse postale complète

Partie Réseau = Ville + Rue
Partie Hôte = Numéro de maison

Exemple :
- Ville : Paris, Rue des Lilas (Réseau)
- Numéro 10 (Hôte)

Adresse complète : 10 Rue des Lilas, Paris

Tout comme :
- Plusieurs maisons sur même rue (même réseau)
- Numéros différents (hôtes différents)


NOMBRE D'ADRESSES

32 bits -> 2^32 adresses possibles

2^32 = 4,294,967,296 adresses (~4.3 milliards)

Répartition :
- Adresses publiques : ~3.7 milliards (routables Internet)
- Adresses privées : ~18 millions (RFC 1918)
- Adresses spéciales : ~500 millions (multicast, réservées)

[IDEE] Insuffisant aujourd'hui (8 milliards humains, 50+ milliards appareils)
-> Nécessite NAT, IPv6
"""


# ----------------------------------------------------------------------------
# [DOCS] PARTIE 3 : CLASSES D'ADRESSES (HISTORIQUE)
# ----------------------------------------------------------------------------

"""
CLASSES D'ADRESSES IPv4


CONCEPT (Obsolète depuis 1993, mais important pédagogiquement)

Système original IPv4 : Classes A, B, C, D, E

Identification : Premiers bits adresse


CLASSE A
════════

Premier bit : 0

Format : 0XXXXXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX

Plage : 0.0.0.0 - 127.255.255.255

Masque par défaut : /8 (255.0.0.0)

Structure :
- 1er octet : Réseau (8 bits)
- 3 derniers octets : Hôte (24 bits)

Nombre de réseaux : 2^7 = 128 réseaux
Hôtes par réseau : 2^24 - 2 = 16,777,214 hôtes

(−2 car adresse réseau et broadcast réservées)

Exemples :
- 10.0.0.0/8 (Privé - RFC 1918)
- 8.0.0.0/8 (Google)
- 15.0.0.0/8 (HP)

Usage : Très grandes organisations, ISPs


CLASSE B
════════

Premiers bits : 10

Format : 10XXXXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX

Plage : 128.0.0.0 - 191.255.255.255

Masque par défaut : /16 (255.255.0.0)

Structure :
- 2 premiers octets : Réseau (16 bits)
- 2 derniers octets : Hôte (16 bits)

Nombre de réseaux : 2^14 = 16,384 réseaux
Hôtes par réseau : 2^16 - 2 = 65,534 hôtes

Exemples :
- 172.16.0.0/12 (Privé - RFC 1918)
- 128.42.0.0/16 (Université)
- 150.10.0.0/16 (Entreprise)

Usage : Moyennes/grandes organisations


CLASSE C
════════

Premiers bits : 110

Format : 110XXXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX

Plage : 192.0.0.0 - 223.255.255.255

Masque par défaut : /24 (255.255.255.0)

Structure :
- 3 premiers octets : Réseau (24 bits)
- 1 dernier octet : Hôte (8 bits)

Nombre de réseaux : 2^21 = 2,097,152 réseaux
Hôtes par réseau : 2^8 - 2 = 254 hôtes

Exemples :
- 192.168.0.0/16 (Privé - RFC 1918)
- 200.50.100.0/24
- 201.10.5.0/24

Usage : Petites organisations, domiciles


CLASSE D (Multicast)
════════════════════

Premiers bits : 1110

Format : 1110XXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX

Plage : 224.0.0.0 - 239.255.255.255

Pas de masque (pas de division réseau/hôte)

Usage : Multicast (un-vers-plusieurs)

Exemples :
- 224.0.0.1 : Tous hôtes sur segment
- 224.0.0.2 : Tous routeurs sur segment
- 224.0.0.5 : OSPF (routeurs)
- 224.0.0.9 : RIPv2
- 239.x.x.x : Multicast administratif


CLASSE E (Réservée)
═══════════════════

Premiers bits : 1111

Format : 1111XXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX

Plage : 240.0.0.0 - 255.255.255.255

Réservée expérimentation / usage futur

Pas utilisable en pratique


TABLEAU RÉCAPITULATIF CLASSES

┌───────┬────────────┬─────────────┬──────────┬──────────────┐
│Classe │   Plage    │  Masque     │ Réseaux  │Hôtes/réseau  │
├───────┼────────────┼─────────────┼──────────┼──────────────┤
│   A   │ 0-127      │ /8 (255.0.0.0)│   128   │ 16,777,214   │
│   B   │ 128-191    │/16 (255.255.0.0)│16,384 │   65,534     │
│   C   │ 192-223    │/24 (255.255.255.0)│2M+  │     254      │
│   D   │ 224-239    │ N/A         │Multicast│      -       │
│   E   │ 240-255    │ N/A         │ Réservé │      -       │
└───────┴────────────┴─────────────┴──────────┴──────────────┘


IDENTIFICATION CLASSE

Méthode rapide : Premier octet

┌──────────────┬────────┐
│ 1er octet    │ Classe │
├──────────────┼────────┤
│   0-127      │   A    │
│  128-191     │   B    │
│  192-223     │   C    │
│  224-239     │   D    │
│  240-255     │   E    │
└──────────────┴────────┘

Exemples :
- 10.5.8.1 -> 10 -> Classe A
- 172.16.5.10 -> 172 -> Classe B
- 192.168.1.1 -> 192 -> Classe C


PROBLÈMES SYSTÈME CLASSES

[X] GASPILLAGE ADRESSES

Exemple : Entreprise 500 hôtes
- Classe C (/24) : 254 hôtes -> Insuffisant
- Classe B (/16) : 65,534 hôtes -> 65,000 gaspillés !

[X] INFLEXIBILITÉ

Masques fixes (/8, /16, /24)
Impossible adapter précisément besoins


OBSOLESCENCE : CIDR (1993)

CIDR = Classless Inter-Domain Routing

Remplace système classes rigides

Permet masques QUELCONQUES (/1 à /32)

Exemple moderne :
- 500 hôtes -> /23 (510 hôtes utilisables)
- Gaspillage minimal !

[IDEE] Classes toujours enseignées car :
- Compréhension historique
- Base pour comprendre subnetting
- Certifications (CCNA) les mentionnent
"""


# ----------------------------------------------------------------------------
# [SCENARIO] PARTIE 4 : MASQUES DE SOUS-RÉSEAU
# ----------------------------------------------------------------------------

"""
MASQUES DE SOUS-RÉSEAU (SUBNET MASK)


DÉFINITION

Masque sous-réseau = Définit frontière Réseau / Hôte

32 bits (comme adresse IP)

Règle : Bits contigus à 1 (réseau), puis bits à 0 (hôte)

Format valide : 11111111.11111111.11111111.00000000
Format invalide : 11111111.00001111.11111111.00000000 [X]


NOTATIONS

1. DÉCIMALE POINTÉE
   ────────────────

   Format : X.X.X.X
   
   Exemple : 255.255.255.0

2. CIDR (Slash Notation)
   ─────────────────────
   
   Format : /X (X = nombre de bits à 1)
   
   Exemple : /24
   
   Équivalent : 255.255.255.0 = /24


MASQUES STANDARDS

┌──────┬────────────────────┬─────────────────┬───────────┐
│ CIDR │   Décimal          │    Binaire      │Nb hôtes   │
├──────┼────────────────────┼─────────────────┼───────────┤
│ /8   │ 255.0.0.0          │11111111.0...    │16,777,214 │
│ /16  │ 255.255.0.0        │11111111.1111... │  65,534   │
│ /24  │ 255.255.255.0      │11111111.1111... │    254    │
│ /25  │ 255.255.255.128    │...11111111.1... │    126    │
│ /26  │ 255.255.255.192    │...11111111.11.. │     62    │
│ /27  │ 255.255.255.224    │...11111111.111. │     30    │
│ /28  │ 255.255.255.240    │...11111111.1111 │     14    │
│ /29  │ 255.255.255.248    │...11111111.11111│      6    │
│ /30  │ 255.255.255.252    │...11111111.111111│     2    │
│ /31  │ 255.255.255.254    │...11111111.1111111│    2*   │
│ /32  │ 255.255.255.255    │...11111111.11111111│   1    │
└──────┴────────────────────┴─────────────────┴───────────┘

* /31 : RFC 3021 (point-to-point uniquement)


CALCUL NOMBRE HÔTES

Formule : 2^(bits hôte) - 2

Bits hôte = 32 - Masque CIDR

Exemple /24 :
- Bits hôte = 32 - 24 = 8
- Hôtes = 2^8 - 2 = 256 - 2 = 254

Pourquoi -2 ?
- Adresse réseau (tous bits hôte à 0)
- Adresse broadcast (tous bits hôte à 1)


FONCTION MASQUE

Opération ET logique (AND) entre IP et Masque
-> Extrait adresse RÉSEAU

Exemple :

IP :     192.168.1.10    = 11000000.10101000.00000001.00001010
Masque : 255.255.255.0   = 11111111.11111111.11111111.00000000
         ────────────────────────────────────────────────────
ET :     192.168.1.0     = 11000000.10101000.00000001.00000000

Résultat : Adresse réseau = 192.168.1.0


APPLICATION PRATIQUE

PC1 : 192.168.1.10 /24
PC2 : 192.168.1.20 /24

Question : Même réseau ?

Calcul :
PC1 : 192.168.1.10 AND 255.255.255.0 = 192.168.1.0
PC2 : 192.168.1.20 AND 255.255.255.0 = 192.168.1.0

192.168.1.0 = 192.168.1.0 -> OUI, même réseau [OK]

Communication directe (pas de routeur nécessaire)


Autre exemple :

PC1 : 192.168.1.10 /24
PC3 : 192.168.2.10 /24

Calcul :
PC1 : 192.168.1.10 AND 255.255.255.0 = 192.168.1.0
PC3 : 192.168.2.10 AND 255.255.255.0 = 192.168.2.0

192.168.1.0 ≠ 192.168.2.0 -> NON, réseaux différents [X]

Routeur nécessaire !


WILDCARD MASK (Cisco)

Inverse du masque sous-réseau

Calcul : 255.255.255.255 - Masque

Exemple :
Masque : 255.255.255.0
Wildcard : 255.255.255.255 - 255.255.255.0 = 0.0.0.255

Usage : ACLs Cisco, OSPF

Exemple ACL :
```
access-list 10 permit 192.168.1.0 0.0.0.255
```
(Autorise réseau 192.168.1.0/24)
"""


# ----------------------------------------------------------------------------
# [SECURISE] PARTIE 5 : ADRESSES PUBLIQUES vs PRIVÉES
# ----------------------------------------------------------------------------

"""
ADRESSES PUBLIQUES vs PRIVÉES


ADRESSES PUBLIQUES (Public IPs)
════════════════════════════════

Caractéristiques :
- Routables sur Internet
- Uniques mondialement
- Attribuées par RIRs (Regional Internet Registries)
- Payantes / Louées

RIRs :
- ARIN (Amérique du Nord)
- RIPE NCC (Europe, Moyen-Orient)
- APNIC (Asie-Pacifique)
- LACNIC (Amérique Latine)
- AFRINIC (Afrique)

Coût : $1000-10000+ selon quantité et région

Exemples :
- 8.8.8.8 (Google DNS)
- 1.1.1.1 (Cloudflare DNS)
- 142.250.185.46 (google.com)

Usage :
- Serveurs web publics
- Services cloud
- Routeurs Internet (interface WAN)


ADRESSES PRIVÉES (Private IPs) - RFC 1918
══════════════════════════════════════════

Standard : RFC 1918 (1996)

3 plages réservées :

┌─────────────────────┬─────────────┬──────────────┐
│      Plage          │   CIDR      │Classe origine│
├─────────────────────┼─────────────┼──────────────┤
│ 10.0.0.0            │ 10.0.0.0/8  │  Classe A    │
│ - 10.255.255.255    │             │ 16M adresses │
├─────────────────────┼─────────────┼──────────────┤
│ 172.16.0.0          │172.16.0.0/12│  Classe B    │
│ - 172.31.255.255    │             │  1M adresses │
├─────────────────────┼─────────────┼──────────────┤
│ 192.168.0.0         │192.168.0.0/16│ Classe C    │
│ - 192.168.255.255   │             │ 65K adresses │
└─────────────────────┴─────────────┴──────────────┘

Caractéristiques :
- NON routables sur Internet public
- Utilisables librement (gratuit)
- Réutilisables (chaque réseau privé peut les utiliser)
- NAT requis pour accès Internet

Usage :
- Réseaux entreprise
- Réseaux domicile
- Réseaux internes


RÉPARTITION PRATIQUE

10.0.0.0/8 :
───────────

Usage : Grandes entreprises

Avantages :
[OK] Espace énorme (16M adresses)
[OK] Flexibilité subnetting

Exemples :
- Multinationale : 10.0.0.0/8 divisé par région/site
- Campus : 10.1.0.0/16 par bâtiment


172.16.0.0/12 :
───────────────

Usage : Moyennes entreprises, data centers

16 réseaux /16 :
- 172.16.0.0/16
- 172.17.0.0/16
- ...
- 172.31.0.0/16

Exemple :
- Site A : 172.16.0.0/16
- Site B : 172.17.0.0/16


192.168.0.0/16 :
────────────────

Usage : Petites entreprises, domiciles

256 réseaux /24 :
- 192.168.0.0/24
- 192.168.1.0/24
- ...
- 192.168.255.0/24

Exemples :
- Box Internet : 192.168.1.0/24 (défaut courant)
- PME : 192.168.10.0/24


NAT (Network Address Translation)
═══════════════════════════════════

Nécessaire pour accès Internet depuis IP privée

Principe :
Réseau privé (192.168.1.0/24) -> NAT -> IP publique (203.0.113.5)

┌─────────────────────────────────────────────────┐
│          Réseau Privé 192.168.1.0/24            │
│   ┌────┐   ┌────┐   ┌────┐                     │
│   │PC1 │   │PC2 │   │PC3 │                     │
│   │.10 │   │.20 │   │.30 │                     │
│   └────┘   └────┘   └────┘                     │
│              │                                  │
│          ┌───┴───┐                              │
│          │Routeur│ IP privée : 192.168.1.1      │
│          │ (NAT) │ IP publique : 203.0.113.5    │
│          └───┬───┘                              │
└──────────────┼──────────────────────────────────┘
               │
          [Internet]

PC1 (192.168.1.10) accède Google :
1. Paquet : Src=192.168.1.10, Dst=8.8.8.8
2. NAT traduit : Src=203.0.113.5:12345, Dst=8.8.8.8
3. Internet voit : 203.0.113.5 (pas 192.168.1.10)
4. Réponse : Dst=203.0.113.5:12345
5. NAT traduit retour : Dst=192.168.1.10
6. PC1 reçoit réponse

[IDEE] Détail NAT au Chapitre 18


AVANTAGES ADRESSES PRIVÉES

[OK] ÉCONOMIE
   Pas besoin acheter IPs publiques

[OK] SÉCURITÉ
   Invisibilité depuis Internet
   (Pas directement accessible)

[OK] FLEXIBILITÉ
   Réorganisation réseau interne facile
   (Pas dépendant IPs publiques rares)

[OK] RÉSOUT PÉNURIE IPv4
   Réutilisation massive
   (Millions réseaux utilisent 192.168.1.0/24 !)


INCONVÉNIENTS

[X] NAT REQUIS
   Complexité additionnelle
   Peut poser problèmes certaines applications (VoIP, P2P)

[X] PAS D'ACCÈS DIRECT DEPUIS INTERNET
   Serveurs publics -> IPs publiques requises
   (Ou port forwarding)
"""


# ----------------------------------------------------------------------------
# [RAPIDE] PARTIE 6 : ADRESSES SPÉCIALES
# ----------------------------------------------------------------------------

"""
ADRESSES IPv4 SPÉCIALES


LOOPBACK
════════

Plage : 127.0.0.0/8 (127.0.0.0 - 127.255.255.255)

Plus utilisée : 127.0.0.1

Nom : localhost

Rôle : Interface réseau virtuelle (vers soi-même)

Fonctionnement :
- Paquet destiné 127.0.0.1
- Reste dans machine (pas envoyé réseau)
- Utilisé stack réseau interne

Usage :
- Tests applications réseau
- Services locaux (base de données locale)
- Diagnostic stack TCP/IP

Exemple :
```
ping 127.0.0.1
```
Test : Stack TCP/IP fonctionne ?

Connexion serveur web local :
```
http://127.0.0.1:8080
```


ADRESSE RÉSEAU
══════════════

Tous bits hôte à 0

Représente le RÉSEAU lui-même (pas un hôte)

Exemple : 192.168.1.0/24
- Partie réseau : 192.168.1
- Partie hôte : 0 (tous bits à 0)
-> Adresse réseau

Utilisation :
- Tables de routage
- Documentation
- Configuration routes

Non attribuable à un hôte !


ADRESSE BROADCAST (Diffusion)
══════════════════════════════

Tous bits hôte à 1

Destinataire : TOUS les hôtes du réseau

Exemple : 192.168.1.255/24
- Partie réseau : 192.168.1
- Partie hôte : 255 (tous bits à 1)
-> Adresse broadcast

Types :

1. DIRECTED BROADCAST
   ──────────────────
   
   Vers réseau spécifique
   
   Exemple : 192.168.1.255
   -> Tous hôtes de 192.168.1.0/24

2. LIMITED BROADCAST
   ─────────────────
   
   255.255.255.255
   -> Tous hôtes du réseau local uniquement
   
   Pas routé (reste segment local)

Usage :
- DHCP Discovery (client cherche serveur)
- ARP (résolution IP->MAC)
- RIP (protocole routage)

Non attribuable à un hôte !


EXEMPLE COMPLET (/24)

Réseau : 192.168.1.0/24

┌─────────────────────┬──────────────┬─────────────┐
│     Adresse         │    Type      │   Usage     │
├─────────────────────┼──────────────┼─────────────┤
│ 192.168.1.0         │ Réseau       │ Identif     │
│ 192.168.1.1         │ Hôte         │ Attribuable │
│ 192.168.1.2         │ Hôte         │ Attribuable │
│ ...                 │ ...          │ ...         │
│ 192.168.1.254       │ Hôte         │ Attribuable │
│ 192.168.1.255       │ Broadcast    │ Diffusion   │
└─────────────────────┴──────────────┴─────────────┘

Adresses utilisables : 192.168.1.1 - 192.168.1.254
Total : 254 hôtes


LINK-LOCAL (APIPA)
══════════════════

Plage : 169.254.0.0/16 (169.254.0.0 - 169.254.255.255)

Nom : APIPA (Automatic Private IP Addressing)

Rôle : Auto-configuration sans DHCP

Fonctionnement :
1. Client démarre, cherche DHCP
2. Pas de réponse DHCP
3. Client auto-attribue IP dans 169.254.0.0/16
4. Vérification unicité (ARP probe)
5. Utilise IP link-local

Caractéristiques :
- Non routable
- Communication locale uniquement (même segment)
- Windows, Linux, macOS supportent

Diagnostic :
Si PC a IP 169.254.x.x -> PROBLÈME DHCP !

Solutions :
- Vérifier serveur DHCP fonctionne
- Vérifier connexion réseau
- Configuration IP statique temporaire


CETTE MACHINE / CE RÉSEAU
══════════════════════════

0.0.0.0/8

Significations selon contexte :

1. ADRESSE SOURCE (0.0.0.0)
   ────────────────────────
   
   "Cette machine" (avant obtention IP)
   
   DHCP Discovery :
   Src: 0.0.0.0, Dst: 255.255.255.255
   
   Signifie : "Je n'ai pas encore d'IP"

2. ROUTE PAR DÉFAUT (0.0.0.0/0)
   ────────────────────────────
   
   "Tous réseaux" (route par défaut)
   
   Table routage :
   ```
   Destination     Gateway
   0.0.0.0/0       192.168.1.1
   ```
   
   Signifie : "Tout le reste -> Gateway 192.168.1.1"


MULTICAST (Classe D)
═════════════════════

Plage : 224.0.0.0 - 239.255.255.255

Un vers plusieurs (one-to-many)

Sous-plages :

224.0.0.0/24 : Multicast local (TTL=1)
───────────────────────────────────────

- 224.0.0.1 : Tous hôtes
- 224.0.0.2 : Tous routeurs
- 224.0.0.5 : OSPF routers
- 224.0.0.6 : OSPF DR routers
- 224.0.0.9 : RIPv2 routers
- 224.0.0.13 : PIM routers

239.0.0.0/8 : Multicast administratif
──────────────────────────────────────

Usage local organisation

Exemples :
- Streaming vidéo interne
- Distribution logiciels
- Mise à jour simultanée

Avantage multicast :
- Source envoie 1 copie
- Réseau duplique selon abonnés
- Économise bande passante

Vs Broadcast :
- Broadcast : TOUS reçoivent (même non-intéressés)
- Multicast : Seulement abonnés groupe


DOCUMENTATION / TESTS
══════════════════════

RFC 5737 : Plages réservées documentation

192.0.2.0/24 (TEST-NET-1)
198.51.100.0/24 (TEST-NET-2)
203.0.113.0/24 (TEST-NET-3)

Usage : Exemples documentation, livres, cours

Garantie : Jamais attribuées (pas de conflit)


BENCHMARK
═════════

198.18.0.0/15

Réservé tests performance réseau


RÉSUMÉ ADRESSES SPÉCIALES

┌──────────────────────┬─────────────────────────────┐
│     Plage            │         Usage               │
├──────────────────────┼─────────────────────────────┤
│ 0.0.0.0/8            │ Cette machine / Route défaut│
│ 10.0.0.0/8           │ Privé (RFC 1918)            │
│ 127.0.0.0/8          │ Loopback (localhost)        │
│ 169.254.0.0/16       │ Link-local (APIPA)          │
│ 172.16.0.0/12        │ Privé (RFC 1918)            │
│ 192.0.2.0/24         │ Documentation (TEST-NET-1)  │
│ 192.168.0.0/16       │ Privé (RFC 1918)            │
│ 198.18.0.0/15        │ Benchmark                   │
│ 198.51.100.0/24      │ Documentation (TEST-NET-2)  │
│ 203.0.113.0/24       │ Documentation (TEST-NET-3)  │
│ 224.0.0.0/4          │ Multicast (Classe D)        │
│ 240.0.0.0/4          │ Réservé (Classe E)          │
│ 255.255.255.255      │ Limited Broadcast           │
└──────────────────────┴─────────────────────────────┘
"""


# ============================================================================
# [OBJECTIF] FIN PARTIE 1 DU CHAPITRE 8
# ============================================================================

"""
[DOCS] RÉCAPITULATIF PARTIE 1

Vous avez appris :

[OK] INTRODUCTION IPv4 :
   - Historique (1981-aujourd'hui)
   - Rôle Couche 3 (routage, adressage)
   - Épuisement adresses (2011)
   - 32 bits = 4.3 milliards adresses
   
[OK] STRUCTURE IPv4 :
   - Format décimal pointé (X.X.X.X)
   - Conversion binaire <-> décimal
   - Partie réseau vs hôte
   - Analogie adresse postale
   
[OK] CLASSES (Historique) :
   - Classe A (/8) : 16M hôtes
   - Classe B (/16) : 65K hôtes
   - Classe C (/24) : 254 hôtes
   - Classe D : Multicast
   - Classe E : Réservée
   - Obsolescence -> CIDR (1993)
   
[OK] MASQUES :
   - Définit frontière réseau/hôte
   - Notation décimale et CIDR (/X)
   - Opération AND logique
   - Calcul nombre hôtes : 2^n - 2
   
[OK] PUBLIC vs PRIVÉ :
   - Publiques : Routables Internet, payantes
   - Privées (RFC 1918) : 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16
   - NAT requis pour Internet
   
[OK] ADRESSES SPÉCIALES :
   - 127.0.0.1 : Loopback (localhost)
   - Réseau : Tous bits hôte à 0
   - Broadcast : Tous bits hôte à 1
   - 169.254.0.0/16 : APIPA (link-local)
   - 224.0.0.0/4 : Multicast


-> SUITE : PARTIE 2

Dans le prochain fichier :
- Subnetting (découpage réseaux)
- VLSM (masques variables)
- Supernetting / Agrégation CIDR
- Calculs pratiques avancés
- Exercices complets
"""

# ============================================================================
# CHAPITRE 8 : IPv4 (INTERNET PROTOCOL VERSION 4) - PARTIE 2
# ============================================================================


# ----------------------------------------------------------------------------
# [HOCHO] PARTIE 7 : SUBNETTING (DÉCOUPAGE DE RÉSEAUX)
# ----------------------------------------------------------------------------

"""
SUBNETTING


DÉFINITION

Subnetting = Découper un réseau en sous-réseaux plus petits

Objectifs :
[OK] Utilisation efficace adresses
[OK] Organisation logique (par département, étage, fonction)
[OK] Sécurité (isolation segments)
[OK] Performance (réduction domaines broadcast)


PRINCIPE

Emprunter bits de la partie HÔTE pour créer des SOUS-RÉSEAUX

Exemple : Réseau /24 -> Subnets /26

Original : 192.168.1.0/24
- Partie réseau : 24 bits
- Partie hôte : 8 bits
- 1 réseau, 254 hôtes

Après subnetting /26 :
- Partie réseau : 24 bits
- Partie subnet : 2 bits (empruntés)
- Partie hôte : 6 bits
- 4 sous-réseaux, 62 hôtes chacun


FORMULES ESSENTIELLES

Nombre de sous-réseaux :
────────────────────────

Nombre = 2^(bits empruntés)

Exemple : /24 -> /26
Bits empruntés : 26 - 24 = 2
Sous-réseaux : 2^2 = 4


Nombre d'hôtes par sous-réseau :
────────────────────────────────

Hôtes = 2^(bits hôte restants) - 2

Exemple : /26
Bits hôte : 32 - 26 = 6
Hôtes : 2^6 - 2 = 64 - 2 = 62


Incrément (pas) :
─────────────────

Incrément = 256 - Valeur dernier octet masque

Exemple : 255.255.255.192 (/26)
Dernier octet : 192
Incrément : 256 - 192 = 64


MÉTHODE SUBNETTING ÉTAPE PAR ÉTAPE


EXEMPLE 1 : /24 -> /26
═════════════════════

Réseau original : 192.168.1.0/24

Besoin : 4 sous-réseaux


ÉTAPE 1 : Calculer bits nécessaires
────────────────────────────────────

Bits pour 4 sous-réseaux :
2^n ≥ 4
2^2 = 4 [OK]

Emprunter 2 bits


ÉTAPE 2 : Nouveau masque
────────────────────────

Original : /24
+ 2 bits : /26

Masque : 255.255.255.192

Binaire dernier octet :
11111111.11111111.11111111.11000000
                            ^^
                         2 bits empruntés


ÉTAPE 3 : Calculer incrément
────────────────────────────

Incrément = 256 - 192 = 64


ÉTAPE 4 : Lister sous-réseaux
──────────────────────────────

Subnet 0 : 192.168.1.0/26
  - Réseau : 192.168.1.0
  - Première IP : 192.168.1.1
  - Dernière IP : 192.168.1.62
  - Broadcast : 192.168.1.63
  - Hôtes : 62

Subnet 1 : 192.168.1.64/26
  - Réseau : 192.168.1.64
  - Première IP : 192.168.1.65
  - Dernière IP : 192.168.1.126
  - Broadcast : 192.168.1.127
  - Hôtes : 62

Subnet 2 : 192.168.1.128/26
  - Réseau : 192.168.1.128
  - Première IP : 192.168.1.129
  - Dernière IP : 192.168.1.190
  - Broadcast : 192.168.1.191
  - Hôtes : 62

Subnet 3 : 192.168.1.192/26
  - Réseau : 192.168.1.192
  - Première IP : 192.168.1.193
  - Dernière IP : 192.168.1.254
  - Broadcast : 192.168.1.255
  - Hôtes : 62


ÉTAPE 5 : Vérification
──────────────────────

Sous-réseaux : 4 [OK]
Hôtes/subnet : 62 [OK]
Couverture complète : 0-63, 64-127, 128-191, 192-255 [OK]


EXEMPLE 2 : /16 -> /20
═════════════════════

Réseau original : 172.16.0.0/16

Besoin : 16 sous-réseaux


ÉTAPE 1 : Bits nécessaires
──────────────────────────

2^n ≥ 16
2^4 = 16 [OK]

Emprunter 4 bits


ÉTAPE 2 : Nouveau masque
────────────────────────

Original : /16
+ 4 bits : /20

Masque : 255.255.240.0

Binaire 3ème octet :
11111111.11111111.11110000.00000000
                    ^^^^
                  4 bits empruntés


ÉTAPE 3 : Incrément
───────────────────

3ème octet masque : 240
Incrément : 256 - 240 = 16

Incrément appliqué au 3ème octet


ÉTAPE 4 : Lister sous-réseaux
──────────────────────────────

Subnet 0 : 172.16.0.0/20
  - Première IP : 172.16.0.1
  - Dernière IP : 172.16.15.254
  - Broadcast : 172.16.15.255
  - Hôtes : 4094

Subnet 1 : 172.16.16.0/20
  - Première IP : 172.16.16.1
  - Dernière IP : 172.16.31.254
  - Broadcast : 172.16.31.255

Subnet 2 : 172.16.32.0/20

...

Subnet 15 : 172.16.240.0/20
  - Première IP : 172.16.240.1
  - Dernière IP : 172.16.255.254
  - Broadcast : 172.16.255.255


EXEMPLE 3 : /24 -> /28
═════════════════════

Réseau original : 10.1.1.0/24

Besoin : Petits sous-réseaux (14 hôtes max)


ÉTAPE 1 : Masque requis
───────────────────────

Hôtes requis : 14
2^n - 2 ≥ 14
2^4 - 2 = 14 [OK]

Bits hôte : 4
Masque : 32 - 4 = /28


ÉTAPE 2 : Vérifier bits empruntés
──────────────────────────────────

Original : /24
Nouveau : /28
Bits empruntés : 28 - 24 = 4

Sous-réseaux : 2^4 = 16 [OK]


ÉTAPE 3 : Masque et incrément
──────────────────────────────

Masque : 255.255.255.240

Incrément : 256 - 240 = 16


ÉTAPE 4 : Sous-réseaux
──────────────────────

Subnet 0 : 10.1.1.0/28 (10.1.1.0 - 10.1.1.15)
Subnet 1 : 10.1.1.16/28 (10.1.1.16 - 10.1.1.31)
Subnet 2 : 10.1.1.32/28 (10.1.1.32 - 10.1.1.47)
...
Subnet 15 : 10.1.1.240/28 (10.1.1.240 - 10.1.1.255)

Chaque subnet : 14 hôtes utilisables


TABLEAU SUBNETTING /24

┌──────┬─────────────────┬────────┬──────────┬────────────┐
│CIDR  │    Masque       │Subnets │Hôtes/Sub │ Incrément  │
├──────┼─────────────────┼────────┼──────────┼────────────┤
│ /25  │ 255.255.255.128 │   2    │   126    │    128     │
│ /26  │ 255.255.255.192 │   4    │    62    │     64     │
│ /27  │ 255.255.255.224 │   8    │    30    │     32     │
│ /28  │ 255.255.255.240 │  16    │    14    │     16     │
│ /29  │ 255.255.255.248 │  32    │     6    │      8     │
│ /30  │ 255.255.255.252 │  64    │     2    │      4     │
└──────┴─────────────────┴────────┴──────────┴────────────┘


DÉTERMINER SUBNET D'UNE IP

Question : 192.168.1.50/26 appartient à quel subnet ?

Méthode 1 : Division
────────────────────

Masque /26 -> Incrément 64

IP : 192.168.1.50
50 ÷ 64 = 0 reste 50

Subnet : 0 × 64 = 0

Réponse : 192.168.1.0/26 [OK]


Méthode 2 : Comparaison
───────────────────────

Subnets /26 :
- 0-63
- 64-127
- 128-191
- 192-255

50 se trouve dans 0-63

Réponse : 192.168.1.0/26 [OK]


Méthode 3 : AND binaire
───────────────────────

IP : 192.168.1.50 = ...00110010
Masque /26 : 255.255.255.192 = ...11000000

AND : ...00110010
      ...11000000
      ───────────
      ...00000000 = 0

Réseau : 192.168.1.0 [OK]


APPLICATIONS PRATIQUES


Entreprise multi-sites
──────────────────────

Réseau : 10.0.0.0/8

Plan :
- Site A : 10.1.0.0/16 (65K hôtes)
- Site B : 10.2.0.0/16
- Site C : 10.3.0.0/16
...

Chaque site peut ensuite subdiviser :
- Site A, Bâtiment 1 : 10.1.1.0/24
- Site A, Bâtiment 2 : 10.1.2.0/24


Immeuble multi-étages
─────────────────────

Réseau : 192.168.0.0/16

Plan :
- Étage 1 : 192.168.1.0/24
- Étage 2 : 192.168.2.0/24
- Étage 3 : 192.168.3.0/24
...


Segmentation par département
─────────────────────────────

Réseau : 172.16.0.0/16

Plan :
- RH : 172.16.10.0/24
- IT : 172.16.20.0/24
- Finance : 172.16.30.0/24
- Invités : 172.16.100.0/24
"""


# ----------------------------------------------------------------------------
# [OBJECTIF] PARTIE 8 : VLSM (VARIABLE LENGTH SUBNET MASK)
# ----------------------------------------------------------------------------

"""
VLSM (VARIABLE LENGTH SUBNET MASK)


DÉFINITION

VLSM = Utiliser masques de longueurs DIFFÉRENTES dans même réseau

Permet optimisation utilisation adresses


PROBLÈME SANS VLSM

Subnetting classique : Masque IDENTIQUE tous sous-réseaux

Exemple : Réseau 192.168.1.0/24 découpé en /26
-> 4 sous-réseaux × 62 hôtes

Problème :
- Département A : 50 hôtes -> /26 OK (62 hôtes)
- Département B : 10 hôtes -> /26 GASPILLAGE (52 adresses perdues)
- Lien point-to-point : 2 hôtes -> /26 GASPILLAGE (60 adresses perdues)


SOLUTION : VLSM

Adapter taille subnet aux besoins réels

Département A : 50 hôtes -> /26 (62 hôtes)
Département B : 10 hôtes -> /28 (14 hôtes)
Lien P2P : 2 hôtes -> /30 (2 hôtes)


MÉTHODE VLSM


RÈGLE D'OR

Allouer du PLUS GRAND au PLUS PETIT

1. Trier besoins par taille décroissante
2. Allouer plus gros subnet d'abord
3. Puis suivant, puis suivant...


EXEMPLE COMPLET

Réseau disponible : 192.168.10.0/24

Besoins :
- LAN A : 100 hôtes
- LAN B : 50 hôtes
- LAN C : 25 hôtes
- LAN D : 10 hôtes
- Lien 1 (P2P) : 2 hôtes
- Lien 2 (P2P) : 2 hôtes


ÉTAPE 1 : Trier besoins
───────────────────────

1. LAN A : 100 hôtes
2. LAN B : 50 hôtes
3. LAN C : 25 hôtes
4. LAN D : 10 hôtes
5. Lien 1 : 2 hôtes
6. Lien 2 : 2 hôtes


ÉTAPE 2 : Déterminer masques
────────────────────────────

LAN A (100 hôtes) :
2^7 - 2 = 126 [OK] -> /25

LAN B (50 hôtes) :
2^6 - 2 = 62 [OK] -> /26

LAN C (25 hôtes) :
2^5 - 2 = 30 [OK] -> /27

LAN D (10 hôtes) :
2^4 - 2 = 14 [OK] -> /28

Liens P2P (2 hôtes) :
2^2 - 2 = 2 [OK] -> /30


ÉTAPE 3 : Allouer séquentiellement
───────────────────────────────────

Subnet LAN A : 192.168.10.0/25
──────────────────────────────

- Réseau : 192.168.10.0
- Plage : 192.168.10.0 - 192.168.10.127
- Broadcast : 192.168.10.127
- Utilisable : 192.168.10.1 - 192.168.10.126
- Hôtes : 126

Prochaine adresse disponible : 192.168.10.128


Subnet LAN B : 192.168.10.128/26
────────────────────────────────

- Réseau : 192.168.10.128
- Plage : 192.168.10.128 - 192.168.10.191
- Broadcast : 192.168.10.191
- Utilisable : 192.168.10.129 - 192.168.10.190
- Hôtes : 62

Prochaine adresse disponible : 192.168.10.192


Subnet LAN C : 192.168.10.192/27
────────────────────────────────

- Réseau : 192.168.10.192
- Plage : 192.168.10.192 - 192.168.10.223
- Broadcast : 192.168.10.223
- Utilisable : 192.168.10.193 - 192.168.10.222
- Hôtes : 30

Prochaine adresse disponible : 192.168.10.224


Subnet LAN D : 192.168.10.224/28
────────────────────────────────

- Réseau : 192.168.10.224
- Plage : 192.168.10.224 - 192.168.10.239
- Broadcast : 192.168.10.239
- Utilisable : 192.168.10.225 - 192.168.10.238
- Hôtes : 14

Prochaine adresse disponible : 192.168.10.240


Subnet Lien 1 : 192.168.10.240/30
─────────────────────────────────

- Réseau : 192.168.10.240
- Plage : 192.168.10.240 - 192.168.10.243
- Broadcast : 192.168.10.243
- Utilisable : 192.168.10.241 - 192.168.10.242
- Hôtes : 2

Prochaine adresse disponible : 192.168.10.244


Subnet Lien 2 : 192.168.10.244/30
─────────────────────────────────

- Réseau : 192.168.10.244
- Plage : 192.168.10.244 - 192.168.10.247
- Broadcast : 192.168.10.247
- Utilisable : 192.168.10.245 - 192.168.10.246
- Hôtes : 2

Prochaine adresse disponible : 192.168.10.248


ÉTAPE 4 : Résumé allocation
───────────────────────────

┌────────┬──────────────────┬──────┬────────┬─────────┐
│  Nom   │    Réseau        │CIDR  │ Hôtes  │Gaspillage│
├────────┼──────────────────┼──────┼────────┼─────────┤
│ LAN A  │ 192.168.10.0     │ /25  │  126   │   26    │
│ LAN B  │ 192.168.10.128   │ /26  │   62   │   12    │
│ LAN C  │ 192.168.10.192   │ /27  │   30   │    5    │
│ LAN D  │ 192.168.10.224   │ /28  │   14   │    4    │
│ Lien 1 │ 192.168.10.240   │ /30  │    2   │    0    │
│ Lien 2 │ 192.168.10.244   │ /30  │    2   │    0    │
├────────┴──────────────────┴──────┼────────┼─────────┤
│                          TOTAL   │  236   │   47    │
└──────────────────────────────────┴────────┴─────────┘

Adresses utilisées : 248 / 256
Efficacité : 97% [OK]

Sans VLSM (tout en /25) :
- 2 subnets /25 = 252 hôtes
- Besoins = 186 hôtes
- Gaspillage = 66 hôtes (26%)


AVANTAGES VLSM

[OK] EFFICACITÉ
   Utilisation optimale adresses

[OK] FLEXIBILITÉ
   Adaptation précise aux besoins

[OK] SCALABILITÉ
   Croissance facilitée

[OK] ÉCONOMIE
   Maximum d'adresses publiques (si applicable)


CONFIGURATION ROUTES VLSM

Routes spécifiques requises

Exemple routeur :

```
interface GigabitEthernet0/0
 description LAN-A
 ip address 192.168.10.1 255.255.255.128

interface GigabitEthernet0/1
 description LAN-B
 ip address 192.168.10.129 255.255.255.192

interface Serial0/0/0
 description Link-to-Site-B
 ip address 192.168.10.241 255.255.255.252
```

Routes statiques ou protocole routage dynamique (OSPF, EIGRP)
supportant VLSM
"""


# ----------------------------------------------------------------------------
# [GRAPHIQUE] PARTIE 9 : SUPERNETTING / AGRÉGATION CIDR
# ----------------------------------------------------------------------------

"""
SUPERNETTING / ROUTE AGGREGATION


DÉFINITION

Supernetting = Combiner plusieurs réseaux en un seul réseau plus grand

Aussi appelé : Route Aggregation, Route Summarization

Inverse du subnetting !


OBJECTIF

Réduire taille tables de routage

Problème sans agrégation :

Entreprise avec 16 réseaux /24 :
- 192.168.0.0/24
- 192.168.1.0/24
- 192.168.2.0/24
- ...
- 192.168.15.0/24

Routeur Internet : 16 routes dans table [X]


Solution avec agrégation :

Route unique : 192.168.0.0/20 [OK]

Couvre tous les 16 réseaux /24


PRINCIPE

Emprunter bits de la partie RÉSEAU

Subnetting : Réseau -> Sous-réseaux (masque plus long)
Supernetting : Réseaux -> Super-réseau (masque plus court)


MÉTHODE AGRÉGATION


ÉTAPE 1 : Vérifier contiguïté
─────────────────────────────

Réseaux DOIVENT être contigus et alignés

Exemple valide :
- 192.168.0.0/24
- 192.168.1.0/24
- 192.168.2.0/24
- 192.168.3.0/24

Exemple invalide :
- 192.168.0.0/24
- 192.168.2.0/24 (manque 192.168.1.0/24)
- 192.168.3.0/24


ÉTAPE 2 : Déterminer nombre de réseaux
───────────────────────────────────────

Nombre DOIT être puissance de 2

Valides : 2, 4, 8, 16, 32, 64...
Invalides : 3, 5, 6, 7, 9...


ÉTAPE 3 : Calculer nouveau masque
──────────────────────────────────

Formule : Masque original - log₂(nombre réseaux)

Exemple : 4 réseaux /24
log₂(4) = 2
Nouveau masque : 24 - 2 = /22


ÉTAPE 4 : Vérifier alignement
─────────────────────────────

Premier réseau DOIT être multiple du bloc

Bloc /22 = 4 réseaux = 1024 adresses
Premier réseau DOIT commencer à multiple de 1024

Exemples :
[OK] 192.168.0.0 (0 est multiple de 4)
[OK] 192.168.4.0 (4 est multiple de 4)
[X] 192.168.1.0 (1 n'est pas multiple de 4)


EXEMPLES DÉTAILLÉS


Exemple 1 : 4 réseaux /24
═════════════════════════

Réseaux :
- 192.168.0.0/24
- 192.168.1.0/24
- 192.168.2.0/24
- 192.168.3.0/24


Calcul masque :
───────────────

4 réseaux -> 2^2
Masque original : /24
Nouveau : 24 - 2 = /22


Route agrégée :
───────────────

192.168.0.0/22

Couvre : 192.168.0.0 - 192.168.3.255


Vérification binaire :
──────────────────────

192.168.0.0 = 11000000.10101000.00000000.00000000
192.168.1.0 = 11000000.10101000.00000001.00000000
192.168.2.0 = 11000000.10101000.00000010.00000000
192.168.3.0 = 11000000.10101000.00000011.00000000

Masque /22 : 11111111.11111111.11111100.00000000
                                  ^^
                              Bits variables

Partie commune : 11000000.10101000.000000xx.xxxxxxxx
= 192.168.0.0/22 [OK]


Exemple 2 : 8 réseaux /24
═════════════════════════

Réseaux :
- 10.1.0.0/24
- 10.1.1.0/24
- ...
- 10.1.7.0/24


Calcul :
────────

8 réseaux -> 2^3
Masque : 24 - 3 = /21


Route agrégée :
───────────────

10.1.0.0/21

Couvre : 10.1.0.0 - 10.1.7.255


Exemple 3 : 16 réseaux /24
══════════════════════════

Réseaux :
- 172.16.0.0/24
- 172.16.1.0/24
- ...
- 172.16.15.0/24


Calcul :
────────

16 réseaux -> 2^4
Masque : 24 - 4 = /20


Route agrégée :
───────────────

172.16.0.0/20

Masque : 255.255.240.0

Couvre : 172.16.0.0 - 172.16.15.255


AGRÉGATION COMPLEXE


Exemple : Routes non-contigües
───────────────────────────────

Réseaux :
- 192.168.0.0/24
- 192.168.1.0/24
- 192.168.4.0/24
- 192.168.5.0/24

Impossible agrégation unique (trou : 192.168.2-3.0/24)

Solution : 2 agrégations
- 192.168.0.0/23 (couvre 0-1)
- 192.168.4.0/23 (couvre 4-5)


Exemple : Agrégation hiérarchique
──────────────────────────────────

ISP avec clients :

Client A : 200.50.0.0/22 (4× /24)
Client B : 200.50.4.0/22 (4× /24)
Client C : 200.50.8.0/22 (4× /24)
Client D : 200.50.12.0/22 (4× /24)

Agrégation totale : 200.50.0.0/20 (16× /24)

Annonce Internet : 1 route au lieu de 16 [OK]


AVANTAGES AGRÉGATION

[OK] TABLES ROUTAGE RÉDUITES
   Moins d'entrées
   -> Mémoire économisée
   -> Performance améliorée

[OK] CONVERGENCE RAPIDE
   Moins de routes à recalculer
   -> Protocoles routage plus rapides

[OK] STABILITÉ
   Flapping local ne propage pas globalement

[OK] SCALABILITÉ INTERNET
   Essentielle pour fonctionnement Internet


INTERNET BGP

Internet : ~900,000 routes BGP (2024)

Sans agrégation : Millions de routes
-> Routeurs Internet saturés

Agrégation : Critique pour viabilité Internet


LIMITES AGRÉGATION

[X] PERTE DE GRANULARITÉ
   Route agrégée moins spécifique
   Peut créer sous-optimisations routage

[X] NÉCESSITE CONTIGUÏTÉ
   Allocation adresses doit être planifiée

[X] PEUT CAUSER BLACK HOLES
   Si partie bloc non utilisée/invalide
"""


# ----------------------------------------------------------------------------
# [COURS] EXERCICES PRATIQUES - CHAPITRE 8
# ----------------------------------------------------------------------------

"""
[IDEE] EXERCICES


═══════════════════════════════════════════════════════════
EXERCICE 1 : SUBNETTING BASIQUE
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Réseau : 172.16.50.0/24

Besoin : 6 sous-réseaux

Questions :

1. Combien de bits emprunter minimum ?
2. Quel est le nouveau masque (CIDR et décimal) ?
3. Combien de sous-réseaux disponibles ?
4. Combien d'hôtes par sous-réseau ?
5. Lister les 6 premiers sous-réseaux avec leurs plages


[OK] CORRECTION EXERCICE 1

1. BITS À EMPRUNTER
   ────────────────

   Besoin : 6 sous-réseaux minimum
   
   2^n ≥ 6
   
   2^2 = 4 [X] (insuffisant)
   2^3 = 8 [OK] (suffisant)
   
   Emprunter : 3 bits


2. NOUVEAU MASQUE
   ──────────────

   Original : /24
   + 3 bits : /27
   
   Masque CIDR : /27
   
   Masque décimal :
   255.255.255.224
   
   Calcul :
   /27 = 27 bits à 1
   
   11111111.11111111.11111111.11100000
   
   Dernier octet : 11100000
   = 128 + 64 + 32 = 224
   
   Masque : 255.255.255.224 [OK]


3. SOUS-RÉSEAUX DISPONIBLES
   ────────────────────────

   Bits empruntés : 3
   
   Sous-réseaux : 2^3 = 8 [OK]


4. HÔTES PAR SOUS-RÉSEAU
   ─────────────────────

   Bits hôte : 32 - 27 = 5
   
   Hôtes : 2^5 - 2 = 32 - 2 = 30 [OK]


5. LISTER 6 PREMIERS SOUS-RÉSEAUX
   ───────────────────────────────

   Incrément : 256 - 224 = 32
   
   
   Subnet 0 : 172.16.50.0/27
   ──────────────────────────
   
   - Réseau : 172.16.50.0
   - Première IP utilisable : 172.16.50.1
   - Dernière IP utilisable : 172.16.50.30
   - Broadcast : 172.16.50.31
   - Plage complète : 172.16.50.0 - 172.16.50.31
   
   
   Subnet 1 : 172.16.50.32/27
   ───────────────────────────
   
   - Réseau : 172.16.50.32
   - Première IP utilisable : 172.16.50.33
   - Dernière IP utilisable : 172.16.50.62
   - Broadcast : 172.16.50.63
   - Plage complète : 172.16.50.32 - 172.16.50.63
   
   
   Subnet 2 : 172.16.50.64/27
   ───────────────────────────
   
   - Réseau : 172.16.50.64
   - Première IP utilisable : 172.16.50.65
   - Dernière IP utilisable : 172.16.50.94
   - Broadcast : 172.16.50.95
   - Plage complète : 172.16.50.64 - 172.16.50.95
   
   
   Subnet 3 : 172.16.50.96/27
   ───────────────────────────
   
   - Réseau : 172.16.50.96
   - Première IP utilisable : 172.16.50.97
   - Dernière IP utilisable : 172.16.50.126
   - Broadcast : 172.16.50.127
   - Plage complète : 172.16.50.96 - 172.16.50.127
   
   
   Subnet 4 : 172.16.50.128/27
   ────────────────────────────
   
   - Réseau : 172.16.50.128
   - Première IP utilisable : 172.16.50.129
   - Dernière IP utilisable : 172.16.50.158
   - Broadcast : 172.16.50.159
   - Plage complète : 172.16.50.128 - 172.16.50.159
   
   
   Subnet 5 : 172.16.50.160/27
   ────────────────────────────
   
   - Réseau : 172.16.50.160
   - Première IP utilisable : 172.16.50.161
   - Dernière IP utilisable : 172.16.50.190
   - Broadcast : 172.16.50.191
   - Plage complète : 172.16.50.160 - 172.16.50.191
   
   
   Tableau récapitulatif :
   
   ┌────────┬──────────────────┬──────────────────┬──────────────────┐
   │ Subnet │    Réseau        │  Plage hôtes     │    Broadcast     │
   ├────────┼──────────────────┼──────────────────┼──────────────────┤
   │   0    │ 172.16.50.0      │  .1 - .30        │ 172.16.50.31     │
   │   1    │ 172.16.50.32     │  .33 - .62       │ 172.16.50.63     │
   │   2    │ 172.16.50.64     │  .65 - .94       │ 172.16.50.95     │
   │   3    │ 172.16.50.96     │  .97 - .126      │ 172.16.50.127    │
   │   4    │ 172.16.50.128    │  .129 - .158     │ 172.16.50.159    │
   │   5    │ 172.16.50.160    │  .161 - .190     │ 172.16.50.191    │
   └────────┴──────────────────┴──────────────────┴──────────────────┘



═══════════════════════════════════════════════════════════
EXERCICE 2 : VLSM COMPLET
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Réseau disponible : 10.10.0.0/16

Besoins d'une entreprise :

- Siège (Paris) : 500 ordinateurs
- Succursale A (Lyon) : 200 ordinateurs
- Succursale B (Marseille) : 100 ordinateurs
- Succursale C (Lille) : 50 ordinateurs
- DMZ (serveurs publics) : 20 serveurs
- Lien WAN Paris-Lyon : 2 adresses
- Lien WAN Paris-Marseille : 2 adresses
- Lien WAN Paris-Lille : 2 adresses

Questions :

1. Déterminer le masque approprié pour chaque besoin
2. Allouer les sous-réseaux (du plus grand au plus petit)
3. Donner l'adresse réseau, première IP, dernière IP et broadcast
   pour chaque subnet
4. Calculer le taux d'utilisation global


[OK] CORRECTION EXERCICE 2

1. DÉTERMINER MASQUES
   ──────────────────

   Siège (500 hôtes) :
   ──────────────────
   
   2^9 - 2 = 510 [OK]
   Bits hôte : 9
   Masque : 32 - 9 = /23
   
   
   Succursale A (200 hôtes) :
   ──────────────────────────
   
   2^8 - 2 = 254 [X] (insuffisant)
   2^9 - 2 = 510 [OK]
   Masque : /23
   
   
   Succursale B (100 hôtes) :
   ──────────────────────────
   
   2^7 - 2 = 126 [OK]
   Masque : /25
   
   
   Succursale C (50 hôtes) :
   ─────────────────────────
   
   2^6 - 2 = 62 [OK]
   Masque : /26
   
   
   DMZ (20 serveurs) :
   ───────────────────
   
   2^5 - 2 = 30 [OK]
   Masque : /27
   
   
   Liens WAN (2 hôtes chacun) :
   ────────────────────────────
   
   2^2 - 2 = 2 [OK]
   Masque : /30


2. ALLOCATION SÉQUENTIELLE
   ───────────────────────

   Ordre (plus grand -> plus petit) :
   1. Siège : /23
   2. Succursale A : /23
   3. Succursale B : /25
   4. Succursale C : /26
   5. DMZ : /27
   6. Lien Paris-Lyon : /30
   7. Lien Paris-Marseille : /30
   8. Lien Paris-Lille : /30


3. ALLOCATION DÉTAILLÉE
   ────────────────────

   SIÈGE (Paris) : 10.10.0.0/23
   ────────────────────────────
   
   - Réseau : 10.10.0.0
   - Masque : 255.255.254.0
   - Première IP : 10.10.0.1
   - Dernière IP : 10.10.1.254
   - Broadcast : 10.10.1.255
   - Hôtes disponibles : 510
   - Plage complète : 10.10.0.0 - 10.10.1.255
   
   Prochaine adresse : 10.10.2.0
   
   
   SUCCURSALE A (Lyon) : 10.10.2.0/23
   ───────────────────────────────────
   
   - Réseau : 10.10.2.0
   - Masque : 255.255.254.0
   - Première IP : 10.10.2.1
   - Dernière IP : 10.10.3.254
   - Broadcast : 10.10.3.255
   - Hôtes disponibles : 510
   - Plage complète : 10.10.2.0 - 10.10.3.255
   
   Prochaine adresse : 10.10.4.0
   
   
   SUCCURSALE B (Marseille) : 10.10.4.0/25
   ────────────────────────────────────────
   
   - Réseau : 10.10.4.0
   - Masque : 255.255.255.128
   - Première IP : 10.10.4.1
   - Dernière IP : 10.10.4.126
   - Broadcast : 10.10.4.127
   - Hôtes disponibles : 126
   - Plage complète : 10.10.4.0 - 10.10.4.127
   
   Prochaine adresse : 10.10.4.128
   
   
   SUCCURSALE C (Lille) : 10.10.4.128/26
   ──────────────────────────────────────
   
   - Réseau : 10.10.4.128
   - Masque : 255.255.255.192
   - Première IP : 10.10.4.129
   - Dernière IP : 10.10.4.190
   - Broadcast : 10.10.4.191
   - Hôtes disponibles : 62
   - Plage complète : 10.10.4.128 - 10.10.4.191
   
   Prochaine adresse : 10.10.4.192
   
   
   DMZ (Serveurs) : 10.10.4.192/27
   ────────────────────────────────
   
   - Réseau : 10.10.4.192
   - Masque : 255.255.255.224
   - Première IP : 10.10.4.193
   - Dernière IP : 10.10.4.222
   - Broadcast : 10.10.4.223
   - Hôtes disponibles : 30
   - Plage complète : 10.10.4.192 - 10.10.4.223
   
   Prochaine adresse : 10.10.4.224
   
   
   LIEN WAN Paris-Lyon : 10.10.4.224/30
   ─────────────────────────────────────
   
   - Réseau : 10.10.4.224
   - Masque : 255.255.255.252
   - Première IP : 10.10.4.225 (routeur Paris)
   - Dernière IP : 10.10.4.226 (routeur Lyon)
   - Broadcast : 10.10.4.227
   - Hôtes disponibles : 2
   - Plage complète : 10.10.4.224 - 10.10.4.227
   
   Prochaine adresse : 10.10.4.228
   
   
   LIEN WAN Paris-Marseille : 10.10.4.228/30
   ──────────────────────────────────────────
   
   - Réseau : 10.10.4.228
   - Masque : 255.255.255.252
   - Première IP : 10.10.4.229 (routeur Paris)
   - Dernière IP : 10.10.4.230 (routeur Marseille)
   - Broadcast : 10.10.4.231
   - Hôtes disponibles : 2
   - Plage complète : 10.10.4.228 - 10.10.4.231
   
   Prochaine adresse : 10.10.4.232
   
   
   LIEN WAN Paris-Lille : 10.10.4.232/30
   ──────────────────────────────────────
   
   - Réseau : 10.10.4.232
   - Masque : 255.255.255.252
   - Première IP : 10.10.4.233 (routeur Paris)
   - Dernière IP : 10.10.4.234 (routeur Lille)
   - Broadcast : 10.10.4.235
   - Hôtes disponibles : 2
   - Plage complète : 10.10.4.232 - 10.10.4.235
   
   Prochaine adresse : 10.10.4.236


4. TAUX D'UTILISATION
   ──────────────────

   Réseau total : 10.10.0.0/16
   Adresses totales : 2^16 = 65,536
   
   Adresses utilisées :
   - Siège : 512 (2^9)
   - Succursale A : 512 (2^9)
   - Succursale B : 128 (2^7)
   - Succursale C : 64 (2^6)
   - DMZ : 32 (2^5)
   - 3 Liens WAN : 3 × 4 = 12 (2^2 chacun)
   
   Total utilisé : 512 + 512 + 128 + 64 + 32 + 12 = 1,260 adresses
   
   Taux d'utilisation : 1,260 / 65,536 = 1.92%
   
   
   Hôtes réellement nécessaires :
   - Siège : 500
   - Succursale A : 200
   - Succursale B : 100
   - Succursale C : 50
   - DMZ : 20
   - Liens : 6
   Total : 876 hôtes
   
   Gaspillage : 1,260 - 876 = 384 adresses (30% gaspillage)
   
   Espace disponible futur : 65,536 - 1,260 = 64,276 adresses (98%)
   
   [OK] Excellente utilisation avec marge croissance !



═══════════════════════════════════════════════════════════
EXERCICE 3 : AGRÉGATION DE ROUTES
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Un ISP possède les blocs suivants à annoncer sur Internet :

- 200.100.0.0/24
- 200.100.1.0/24
- 200.100.2.0/24
- 200.100.3.0/24
- 200.100.4.0/24
- 200.100.5.0/24
- 200.100.6.0/24
- 200.100.7.0/24

Questions :

1. Ces réseaux peuvent-ils être agrégés ? Pourquoi ?
2. Quelle est la route agrégée optimale ?
3. Vérifier par calcul binaire
4. Combien de routes économisées dans table BGP Internet ?
5. Si l'ISP possédait aussi 200.100.16.0/24, pourrait-on l'inclure
   dans l'agrégation ?


[OK] CORRECTION EXERCICE 3

1. POSSIBILITÉ D'AGRÉGATION
   ────────────────────────

   Vérifications :
   
   [OK] CONTIGUÏTÉ
      200.100.0.0/24 à 200.100.7.0/24
      = 8 réseaux consécutifs
   
   [OK] PUISSANCE DE 2
      8 réseaux = 2^3
   
   [OK] ALIGNEMENT
      Premier réseau : 200.100.0.0
      0 est multiple de 8 [OK]
   
   Conclusion : OUI, agrégation possible ! [OK]


2. ROUTE AGRÉGÉE
   ─────────────

   Calcul masque :
   
   8 réseaux /24
   2^3 = 8
   
   Masque original : /24
   Nouveau masque : 24 - 3 = /21
   
   Route agrégée : 200.100.0.0/21
   
   Masque décimal : 255.255.248.0


3. VÉRIFICATION BINAIRE
   ────────────────────

   Conversion 3ème octet en binaire :
   
   200.100.0.0   = ...00000000.00000000
   200.100.1.0   = ...00000001.00000000
   200.100.2.0   = ...00000010.00000000
   200.100.3.0   = ...00000011.00000000
   200.100.4.0   = ...00000100.00000000
   200.100.5.0   = ...00000101.00000000
   200.100.6.0   = ...00000110.00000000
   200.100.7.0   = ...00000111.00000000
   
   Masque /21 : 11111111.11111111.11111000.00000000
                                      ^^^
                                   3 bits variables
   
   Partie commune : 200.100.00000xxx.xxxxxxxx
   
   En binaire complet :
   11001000.01100100.00000000.00000000 (200.100.0.0)
   
   Masque /21 :
   11111111.11111111.11111000.00000000 (255.255.248.0)
   
   Plage couverte :
   - Début : 200.100.0.0
   - Fin : 200.100.7.255
   
   Vérification :
   200.100.7.255 = ...00000111.11111111
   
   Masque /21 appliqué :
   00000111.11111111 AND 11111000.00000000 = 00000000.00000000
   -> Réseau : 200.100.0.0 [OK]
   
   Tous les 8 réseaux appartiennent à 200.100.0.0/21 [OK]


4. ROUTES ÉCONOMISÉES
   ──────────────────

   Sans agrégation : 8 routes BGP
   Avec agrégation : 1 route BGP
   
   Économie : 8 - 1 = 7 routes [OK]
   
   À l'échelle Internet (~900,000 routes) :
   Si tous ISPs agrègent ainsi -> Réduction significative
   
   Bénéfices :
   [OK] Mémoire routeurs réduite
   [OK] Convergence BGP plus rapide
   [OK] Stabilité accrue (moins de flapping)


5. INCLUSION 200.100.16.0/24
   ─────────────────────────

   Nouveau bloc : 200.100.16.0/24
   
   Vérification contiguïté :
   
   Blocs actuels : 0-7
   Nouveau bloc : 16
   
   Gap : 8-15 manquants [X]
   
   NON, impossible d'inclure dans même agrégation
   
   
   Solutions :
   
   Option 1 : Deux agrégations séparées
   ─────────────────────────────────────
   
   - 200.100.0.0/21 (couvre 0-7)
   - 200.100.16.0/24 (route individuelle)
   
   Total : 2 routes BGP
   
   
   Option 2 : Si ISP acquiert 200.100.8-15.0/24
   ─────────────────────────────────────────────
   
   Alors 16 réseaux contigus (0-15)
   2^4 = 16
   
   Agrégation : 200.100.0.0/20 [OK]
   
   Couvrirait : 200.100.0.0 - 200.100.15.255
   
   1 seule route BGP !
   
   
   Option 3 : Agrégation large (avec "trous")
   ──────────────────────────────────────────
   
   POSSIBLE mais NON RECOMMANDÉ
   
   200.100.0.0/20 couvrirait 0-15
   Mais 8-15 non possédés par ISP
   
   Risques :
   [X] Black hole (trafic vers 8-15 perdu)
   [X] Violation politiques BGP
   [X] Problèmes routage Internet
   
   À éviter absolument !



═══════════════════════════════════════════════════════════
FIN DES EXERCICES
═══════════════════════════════════════════════════════════
"""


# ============================================================================
# [DOCS] CONCLUSION CHAPITRE 8
# ============================================================================

"""
[BRAVO] FÉLICITATIONS !

Vous avez terminé le Chapitre 8 : IPv4


[GUIDE] RÉCAPITULATIF COMPLET

PARTIE 1 : FONDAMENTAUX
───────────────────────

[OK] INTRODUCTION :
   - Historique (1981-2024)
   - 32 bits = 4.3 milliards adresses
   - Épuisement 2011
   - Rôle Couche 3 (routage)

[OK] STRUCTURE :
   - Format X.X.X.X (décimal pointé)
   - Binaire <-> Décimal
   - Partie réseau + Partie hôte

[OK] CLASSES (Historique) :
   - A (/8), B (/16), C (/24)
   - D (Multicast), E (Réservée)
   - Obsolète -> CIDR (1993)

[OK] MASQUES :
   - Définit frontière réseau/hôte
   - CIDR (/X) et décimal
   - AND logique

[OK] PUBLIC vs PRIVÉ :
   - RFC 1918 : 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16
   - NAT requis

[OK] ADRESSES SPÉCIALES :
   - 127.0.0.1 (loopback)
   - 169.254.0.0/16 (APIPA)
   - 0.0.0.0 (cette machine)
   - 255.255.255.255 (broadcast)


PARTIE 2 : AVANCÉ
─────────────────

[OK] SUBNETTING :
   - Découpage réseaux
   - Formules : 2^n sous-réseaux, 2^h-2 hôtes
   - Incrément : 256 - octet masque
   - Méthodologie étape par étape

[OK] VLSM :
   - Masques variables
   - Optimisation utilisation
   - Allocation plus grand -> plus petit

[OK] SUPERNETTING :
   - Agrégation routes
   - Réduction tables routage
   - Contiguïté et puissance 2 requises
   - Critique pour Internet (BGP)


[OBJECTIF] COMPÉTENCES ACQUISES

Vous savez maintenant :

[OK] Comprendre structure IPv4
[OK] Convertir binaire <-> décimal
[OK] Identifier classes adresses
[OK] Calculer masques sous-réseau
[OK] Différencier public/privé
[OK] Reconnaître adresses spéciales
[OK] Faire subnetting complet
[OK] Appliquer VLSM efficacement
[OK] Agréger routes (supernetting)
[OK] Résoudre exercices complexes


[PRO] APPLICATIONS PRATIQUES

Ces connaissances vous permettent de :

[OK] Concevoir plans d'adressage entreprise
[OK] Optimiser utilisation adresses IP
[OK] Diviser réseaux selon besoins
[OK] Calculer plages IP rapidement
[OK] Diagnostiquer problèmes adressage
[OK] Configurer routeurs/switchs (VLAN IPs)
[OK] Comprendre tables routage
[OK] Réussir certifications (CCNA, Network+)


[LIEN] LIEN AVEC AUTRES CHAPITRES

IPv4 est central pour :

- Chapitre 4 : Couche 3 OSI (IP = implémentation)
- Chapitre 11 : ARP (IP->MAC), ICMP (diagnostic IP)
- Chapitre 12 : DNS (noms->IPs)
- Chapitre 13 : DHCP (attribution IPs automatique)
- Chapitres 19-20 : Routage (utilise IPs)
- Chapitre 21 : VLANs (IPs par VLAN)


-> PROCHAINS CHAPITRES

Maintenant que vous maîtrisez IPv4, la suite logique :

- Chapitre 9 : IPv6 (nouvelle génération)
- Chapitre 10 : Transition IPv4/IPv6
- Chapitre 11 : ARP, ICMP (protocoles auxiliaires IP)
- Chapitre 12 : DNS (résolution noms)
- Chapitre 13 : DHCP (configuration automatique)


[IDEE] CONSEILS PRATIQUES

Pour maîtriser IPv4 :

1. PRATIQUER CALCULS
   ─────────────────
   
   Faire exercices subnetting régulièrement
   Utiliser calculateurs pour vérifier
   
   Outils :
   - ipcalc (Linux)
   - Subnet Calculator (web)
   - Cisco Packet Tracer

2. VISUALISER
   ──────────
   
   Dessiner schémas réseaux
   Représenter en binaire
   Tables aide-mémoire masques

3. SCÉNARIOS RÉELS
   ───────────────
   
   Planifier adressage projets personnels
   Analyser réseaux existants
   Proposer améliorations

4. CERTIFICATIONS
   ──────────────
   
   CCNA : Subnetting crucial (20% exam)
   CompTIA Network+ : IPv4 fondamental
   
   S'entraîner calculs sans calculatrice
   Viser rapidité (exam chronométré)


[RAPIDE] EXCELLENT TRAVAIL !

IPv4 est un des chapitres les plus IMPORTANTS du guide.
C'est la base de TOUT réseau moderne.

Vous maîtrisez maintenant :
- Structure et fonctionnement IPv4
- Subnetting (compétence clé !)
- VLSM (optimisation professionnelle)
- Agrégation (scalabilité Internet)

Ces compétences sont ESSENTIELLES et VALORISÉES
dans TOUS les métiers réseau !


═══════════════════════════════════════════════════════════
[GUIDE] FIN DU CHAPITRE 8 - IPv4
═══════════════════════════════════════════════════════════
"""

# ============================================================================
# CHAPITRE 9 : IPv6 (INTERNET PROTOCOL VERSION 6) - PARTIE 1
# ============================================================================

"""
[OBJECTIF] OBJECTIFS DU CHAPITRE

Ce chapitre couvre IPv6, la nouvelle génération du protocole Internet :
[OK] Pourquoi IPv6 (problèmes IPv4)
[OK] Structure adresse IPv6 (128 bits)
[OK] Notation et simplification
[OK] Types d'adresses (Unicast, Multicast, Anycast)
[OK] Adresses spéciales IPv6
[OK] Préfixes et subnetting IPv6
[OK] SLAAC (auto-configuration)
[OK] Transition IPv4/IPv6
[OK] Exercices pratiques

[IDEE] POURQUOI IPv6 EST CRUCIAL ?

IPv6 est l'AVENIR de l'Internet :
- Espace d'adressage IMMENSE (340 undécillions)
- Résout épuisement IPv4
- Simplifications protocole (pas de NAT nécessaire)
- Sécurité intégrée (IPsec obligatoire)
- Auto-configuration améliorée
- Adoption croissante (30%+ trafic global)

Maîtriser IPv6 est ESSENTIEL pour l'avenir des réseaux !


[DOCS] PLAN DU CHAPITRE

PARTIE 1 :
1. Introduction et contexte IPv6
2. Structure adresse IPv6 (128 bits)
3. Notation et règles simplification
4. Types d'adresses IPv6
5. Adresses spéciales
6. Préfixes et organisation

PARTIE 2 :
7. Subnetting IPv6
8. SLAAC et DHCPv6
9. ICMPv6 et Neighbor Discovery
10. Transition IPv4/IPv6
11. Exercices pratiques
"""


# ----------------------------------------------------------------------------
# [WEB] PARTIE 1 : INTRODUCTION ET CONTEXTE IPv6
# ----------------------------------------------------------------------------

"""
INTRODUCTION IPv6


POURQUOI IPv6 ?

PROBLÈME IPv4 : ÉPUISEMENT ADRESSES
════════════════════════════════════

IPv4 : 32 bits = 2^32 = ~4.3 milliards adresses

Semblait énorme en 1981...

Mais en 2024 :
- 8 milliards d'humains
- 50+ milliards d'appareils connectés
- IoT en explosion

Résultat : PÉNURIE ADRESSES IPv4


Dates clés épuisement :
- 3 février 2011 : IANA (dernier bloc /8 alloué)
- 2012 : RIPE NCC (Europe) épuisé
- 2015 : ARIN (Amérique du Nord) épuisé
- 2019 : Tous RIRs épuisés

Solutions temporaires IPv4 :
- NAT (partage IP publique)
- Réutilisation adresses privées
- Marché secondaire IPs

Mais limites :
[X] Complexité (NAT)
[X] Problèmes end-to-end
[X] Pas de solution long terme


SOLUTION : IPv6
═══════════════

IPv6 = Internet Protocol version 6

Standard : RFC 2460 (1998), mis à jour RFC 8200 (2017)

Espace d'adressage : 128 bits

2^128 = 340,282,366,920,938,463,463,374,607,431,768,211,456 adresses

= 340 undécillions (340 × 10^36)

= ~6.7 × 10^23 adresses par mètre carré de surface Terre !

Suffisant pour TOUJOURS [OK]


AMÉLIORATIONS IPv6 vs IPv4

[OK] ESPACE D'ADRESSAGE IMMENSE
   128 bits vs 32 bits
   Jamais d'épuisement

[OK] SIMPLIFICATION HEADER
   40 octets fixe vs 20-60 octets variable
   Traitement plus rapide routeurs

[OK] PAS DE NAT NÉCESSAIRE
   Adresse unique par appareil
   End-to-end restauré

[OK] AUTO-CONFIGURATION
   SLAAC (Stateless Address Autoconfiguration)
   Plug-and-play amélioré

[OK] SÉCURITÉ INTÉGRÉE
   IPsec obligatoire (optionnel IPv4)
   Chiffrement et authentification natifs

[OK] QUALITÉ DE SERVICE
   Flow labeling natif
   QoS améliorée

[OK] MOBILITÉ
   Mobile IPv6 amélioré
   Handoff transparent

[OK] MULTICAST AMÉLIORÉ
   Pas de broadcast (inefficace)
   Multicast obligatoire

[OK] EXTENSIBILITÉ
   Extension headers flexibles
   Nouvelles fonctionnalités faciles


HISTORIQUE IPv6

1990s : Réflexion successeur IPv4
──────────────────────────────────

IPng (IP next generation) workgroup

Propositions : SIP, TUBA, CATNIP...


1998 : RFC 2460 (IPv6)
──────────────────────

Standardisation IPv6

Format adresse 128 bits
Header simplifié


2000s : Déploiement lent
────────────────────────

Adoption faible :
- IPv4 fonctionne (NAT)
- Coût migration
- Manque pression


2010s : Accélération
────────────────────

2011 : Épuisement IPv4 IANA
-> Pression adoption IPv6

Grandes entreprises déploient :
- Google : 2008
- Facebook : 2011
- Cloudflare : 2011

World IPv6 Launch Day (6 juin 2012)


2020s : Adoption significative
──────────────────────────────

2024 : ~40% trafic global IPv6

Leaders adoption :
- Inde : 70%+
- Belgique : 60%+
- USA : 48%
- Allemagne : 55%

Mobile : 80%+ (carriers LTE/5G)

Mais entreprises : Adoption variable
- Grandes : 50%+
- PME : <20%


COEXISTENCE IPv4/IPv6

Dual-Stack : Norme actuelle
───────────────────────────

Équipements supportent IPv4 ET IPv6 simultanément

┌─────────────────────────┐
│      Application        │
├──────────┬──────────────┤
│   IPv4   │    IPv6      │
├──────────┴──────────────┤
│      Couches 1-2        │
└─────────────────────────┘

Avantages :
[OK] Compatibilité totale
[OK] Migration progressive
[OK] Fallback automatique

Inconvénient :
[X] Complexité (deux stacks)


ADOPTION NÉCESSAIRE

Pourquoi migrer maintenant ?

[OK] Pénurie IPv4 (coûts IPs publiques ^)
[OK] IoT explosion (milliards appareils)
[OK] 5G natif IPv6
[OK] Simplification architecture (pas NAT)
[OK] Préparation futur


IPv6 = INÉVITABLE

Question n'est pas "si" mais "quand"
"""


# ----------------------------------------------------------------------------
# [NOMBRE] PARTIE 2 : STRUCTURE ADRESSE IPv6
# ----------------------------------------------------------------------------

"""
STRUCTURE ADRESSE IPv6


FORMAT 128 BITS

Longueur : 128 bits (16 octets)

vs IPv4 : 32 bits (4 octets)

Ratio : IPv6 = 4× plus long


NOTATION HEXADÉCIMALE

Format : 8 groupes de 4 chiffres hexadécimaux

Séparateur : Deux-points (:)

Format complet : XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX

Exemple :
2001:0DB8:0000:0042:0000:0000:8A2E:0370

Chaque X = Chiffre hexadécimal (0-9, A-F)
Chaque groupe = 16 bits (4 × 4 bits)
8 groupes × 16 bits = 128 bits [OK]


CONVERSION BINAIRE

Exemple : 2001:0DB8::1

Hexadécimal -> Binaire :

2001 = 0010 0000 0000 0001
0DB8 = 0000 1101 1011 1000
0000 = 0000 0000 0000 0000 (plusieurs fois)
0001 = 0000 0000 0000 0001

Total : 128 bits


RÈGLES SIMPLIFICATION (TRÈS IMPORTANT !)


RÈGLE 1 : Suppression zéros non significatifs
══════════════════════════════════════════════

Chaque groupe : Supprimer zéros à gauche

Avant : 2001:0DB8:0000:0042:0000:0000:8A2E:0370
Après : 2001:DB8:0:42:0:0:8A2E:370

Exemples :
0042 -> 42
0DB8 -> DB8
0000 -> 0
0001 -> 1


RÈGLE 2 : Compression séquence de zéros
════════════════════════════════════════

Séquence consécutive de groupes "0000" -> ::

UNE SEULE FOIS par adresse !

Avant : 2001:0DB8:0000:0000:0000:0000:0000:0001
Après : 2001:DB8::1

Avant : 2001:0DB8:0000:0042:0000:0000:8A2E:0370
Options :
- 2001:DB8:0:42::8A2E:370 (groupe 4-5 compressé)
- 2001:DB8::42:0:0:8A2E:370 (groupe 2-3 compressé)

Choisir plus longue séquence :
-> 2001:DB8:0:42::8A2E:370 [OK] (2 groupes zéros)


Cas spécial : Tout zéros
────────────────────────

0000:0000:0000:0000:0000:0000:0000:0000
-> ::

Adresse non-spécifiée (équivalent 0.0.0.0 en IPv4)


Cas spécial : Loopback
──────────────────────

0000:0000:0000:0000:0000:0000:0000:0001
-> ::1

Loopback (équivalent 127.0.0.1 en IPv4)


IMPORTANT : :: utilisable UNE FOIS !
─────────────────────────────────────

[X] INVALIDE : 2001::DB8::1
(Deux :: -> Ambiguïté : combien de zéros ?)

[OK] VALIDE : 2001:0:0:0:DB8:0:0:1
-> 2001::DB8:0:0:1 OU 2001:0:0:0:DB8::1


EXEMPLES SIMPLIFICATION

Exemple 1 :
───────────

Complet : 2001:0DB8:0000:0000:0000:FF00:0042:8329

Étape 1 (Zéros non significatifs) :
2001:DB8:0:0:0:FF00:42:8329

Étape 2 (Compression) :
2001:DB8::FF00:42:8329


Exemple 2 :
───────────

Complet : FE80:0000:0000:0000:0202:B3FF:FE1E:8329

Étape 1 :
FE80:0:0:0:202:B3FF:FE1E:8329

Étape 2 :
FE80::202:B3FF:FE1E:8329


Exemple 3 :
───────────

Complet : 2001:0DB8:0042:0000:0000:0000:0000:0001

Étape 1 :
2001:DB8:42:0:0:0:0:1

Étape 2 :
2001:DB8:42::1


EXPANSION ADRESSE (INVERSE)

Adresse simplifiée -> Complète

Exemple : 2001:DB8::1

Étape 1 : Identifier ::
:: représente groupes manquants

Étape 2 : Calculer nombre groupes
Total : 8 groupes
Présents : 2001:DB8 (2) + 1 (1) = 3
Manquants : 8 - 3 = 5

Étape 3 : Remplacer :: par 5 groupes 0000
2001:DB8:0000:0000:0000:0000:0000:1

Étape 4 : Compléter zéros non significatifs
2001:0DB8:0000:0000:0000:0000:0000:0001 [OK]


FORMAT PRÉFIXE

Similaire CIDR en IPv4

Format : Adresse/Longueur

Exemple : 2001:DB8::/32

/32 = 32 bits de préfixe (réseau)
128 - 32 = 96 bits d'hôte

Équivalent IPv4 : 192.168.1.0/24


DIVISION PRÉFIXE / INTERFACE ID

Adresse IPv6 typique :

┌──────────────────────┬──────────────────────┐
│   Préfixe (64 bits)  │ Interface ID (64 bits)│
│      Réseau          │       Hôte           │
└──────────────────────┴──────────────────────┘

Standard : /64 par réseau

Exemple : 2001:DB8:ABCD:1234::1/64

Préfixe : 2001:DB8:ABCD:1234 (64 bits)
Interface ID : 0000:0000:0000:0001 (64 bits)


POURQUOI /64 STANDARD ?

[OK] SLAAC requiert /64
[OK] Nombre hôtes énorme (2^64)
[OK] Facilite subnetting
[OK] Recommandation IETF


Comparaison avec IPv4 :

IPv4 /24 : 254 hôtes
IPv6 /64 : 18,446,744,073,709,551,616 hôtes !

Même pour réseau 2 hôtes : /64 recommandé
(Abondance d'adresses !)
"""


# ----------------------------------------------------------------------------
# [LISTE] PARTIE 3 : TYPES D'ADRESSES IPv6
# ----------------------------------------------------------------------------

"""
TYPES D'ADRESSES IPv6


TROIS TYPES PRINCIPAUX

1. UNICAST : One-to-one
2. MULTICAST : One-to-many
3. ANYCAST : One-to-nearest

[ATTENTION] PAS DE BROADCAST en IPv6 !
(Remplacé par multicast)


1. UNICAST
══════════

Définition : Adresse unique d'une interface

Communication point-à-point

Types unicast :


GLOBAL UNICAST (GUA)
────────────────────

= Équivalent IP publique IPv4

Routables sur Internet

Format : 2000::/3 (commence 2000-3FFF)

Structure :

┌────────┬─────────┬──────────┬──────────────┐
│ Global │ Subnet  │  Subnet  │ Interface ID │
│Routing │   ID    │   ID     │              │
│Prefix  │ (ISP)   │ (Org)    │              │
│  48b   │  16b    │  variable│    64b       │
└────────┴─────────┴──────────┴──────────────┘

Exemple : 2001:DB8:ABCD:1234::1/64

Allocation :
- IANA -> RIRs : /12 ou /23
- RIRs -> ISPs : /32
- ISPs -> Clients : /48 ou /56
- Clients -> Réseaux : /64


UNIQUE LOCAL ADDRESS (ULA)
───────────────────────────

= Équivalent adresses privées IPv4

NON routables sur Internet

Préfixe : FC00::/7 (FD00::/8 utilisé)

Format : FD + 40 bits aléatoires + 16 bits subnet + 64 bits interface

Exemple : FD12:3456:789A:1::1/64

Génération :
1. Tirer 40 bits aléatoires
2. FD + ces 40 bits = Préfixe unique

Avantages vs privé IPv4 :
[OK] Probabilité collision très faible (2^40)
[OK] Renumbering facile si fusion réseaux

Usage :
- Réseaux internes entreprise
- VPN
- Réseaux isolés Internet


LINK-LOCAL
──────────

Valide uniquement sur lien local (segment)

Préfixe : FE80::/10

Format : FE80::Interface_ID/64

Auto-configurée TOUJOURS

Exemple : FE80::1/64

Utilisation :
- Communication locale (même segment)
- Neighbor Discovery (NDP)
- Routage (next-hop)

[ATTENTION] Nécessite spécifier interface (zone ID)

Exemple : ping6 FE80::1%eth0

%eth0 = Zone ID (interface)


LOOPBACK
────────

Adresse vers soi-même

Valeur : ::1/128

Équivalent 127.0.0.1 IPv4

Usage :
- Tests locaux
- Services locaux

Exemple :
```
ping ::1
```


ADRESSE NON-SPÉCIFIÉE
─────────────────────

Valeur : ::/128 (tous zéros)

Équivalent 0.0.0.0 IPv4

Usage :
- Source avant obtention IP (DHCP)
- Écoute tous interfaces (sockets)


2. MULTICAST
════════════

Définition : Groupe d'interfaces

Préfixe : FF00::/8 (commence FF)

Format : FF + Flags + Scope + Group ID

┌────┬───────┬───────┬──────────────────┐
│ FF │ Flags │ Scope │    Group ID      │
│ 8b │  4b   │  4b   │     112 bits     │
└────┴───────┴───────┴──────────────────┘


SCOPE (Portée)
──────────────

┌───────┬──────────────────────┐
│ Code  │   Portée             │
├───────┼──────────────────────┤
│   1   │ Interface-local      │
│   2   │ Link-local           │
│   4   │ Admin-local          │
│   5   │ Site-local           │
│   8   │ Organization-local   │
│   E   │ Global               │
└───────┴──────────────────────┘


ADRESSES MULTICAST RÉSERVÉES
────────────────────────────

┌──────────────────────┬─────────────────────┐
│      Adresse         │      Usage          │
├──────────────────────┼─────────────────────┤
│ FF02::1              │ Tous nœuds (link)   │
│ FF02::2              │ Tous routeurs (link)│
│ FF02::5              │ OSPFv3 routers      │
│ FF02::6              │ OSPFv3 DR routers   │
│ FF02::9              │ RIPng routers       │
│ FF02::A              │ EIGRP routers       │
│ FF02::D              │ PIM routers         │
│ FF02::1:2            │ DHCP agents         │
│ FF02::1:FF00:0/104   │ Solicited-node      │
└──────────────────────┴─────────────────────┘


SOLICITED-NODE MULTICAST
────────────────────────

Spécial : Remplace ARP IPv4

Format : FF02::1:FF + 24 derniers bits adresse

Exemple :

Adresse unicast : 2001:DB8::1234:5678
24 derniers bits : 34:5678

Solicited-node : FF02::1:FF34:5678

Usage : Neighbor Discovery (résolution adresse)


3. ANYCAST
══════════

Définition : Adresse partagée par PLUSIEURS interfaces

Paquet envoyé vers la PLUS PROCHE (routage)

Format : Identique unicast (mais configuré comme anycast)

Utilisation :
- Load balancing
- Redondance
- DNS root servers
- CDN (Content Delivery Networks)

Exemple :

3 serveurs DNS : 2001:DB8::53/128 (anycast)
Client envoie requête -> Reçu par serveur le plus proche

Transparent pour client


ANYCAST RÉSERVÉ
───────────────

Subnet-Router Anycast : Adresse réseau /128

Exemple réseau : 2001:DB8:1::/64
Anycast : 2001:DB8:1::/128 (tous zéros interface)

Usage : Routeurs annoncent pour joignabilité


COMPARAISON TYPES

┌───────────┬──────────────┬─────────────────┐
│   Type    │ Destinataires│     Usage       │
├───────────┼──────────────┼─────────────────┤
│ Unicast   │ Un seul      │ Normal          │
│ Multicast │ Groupe       │ Un-vers-plusieurs│
│ Anycast   │ Plus proche  │ Redondance/LB   │
└───────────┴──────────────┴─────────────────┘

[ATTENTION] BROADCAST n'existe PAS !
Remplacé : FF02::1 (tous nœuds link-local)
"""


# ----------------------------------------------------------------------------
# [RAPIDE] PARTIE 4 : ADRESSES SPÉCIALES IPv6
# ----------------------------------------------------------------------------

"""
ADRESSES SPÉCIALES IPv6


LOOPBACK
════════

Adresse : ::1/128

Utilisation : Interface locale (vers soi-même)

Équivalent IPv4 : 127.0.0.1

Test :
```
ping ::1
ping6 ::1
```


NON-SPÉCIFIÉE
═════════════

Adresse : ::/128

Utilisation :
- Source temporaire (avant configuration)
- "Toute adresse" (écoute socket)

Équivalent IPv4 : 0.0.0.0

Jamais destination !


ADRESSES IPv4-MAPPED
════════════════════

Format : ::FFFF:IPv4

Exemple : ::FFFF:192.168.1.1

Utilisation :
Application IPv6 communique avec hôte IPv4

Représentation IPv4 dans contexte IPv6


ADRESSES IPv4-COMPATIBLE (Obsolète)
════════════════════════════════════

Format : ::IPv4

Exemple : ::192.168.1.1

Déprécié (RFC 4291)

Utilisé mécanismes transition anciens


ADRESSES 6TO4 (Déprécié)
════════════════════════

Préfixe : 2002::/16

Format : 2002:IPv4_addr::/48

Mécanisme transition automatique

Exemple : IPv4 = 192.0.2.1
-> IPv6 6to4 = 2002:C000:0201::/48

Déprécié au profit mécanismes modernes


ADRESSES DOCUMENTATION
══════════════════════

Réservées documentation/exemples

Plages :

┌──────────────────┬───────────────────┐
│    Préfixe       │      Usage        │
├──────────────────┼───────────────────┤
│ 2001:DB8::/32    │ Documentation     │
│ 3FFE::/16        │ 6bone (obsolète)  │
└──────────────────┴───────────────────┘

2001:DB8::/32 : Standard documentation
- Livres
- RFCs
- Cours
- Exemples

[ATTENTION] Jamais routé sur Internet


ADRESSES MULTICAST SPÉCIALES
═════════════════════════════

Tous nœuds (link-local) : FF02::1
──────────────────────────────────

Équivalent broadcast IPv4

Tous reçoivent sur segment


Tous routeurs (link-local) : FF02::2
─────────────────────────────────────

Routeurs uniquement


Solicited-Node : FF02::1:FF00:0/104
────────────────────────────────────

Résolution adresse (ND)

Calcul : FF02::1:FF + 24 derniers bits adresse unicast


RÉSUMÉ PLAGES

┌─────────────────┬──────────────────────────┐
│    Préfixe      │        Type              │
├─────────────────┼──────────────────────────┤
│ ::/128          │ Non-spécifiée            │
│ ::1/128         │ Loopback                 │
│ FE80::/10       │ Link-local               │
│ FC00::/7        │ Unique Local (ULA)       │
│ FD00::/8        │ ULA (utilisé)            │
│ 2000::/3        │ Global Unicast           │
│ 2001:DB8::/32   │ Documentation            │
│ FF00::/8        │ Multicast                │
└─────────────────┴──────────────────────────┘
"""


# ----------------------------------------------------------------------------
# [GRAPHIQUE] PARTIE 5 : PRÉFIXES ET ORGANISATION
# ----------------------------------------------------------------------------

"""
PRÉFIXES ET ORGANISATION IPv6


HIÉRARCHIE ALLOCATION

IANA (Internet Assigned Numbers Authority)
v
RIRs (Regional Internet Registries)
- ARIN (Amérique du Nord)
- RIPE NCC (Europe)
- APNIC (Asie-Pacifique)
- LACNIC (Amérique Latine)
- AFRINIC (Afrique)
v
LIRs / ISPs
v
Entreprises / Utilisateurs finaux
v
Sous-réseaux


TAILLES ALLOCATION TYPIQUES

┌──────────────┬─────────────┬─────────────────┐
│ Entité       │   Préfixe   │  Nombre /64     │
├──────────────┼─────────────┼─────────────────┤
│ RIR          │ /12 - /23   │ Billions        │
│ ISP          │ /32         │ 4,294,967,296   │
│ Entreprise   │ /48         │ 65,536          │
│ Réseau       │ /64         │ 1               │
│ Point-to-point│/127        │ -               │
└──────────────┴─────────────┴─────────────────┘


ALLOCATION ENTREPRISE TYPIQUE

ISP alloue : 2001:DB8:ABCD::/48

Entreprise subdivise en /64 :

Bits disponibles subnetting : 48-64 = 16 bits
Sous-réseaux possibles : 2^16 = 65,536 /64


Exemple organisation :

┌────────────────────┬──────────────────────┐
│   Sous-réseau      │      Usage           │
├────────────────────┼──────────────────────┤
│ 2001:DB8:ABCD:1::/64│ VLAN 1 - Bureau     │
│ 2001:DB8:ABCD:2::/64│ VLAN 2 - IT         │
│ 2001:DB8:ABCD:3::/64│ VLAN 3 - Serveurs   │
│ 2001:DB8:ABCD:10::/64│VLAN 10 - Invités   │
│ 2001:DB8:ABCD:FF::/64│ VPN                │
│ ...                │                      │
│ 2001:DB8:ABCD:FFFF::/64│ Dernier         │
└────────────────────┴──────────────────────┘

65,536 réseaux /64 disponibles !


STRUCTURE HIÉRARCHIQUE

Global Unicast typique :

2001:0DB8:ABCD:1234:0000:0000:0000:0001/64

Décomposition :

┌─────┬──────┬──────┬──────┬──────────────────┐
│2001 │ 0DB8 │ ABCD │ 1234 │ 0000:0000:0000:0001│
└─────┴──────┴──────┴──────┴──────────────────┘
  ^      ^      ^      ^           ^
  │      │      │      │           └─ Interface ID (64b)
  │      │      │      └─────────────Subnet ID (16b)
  │      │      └────────────────────Site ID (16b)
  │      └───────────────────────────ISP ID (16b)
  └──────────────────────────────────Global Prefix


PRÉFIXES RECOMMANDÉS

┌──────────────────────┬──────────────┐
│       Usage          │   Préfixe    │
├──────────────────────┼──────────────┤
│ Réseau LAN           │ /64          │
│ Point-to-point       │ /127 ou /64  │
│ Loopback routeur     │ /128         │
│ Anycast              │ /128         │
│ Allocation site      │ /48 ou /56   │
└──────────────────────┴──────────────┘


/64 : Standard universel
────────────────────────

Raisons :
[OK] SLAAC requiert /64
[OK] Nombre hôtes illimité pratiquement (2^64)
[OK] Alignement 64 bits (efficace)
[OK] Recommandation IETF


/127 : Point-to-point
─────────────────────

RFC 6164 : /127 pour liens point-to-point

Avantages vs /64 :
[OK] Seulement 2 adresses (pas gaspillage)
[OK] Sécurité (ping-pong attacks évités)

Configuration routeur-routeur :
```
interface Serial0/0
 ipv6 address 2001:DB8::1/127
```

Routeur distant :
```
interface Serial0/0
 ipv6 address 2001:DB8::2/127
```


CALCUL NOMBRE HÔTES

Formule : 2^(128 - préfixe) - 1

(−1 car adresse subnet-router anycast réservée)

Exemples :

/64 : 2^(128-64) - 1 = 2^64 - 1
    = 18,446,744,073,709,551,615 hôtes

/48 : 2^(128-48) - 1 = 2^80 - 1
    = 1,208,925,819,614,629,174,706,175 hôtes

/127 : 2^(128-127) - 1 = 2^1 - 1 = 1 hôte
     (Usage : 2 IPs point-to-point)

[IDEE] Abondance d'adresses !
   Même petit réseau : /64 (milliards d'hôtes)
"""


# ============================================================================
# [OBJECTIF] FIN PARTIE 1 DU CHAPITRE 9
# ============================================================================

"""
[DOCS] RÉCAPITULATIF PARTIE 1

Vous avez appris :

[OK] CONTEXTE IPv6 :
   - Épuisement IPv4 (2011)
   - 128 bits = 340 undécillions adresses
   - Améliorations vs IPv4
   - Historique et adoption
   
[OK] STRUCTURE :
   - Format 8 groupes hexadécimaux
   - Règles simplification (:: et zéros)
   - Expansion adresse
   - Préfixes /X
   
[OK] TYPES ADRESSES :
   - Unicast (Global, ULA, Link-local)
   - Multicast (FF00::/8)
   - Anycast (plus proche)
   - PAS de broadcast
   
[OK] ADRESSES SPÉCIALES :
   - ::1 (loopback)
   - :: (non-spécifiée)
   - 2001:DB8::/32 (documentation)
   - FF02::1 (tous nœuds)
   
[OK] PRÉFIXES :
   - /48 entreprise
   - /64 réseau (standard)
   - /127 point-to-point
   - Organisation hiérarchique


-> SUITE : PARTIE 2

Dans le prochain fichier :
- Subnetting IPv6 détaillé
- SLAAC et DHCPv6
- ICMPv6 et Neighbor Discovery
- Mécanismes transition IPv4/IPv6
- Exercices pratiques complets
"""

# ============================================================================
# CHAPITRE 9 : IPv6 (INTERNET PROTOCOL VERSION 6) - PARTIE 2
# ============================================================================


# ----------------------------------------------------------------------------
# [HOCHO] PARTIE 6 : SUBNETTING IPv6
# ----------------------------------------------------------------------------

"""
SUBNETTING IPv6


PRINCIPE

Similaire IPv4 mais BEAUCOUP plus simple !

Raison : Abondance d'adresses
-> Pas besoin optimiser chaque bit


MÉTHODE STANDARD

Allocation entreprise : /48

Subdivision en /64 (réseaux)

Bits disponibles : 48 à 64 = 16 bits

Nombre sous-réseaux : 2^16 = 65,536 réseaux /64


EXEMPLE COMPLET

Préfixe alloué : 2001:DB8:ABCD::/48


ÉTAPE 1 : Identifier bits subnetting
─────────────────────────────────────

Format adresse :

2001:DB8:ABCD:SSSS:HHHH:HHHH:HHHH:HHHH

S = Subnet bits (16 bits disponibles)
H = Host bits (64 bits)


ÉTAPE 2 : Planifier sous-réseaux
─────────────────────────────────

Plan réseau entreprise :

┌────────┬──────────────────────────┬──────────┐
│ Subnet │        Usage             │  Préfixe │
├────────┼──────────────────────────┼──────────┤
│ 0001   │ VLAN 1 - Direction       │   /64    │
│ 0002   │ VLAN 2 - Comptabilité    │   /64    │
│ 0003   │ VLAN 3 - RH              │   /64    │
│ 0004   │ VLAN 4 - IT              │   /64    │
│ 0010   │ VLAN 10 - Serveurs       │   /64    │
│ 0020   │ VLAN 20 - Invités        │   /64    │
│ 0100   │ Site distant A           │   /64    │
│ 0200   │ Site distant B           │   /64    │
│ FFFF   │ Dernier subnet possible  │   /64    │
└────────┴──────────────────────────┴──────────┘


ÉTAPE 3 : Assigner adresses
────────────────────────────

Subnet 0001 (Direction) :
─────────────────────────

Réseau : 2001:DB8:ABCD:1::/64

Routeur : 2001:DB8:ABCD:1::1/64
PC1 : 2001:DB8:ABCD:1::10/64
PC2 : 2001:DB8:ABCD:1::20/64
...


Subnet 0002 (Comptabilité) :
─────────────────────────────

Réseau : 2001:DB8:ABCD:2::/64

Routeur : 2001:DB8:ABCD:2::1/64
PC1 : 2001:DB8:ABCD:2::10/64
...


Subnet 0010 (Serveurs) :
────────────────────────

Réseau : 2001:DB8:ABCD:10::/64

Routeur : 2001:DB8:ABCD:10::1/64
Web Server : 2001:DB8:ABCD:10::80/64
Mail Server : 2001:DB8:ABCD:10::25/64
DNS Server : 2001:DB8:ABCD:10::53/64


SUBNETTING HIÉRARCHIQUE

Allocation /48 -> Subdiviser davantage

Exemple : Entreprise multi-sites


NIVEAU 1 : Sites (/56)
──────────────────────

2001:DB8:ABCD::/48

Sites (8 bits subnetting : /48 -> /56) :

2001:DB8:ABCD:00::/56 -> Site Paris
2001:DB8:ABCD:01::/56 -> Site Lyon
2001:DB8:ABCD:02::/56 -> Site Marseille
...
2001:DB8:ABCD:FF::/56 -> Site 255

256 sites possibles


NIVEAU 2 : Réseaux par site (/64)
──────────────────────────────────

Site Paris : 2001:DB8:ABCD:00::/56

Réseaux (8 bits subnetting : /56 -> /64) :

2001:DB8:ABCD:00::/64 -> VLAN 1
2001:DB8:ABCD:01::/64 -> VLAN 2
...
2001:DB8:ABCD:FF::/64 -> VLAN 255

256 VLANs par site


VISUALISATION HIÉRARCHIE

2001:DB8:ABCD:SSTT:HHHH:HHHH:HHHH:HHHH

S = Site ID (8 bits) : 256 sites
T = Subnet ID (8 bits) : 256 réseaux/site
H = Host ID (64 bits) : Hôtes illimités


ALLOCATION /56 (Particuliers/PME)

Certains ISPs allouent /56 au lieu /48

2001:DB8:ABCD:AB00::/56

Bits subnetting : 56 -> 64 = 8 bits
Sous-réseaux : 2^8 = 256 réseaux /64

Exemple :

2001:DB8:ABCD:AB00::/64 -> LAN principal
2001:DB8:ABCD:AB01::/64 -> Invités
2001:DB8:ABCD:AB02::/64 -> IoT
2001:DB8:ABCD:AB03::/64 -> DMZ


POINT-TO-POINT (/127)

Liens routeur-routeur : /127 recommandé

Exemple lien Paris-Lyon :

Routeur Paris : 2001:DB8:ABCD:FFF0::0/127
Routeur Lyon : 2001:DB8:ABCD:FFF0::1/127

Seulement 2 adresses (0 et 1)


SIMPLIFICATION vs IPv4

IPv4 : Calculs complexes
- Masques variables
- Gaspillage adresses
- Calculs binaires fréquents

IPv6 : Très simple
- Toujours /64 pour réseaux
- Abondance totale
- Incréments hexadécimaux faciles

Exemple incréments :

2001:DB8:ABCD:1::/64
2001:DB8:ABCD:2::/64
2001:DB8:ABCD:3::/64
...
2001:DB8:ABCD:A::/64
2001:DB8:ABCD:B::/64
...
2001:DB8:ABCD:FF::/64
2001:DB8:ABCD:100::/64


BONNES PRATIQUES SUBNETTING IPv6

[OK] Utiliser /64 pour tous les LANs
[OK] /127 pour point-to-point
[OK] Planification simple (pas besoin optimiser)
[OK] Documentation claire (plan adressage)
[OK] Numérotation logique (décimale ou hex)
[OK] Réserver blocs futurs
"""


# ----------------------------------------------------------------------------
# [CONFIG] PARTIE 7 : SLAAC ET DHCPv6
# ----------------------------------------------------------------------------

"""
AUTO-CONFIGURATION IPv6


DEUX MÉTHODES

1. SLAAC (Stateless Address Autoconfiguration)
2. DHCPv6 (Dynamic Host Configuration Protocol v6)


1. SLAAC (STATELESS)
════════════════════

Standard : RFC 4862

Principe : Auto-configuration SANS serveur


PROCESSUS SLAAC


ÉTAPE 1 : Adresse Link-Local
─────────────────────────────

Au démarrage, hôte génère automatiquement :

FE80::/64 + Interface ID

Interface ID : Dérivé de MAC (EUI-64) ou aléatoire

Exemple MAC : 00:1A:2B:3C:4D:5E

EUI-64 :
1. Insérer FFFE au milieu : 00:1A:2B:FF:FE:3C:4D:5E
2. Inverser bit U/L (bit 7 du 1er octet) :
   00 = 00000000 -> 00000010 = 02
3. Résultat : 02:1A:2B:FF:FE:3C:4D:5E

Link-Local : FE80::21A:2BFF:FE3C:4D5E/64


ÉTAPE 2 : Duplicate Address Detection (DAD)
────────────────────────────────────────────

Hôte vérifie unicité adresse link-local

Méthode :
1. Envoie Neighbor Solicitation vers sa propre adresse
2. Si réponse -> Duplicate ! [X] (génère nouvelle adresse)
3. Si pas de réponse -> OK [OK]


ÉTAPE 3 : Router Solicitation (RS)
───────────────────────────────────

Hôte cherche routeur

Message : RS vers FF02::2 (tous routeurs)

Demande : "Y a-t-il un routeur ?"


ÉTAPE 4 : Router Advertisement (RA)
────────────────────────────────────

Routeur répond avec RA

Contenu RA :
- Préfixe réseau (ex: 2001:DB8:ABCD:1::/64)
- Durée validité
- Flags configuration :
  * M flag : DHCPv6 géré (Managed)
  * O flag : DHCPv6 info (Other)
  * A flag : SLAAC autorisé (Autonomous)

Périodicité : Toutes les 200s (par défaut)


ÉTAPE 5 : Génération Global Unicast
────────────────────────────────────

Hôte combine :

Préfixe (du RA) + Interface ID

Exemple :

Préfixe : 2001:DB8:ABCD:1::/64
Interface ID : 21A:2BFF:FE3C:4D5E

Adresse globale : 2001:DB8:ABCD:1:21A:2BFF:FE3C:4D5E/64


ÉTAPE 6 : DAD sur Global Unicast
─────────────────────────────────

Vérification unicité adresse globale

Même processus que link-local


ÉTAPE 7 : Configuration complète
─────────────────────────────────

Hôte a maintenant :
[OK] Link-Local : FE80::21A:2BFF:FE3C:4D5E/64
[OK] Global Unicast : 2001:DB8:ABCD:1:21A:2BFF:FE3C:4D5E/64
[OK] Passerelle : Routeur (link-local du routeur)
[OK] Préfixe : 2001:DB8:ABCD:1::/64


PRIVACY EXTENSIONS (RFC 4941)
──────────────────────────────

Problème EUI-64 : MAC visible dans adresse
-> Traçabilité utilisateur

Solution : Interface ID aléatoire

Windows/Linux/macOS : Activé par défaut

Génération :
- Interface ID aléatoire
- Temporaire (rotation régulière)

Exemple :

Stable (EUI-64) : 2001:DB8:1::21A:2BFF:FE3C:4D5E
Temporaire (Privacy) : 2001:DB8:1::A4B2:9C3D:1E5F:7890

Hôte peut avoir PLUSIEURS adresses :
- 1 stable (serveurs entrants)
- 1+ temporaires (connexions sortantes)


2. DHCPv6 (STATEFUL)
════════════════════

Standard : RFC 8415

Principe : Serveur centralise configuration


MODES DHCPv6

Stateful (Managed) :
────────────────────

Serveur attribue adresse complète

RA flags : M=1, A=0

Processus similaire DHCPv4 :
1. Solicit (client cherche serveur)
2. Advertise (serveur répond)
3. Request (client demande IP)
4. Reply (serveur confirme)


Stateless (Information) :
─────────────────────────

SLAAC pour adresse, DHCPv6 pour options

RA flags : M=0, O=1, A=1

Client :
- Génère adresse (SLAAC)
- Demande DNS, NTP, etc. à DHCPv6


COMPARAISON SLAAC vs DHCPv6

┌────────────────┬─────────┬──────────┐
│   Critère      │  SLAAC  │ DHCPv6   │
├────────────────┼─────────┼──────────┤
│ Serveur requis │  Non    │   Oui    │
│ Gestion centrée│  Non    │   Oui    │
│ Simplicité     │ Élevée  │  Moyenne │
│ Logs/Audit     │  Non    │   Oui    │
│ Adresse fixe   │  Non*   │   Oui    │
│ Options (DNS)  │ Via RA  │  Oui     │
└────────────────┴─────────┴──────────┘

* Sauf EUI-64 (mais traçabilité)


CONFIGURATION ROUTEUR

Cisco - SLAAC uniquement :
──────────────────────────

```
interface GigabitEthernet0/1
 ipv6 address 2001:DB8:1::1/64
 ipv6 nd managed-config-flag
 ipv6 nd other-config-flag
 no shutdown
```

Flags par défaut :
- M=0 (pas DHCPv6 géré)
- O=0 (pas DHCPv6 info)
- A=1 (SLAAC autorisé)


Cisco - DHCPv6 Stateful :
─────────────────────────

```
ipv6 dhcp pool POOL-VLAN1
 address prefix 2001:DB8:1::/64
 dns-server 2001:DB8:10::53
 domain-name example.com

interface GigabitEthernet0/1
 ipv6 address 2001:DB8:1::1/64
 ipv6 dhcp server POOL-VLAN1
 ipv6 nd managed-config-flag
 ipv6 nd prefix 2001:DB8:1::/64 no-advertise
 no shutdown
```

Flags :
- M=1 (DHCPv6 géré)
- no-advertise : Ne pas annoncer préfixe dans RA


BONNES PRATIQUES

Domicile/PME : SLAAC
────────────────────

[OK] Simple
[OK] Pas de serveur à maintenir
[OK] Plug-and-play


Entreprise : DHCPv6 Stateful
────────────────────────────

[OK] Contrôle centralisé
[OK] Logs attribution
[OK] Réservations possibles
[OK] Options multiples (DNS, NTP, etc.)


Mixte : SLAAC + DHCPv6 Stateless
─────────────────────────────────

[OK] Auto-config adresses (SLAAC)
[OK] Options centralisées (DHCPv6)
[OK] Compromis flexibilité/contrôle
"""


# ----------------------------------------------------------------------------
# [SYNC] PARTIE 8 : ICMPv6 ET NEIGHBOR DISCOVERY
# ----------------------------------------------------------------------------

"""
ICMPv6 (INTERNET CONTROL MESSAGE PROTOCOL v6)


RÔLE

Protocole essentiel IPv6 (plus qu'IPv4)

Fonctions :
- Messages erreur
- Diagnostics (ping)
- Neighbor Discovery (NDP)
- Multicast Listener Discovery (MLD)

Type : 58 (Next Header IPv6)


MESSAGES ICMPv6

Types principaux :

┌──────┬─────────────────────────────┐
│ Type │         Message             │
├──────┼─────────────────────────────┤
│  1   │ Destination Unreachable     │
│  2   │ Packet Too Big              │
│  3   │ Time Exceeded               │
│  4   │ Parameter Problem           │
│ 128  │ Echo Request (ping)         │
│ 129  │ Echo Reply (pong)           │
│ 133  │ Router Solicitation (RS)    │
│ 134  │ Router Advertisement (RA)   │
│ 135  │ Neighbor Solicitation (NS)  │
│ 136  │ Neighbor Advertisement (NA) │
│ 137  │ Redirect                    │
└──────┴─────────────────────────────┘


NEIGHBOR DISCOVERY PROTOCOL (NDP)
══════════════════════════════════

Standard : RFC 4861

Remplace ARP + ICMP Router Discovery IPv4

Fonctions :
1. Résolution adresse (IPv6 -> MAC)
2. Détection duplicate adresses (DAD)
3. Découverte routeurs
4. Détection voisins inaccessibles
5. Redirection


MESSAGES NDP


1. NEIGHBOR SOLICITATION (NS) - Type 135
═════════════════════════════════════════

Rôle : Résolution adresse (équivalent ARP Request)

Destination : Solicited-node multicast

Exemple : Résoudre 2001:DB8:1::10

Solicited-node : FF02::1:FF00:0010 (24 derniers bits)

Message NS :
- Src : 2001:DB8:1::5 (demandeur)
- Dst : FF02::1:FF00:0010 (multicast)
- Target : 2001:DB8:1::10 (cherché)

Avantage vs ARP :
[OK] Multicast ciblé (pas broadcast global)
[OK] Moins de trafic


2. NEIGHBOR ADVERTISEMENT (NA) - Type 136
══════════════════════════════════════════

Rôle : Réponse NS (équivalent ARP Reply)

Message NA :
- Src : 2001:DB8:1::10 (répondeur)
- Dst : 2001:DB8:1::5 (demandeur unicast)
- Target : 2001:DB8:1::10
- Link-Layer Address : 00:1A:2B:3C:4D:5E (MAC)


3. ROUTER SOLICITATION (RS) - Type 133
═══════════════════════════════════════

Rôle : Demander Router Advertisement

Message RS :
- Src : Link-Local du client
- Dst : FF02::2 (tous routeurs)

Envoyé au démarrage ou périodiquement


4. ROUTER ADVERTISEMENT (RA) - Type 134
════════════════════════════════════════

Rôle : Annoncer préfixe et config

Message RA :
- Src : Link-Local du routeur
- Dst : FF02::1 (tous nœuds) ou unicast

Contenu :
- Préfixe réseau (ex: 2001:DB8:1::/64)
- MTU
- Hop Limit
- Flags (M, O, A)
- Durée validité


5. REDIRECT - Type 137
═══════════════════════

Rôle : Informer meilleur next-hop

Routeur A dit à hôte :
"Pour destination X, utilise routeur B"

Optimisation routage


DUPLICATE ADDRESS DETECTION (DAD)
═══════════════════════════════════

Processus :

1. Hôte génère adresse (tentative)
2. Envoie NS vers sa propre adresse
   - Src : :: (non-spécifiée)
   - Dst : Solicited-node de l'adresse
   - Target : Adresse à vérifier

3. Écoute NA
   - Si NA reçu -> DUPLICATE [X]
   - Si timeout -> OK [OK]

4. Si OK : Adresse utilisable


NEIGHBOR UNREACHABILITY DETECTION (NUD)
════════════════════════════════════════

Détecte voisins inaccessibles

États voisin :

┌─────────────┬──────────────────────────┐
│    État     │      Description         │
├─────────────┼──────────────────────────┤
│ INCOMPLETE  │ Résolution en cours      │
│ REACHABLE   │ Joignable (confirmé)     │
│ STALE       │ Vieux (pas utilisé)      │
│ DELAY       │ Test joignabilité        │
│ PROBE       │ Envoi NS test            │
└─────────────┴──────────────────────────┘

Processus :
1. Communication -> REACHABLE
2. Pas utilisé -> STALE
3. Réutilisé -> DELAY (attente)
4. Pas de confirmation -> PROBE (test)
5. Échec -> Suppression


NEIGHBOR CACHE

Similaire cache ARP IPv4

Entrée :
- IPv6 : 2001:DB8:1::10
- MAC : 00:1A:2B:3C:4D:5E
- État : REACHABLE
- Interface : eth0

Linux :
```
ip -6 neighbor show
```

Windows :
```
netsh interface ipv6 show neighbors
```

Cisco :
```
show ipv6 neighbors
```


AVANTAGES NDP vs ARP

[OK] SÉCURITÉ
   - Secured ND (SEND) : Cryptographique
   - Protection attaques (vs ARP spoofing)

[OK] EFFICACITÉ
   - Multicast ciblé (vs broadcast)
   - Moins de trafic réseau

[OK] FONCTIONNALITÉS
   - Auto-configuration (SLAAC)
   - Détection duplicate
   - Détection inaccessibilité

[OK] IPv6-NATIF
   - Intégré protocole (pas ajout)
"""


# ----------------------------------------------------------------------------
# [MELANGE] PARTIE 9 : TRANSITION IPv4/IPv6
# ----------------------------------------------------------------------------

"""
MÉCANISMES TRANSITION IPv4/IPv6


PROBLÈME

Internet mixte :
- Équipements IPv4 uniquement
- Équipements IPv6 uniquement
- Équipements dual-stack

Communication requise entre tous


STRATÉGIES


1. DUAL-STACK (Recommandé)
══════════════════════════

Principe : IPv4 ET IPv6 simultanément

┌─────────────────────────┐
│      Application        │
├──────────┬──────────────┤
│   IPv4   │    IPv6      │
├──────────┴──────────────┤
│      Ethernet/Wi-Fi     │
└─────────────────────────┘

Configuration :
- IPv4 : 192.168.1.10/24
- IPv6 : 2001:DB8:1::10/64

Sélection protocole :
- Destination a AAAA record ? -> IPv6
- Destination a A record ? -> IPv4
- Préférence IPv6 (RFC 6724)

Avantages :
[OK] Compatibilité totale
[OK] Transition progressive
[OK] Pas de traduction

Inconvénients :
[X] Double configuration
[X] Double maintenance


2. TUNNELING
════════════

Principe : Encapsuler IPv6 dans IPv4 (ou inverse)


TUNNELS MANUELS
───────────────

Configuration manuelle point-to-point

Exemple Cisco :

Site A :
```
interface Tunnel0
 ipv6 address 2001:DB8:1::1/64
 tunnel source 203.0.113.1
 tunnel destination 203.0.113.2
 tunnel mode ipv6ip
```

Site B :
```
interface Tunnel0
 ipv6 address 2001:DB8:1::2/64
 tunnel source 203.0.113.2
 tunnel destination 203.0.113.1
 tunnel mode ipv6ip
```

Usage : Interconnecter sites IPv6 via réseau IPv4


GRE (Generic Routing Encapsulation)
────────────────────────────────────

Tunnel générique supportant multiple protocoles

Cisco :
```
interface Tunnel0
 ipv6 address 2001:DB8:1::1/64
 tunnel source GigabitEthernet0/0
 tunnel destination 203.0.113.2
 tunnel mode gre ip
```


6TO4 (Déprécié)
───────────────

Préfixe : 2002::/16

Auto-tunnel IPv6 via IPv4

Format : 2002:IPv4_en_hex::/48

Exemple :
IPv4 : 192.0.2.1 (C000:0201 en hex)
IPv6 6to4 : 2002:C000:0201::/48

Déprécié (problèmes sécurité/fiabilité)


ISATAP (Intra-Site Automatic Tunnel)
─────────────────────────────────────

Tunnel automatique intra-site

Préfixe : FE80::/64 (link-local)

Format Interface ID : ::0:5EFE:IPv4

Exemple :
IPv4 : 192.168.1.10
Link-local ISATAP : FE80::5EFE:192.168.1.10

Windows support natif (désactivé par défaut)


TEREDO (Déprécié)
─────────────────

Tunnel via NAT

Préfixe : 2001::/32

Complexe : Encapsulation UDP

Déprécié au profit solutions natives


3. TRADUCTION (NAT64/DNS64)
════════════════════════════

Principe : Traduction protocoles


NAT64
─────

Traduction IPv6 <-> IPv4

Préfixe : 64:FF9B::/96 (well-known)

Exemple :

Client IPv6 : 2001:DB8:1::10
Serveur IPv4 : 192.0.2.1

Adresse traduite : 64:FF9B::192.0.2.1
-> Client IPv6 utilise cette adresse
-> NAT64 traduit vers 192.0.2.1 (IPv4)

Configuration Cisco :
```
nat64 prefix stateful 64:FF9B::/96
```


DNS64
─────

Complément NAT64

Serveur DNS64 :
- Requête AAAA pour serveur IPv4-only
- Synthétise AAAA : 64:FF9B::IPv4

Exemple :

Requête : www.exemple-ipv4.com (AAAA)
Réponse normale : Pas de AAAA (A = 192.0.2.1)
Réponse DNS64 : AAAA = 64:FF9B::192.0.2.1

Client utilise adresse synthétisée
-> NAT64 traduit


4. 464XLAT
══════════

Mobile networks (4G/5G)

IPv6-only réseau opérateur

Client IPv4 -> CLAT -> IPv6 -> PLAT -> IPv4 Internet

CLAT : Customer-side LAT (device)
PLAT : Provider-side LAT (opérateur)

Transparent pour utilisateur


STRATÉGIE MIGRATION RECOMMANDÉE

Phase 1 : Dual-Stack
────────────────────

Déployer IPv6 parallèle IPv4

[OK] Pas de disruption
[OK] Apprentissage progressif


Phase 2 : IPv6 préférentiel
───────────────────────────

Privilégier IPv6 si disponible

Configuration clients/serveurs


Phase 3 : IPv6-only (futur)
───────────────────────────

Désactiver IPv4 progressivement

NAT64/DNS64 pour accès IPv4 résiduels


WORLD IPv6 LAUNCH (2012)

6 juin 2012 : Activation permanente IPv6

Participants :
- Google
- Facebook
- Yahoo
- Microsoft Bing
- Akamai
- Cloudflare
- ISPs majeurs

Résultat : Accélération adoption
"""


# ----------------------------------------------------------------------------
# [COURS] EXERCICES PRATIQUES - CHAPITRE 9
# ----------------------------------------------------------------------------

"""
[IDEE] EXERCICES


═══════════════════════════════════════════════════════════
EXERCICE 1 : SIMPLIFICATION ADRESSES IPv6
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Simplifiez les adresses IPv6 suivantes selon les règles :

1. 2001:0DB8:0000:0000:0000:0000:0000:0001
2. FE80:0000:0000:0000:0202:B3FF:FE1E:8329
3. 2001:0DB8:0042:0000:0000:0000:0ABC:0001
4. FF02:0000:0000:0000:0000:0000:0000:0001
5. 0000:0000:0000:0000:0000:0000:0000:0001


[OK] CORRECTION EXERCICE 1

1. 2001:0DB8:0000:0000:0000:0000:0000:0001
   ───────────────────────────────────────

   Étape 1 : Supprimer zéros non significatifs
   2001:DB8:0:0:0:0:0:1
   
   Étape 2 : Compression séquence zéros (5 groupes 0)
   2001:DB8::1
   
   RÉPONSE : 2001:DB8::1 [OK]


2. FE80:0000:0000:0000:0202:B3FF:FE1E:8329
   ───────────────────────────────────────

   Étape 1 : Supprimer zéros non significatifs
   FE80:0:0:0:202:B3FF:FE1E:8329
   
   Étape 2 : Compression (3 groupes 0)
   FE80::202:B3FF:FE1E:8329
   
   RÉPONSE : FE80::202:B3FF:FE1E:8329 [OK]


3. 2001:0DB8:0042:0000:0000:0000:0ABC:0001
   ───────────────────────────────────────

   Étape 1 : Supprimer zéros non significatifs
   2001:DB8:42:0:0:0:ABC:1
   
   Étape 2 : Compression (3 groupes 0)
   2001:DB8:42::ABC:1
   
   RÉPONSE : 2001:DB8:42::ABC:1 [OK]


4. FF02:0000:0000:0000:0000:0000:0000:0001
   ───────────────────────────────────────

   Étape 1 : Supprimer zéros non significatifs
   FF02:0:0:0:0:0:0:1
   
   Étape 2 : Compression (6 groupes 0)
   FF02::1
   
   RÉPONSE : FF02::1 [OK]
   
   Note : Adresse multicast "tous nœuds link-local"


5. 0000:0000:0000:0000:0000:0000:0000:0001
   ───────────────────────────────────────

   Étape 1 : Tous zéros sauf dernier groupe
   0:0:0:0:0:0:0:1
   
   Étape 2 : Compression (7 groupes 0)
   ::1
   
   RÉPONSE : ::1 [OK]
   
   Note : Adresse loopback IPv6



═══════════════════════════════════════════════════════════
EXERCICE 2 : EXPANSION ADRESSES IPv6
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Développez les adresses IPv6 simplifiées en format complet :

1. 2001:DB8::1
2. FE80::1
3. ::1
4. FF02::2
5. 2001:DB8:ABCD:1::10


[OK] CORRECTION EXERCICE 2

1. 2001:DB8::1
   ───────────

   Groupes présents : 2001, DB8, 1 = 3 groupes
   Groupes manquants : 8 - 3 = 5 groupes
   
   :: représente 5 groupes 0000
   
   2001:DB8:[0000:0000:0000:0000:0000]:1
   
   RÉPONSE : 2001:0DB8:0000:0000:0000:0000:0000:0001 [OK]


2. FE80::1
   ───────

   Groupes présents : FE80, 1 = 2 groupes
   Groupes manquants : 8 - 2 = 6 groupes
   
   FE80:[0000:0000:0000:0000:0000:0000]:1
   
   RÉPONSE : FE80:0000:0000:0000:0000:0000:0000:0001 [OK]


3. ::1
   ───

   Groupes présents : 1 = 1 groupe
   Groupes manquants : 8 - 1 = 7 groupes
   
   [0000:0000:0000:0000:0000:0000:0000]:1
   
   RÉPONSE : 0000:0000:0000:0000:0000:0000:0000:0001 [OK]


4. FF02::2
   ───────

   Groupes présents : FF02, 2 = 2 groupes
   Groupes manquants : 8 - 2 = 6 groupes
   
   FF02:[0000:0000:0000:0000:0000:0000]:2
   
   RÉPONSE : FF02:0000:0000:0000:0000:0000:0000:0002 [OK]


5. 2001:DB8:ABCD:1::10
   ───────────────────

   Groupes présents : 2001, DB8, ABCD, 1, 10 = 5 groupes
   Groupes manquants : 8 - 5 = 3 groupes
   
   2001:DB8:ABCD:1:[0000:0000:0000]:10
   
   RÉPONSE : 2001:0DB8:ABCD:0001:0000:0000:0000:0010 [OK]



═══════════════════════════════════════════════════════════
EXERCICE 3 : SUBNETTING IPv6 ENTREPRISE
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Vous êtes admin réseau d'une entreprise.

Allocation ISP : 2001:DB8:CAFE::/48

L'entreprise a 3 sites :
- Siège (Paris) : 5 VLANs
- Succursale A (Lyon) : 3 VLANs
- Succursale B (Marseille) : 2 VLANs

Questions :

1. Proposer plan subnetting hiérarchique
2. Allouer préfixes par site (/56)
3. Allouer préfixes par VLAN (/64)
4. Donner adresses exemple pour chaque VLAN


[OK] CORRECTION EXERCICE 3

1. PLAN SUBNETTING HIÉRARCHIQUE
   ────────────────────────────

   Allocation : 2001:DB8:CAFE::/48
   
   Niveau 1 : Sites (/48 -> /56)
   ─────────────────────────────
   
   Bits disponibles : 48 à 56 = 8 bits
   Nombre sites possibles : 2^8 = 256 sites
   
   Niveau 2 : VLANs par site (/56 -> /64)
   ──────────────────────────────────────
   
   Bits disponibles : 56 à 64 = 8 bits
   Nombre VLANs/site : 2^8 = 256 VLANs


2. ALLOCATION PAR SITE (/56)
   ─────────────────────────

   Format : 2001:DB8:CAFE:SS00::/56
   
   SS = Site ID (2 chiffres hex)
   
   
   SIÈGE (Paris) : Site 00
   ───────────────────────
   
   Préfixe : 2001:DB8:CAFE:0000::/56
   Simplifié : 2001:DB8:CAFE::/56
   
   
   SUCCURSALE A (Lyon) : Site 01
   ──────────────────────────────
   
   Préfixe : 2001:DB8:CAFE:0100::/56
   Simplifié : 2001:DB8:CAFE:100::/56
   
   
   SUCCURSALE B (Marseille) : Site 02
   ───────────────────────────────────
   
   Préfixe : 2001:DB8:CAFE:0200::/56
   Simplifié : 2001:DB8:CAFE:200::/56


3. ALLOCATION PAR VLAN (/64)
   ─────────────────────────

   Format : 2001:DB8:CAFE:SSVV::/64
   
   SS = Site ID
   VV = VLAN ID
   
   
   SIÈGE (Paris) - 5 VLANs :
   ─────────────────────────
   
   VLAN 1 (Direction) :
   2001:DB8:CAFE:0001::/64 -> 2001:DB8:CAFE:1::/64
   
   VLAN 2 (Comptabilité) :
   2001:DB8:CAFE:0002::/64 -> 2001:DB8:CAFE:2::/64
   
   VLAN 3 (RH) :
   2001:DB8:CAFE:0003::/64 -> 2001:DB8:CAFE:3::/64
   
   VLAN 4 (IT) :
   2001:DB8:CAFE:0004::/64 -> 2001:DB8:CAFE:4::/64
   
   VLAN 10 (Serveurs) :
   2001:DB8:CAFE:000A::/64 -> 2001:DB8:CAFE:A::/64
   
   
   SUCCURSALE A (Lyon) - 3 VLANs :
   ────────────────────────────────
   
   VLAN 1 (Bureau) :
   2001:DB8:CAFE:0101::/64 -> 2001:DB8:CAFE:101::/64
   
   VLAN 2 (IT) :
   2001:DB8:CAFE:0102::/64 -> 2001:DB8:CAFE:102::/64
   
   VLAN 10 (Invités) :
   2001:DB8:CAFE:010A::/64 -> 2001:DB8:CAFE:10A::/64
   
   
   SUCCURSALE B (Marseille) - 2 VLANs :
   ─────────────────────────────────────
   
   VLAN 1 (Bureau) :
   2001:DB8:CAFE:0201::/64 -> 2001:DB8:CAFE:201::/64
   
   VLAN 10 (Invités) :
   2001:DB8:CAFE:020A::/64 -> 2001:DB8:CAFE:20A::/64


4. ADRESSES EXEMPLE
   ────────────────

   SIÈGE - VLAN 1 (Direction) : 2001:DB8:CAFE:1::/64
   ──────────────────────────────────────────────────
   
   Routeur/Gateway :
   2001:DB8:CAFE:1::1/64
   
   PC Direction 1 :
   2001:DB8:CAFE:1::10/64
   
   PC Direction 2 :
   2001:DB8:CAFE:1::11/64
   
   Imprimante :
   2001:DB8:CAFE:1::80/64
   
   
   SIÈGE - VLAN 10 (Serveurs) : 2001:DB8:CAFE:A::/64
   ──────────────────────────────────────────────────
   
   Routeur/Gateway :
   2001:DB8:CAFE:A::1/64
   
   Web Server :
   2001:DB8:CAFE:A::80/64
   
   Mail Server :
   2001:DB8:CAFE:A::25/64
   
   DNS Server :
   2001:DB8:CAFE:A::53/64
   
   Database Server :
   2001:DB8:CAFE:A::3306/64
   
   
   SUCCURSALE A - VLAN 1 (Bureau) : 2001:DB8:CAFE:101::/64
   ─────────────────────────────────────────────────────────
   
   Routeur/Gateway :
   2001:DB8:CAFE:101::1/64
   
   PC Bureau 1 :
   2001:DB8:CAFE:101::10/64
   
   PC Bureau 2 :
   2001:DB8:CAFE:101::11/64


   TABLEAU RÉCAPITULATIF :
   
   ┌──────────────┬────────┬───────────────────────┐
   │     Site     │  VLAN  │       Préfixe         │
   ├──────────────┼────────┼───────────────────────┤
   │ Siège        │   1    │ 2001:DB8:CAFE:1::/64  │
   │ Siège        │   2    │ 2001:DB8:CAFE:2::/64  │
   │ Siège        │   3    │ 2001:DB8:CAFE:3::/64  │
   │ Siège        │   4    │ 2001:DB8:CAFE:4::/64  │
   │ Siège        │  10    │ 2001:DB8:CAFE:A::/64  │
   │ Succursale A │   1    │ 2001:DB8:CAFE:101::/64│
   │ Succursale A │   2    │ 2001:DB8:CAFE:102::/64│
   │ Succursale A │  10    │ 2001:DB8:CAFE:10A::/64│
   │ Succursale B │   1    │ 2001:DB8:CAFE:201::/64│
   │ Succursale B │  10    │ 2001:DB8:CAFE:20A::/64│
   └──────────────┴────────┴───────────────────────┘
   
   Total : 10 VLANs utilisés
   Disponible : 256×3 - 10 = 758 VLANs libres pour croissance [OK]



═══════════════════════════════════════════════════════════
FIN DES EXERCICES
═══════════════════════════════════════════════════════════
"""


# ============================================================================
# [DOCS] CONCLUSION CHAPITRE 9
# ============================================================================

"""
[BRAVO] FÉLICITATIONS !

Vous avez terminé le Chapitre 9 : IPv6


[GUIDE] RÉCAPITULATIF COMPLET

PARTIE 1 : FONDAMENTAUX
───────────────────────

[OK] CONTEXTE :
   - Épuisement IPv4
   - 128 bits = 340 undécillions
   - Améliorations multiples
   - Adoption progressive
   
[OK] STRUCTURE :
   - 8 groupes hexadécimaux
   - Règles simplification (:: une fois)
   - Préfixes /X
   
[OK] TYPES :
   - Unicast (Global, ULA, Link-local)
   - Multicast (FF00::/8)
   - Anycast (plus proche)
   - Pas de broadcast
   
[OK] SPÉCIALES :
   - ::1 loopback
   - :: non-spécifiée
   - 2001:DB8::/32 documentation


PARTIE 2 : AVANCÉ
─────────────────

[OK] SUBNETTING :
   - Très simple vs IPv4
   - /64 standard
   - /127 point-to-point
   - Hiérarchie (/48 -> /56 -> /64)
   
[OK] AUTO-CONFIGURATION :
   - SLAAC (stateless)
   - DHCPv6 (stateful/stateless)
   - EUI-64 et Privacy Extensions
   - Router Advertisement
   
[OK] NDP :
   - Neighbor Solicitation/Advertisement
   - Router Solicitation/Advertisement
   - DAD (Duplicate Address Detection)
   - Remplace ARP
   
[OK] TRANSITION :
   - Dual-Stack (recommandé)
   - Tunneling (6to4, ISATAP)
   - NAT64/DNS64
   - Stratégie migration


[OBJECTIF] COMPÉTENCES ACQUISES

Vous savez maintenant :

[OK] Comprendre structure IPv6
[OK] Simplifier/Expander adresses
[OK] Identifier types adresses
[OK] Faire subnetting IPv6
[OK] Configurer SLAAC/DHCPv6
[OK] Comprendre NDP (vs ARP)
[OK] Planifier migration IPv4->IPv6
[OK] Configurer dual-stack
[OK] Résoudre exercices complexes


[PRO] APPLICATIONS PRATIQUES

Ces connaissances vous permettent de :

[OK] Déployer IPv6 en entreprise
[OK] Planifier adressage IPv6
[OK] Configurer routeurs IPv6
[OK] Implémenter SLAAC/DHCPv6
[OK] Diagnostiquer problèmes IPv6
[OK] Migrer progressivement IPv4->IPv6
[OK] Comprendre réseaux modernes
[OK] Préparer futur Internet


[LIEN] LIEN AVEC AUTRES CHAPITRES

IPv6 complète IPv4 :

- Chapitre 4 : Couche 3 OSI (IPv6 = implémentation)
- Chapitre 7 : MAC (NDP résout IPv6->MAC)
- Chapitre 8 : IPv4 (comparaison, coexistence)
- Chapitre 11 : ICMPv6 (diagnostic IPv6)
- Chapitres 19-20 : Routage (OSPFv3, EIGRPv6)


-> PROCHAINS CHAPITRES

La suite logique :

- Chapitre 10 : Transition IPv4/IPv6 (approfondissement)
- Chapitre 11 : ARP, ICMP, ICMPv6 (protocoles réseau)
- Chapitre 12 : DNS (résolution noms, AAAA records)
- Chapitre 13 : DHCP et DHCPv6


[RAPIDE] EXCELLENT TRAVAIL !

IPv6 est l'AVENIR de l'Internet.
Vous maîtrisez maintenant cette technologie essentielle !

La transition IPv4->IPv6 est INÉVITABLE.
Vous êtes maintenant PRÊT pour ce futur !


═══════════════════════════════════════════════════════════
[GUIDE] FIN DU CHAPITRE 9 - IPv6
═══════════════════════════════════════════════════════════
"""

# ============================================================================
# CHAPITRE 10 : PROTOCOLES RÉSEAU AUXILIAIRES
# ============================================================================

"""
[OBJECTIF] OBJECTIFS DU CHAPITRE

Ce chapitre couvre les protocoles essentiels qui supportent IP :
[OK] ARP (Address Resolution Protocol)
[OK] ICMP (Internet Control Message Protocol)
[OK] ICMPv6 et NDP (Neighbor Discovery Protocol)
[OK] IGMP (Internet Group Management Protocol)
[OK] Diagnostics réseau (ping, traceroute)
[OK] Attaques et sécurité
[OK] Troubleshooting pratique

[IDEE] POURQUOI CES PROTOCOLES SONT CRUCIAUX ?

Ces protocoles sont ESSENTIELS pour le fonctionnement d'IP :
- ARP : Résolution IP->MAC (communication locale)
- ICMP : Diagnostics et messages d'erreur
- NDP : Remplace ARP en IPv6
- IGMP : Gestion groupes multicast

Sans eux, les réseaux IP ne fonctionneraient PAS !


[DOCS] PLAN DU CHAPITRE

PARTIE 1 :
1. ARP (Address Resolution Protocol)
2. Gratuitous ARP et Proxy ARP
3. Attaques ARP
4. ICMP (Internet Control Message Protocol)
5. Messages ICMP essentiels

PARTIE 2 :
6. Outils diagnostic (ping, traceroute)
7. ICMPv6 et NDP
8. IGMP (Multicast)
9. Troubleshooting
10. Exercices pratiques
"""


# ----------------------------------------------------------------------------
# [SYNC] PARTIE 1 : ARP (ADDRESS RESOLUTION PROTOCOL)
# ----------------------------------------------------------------------------

"""
ARP (ADDRESS RESOLUTION PROTOCOL)


RAPPEL PROBLÈME

Communication IP locale nécessite adresse MAC !

PC1 (192.168.1.10) veut envoyer vers PC2 (192.168.1.20)

PC1 connaît :
[OK] IP destination : 192.168.1.20
[X] MAC destination : ?

Solution : ARP résout IP -> MAC


FONCTIONNEMENT DÉTAILLÉ


ÉTAPE 1 : Vérification cache ARP
─────────────────────────────────

PC1 consulte d'abord son cache ARP local

Windows :
```
arp -a
```

Exemple cache :
```
Interface: 192.168.1.10 --- 0x5
  Adresse Internet      Adresse physique      Type
  192.168.1.1           00-11-22-33-44-55     dynamique
  192.168.1.15          AA-BB-CC-DD-EE-FF     dynamique
```

Si 192.168.1.20 présent -> Utilise MAC du cache [OK]
Si absent -> Processus ARP v


ÉTAPE 2 : ARP Request (Broadcast)
──────────────────────────────────

PC1 génère ARP Request

Trame Ethernet :
┌─────────────────────────────────────┐
│ MAC Dst : FF:FF:FF:FF:FF:FF (Broadcast)│
│ MAC Src : 00:1A:2B:3C:4D:5E (PC1)  │
│ Type : 0x0806 (ARP)                 │
└─────────────────────────────────────┘

Paquet ARP :
┌─────────────────────────────────────┐
│ Hardware Type : 1 (Ethernet)        │
│ Protocol Type : 0x0800 (IPv4)       │
│ HW Addr Length : 6 (MAC)            │
│ Protocol Addr Length : 4 (IPv4)     │
│ Operation : 1 (Request)             │
│ Sender MAC : 00:1A:2B:3C:4D:5E      │
│ Sender IP : 192.168.1.10            │
│ Target MAC : 00:00:00:00:00:00      │
│ Target IP : 192.168.1.20 <- Cherché  │
└─────────────────────────────────────┘

Question broadcast : "Qui a 192.168.1.20 ?"


ÉTAPE 3 : Réception par tous
─────────────────────────────

Broadcast -> TOUS équipements segment reçoivent

Chaque équipement examine Target IP :

PC2 (192.168.1.20) : "C'est moi !" -> Répondre
PC3 (192.168.1.30) : "Pas moi" -> Ignorer
PC4 (192.168.1.40) : "Pas moi" -> Ignorer


ÉTAPE 4 : ARP Reply (Unicast)
──────────────────────────────

PC2 envoie ARP Reply vers PC1

Trame Ethernet :
┌─────────────────────────────────────┐
│ MAC Dst : 00:1A:2B:3C:4D:5E (PC1)  │
│ MAC Src : 00:50:56:AB:CD:EF (PC2)  │
│ Type : 0x0806 (ARP)                 │
└─────────────────────────────────────┘

Paquet ARP :
┌─────────────────────────────────────┐
│ Operation : 2 (Reply)               │
│ Sender MAC : 00:50:56:AB:CD:EF      │
│ Sender IP : 192.168.1.20            │
│ Target MAC : 00:1A:2B:3C:4D:5E      │
│ Target IP : 192.168.1.10            │
└─────────────────────────────────────┘

Réponse : "192.168.1.20 = 00:50:56:AB:CD:EF"


ÉTAPE 5 : Mise à jour cache
────────────────────────────

PC1 ajoute/rafraîchit entrée dans cache ARP :

```
192.168.1.20    00-50-56-AB-CD-EF    dynamique
```

PC1 peut maintenant communiquer avec PC2 [OK]


CACHE ARP


STRUCTURE CACHE

Entrée typique :

┌──────────────┬──────────────────┬──────────┬────────┐
│  IP Address  │   MAC Address    │   Type   │  Age   │
├──────────────┼──────────────────┼──────────┼────────┤
│192.168.1.1   │00:11:22:33:44:55 │ Dynamic  │ 120s   │
│192.168.1.20  │00:50:56:AB:CD:EF │ Dynamic  │  30s   │
│192.168.1.100 │AA:BB:CC:DD:EE:FF │ Static   │   -    │
└──────────────┴──────────────────┴──────────┴────────┘


TYPES ENTRÉES

Dynamic (Dynamique) :
─────────────────────

Apprises automatiquement via ARP

Caractéristiques :
- Aging timer (expiration)
- Windows : 120-300s
- Linux : 60-1800s
- Supprimées si non utilisées


Static (Statique) :
───────────────────

Configurées manuellement

Caractéristiques :
- Permanentes (jusqu'à suppression/reboot)
- Priorité sur dynamiques
- Sécurité (évite ARP spoofing)

Configuration :

Windows :
```
arp -s 192.168.1.100 AA-BB-CC-DD-EE-FF
```

Linux :
```
arp -s 192.168.1.100 AA:BB:CC:DD:EE:FF
```

Cisco :
```
arp 192.168.1.100 AABB.CCDD.EEFF ARPA
```


COMMANDES ARP


Windows
═══════

Afficher cache :
```
arp -a
arp -a -N 192.168.1.10  (interface spécifique)
```

Ajouter entrée statique :
```
arp -s 192.168.1.100 AA-BB-CC-DD-EE-FF
```

Supprimer entrée :
```
arp -d 192.168.1.20
arp -d *  (tout vider)
```


Linux
═════

Afficher cache :
```
arp -n
arp -a
ip neighbor show
ip neigh show
```

Ajouter entrée statique :
```
arp -s 192.168.1.100 AA:BB:CC:DD:EE:FF
ip neighbor add 192.168.1.100 lladdr AA:BB:CC:DD:EE:FF dev eth0
```

Supprimer entrée :
```
arp -d 192.168.1.20
ip neighbor del 192.168.1.20 dev eth0
ip neighbor flush all
```


Cisco
═════

Afficher cache :
```
show arp
show ip arp
show ip arp 192.168.1.20
show ip arp vlan 10
```

Ajouter entrée statique :
```
arp 192.168.1.100 AABB.CCDD.EEFF ARPA
```

Vider cache :
```
clear arp-cache
clear ip arp 192.168.1.20
```


OPTIMISATIONS ARP


Apprentissage bidirectionnel
─────────────────────────────

ARP Request enrichit caches des deux côtés :

PC1 envoie ARP Request :
- Sender IP : 192.168.1.10
- Sender MAC : 00:1A:2B:3C:4D:5E

PC2 reçoit Request :
-> Ajoute à son cache : 192.168.1.10 = 00:1A:2B:3C:4D:5E

Avant même de répondre ! [OK]

Avantage : Réduit ARP traffic (réponse future évitée)


GRATUITOUS ARP
══════════════

Voir section suivante (détaillé)


PROXY ARP
═════════

Voir section suivante (détaillé)
"""


# ----------------------------------------------------------------------------
# [ANNONCE] PARTIE 2 : GRATUITOUS ARP ET PROXY ARP
# ----------------------------------------------------------------------------

"""
GRATUITOUS ARP


DÉFINITION

ARP Request SPÉCIAL :
- Sender IP = Target IP (même adresse)
- But : Annoncer/Vérifier sa propre IP


FORMAT

Trame Ethernet :
- MAC Dst : FF:FF:FF:FF:FF:FF (Broadcast)
- MAC Src : 00:1A:2B:3C:4D:5E

Paquet ARP :
- Operation : 1 (Request) ou 2 (Reply)
- Sender IP : 192.168.1.10
- Sender MAC : 00:1A:2B:3C:4D:5E
- Target IP : 192.168.1.10 <- MÊME que Sender !
- Target MAC : 00:00:00:00:00:00 (Request) ou FF:FF:FF:FF:FF:FF (Reply)


USAGES


1. DÉTECTION DUPLICATE IP
══════════════════════════

PC démarre avec IP 192.168.1.10

Processus :
1. PC envoie Gratuitous ARP pour 192.168.1.10
2. Si RÉPONSE reçue -> Duplicate IP détecté ! [X]
3. Si pas de réponse -> IP unique [OK]

Action si duplicate :
- Windows : Alerte "Conflit adresse IP"
- Linux : Logs (dmesg)
- Désactivation interface ou génération nouvelle IP


2. MISE À JOUR CACHES
══════════════════════

Scénario : Carte réseau changée (nouvelle MAC, même IP)

Serveur : 192.168.1.100
- Ancienne MAC : AA:BB:CC:DD:EE:FF
- Nouvelle MAC : 11:22:33:44:55:66

Sans Gratuitous ARP :
- Clients ont cache : 192.168.1.100 = AA:BB:CC:DD:EE:FF
- Nouvelle MAC invisible
- Communication échoue [X]

Avec Gratuitous ARP :
1. Serveur envoie Gratuitous ARP
2. Tous clients mettent à jour cache : 192.168.1.100 = 11:22:33:44:55:66
3. Communication restaurée immédiatement [OK]


3. FAILOVER / HAUTE DISPONIBILITÉ
══════════════════════════════════

VRRP (Virtual Router Redundancy Protocol) :

Routeur Master : 192.168.1.1 (IP virtuelle)
- MAC virtuelle : 00:00:5E:00:01:01

Routeur Master tombe :
-> Routeur Backup devient Master
-> Envoie Gratuitous ARP pour 192.168.1.1
-> Clients mettent à jour cache
-> Basculement transparent (< 1s) [OK]


4. LOAD BALANCERS
═════════════════

Load Balancer prend IP d'un serveur :
-> Gratuitous ARP annonce changement
-> Trafic redirigé


GÉNÉRATION GRATUITOUS ARP

Linux :
```
arping -U -I eth0 192.168.1.10
```

Windows (PowerShell - indirect) :
```
Test-Connection -ComputerName 192.168.1.10 -Count 1
```


PROXY ARP


DÉFINITION

Routeur répond ARP Request pour réseau distant


SCÉNARIO TYPIQUE

Mauvaise configuration masque :

PC1 : 192.168.1.10/16 (ERREUR - devrait être /24)
Routeur : 192.168.1.1/24
PC2 : 192.168.2.20/24

PC1 pense PC2 est local (masque /16)
-> Envoie ARP Request pour 192.168.2.20

Routeur voit requête :
- Connaît route vers 192.168.2.0/24
- Active Proxy ARP : Répond avec SA PROPRE MAC

PC1 envoie paquets vers MAC routeur
-> Routeur route vers 192.168.2.0/24
-> Communication fonctionne ! [OK]

Mais problème MASQUÉ (config incorrecte)


FONCTIONNEMENT

1. PC1 -> ARP Request broadcast : "Qui a 192.168.2.20 ?"
2. Routeur reçoit (même si pas destinataire)
3. Routeur vérifie : Route vers 192.168.2.0/24 existe ?
4. Si oui -> Routeur répond avec SA MAC
5. PC1 envoie paquets vers routeur
6. Routeur route normalement


CONFIGURATION

Cisco - Activer Proxy ARP (actif par défaut) :
```
interface GigabitEthernet0/1
 ip proxy-arp
```

Désactiver :
```
interface GigabitEthernet0/1
 no ip proxy-arp
```

Vérifier :
```
show ip interface GigabitEthernet0/1 | include Proxy
```


Linux - Activer :
```
echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp
```

Permanent (sysctl.conf) :
```
net.ipv4.conf.eth0.proxy_arp = 1
```


AVANTAGES PROXY ARP

[OK] Transparence (masque erreurs config)
[OK] Simplification (pas besoin route explicite client)


INCONVÉNIENTS PROXY ARP

[X] Masque problèmes configuration
[X] Sécurité réduite (ARP spoofing facilité)
[X] Trafic ARP accru
[X] Complexité diagnostic

Recommandation : DÉSACTIVER sauf besoin spécifique
"""


# ----------------------------------------------------------------------------
# [ATTENTION] PARTIE 3 : ATTAQUES ARP
# ----------------------------------------------------------------------------

"""
ATTAQUES ARP


VULNÉRABILITÉS ARP

ARP = Protocole SANS AUTHENTIFICATION

Problèmes :
[X] Pas de vérification identité
[X] Accepte réponses non-sollicitées
[X] Met à jour cache automatiquement
[X] Broadcast (écoutable par tous)


ATTAQUE 1 : ARP SPOOFING / POISONING
═════════════════════════════════════

But : Intercepter trafic (Man-in-the-Middle)


MÉTHODE

Réseau normal :
PC1 (192.168.1.10) <-> Routeur (192.168.1.1) <-> Internet

Cache ARP PC1 :
```
192.168.1.1    00:11:22:33:44:55  (MAC routeur)
```

Attaquant (192.168.1.50) envoie faux ARP Reply :
- Sender IP : 192.168.1.1
- Sender MAC : AA:AA:AA:AA:AA:AA (MAC attaquant)

PC1 met à jour cache :
```
192.168.1.1    AA:AA:AA:AA:AA:AA  (MAC attaquant) [X]
```

PC1 envoie paquets vers attaquant :
PC1 -> [Attaquant] -> Routeur -> Internet
         ^
    INTERCEPTION !

Attaquant peut :
- Lire trafic (sniffing)
- Modifier trafic
- Injecter contenu


ATTAQUE BIDIRECTIONNELLE

Empoisonner les DEUX caches :

PC1 cache :
```
192.168.1.1 -> MAC Attaquant
```

Routeur cache :
```
192.168.1.10 -> MAC Attaquant
```

Tout trafic PC1 <-> Routeur passe par attaquant !


OUTILS ATTAQUE

Ettercap :
```
ettercap -T -M arp:remote /192.168.1.1// /192.168.1.10//
```

arpspoof (dsniff) :
```
arpspoof -i eth0 -t 192.168.1.10 192.168.1.1
arpspoof -i eth0 -t 192.168.1.1 192.168.1.10
```

Cain & Abel (Windows - GUI)


DÉTECTION

Signes :
- Latence accrue
- Connexions HTTPS invalides (certificat)
- Duplicate MAC (plusieurs IPs -> même MAC)

Outils détection :

arpwatch (Linux) :
```
sudo arpwatch -i eth0
```

Alerte si :
- Nouvelle MAC pour IP connue
- IP flip-flop

XArp (Windows - GUI)

Wireshark :
- Filtrer ARP
- Chercher requêtes suspectes


CONTRE-MESURES


1. DYNAMIC ARP INSPECTION (DAI)
───────────────────────────────

Switch valide paquets ARP

Principe :
- Utilise DHCP Snooping binding table
- Vérifie cohérence IP-MAC-Port
- Bloque ARP invalides

Cisco :
```
ip dhcp snooping
ip dhcp snooping vlan 1-100

ip arp inspection vlan 1-100

interface GigabitEthernet0/1
 description UPLINK-ROUTEUR
 ip arp inspection trust

interface range GigabitEthernet0/2-24
 description ACCESS-PORTS
 (pas de trust - validation active)
```

Résultat : ARP spoofing bloqué [OK]


2. STATIC ARP ENTRIES
─────────────────────

Entrées statiques non modifiables

Exemple serveur critique :
```
arp -s 192.168.1.100 AA:BB:CC:DD:EE:FF
```

Avantage : Immunité ARP poisoning
Inconvénient : Gestion manuelle lourde


3. ARP SPOOFING DETECTION TOOLS
────────────────────────────────

Surveillance continue :

arpwatch (Linux)
XArp (Windows)
ARPGuard


4. CHIFFREMENT
──────────────

HTTPS, SSH, VPN :
- Trafic chiffré
- Attaquant voit flux mais pas contenu
- Certificats invalides alertent utilisateur


5. SEGMENTATION RÉSEAU
──────────────────────

VLANs séparés :
- Utilisateurs
- Serveurs
- Invités
- IoT

Limite impact attaque (confinement VLAN)


6. PORT SECURITY
────────────────

Limite MACs par port :

Cisco :
```
interface GigabitEthernet0/5
 switchport port-security
 switchport port-security maximum 2
 switchport port-security violation restrict
 switchport port-security mac-address sticky
```

Empêche attaquant usurper multiple MACs


ATTAQUE 2 : ARP FLOODING
═════════════════════════

But : Saturer switch (table MAC)

Méthode :
1. Générer milliers ARP avec MACs aléatoires
2. Table MAC switch sature
3. Switch flooding permanent (comme hub)
4. Attaquant peut sniffer tout trafic

Outil : macof (dsniff)

Contre-mesure : Port Security (limite MACs/port)


ATTAQUE 3 : ARP REQUEST FLOODING
═════════════════════════════════

But : DoS (déni de service)

Méthode : Inonder réseau de ARP Requests
-> Saturation bande passante
-> CPU équipements surchargé

Contre-mesure : Storm Control (limite broadcasts)

Cisco :
```
interface GigabitEthernet0/1
 storm-control broadcast level 10.00
 storm-control action shutdown
```


BONNES PRATIQUES SÉCURITÉ ARP

[OK] Activer DAI (Dynamic ARP Inspection)
[OK] DHCP Snooping prerequis
[OK] Port Security sur ports accès
[OK] Storm Control broadcasts
[OK] Monitoring ARP (arpwatch)
[OK] Segmentation VLANs
[OK] Chiffrement trafic sensible (HTTPS, VPN)
[OK] Sensibilisation utilisateurs
[OK] Mises à jour firmware switches
"""


# ----------------------------------------------------------------------------
# [MESSAGE] PARTIE 4 : ICMP (INTERNET CONTROL MESSAGE PROTOCOL)
# ----------------------------------------------------------------------------

"""
ICMP (INTERNET CONTROL MESSAGE PROTOCOL)


RÔLE

Protocole complémentaire IP (Couche 3)

Fonctions :
- Messages d'erreur (destination unreachable)
- Diagnostics (ping, traceroute)
- Informations réseau

Standard : RFC 792 (1981)

Protocol Number : 1 (dans header IP)


CARACTÉRISTIQUES

[OK] Encapsulé dans IP
[OK] Pas de transport fiable (best effort)
[OK] Utilisé par routeurs ET hôtes
[OK] Essentiel diagnostics


FORMAT PAQUET ICMP

┌────────────────────────────────────┐
│ Type (8 bits)                      │
├────────────────────────────────────┤
│ Code (8 bits)                      │
├────────────────────────────────────┤
│ Checksum (16 bits)                 │
├────────────────────────────────────┤
│ Rest of Header (32 bits)           │
│ (variable selon Type/Code)         │
├────────────────────────────────────┤
│ Data (variable)                    │
│ (copy of original IP header +      │
│  first 8 bytes of original payload)│
└────────────────────────────────────┘


TYPES ICMP ESSENTIELS

┌──────┬──────┬────────────────────────────┐
│ Type │ Code │         Message            │
├──────┼──────┼────────────────────────────┤
│  0   │  0   │ Echo Reply (pong)          │
│  3   │ 0-15 │ Destination Unreachable    │
│  5   │ 0-3  │ Redirect                   │
│  8   │  0   │ Echo Request (ping)        │
│  11  │ 0-1  │ Time Exceeded              │
│  12  │ 0-2  │ Parameter Problem          │
└──────┴──────┴────────────────────────────┘


TYPE 0/8 : ECHO REPLY / REQUEST (PING)
═══════════════════════════════════════

Usage : Test connectivité


Echo Request (Type 8, Code 0)
─────────────────────────────

Source envoie requête ping

Paquet ICMP Echo Request :
- Type : 8
- Code : 0
- Identifier : 1234 (aléatoire)
- Sequence Number : 1 (incrémenté)
- Data : Données test (32-64 octets)


Echo Reply (Type 0, Code 0)
───────────────────────────

Destination répond pong

Paquet ICMP Echo Reply :
- Type : 0
- Code : 0
- Identifier : 1234 (même que request)
- Sequence Number : 1 (même que request)
- Data : Copie des données request


Utilisation (ping) :
```
ping 8.8.8.8
```

Sortie :
```
Reply from 8.8.8.8: bytes=32 time=15ms TTL=57
Reply from 8.8.8.8: bytes=32 time=14ms TTL=57
Reply from 8.8.8.8: bytes=32 time=16ms TTL=57
```


TYPE 3 : DESTINATION UNREACHABLE
═════════════════════════════════

Routeur/hôte ne peut livrer paquet

Codes (15 types) :


Code 0 : Net Unreachable
─────────────────────────

Réseau destination inaccessible

Routeur n'a pas de route


Code 1 : Host Unreachable
──────────────────────────

Hôte sur réseau n'existe pas

Routeur ne reçoit pas ARP Reply


Code 2 : Protocol Unreachable
──────────────────────────────

Protocole non supporté

Ex: ICMP vers hôte sans ICMP


Code 3 : Port Unreachable
──────────────────────────

Port UDP fermé

Application n'écoute pas sur port


Code 4 : Fragmentation Needed but DF Set
─────────────────────────────────────────

Paquet trop gros, DF (Don't Fragment) activé

Utilisé Path MTU Discovery


Code 13 : Communication Administratively Prohibited
────────────────────────────────────────────────────

Firewall/ACL bloque

Exemple :
```
ping 10.0.0.1
Reply from 192.168.1.1: Destination host unreachable
```


TYPE 5 : REDIRECT
═════════════════

Routeur informe meilleur next-hop

Codes :


Code 0 : Redirect for Network
Code 1 : Redirect for Host
Code 2 : Redirect for ToS & Network
Code 3 : Redirect for ToS & Host

Scénario :

PC -> Routeur A -> Routeur B -> Destination

Routeur A dit PC :
"Pour cette destination, envoie directement à Routeur B"

PC met à jour table routage (route host)


TYPE 11 : TIME EXCEEDED
═══════════════════════

TTL atteint 0


Code 0 : TTL Expired in Transit
────────────────────────────────

Paquet traversé trop de routeurs

Chaque routeur décrémente TTL
TTL = 0 -> Paquet jeté + ICMP Time Exceeded

Utilisé par traceroute !


Code 1 : Fragment Reassembly Time Exceeded
───────────────────────────────────────────

Timeout réassemblage fragments

Tous fragments pas reçus dans délai


TYPE 12 : PARAMETER PROBLEM
════════════════════════════

Erreur header IP


Code 0 : Pointer indicates error
─────────────────────────────────

Champ IP header invalide

Pointer indique offset erreur


FILTRAGE ICMP

Débat sécurité : Bloquer ICMP ?


Arguments BLOQUER :
───────────────────

[X] Reconnaissance réseau (ping scan)
[X] DoS (ICMP flood)
[X] Covert channels


Arguments AUTORISER :
─────────────────────

[OK] Diagnostics essentiels (ping, traceroute)
[OK] Path MTU Discovery (nécessaire)
[OK] Messages erreur utiles


Recommandation :
────────────────

[OK] Autoriser Echo Request/Reply (ping)
[OK] Autoriser Destination Unreachable
[OK] Autoriser Time Exceeded (traceroute)
[OK] Autoriser Fragmentation Needed
[OK] Rate-limit (éviter flood)
[X] Bloquer Redirect (sécurité)
[X] Bloquer Timestamp

Cisco ACL exemple :
```
access-list 100 permit icmp any any echo
access-list 100 permit icmp any any echo-reply
access-list 100 permit icmp any any time-exceeded
access-list 100 permit icmp any any unreachable
access-list 100 permit icmp any any packet-too-big
access-list 100 deny icmp any any redirect
```
"""


# ============================================================================
# [OBJECTIF] FIN PARTIE 1 DU CHAPITRE 10
# ============================================================================

"""
[DOCS] RÉCAPITULATIF PARTIE 1

Vous avez appris :

[OK] ARP DÉTAILLÉ :
   - Processus complet (Request/Reply)
   - Cache ARP (dynamic/static)
   - Commandes (Windows/Linux/Cisco)
   - Optimisations
   
[OK] GRATUITOUS ARP :
   - Détection duplicate IP
   - Mise à jour caches
   - Failover / VRRP
   
[OK] PROXY ARP :
   - Fonctionnement
   - Avantages/Inconvénients
   - Configuration
   
[OK] ATTAQUES ARP :
   - ARP Spoofing/Poisoning
   - Man-in-the-Middle
   - Détection et contre-mesures
   - DAI, Port Security
   
[OK] ICMP FONDAMENTAUX :
   - Rôle et format
   - Echo Request/Reply (ping)
   - Destination Unreachable
   - Time Exceeded
   - Redirect
   - Filtrage ICMP


-> SUITE : PARTIE 2

Dans le prochain fichier :
- Outils diagnostic (ping, traceroute détaillés)
- ICMPv6 et NDP approfondi
- IGMP (multicast)
- Troubleshooting pratique
- Exercices complets
"""

# ============================================================================
# CHAPITRE 10 : PROTOCOLES RÉSEAU AUXILIAIRES - PARTIE 2
# ============================================================================


# ----------------------------------------------------------------------------
# [OUTILS] PARTIE 5 : OUTILS DIAGNOSTIC - PING
# ----------------------------------------------------------------------------

"""
PING (PACKET INTERNET GROPER)


PRINCIPE

Outil diagnostic réseau universel

Fonction : Tester connectivité IP

Méthode : Envoie ICMP Echo Request, attend Echo Reply


UTILISATION BASIQUE


Windows
═══════

```
ping 8.8.8.8
```

Sortie :
```
Pinging 8.8.8.8 with 32 bytes of data:
Reply from 8.8.8.8: bytes=32 time=15ms TTL=57
Reply from 8.8.8.8: bytes=32 time=14ms TTL=57
Reply from 8.8.8.8: bytes=32 time=16ms TTL=57
Reply from 8.8.8.8: bytes=32 time=15ms TTL=57

Ping statistics for 8.8.8.8:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 14ms, Maximum = 16ms, Average = 15ms
```

Par défaut : 4 paquets


Linux
═════

```
ping 8.8.8.8
```

Sortie :
```
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=57 time=15.2 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=57 time=14.8 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=57 time=15.5 ms
^C
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 14.824/15.167/15.524/0.286 ms
```

Par défaut : Continu (Ctrl+C pour arrêter)


OPTIONS PING


Windows
═══════

```
ping -t 8.8.8.8              # Continu
ping -n 10 8.8.8.8           # 10 paquets
ping -l 1000 8.8.8.8         # Taille 1000 octets
ping -i 128 8.8.8.8          # TTL 128
ping -w 5000 8.8.8.8         # Timeout 5000ms
ping -4 google.com           # Force IPv4
ping -6 google.com           # Force IPv6
```


Linux
═════

```
ping -c 10 8.8.8.8           # 10 paquets (count)
ping -s 1000 8.8.8.8         # Taille 1000 octets (size)
ping -i 0.2 8.8.8.8          # Intervalle 0.2s
ping -W 5 8.8.8.8            # Timeout 5s (wait)
ping -t 64 8.8.8.8           # TTL 64
ping -I eth0 8.8.8.8         # Interface spécifique
ping -f 8.8.8.8              # Flood (root - test performance)
ping -4 google.com           # IPv4
ping -6 google.com           # IPv6 (ou ping6)
```


Cisco
═════

```
ping 8.8.8.8

Protocol [ip]:
Target IP address: 8.8.8.8
Repeat count [5]: 10
Datagram size [100]:
Timeout in seconds [2]:
Extended commands [n]: n
```

Étendu :
```
ping
Protocol [ip]:
Target IP address: 8.8.8.8
Repeat count [5]:
Datagram size [100]:
Timeout in seconds [2]:
Extended commands [n]: y
Source address or interface: 192.168.1.1
Type of service [0]:
Set DF bit in IP header? [no]:
Validate reply data? [no]:
Data pattern [0xABCD]:
Loose, Strict, Record, Timestamp, Verbose[none]:
Sweep range of sizes [n]:
```


INTERPRÉTATION RÉSULTATS


Succès total
════════════

```
Reply from 8.8.8.8: bytes=32 time=15ms TTL=57
```

[OK] Connectivité IP OK
[OK] Routage fonctionnel
[OK] Destination joignable


Timeout
═══════

```
Request timed out.
```

Causes possibles :
[X] Destination down/inexistante
[X] Firewall bloque ICMP
[X] Routage incorrect
[X] Réseau congestionné


Destination Host Unreachable
═════════════════════════════

```
Reply from 192.168.1.1: Destination host unreachable.
```

Causes :
[X] Pas de route (routeur local)
[X] ARP échoue (hôte local absent)
[X] Réseau physiquement déconnecté


TTL Expired
═══════════

```
Reply from 203.0.113.5: TTL expired in transit.
```

Causes :
[X] Boucle routage
[X] TTL initial trop faible
[X] Chemin trop long (>30 hops)


Perte de paquets
════════════════

```
Packets: Sent = 4, Received = 2, Lost = 2 (50% loss)
```

Causes :
[X] Congestion réseau
[X] Lien instable
[X] Firewall intermittent
[X] QoS drop


ANALYSE AVANCÉE


RTT (Round-Trip Time)
═════════════════════

```
time=15ms
```

Indications :
- < 1ms : Local (LAN)
- 1-10ms : Régional
- 10-50ms : National
- 50-150ms : Continental
- 150-300ms : Intercontinental
- > 300ms : Satellite ou problème


TTL (Time To Live)
══════════════════

```
TTL=57
```

Estimation distance :
- TTL initial (OS) : 64, 128, 255
- TTL reçu : 57
- Hops : 64 - 57 = 7 routeurs

OS par TTL initial :
- 64 : Linux/Unix
- 128 : Windows
- 255 : Cisco/Network devices


Variation latence (Jitter)
══════════════════════════

```
time=15ms
time=14ms
time=45ms  <- Pic
time=16ms
```

Jitter élevé (>10ms variation) :
[X] Congestion
[X] QoS inadéquat
[X] Lien wireless instable


USAGES PRATIQUES


1. Test connectivité basique
═════════════════════════════

```
ping 8.8.8.8
```

Vérifie Internet accessible


2. Test résolution DNS
══════════════════════

```
ping google.com
```

Si succès : DNS + connectivité OK
Si échec : DNS ou connectivité problème

Comparer :
```
ping google.com     # Échoue
ping 8.8.8.8        # Succès
```
-> Problème DNS


3. Test MTU / Fragmentation
═══════════════════════════

Windows :
```
ping -f -l 1472 8.8.8.8
```

-f : Don't Fragment
-l 1472 : 1472 octets payload + 28 (IP+ICMP) = 1500 MTU

Si succès : MTU 1500 OK
Si échec : MTU < 1500 (augmenter progressivement)


4. Test saturation
══════════════════

Linux (root) :
```
ping -f -s 65507 8.8.8.8
```

Flood ping max taille
-> Test performance lien


5. Monitoring continu
═════════════════════

Windows :
```
ping -t 8.8.8.8 > ping.log
```

Linux :
```
ping 8.8.8.8 | tee ping.log
```

Surveillance long terme


PING IPv6

Windows :
```
ping -6 2001:4860:4860::8888
ping ipv6.google.com
```

Linux :
```
ping6 2001:4860:4860::8888
ping -6 ipv6.google.com
```

Cisco :
```
ping ipv6 2001:4860:4860::8888
```


LIMITATIONS PING

[X] Firewall bloque ICMP -> Faux négatif
[X] QoS déprioritise ICMP -> Latence non représentative
[X] Ne teste pas services applicatifs
[X] Peut être utilisé en attaque (ping flood)

Complément : Tester port spécifique (telnet, nc, curl)
"""


# ----------------------------------------------------------------------------
# [WORLD_MAP] PARTIE 6 : TRACEROUTE / TRACERT
# ----------------------------------------------------------------------------

"""
TRACEROUTE (TRACE ROUTE)


PRINCIPE

Affiche chemin paquets vers destination

Méthode : TTL incrémental


FONCTIONNEMENT


ÉTAPE 1 : TTL = 1
─────────────────

Source envoie paquet TTL=1

Routeur 1 reçoit :
1. Décrémente TTL : 1 - 1 = 0
2. TTL=0 -> Jette paquet
3. Envoie ICMP Time Exceeded vers source

Source apprend : Hop 1 = Routeur 1 [OK]


ÉTAPE 2 : TTL = 2
─────────────────

Source envoie paquet TTL=2

Routeur 1 : Décrémente TTL=1, transmet
Routeur 2 : Décrémente TTL=0, ICMP Time Exceeded

Source apprend : Hop 2 = Routeur 2 [OK]


ÉTAPE N : TTL = N
─────────────────

Incrémente TTL jusqu'à destination

Destination atteinte -> ICMP Echo Reply (ping)
ou Port Unreachable (UDP traceroute)


DIFFÉRENCES IMPLÉMENTATION


Windows (tracert)
═════════════════

Méthode : ICMP Echo Request

```
tracert 8.8.8.8
```

Sortie :
```
Tracing route to dns.google [8.8.8.8]
over a maximum of 30 hops:

  1    <1 ms    <1 ms    <1 ms  192.168.1.1
  2     5 ms     4 ms     5 ms  10.0.0.1
  3    10 ms    11 ms    10 ms  203.0.113.1
  4    15 ms    14 ms    15 ms  8.8.8.8

Trace complete.
```


Linux (traceroute)
══════════════════

Méthode par défaut : UDP vers ports hauts (33434+)

```
traceroute 8.8.8.8
```

Sortie :
```
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
 1  192.168.1.1 (192.168.1.1)  0.523 ms  0.498 ms  0.476 ms
 2  10.0.0.1 (10.0.0.1)  4.821 ms  4.798 ms  4.776 ms
 3  203.0.113.1 (203.0.113.1)  10.234 ms  10.211 ms  10.189 ms
 4  8.8.8.8 (8.8.8.8)  14.567 ms  14.544 ms  14.522 ms
```

Options :
```
traceroute -I 8.8.8.8        # ICMP (comme Windows)
traceroute -T 8.8.8.8        # TCP SYN
traceroute -n 8.8.8.8        # Pas de résolution DNS
traceroute -m 15 8.8.8.8     # Max 15 hops
traceroute -w 2 8.8.8.8      # Timeout 2s
```


Cisco (traceroute)
══════════════════

```
traceroute 8.8.8.8
```

Sortie :
```
Type escape sequence to abort.
Tracing the route to 8.8.8.8

  1 192.168.1.1 4 msec 4 msec 4 msec
  2 10.0.0.1 12 msec 12 msec 12 msec
  3 203.0.113.1 20 msec 20 msec 20 msec
  4 8.8.8.8 28 msec 28 msec 28 msec
```


INTERPRÉTATION RÉSULTATS


Hop normal
══════════

```
3  203.0.113.1  10.234 ms  10.211 ms  10.189 ms
```

[OK] Routeur répond
[OK] Latence stable (~10ms)


Hop timeout (*)
═══════════════

```
4  * * *
```

Causes :
- Routeur configuré ne pas répondre ICMP
- Firewall bloque
- Routeur surchargé

[ATTENTION] Ne signifie PAS forcément problème !


Hop avec noms multiples
═══════════════════════

```
5  router1.isp.com (203.0.113.10)  15 ms
   router2.isp.com (203.0.113.11)  16 ms
   router1.isp.com (203.0.113.10)  15 ms
```

Load balancing : Chemins multiples (ECMP)


Augmentation latence
════════════════════

```
1  192.168.1.1      1 ms
2  10.0.0.1         5 ms
3  203.0.113.1     50 ms   <- Saut important
4  198.51.100.1    55 ms
```

Hop 3 : Possiblement lien WAN (DSL, satellite)


Latence décroissante (!)
════════════════════════

```
5  router-a  25 ms
6  router-b  15 ms   <- Plus rapide ?!
```

Explication : ICMP déprioritisé sur router-a
-> Latence ICMP ≠ latence réelle trafic


USAGES PRATIQUES


1. Identifier point de défaillance
═══════════════════════════════════

```
traceroute google.com
```

Si timeout à hop 5 :
-> Problème entre hop 4 et 5


2. Identifier goulot d'étranglement
════════════════════════════════════

```
1  router1   1 ms
2  router2   5 ms
3  router3  150 ms   <- Latence élevée
4  router4  155 ms
```

Hop 3 : Probable lien lent/saturé


3. Vérifier routage symétrique
═══════════════════════════════

```
traceroute -n 8.8.8.8       (aller)
traceroute -n <mon_IP>       (retour depuis 8.8.8.8)
```

Chemins différents possibles (routage asymétrique)


4. Diagnostic géographique
══════════════════════════

```
traceroute google.com
```

Hop names révèlent géographie :
- paris-core-1.isp.net
- london-edge-2.isp.net
- newyork-peer-1.isp.net


OPTIONS AVANCÉES


MTR (My Traceroute)
═══════════════════

Combine ping + traceroute

Linux :
```
mtr 8.8.8.8
```

Affichage temps réel :
```
                             My traceroute  [v0.93]
Host                          Loss%   Snt   Last   Avg  Best  Wrst StDev
1. 192.168.1.1                 0.0%    10    0.5   0.6   0.5   0.8   0.1
2. 10.0.0.1                    0.0%    10    4.8   5.2   4.6   6.1   0.4
3. 203.0.113.1                 0.0%    10   10.2  10.5  10.1  11.2   0.3
4. 8.8.8.8                     0.0%    10   14.5  14.8  14.3  15.6   0.4
```

Avantages :
[OK] Statistiques continues
[OK] Perte paquets par hop
[OK] Min/Avg/Max latence


Pathping (Windows)
══════════════════

Équivalent MTR Windows

```
pathping 8.8.8.8
```

Phase 1 : Traceroute
Phase 2 : Test perte 25s par hop

Sortie finale :
```
            Source to Here   This Node/Link
Hop  RTT    Lost/Sent = Pct  Lost/Sent = Pct  Address
  0                                           PC1
                                0/ 100 =  0%   |
  1    1ms     0/ 100 =  0%     0/ 100 =  0%  192.168.1.1
                                0/ 100 =  0%   |
  2    5ms     0/ 100 =  0%     0/ 100 =  0%  10.0.0.1
                                2/ 100 =  2%   |
  3   12ms     2/ 100 =  2%     2/ 100 =  2%  203.0.113.1
```

Identifie hop avec perte


Traceroute6 (IPv6)
══════════════════

Linux :
```
traceroute6 2001:4860:4860::8888
traceroute -6 2001:4860:4860::8888
```

Windows :
```
tracert -6 2001:4860:4860::8888
```


LIMITATIONS

[X] Firewall bloque ICMP -> Hops invisibles (*)
[X] Load balancing -> Chemins variables
[X] ICMP rate-limit -> Latence faussée
[X] Routeur ne décrémente pas TTL -> Boucle apparente


CONTOURNEMENT FILTRES

Si ICMP bloqué :

TCP traceroute (Linux) :
```
traceroute -T -p 80 google.com
```

Utilise TCP SYN vers port 80
-> Souvent autorisé par firewalls


tcptraceroute :
```
sudo tcptraceroute google.com 443
```


ANALYSE PROBLÈME EXEMPLE

Scénario : Site web lent

```
traceroute www.exemple.com

 1  192.168.1.1      1 ms
 2  10.0.0.1         5 ms
 3  isp-router.net  10 ms
 4  * * *
 5  * * *
 6  cdn-server      200 ms
```

Analyse :
- Hops 4-5 : Timeout (firewall probable)
- Hop 6 : Latence élevée (200ms)

Conclusion : Serveur distant ou chemin sous-optimal

Action : Vérifier DNS (CDN plus proche disponible ?)
"""


# ----------------------------------------------------------------------------
# - PARTIE 7 : ICMPv6 ET NDP (APPROFONDISSEMENT)
# ----------------------------------------------------------------------------

"""
ICMPv6 (INTERNET CONTROL MESSAGE PROTOCOL v6)


DIFFÉRENCES vs ICMPv4

ICMPv6 plus RICHE et ESSENTIEL :

Fonctions supplémentaires :
[OK] Neighbor Discovery (remplace ARP)
[OK] Router Discovery (auto-config)
[OK] Multicast Listener Discovery
[OK] Path MTU Discovery amélioré

Protocol Number : 58 (Next Header IPv6)

[ATTENTION] ICMPv6 OBLIGATOIRE (vs optionnel ICMPv4)
Bloquer complètement ICMPv6 -> IPv6 cassé !


TYPES ICMPv6

Messages erreur (1-127) :

┌──────┬──────────────────────────────┐
│ Type │         Message              │
├──────┼──────────────────────────────┤
│  1   │ Destination Unreachable      │
│  2   │ Packet Too Big               │
│  3   │ Time Exceeded                │
│  4   │ Parameter Problem            │
└──────┴──────────────────────────────┘

Messages informationnels (128-255) :

┌──────┬──────────────────────────────┐
│ Type │         Message              │
├──────┼──────────────────────────────┤
│ 128  │ Echo Request                 │
│ 129  │ Echo Reply                   │
│ 133  │ Router Solicitation (RS)     │
│ 134  │ Router Advertisement (RA)    │
│ 135  │ Neighbor Solicitation (NS)   │
│ 136  │ Neighbor Advertisement (NA)  │
│ 137  │ Redirect                     │
│ 143  │ MLD Query                    │
│ 144  │ MLD Report                   │
└──────┴──────────────────────────────┘


TYPE 2 : PACKET TOO BIG
═══════════════════════

Unique à IPv6 (pas de fragmentation routeur)

Routeur ne peut transmettre paquet (trop gros)

Message :
- Type : 2
- MTU : MTU lien suivant

Hôte réduit taille -> Path MTU Discovery


NDP (NEIGHBOR DISCOVERY PROTOCOL)
══════════════════════════════════

Protocole CRITIQUE IPv6

Fonctions :
1. Résolution adresse (IPv6 -> MAC)
2. Découverte routeurs
3. Auto-configuration (SLAAC)
4. Détection duplicate adresses (DAD)
5. Détection inaccessibilité
6. Redirection


MESSAGES NDP DÉTAILLÉS


Type 133 : Router Solicitation (RS)
════════════════════════════════════

Hôte cherche routeur

Format :
- Src : Link-local hôte ou ::
- Dst : FF02::2 (tous routeurs)

Cas utilisation :
- Démarrage hôte
- Connexion réseau
- Force RA immédiat (sans attendre périodique)


Type 134 : Router Advertisement (RA)
═════════════════════════════════════

Routeur annonce présence + configuration

Format :
- Src : Link-local routeur
- Dst : FF02::1 (tous nœuds) ou unicast

Contenu :
- Cur Hop Limit : TTL recommandé
- Flags :
  * M (Managed) : DHCPv6 géré
  * O (Other) : DHCPv6 infos
  * A (Autonomous) : SLAAC autorisé
- Router Lifetime : Validité routeur (1800s)
- Reachable Time : Durée REACHABLE état
- Retrans Timer : Interval retransmission NS

Options :
- Prefix Information :
  * Préfixe : 2001:DB8:1::/64
  * Valid Lifetime : Durée validité adresse
  * Preferred Lifetime : Durée préférence
  * Flags : On-link, Autonomous
- MTU
- Source Link-Layer Address : MAC routeur

Périodicité : 200s (défaut)


Type 135 : Neighbor Solicitation (NS)
══════════════════════════════════════

Résolution adresse (équivalent ARP Request)

Format :
- Src : Unicast hôte (ou :: si DAD)
- Dst : Solicited-node multicast

Solicited-node :
FF02::1:FF + 24 derniers bits IPv6

Exemple :
Résoudre : 2001:DB8:1::10
Derniers 24 bits : 00:00:10
Solicited-node : FF02::1:FF00:0010

Champ Target : 2001:DB8:1::10

Option :
- Source Link-Layer Address : MAC source (si src ≠ ::)

Usages :
1. Résolution adresse (communication)
2. DAD (détection duplicate)
3. NUD (vérification joignabilité)


Type 136 : Neighbor Advertisement (NA)
═══════════════════════════════════════

Réponse NS (équivalent ARP Reply)

Format :
- Src : Unicast répondeur
- Dst : Unicast demandeur (ou FF02::1 si sollicité)

Flags :
- R (Router) : Émetteur est routeur
- S (Solicited) : Réponse à NS
- O (Override) : Écrase cache existant

Champ Target : Adresse annoncée

Option :
- Target Link-Layer Address : MAC répondeur


Type 137 : Redirect
═══════════════════

Routeur informe meilleur next-hop

Format :
- Src : Link-local routeur
- Dst : Unicast hôte

Champs :
- Target : Meilleur next-hop
- Destination : Destination finale

Options :
- Target Link-Layer Address
- Redirected Header : Copie paquet original


PROCESSUS COMPLETS


SLAAC (Résumé détaillé)
═══════════════════════

1. Hôte génère Link-Local : FE80::/64 + Interface ID
2. DAD sur Link-Local (NS vers soi-même)
3. Si OK : Link-Local active
4. RS vers FF02::2 (cherche routeur)
5. RA reçu avec préfixe 2001:DB8:1::/64
6. Génère Global Unicast : 2001:DB8:1:: + Interface ID
7. DAD sur Global Unicast
8. Si OK : Global Unicast active [OK]


Résolution adresse (IPv6 -> MAC)
════════════════════════════════

PC1 (2001:DB8:1::5) -> PC2 (2001:DB8:1::10)

1. PC1 calcule solicited-node : FF02::1:FF00:0010
2. PC1 envoie NS :
   - Dst : FF02::1:FF00:0010
   - Target : 2001:DB8:1::10
3. PC2 reçoit (membre groupe multicast)
4. PC2 répond NA :
   - Dst : 2001:DB8:1::5
   - Target : 2001:DB8:1::10
   - MAC : 00:50:56:AB:CD:EF
5. PC1 ajoute à cache : 2001:DB8:1::10 = 00:50:56:AB:CD:EF


NEIGHBOR CACHE (IPv6)

Équivalent cache ARP

États :
- INCOMPLETE : Résolution en cours
- REACHABLE : Joignable (confirmé)
- STALE : Ancien (pas utilisé récemment)
- DELAY : Test en attente
- PROBE : Envoi NS test

Linux :
```
ip -6 neighbor show
```

Exemple :
```
2001:db8:1::1 dev eth0 lladdr 00:11:22:33:44:55 REACHABLE
fe80::1 dev eth0 lladdr 00:11:22:33:44:55 router REACHABLE
2001:db8:1::10 dev eth0 lladdr 00:50:56:ab:cd:ef STALE
```


SÉCURITÉ NDP


SEND (Secure Neighbor Discovery)
═════════════════════════════════

RFC 3971 : Sécurisation NDP

Méthodes :
- CGA (Cryptographically Generated Addresses)
- Signatures cryptographiques messages
- Horodatage

Protège contre :
[OK] NDP spoofing
[OK] Rogue Router Advertisements
[OK] Man-in-the-Middle

Déploiement : Faible (complexité)


RA Guard
════════

Protection switch contre rogue RAs

Cisco :
```
ipv6 nd raoptions managed-config-flag
ipv6 nd raoptions other-config-flag

vlan configuration 10
 ipv6 nd raguard policy HOST-POLICY

interface range GigabitEthernet0/1-24
 ipv6 nd raguard attach-policy HOST-POLICY
```

Bloque RAs sur ports accès
Autorise uniquement sur uplinks


DHCPv6 Guard
════════════

Protection contre rogue DHCPv6

Similaire RA Guard


FILTRAGE ICMPv6

[ATTENTION] NE PAS BLOQUER COMPLÈTEMENT !

Types à AUTORISER (minimum) :

[OK] Echo Request/Reply (128/129) : Ping
[OK] Destination Unreachable (1) : Erreurs
[OK] Packet Too Big (2) : PMTUD
[OK] Time Exceeded (3) : Traceroute
[OK] NS/NA (135/136) : Résolution adresse
[OK] RS/RA (133/134) : Auto-config

Types à FILTRER avec prudence :

[ATTENTION] Redirect (137) : Rarement nécessaire
[ATTENTION] MLD (143-144) : Si pas multicast

Exemple ACL Cisco :
```
ipv6 access-list ICMPv6-ALLOW
 permit icmp any any echo-request
 permit icmp any any echo-reply
 permit icmp any any packet-too-big
 permit icmp any any time-exceeded
 permit icmp any any nd-ns
 permit icmp any any nd-na
 permit icmp any any router-solicitation
 permit icmp any any router-advertisement
 deny ipv6 any any log
```
"""


# ----------------------------------------------------------------------------
# [RESEAU] PARTIE 8 : IGMP (INTERNET GROUP MANAGEMENT PROTOCOL)
# ----------------------------------------------------------------------------

"""
IGMP (INTERNET GROUP MANAGEMENT PROTOCOL)


RÔLE

Gestion groupes multicast IPv4

Permet :
- Hôtes joindre/quitter groupes multicast
- Routeurs savoir quels groupes actifs

Protocol Number : 2

Couche : Entre IP et protocoles routage multicast


MULTICAST RAPPEL

Adresses multicast IPv4 : 224.0.0.0 - 239.255.255.255

Communication un-vers-plusieurs :
- Source envoie UNE copie
- Réseau duplique vers abonnés

Exemples usages :
- Streaming vidéo (IPTV)
- Visioconférence
- Cotations boursières
- Mise à jour logicielle simultanée


VERSIONS IGMP


IGMPv1 (RFC 1112)
═════════════════

Basique :
- Join : Membership Report
- Leave : Timeout (pas de message explicite)

Obsolète


IGMPv2 (RFC 2236)
═════════════════

Ajouts :
- Leave Group message explicite
- Query spécifique groupe
- Élection Querier

Standard actuel


IGMPv3 (RFC 3376)
═════════════════

Ajouts majeurs :
- Source filtering :
  * INCLUDE : Recevoir de sources spécifiques
  * EXCLUDE : Recevoir sauf sources spécifiques
- SSM (Source-Specific Multicast) support

Adoption croissante


MESSAGES IGMP


Membership Query
════════════════

Routeur interroge hôtes

Types :

General Query :
- Dst : 224.0.0.1 (tous hôtes)
- Group Address : 0.0.0.0
- Question : "Quels groupes écoutez-vous ?"

Group-Specific Query (v2+) :
- Dst : Groupe multicast
- Group Address : Groupe spécifique
- Question : "Écoutez-vous encore ce groupe ?"

Périodicité : 60-125s


Membership Report
═════════════════

Hôte annonce appartenance groupe

IGMPv1/v2 :
- Dst : Groupe multicast
- Group Address : Groupe joint

IGMPv3 :
- Dst : 224.0.0.22
- Group Records multiples
- Mode : INCLUDE/EXCLUDE sources


Leave Group (v2+)
═════════════════

Hôte quitte groupe

Message :
- Dst : 224.0.0.2 (tous routeurs)
- Group Address : Groupe quitté

Routeur envoie Group-Specific Query
-> Vérifier si autres membres


PROCESSUS IGMP


Joindre groupe
══════════════

Application : "Recevoir 239.1.1.1"

1. Hôte envoie Membership Report :
   - Groupe : 239.1.1.1
   - Dst : 239.1.1.1

2. Routeur local reçoit Report :
   - Ajoute interface à liste OIL (Outgoing Interface List)
   - Propage vers routeurs upstream (PIM)

3. Hôte reçoit trafic multicast 239.1.1.1 [OK]


Quitter groupe
══════════════

Application : "Arrêter 239.1.1.1"

1. Hôte envoie Leave Group :
   - Groupe : 239.1.1.1
   - Dst : 224.0.0.2

2. Routeur envoie Group-Specific Query :
   - Dst : 239.1.1.1
   - Timeout : 3s

3. Si pas de Report :
   - Routeur retire interface de OIL
   - Propage prune vers upstream

4. Trafic multicast arrêté [OK]


IGMP SNOOPING
═════════════

Switch écoute IGMP

Problème sans snooping :
- Trafic multicast = flooding (comme broadcast)
- Tous ports reçoivent (inefficace)

Avec snooping :
1. Switch écoute IGMP Report
2. Apprend : Port 5 veut groupe 239.1.1.1
3. Transmet trafic 239.1.1.1 UNIQUEMENT port 5 [OK]

Avantages :
[OK] Économie bande passante
[OK] Sécurité (isolation)
[OK] Performance


Configuration Cisco :
```
ip igmp snooping
ip igmp snooping vlan 10
```

Vérification :
```
show ip igmp snooping
show ip igmp snooping groups
```


IGMP QUERIER

Réseau sans routeur multicast :

Problème : Pas de Query -> Reports non envoyés

Solution : IGMP Querier sur switch

Switch génère Queries périodiques
-> Hôtes envoient Reports
-> Snooping fonctionne

Configuration Cisco :
```
ip igmp snooping querier
```


COMMANDES DIAGNOSTIC


Windows
═══════

Voir groupes joints :
```
netsh interface ipv4 show joins
```


Linux
═════

```
ip maddr show
netstat -g
cat /proc/net/igmp
```


Cisco routeur
═════════════

```
show ip igmp groups
show ip igmp interface
show ip igmp membership
```

Exemple sortie :
```
IGMP Connected Group Membership
Group Address    Interface           Uptime    Expires   Last Reporter
224.0.1.40       GigabitEthernet0/1  00:05:24  00:02:36  192.168.1.10
239.1.1.1        GigabitEthernet0/1  01:23:45  00:02:15  192.168.1.20
```


Cisco switch
════════════

```
show ip igmp snooping
show ip igmp snooping groups
show ip igmp snooping mrouter
```


PROBLÈMES COURANTS


Multicast ne fonctionne pas
════════════════════════════

Vérifications :
1. IGMP snooping activé ?
2. Querier configuré (si pas routeur) ?
3. Ports mrouter corrects ?
4. Routage multicast (PIM) ?


Flooding multicast
══════════════════

Causes :
- IGMP snooping désactivé
- Querier absent
- IGMP version mismatch

Solution : Activer/configurer snooping


MLD (MULTICAST LISTENER DISCOVERY)
═══════════════════════════════════

Équivalent IGMP pour IPv6

Messages ICMPv6 (143-144)

Fonctionnement identique IGMP

MLDv1 = IGMPv2
MLDv2 = IGMPv3
"""


# ----------------------------------------------------------------------------
# [OUTIL] PARTIE 9 : TROUBLESHOOTING PRATIQUE
# ----------------------------------------------------------------------------

"""
TROUBLESHOOTING PROTOCOLES RÉSEAU


MÉTHODOLOGIE GÉNÉRALE


Modèle OSI bottom-up
════════════════════

1. COUCHE 1 (Physique)
   ─────────────────

   [OK] Câble branché ?
   [OK] LED lien active ?
   [OK] Duplex/Speed correct ?

2. COUCHE 2 (Liaison)
   ──────────────────

   [OK] MAC address OK ?
   [OK] VLAN correct ?
   [OK] Switch voit équipement ?

3. COUCHE 3 (Réseau)
   ─────────────────

   [OK] IP configurée ?
   [OK] Masque correct ?
   [OK] Passerelle accessible ?
   [OK] Routage OK ?


SCÉNARIOS COURANTS


Scénario 1 : Pas d'accès Internet
══════════════════════════════════

Symptôme : Navigateur ne charge rien

ÉTAPE 1 : Vérifier IP locale
```
ipconfig (Windows)
ip addr (Linux)
```

Si 169.254.x.x (APIPA) -> DHCP problème
Si 0.0.0.0 -> Pas d'IP


ÉTAPE 2 : Ping passerelle locale
```
ping 192.168.1.1
```

Si échec :
- Vérifier câble
- Vérifier ARP : arp -a
- Vérifier switch


ÉTAPE 3 : Ping DNS public
```
ping 8.8.8.8
```

Si échec :
- Routage local OK mais WAN problème
- Vérifier routeur


ÉTAPE 4 : Ping domaine
```
ping google.com
```

Si échec mais ping 8.8.8.8 OK :
-> DNS problème

Vérifier DNS :
```
nslookup google.com
```


Scénario 2 : Lenteur réseau
════════════════════════════

Symptôme : Tout fonctionne mais lent

ÉTAPE 1 : Ping avec statistiques
```
ping -t 8.8.8.8 (Windows)
ping 8.8.8.8 (Linux, observer 100+ paquets)
```

Analyser :
- Perte paquets ?
- Latence élevée ?
- Jitter (variation) ?


ÉTAPE 2 : Traceroute
```
tracert 8.8.8.8 (Windows)
traceroute 8.8.8.8 (Linux)
```

Identifier hop lent


ÉTAPE 3 : MTR (Linux)
```
mtr 8.8.8.8
```

Statistiques continues par hop


ÉTAPE 4 : Test bande passante
```
iperf3 -c serveur-test
speedtest-cli
```


Scénario 3 : Duplicate IP
══════════════════════════

Symptôme : "Conflit adresse IP" (Windows)

ÉTAPE 1 : Identifier adresses
```
ipconfig /all
```

Noter IP et MAC


ÉTAPE 2 : Vérifier ARP
```
arp -a
```

Chercher duplicate MAC pour IP


ÉTAPE 3 : Gratuitous ARP
```
arping -D 192.168.1.10 (Linux)
```

Si réponse -> Duplicate confirmé


ÉTAPE 4 : Localiser coupable
Sur switch :
```
show mac address-table | include XXXX.XXXX.XXXX
```

Identifier port


Scénario 4 : ARP ne fonctionne pas
═══════════════════════════════════

Symptôme : Ping local échoue

ÉTAPE 1 : Vérifier cache ARP
```
arp -a
```

IP présente ? MAC correcte ?


ÉTAPE 2 : Vider cache
```
arp -d * (Windows)
ip neighbor flush all (Linux)
```


ÉTAPE 3 : Capturer ARP
Wireshark :
- Filtre : arp
- Ping destination
- Voir Request/Reply ?


ÉTAPE 4 : Vérifier VLAN
Switch :
```
show vlan
```

Équipements même VLAN ?


Scénario 5 : ICMP bloqué
═════════════════════════

Symptôme : Ping échoue mais service accessible

ÉTAPE 1 : Tester service
```
telnet IP 80 (HTTP)
telnet IP 22 (SSH)
nc -zv IP 80 (Linux)
```

Si succès -> Firewall bloque ICMP


ÉTAPE 2 : Traceroute TCP
```
traceroute -T -p 80 google.com (Linux)
tcptraceroute google.com 443
```


OUTILS AVANCÉS


Wireshark
═════════

Capture paquets détaillée

Filtres utiles :
```
arp                          # ARP
icmp                         # ICMP
icmp.type == 8               # Echo Request
icmp.type == 3               # Dest Unreachable
ip.addr == 192.168.1.10      # IP spécifique
eth.addr == 00:11:22:33:44:55 # MAC
```


tcpdump (Linux)
═══════════════

```
tcpdump -i eth0 arp
tcpdump -i eth0 icmp
tcpdump -i eth0 'host 192.168.1.10'
tcpdump -i eth0 -w capture.pcap
```


nmap
════

Scan réseau :
```
nmap -sn 192.168.1.0/24      # Ping scan
nmap -sP 192.168.1.0/24      # Découverte hôtes
nmap -O 192.168.1.10         # OS detection
```


hping3
══════

Manipulation paquets :
```
hping3 -1 192.168.1.10       # ICMP
hping3 -S -p 80 192.168.1.10 # TCP SYN
hping3 --traceroute -S -p 80 google.com
```


JOURNALISATION


Syslog
══════

Cisco :
```
logging buffered 16384 debugging
logging 192.168.1.100
logging trap debugging
```

Linux :
```
/var/log/syslog
/var/log/messages
journalctl -u NetworkManager
```


SNMP
════

Monitoring :
```
snmpwalk -v2c -c public 192.168.1.1
```

MIBs utiles :
- IF-MIB : Interfaces
- IP-MIB : Statistiques IP
- ICMP-MIB : Stats ICMP


BONNES PRATIQUES TROUBLESHOOTING

[OK] Méthodologie structurée (OSI layers)
[OK] Isolation problème (dichotomie)
[OK] Vérifier évident (câble, config)
[OK] Documenter (logs, captures)
[OK] Test unitaire (un changement à la fois)
[OK] Baseline (connaître état normal)
[OK] Outils appropriés (ping, traceroute, Wireshark)
"""


# ----------------------------------------------------------------------------
# [COURS] EXERCICES PRATIQUES - CHAPITRE 10
# ----------------------------------------------------------------------------

"""
[IDEE] EXERCICES


═══════════════════════════════════════════════════════════
EXERCICE 1 : ANALYSE CACHE ARP
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Cache ARP d'un PC :

```
Interface: 192.168.1.10 --- 0x5
  Adresse Internet      Adresse physique      Type
  192.168.1.1           00-11-22-33-44-55     dynamique
  192.168.1.20          AA-BB-CC-DD-EE-FF     dynamique
  192.168.1.20          11-22-33-44-55-66     dynamique
  192.168.1.255         ff-ff-ff-ff-ff-ff     statique
  224.0.0.22            01-00-5e-00-00-16     statique
```

Questions :

1. Quelle anomalie voyez-vous ?
2. Quelle en est la cause probable ?
3. Comment diagnostiquer le problème ?
4. Quelle est la solution ?


[OK] CORRECTION EXERCICE 1

1. ANOMALIE
   ────────

   Duplicate entrée :
   
   192.168.1.20    AA-BB-CC-DD-EE-FF
   192.168.1.20    11-22-33-44-55-66
   
   DEUX MACs différentes pour MÊME IP ! [X]


2. CAUSE PROBABLE
   ──────────────

   Plusieurs possibilités :
   
   a) Conflit IP (Duplicate IP)
      - Deux équipements configurés 192.168.1.20
      - Les deux répondent ARP
   
   b) ARP Spoofing Attack
      - Attaquant envoie faux ARP Reply
      - 11-22-33-44-55-66 = MAC attaquant
   
   c) Failover en cours
      - Serveur changé de carte réseau
      - Ancienne + nouvelle MAC transitoires


3. DIAGNOSTIC
   ──────────

   ÉTAPE 1 : Identifier équipements
   
   Switch :
   ```
   show mac address-table | include AABB.CCDD.EEFF
   show mac address-table | include 1122.3344.5566
   ```
   
   Noter ports physiques
   
   
   ÉTAPE 2 : Ping test
   
   ```
   ping 192.168.1.20
   arp -a | findstr 192.168.1.20
   ```
   
   Observer quelle MAC utilisée
   
   
   ÉTAPE 3 : Gratuitous ARP check
   
   Linux (sur 192.168.1.20 légitime) :
   ```
   arping -D 192.168.1.20
   ```
   
   Si réponse -> Duplicate confirmé
   
   
   ÉTAPE 4 : Capture Wireshark
   
   Filtre : arp and ip.src == 192.168.1.20
   
   Observer :
   - Multiples sources ARP ?
   - Patterns suspects (flood ARP) ?
   
   
   ÉTAPE 5 : Vérifier sécurité
   
   Switch :
   ```
   show ip dhcp snooping binding
   show ip arp inspection statistics
   ```
   
   Violations détectées ?


4. SOLUTION
   ────────

   CAS A : Duplicate IP accidentel
   ────────────────────────────────
   
   1. Identifier coupable (port switch)
   2. Reconfigurer IP unique
   3. Vider caches ARP :
      ```
      arp -d 192.168.1.20
      ```
   
   
   CAS B : ARP Spoofing
   ────────────────────
   
   1. Isoler attaquant (shutdown port)
   2. Vider caches réseau
   3. Activer DAI :
      ```
      ip dhcp snooping
      ip arp inspection vlan 1
      interface Gi0/X
       ip arp inspection trust  (uplink)
      ```
   4. Investigation sécurité
   
   
   CAS C : Failover légitime
   ─────────────────────────
   
   1. Confirmer changement planifié
   2. Attendre convergence (cache aging)
   3. Ou forcer : Gratuitous ARP depuis nouveau
   
   
   PRÉVENTION :
   
   [OK] DHCP (évite conflits statiques)
   [OK] DAI (Dynamic ARP Inspection)
   [OK] Port Security
   [OK] Monitoring (arpwatch)



═══════════════════════════════════════════════════════════
EXERCICE 2 : ANALYSE PING
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Résultats ping :

```
C:\> ping 8.8.8.8

Pinging 8.8.8.8 with 32 bytes of data:
Reply from 8.8.8.8: bytes=32 time=15ms TTL=57
Request timed out.
Reply from 8.8.8.8: bytes=32 time=14ms TTL=57
Request timed out.

Ping statistics for 8.8.8.8:
    Packets: Sent = 4, Received = 2, Lost = 2 (50% loss),
Approximate round trip times in milli-seconds:
    Minimum = 14ms, Maximum = 15ms, Average = 14ms
```

Questions :

1. Quel est le problème ?
2. Quelles sont les causes possibles ?
3. Comment diagnostiquer davantage ?
4. Quelle solution recommandez-vous ?


[OK] CORRECTION EXERCICE 2

1. PROBLÈME
   ────────

   Perte de paquets intermittente : 50%
   
   Pattern : Alternance succès/échec
   
   Connectivité INSTABLE [X]


2. CAUSES POSSIBLES
   ────────────────

   a) Congestion réseau
      - Lien saturé
      - Buffers pleins
      - Paquets jetés aléatoirement
   
   b) Lien sans-fil instable
      - Interférences Wi-Fi
      - Signal faible
      - Roaming entre APs
   
   c) Firewall intermittent
      - Rate limiting ICMP
      - Charge firewall variable
   
   d) Load balancing
      - Chemin A : OK
      - Chemin B : Problème
      - Alternance entre chemins
   
   e) QoS déprioritise ICMP
      - ICMP marqué basse priorité
      - Jeté si congestion


3. DIAGNOSTIC APPROFONDI
   ──────────────────────

   TEST 1 : Ping prolongé
   ──────────────────────
   
   ```
   ping -t 8.8.8.8
   ```
   
   Observer 100+ paquets :
   - Pattern clair ? (ex: 1 sur 2)
   - Aléatoire ?
   - Corrélation temps ?
   
   
   TEST 2 : Ping taille variable
   ──────────────────────────────
   
   ```
   ping -l 1400 8.8.8.8   # Gros paquets
   ping -l 64 8.8.8.8     # Petits paquets
   ```
   
   Si gros paquets pire -> MTU/Fragmentation
   
   
   TEST 3 : Traceroute
   ───────────────────
   
   ```
   tracert 8.8.8.8
   ```
   
   Identifier hop avec perte :
   ```
   1  router1   1 ms     # 0% perte
   2  router2   5 ms     # 0% perte
   3  router3  50 ms     # 50% perte <- Coupable
   4  8.8.8.8  55 ms     # 50% perte (hérité)
   ```
   
   
   TEST 4 : MTR (Linux)
   ────────────────────
   
   ```
   mtr 8.8.8.8
   ```
   
   Statistiques détaillées par hop
   
   
   TEST 5 : Test service réel
   ──────────────────────────
   
   ```
   curl -w "@curl-format.txt" https://google.com
   ```
   
   ICMP problème mais HTTP OK ?
   -> Firewall déprioritise ICMP
   
   
   TEST 6 : Vérifier lien local
   ─────────────────────────────
   
   ```
   ping 192.168.1.1 (passerelle)
   ```
   
   Si local OK mais distant problème :
   -> WAN/Internet instable
   
   
   TEST 7 : Interface statistics
   ──────────────────────────────
   
   Windows :
   ```
   netsh interface ipv4 show interface
   ```
   
   Linux :
   ```
   ip -s link show eth0
   ```
   
   Chercher erreurs :
   - RX errors
   - TX errors
   - Collisions
   - Dropped


4. SOLUTIONS
   ─────────

   CAS A : Congestion
   ──────────────────
   
   [OK] Upgrade bande passante
   [OK] QoS (prioriser trafic)
   [OK] Traffic shaping
   
   
   CAS B : Wi-Fi instable
   ───────────────────────
   
   [OK] Rapprocher AP
   [OK] Changer canal (interférences)
   [OK] Upgrade 2.4GHz -> 5GHz
   [OK] Câble Ethernet (si possible)
   
   
   CAS C : Load balancing asymétrique
   ───────────────────────────────────
   
   [OK] Désactiver chemin problématique
   [OK] Ajuster métriques routage
   
   
   CAS D : Rate limiting
   ─────────────────────
   
   [OK] Augmenter limite ICMP
   [OK] Ou accepter (ICMP déprioritisé normal)
   
   
   CAS E : Matériel défectueux
   ────────────────────────────
   
   [OK] Remplacer câble
   [OK] Remplacer carte réseau
   [OK] Vérifier switch (erreurs port)



═══════════════════════════════════════════════════════════
EXERCICE 3 : TRACEROUTE ANALYSIS
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Traceroute vers serveur web :

```
$ traceroute www.exemple.com

 1  192.168.1.1      1.2 ms    1.1 ms    1.0 ms
 2  10.0.0.1         5.5 ms    5.3 ms    5.4 ms
 3  isp-gw.net      12.1 ms   12.0 ms   11.9 ms
 4  * * *
 5  * * *
 6  cdn-edge.com   185.4 ms  184.9 ms  185.2 ms
 7  www.exemple.com 186.1 ms  185.8 ms  186.0 ms
```

Questions :

1. Que signifient les hops 4-5 (* * *) ?
2. Pourquoi la latence augmente brutalement au hop 6 ?
3. Le site est-il accessible ?
4. Y a-t-il un problème ? Si oui, lequel ?


[OK] CORRECTION EXERCICE 3

1. HOPS 4-5 (* * *)
   ────────────────

   Significations possibles :
   
   a) Firewall bloque ICMP Time Exceeded
      - Routeurs configurés ne pas répondre
      - Sécurité (masquer topologie)
      - TRÈS COURANT [OK]
   
   b) Routeurs surchargés
      - ICMP déprioritisé
      - Pas de réponse
   
   c) Timeout réseau
      - Latence >3s (timeout défaut)
   
   [ATTENTION] * * * NE signifie PAS forcément panne !
   
   Destination accessible (hop 7) -> Pas de problème [OK]


2. LATENCE HOP 6
   ─────────────

   Saut : 12ms (hop 3) -> 185ms (hop 6)
   
   Augmentation : ~173ms
   
   Causes probables :
   
   a) Lien longue distance
      - Hop 3 : National (ISP local)
      - Hop 6 : Intercontinental
      - Latence physique (vitesse lumière)
   
   b) Lien satellite
      - 185ms typique satellite géostationnaire
      - Altitude 36,000 km
   
   c) Lien congestionné
      - Hops 4-5 : Backbone surchargé
   
   Analyse :
   - 185ms = Probable intercontinental
   - Europe <-> Amérique : 80-120ms
   - Europe <-> Asie : 150-250ms
   - Ou satellite
   
   Conclusion : Latence NORMALE pour distance [OK]


3. SITE ACCESSIBLE ?
   ─────────────────

   OUI [OK]
   
   Hop 7 : www.exemple.com répond
   
   Latence : 186ms
   
   ICMP Echo Reply reçu
   
   
   Confirmation :
   ```
   ping www.exemple.com
   ```
   
   ou
   
   ```
   curl -I https://www.exemple.com
   ```


4. PROBLÈME ?
   ──────────

   NON, situation NORMALE [OK]
   
   Analyse :
   
   [OK] Connectivity : OK (hop 7 répond)
   [OK] Hops 4-5 (* * *) : Normal (firewall)
   [OK] Latence 185ms : Normal (distance)
   [OK] Pas de perte paquets
   [OK] Latence stable (185-186ms)
   
   
   Recommandations :
   
   Si latence problématique pour application :
   
   1. Vérifier DNS
      ```
      nslookup www.exemple.com
      ```
      
      Plusieurs IPs ? CDN disponible ?
   
   2. Essayer CDN plus proche
      - Vider cache DNS
      - Retry connexion
      - CDN peut router vers edge plus proche
   
   3. Utiliser VPN/Proxy local
      - Si serveur distant obligatoire
   
   4. Optimisation applicative
      - Compression
      - Keep-alive
      - Caching local
   
   
   Mais fondamentalement : Tout fonctionne [OK]



═══════════════════════════════════════════════════════════
FIN DES EXERCICES
═══════════════════════════════════════════════════════════
"""


# ============================================================================
# [DOCS] CONCLUSION CHAPITRE 10
# ============================================================================

"""
[BRAVO] FÉLICITATIONS !

Vous avez terminé le Chapitre 10 : Protocoles Réseau Auxiliaires


[GUIDE] RÉCAPITULATIF COMPLET

PARTIE 1 : ARP ET ATTAQUES
──────────────────────────

[OK] ARP DÉTAILLÉ :
   - Processus Request/Reply
   - Cache ARP (dynamic/static)
   - Commandes Windows/Linux/Cisco
   - Optimisations
   
[OK] GRATUITOUS ARP :
   - Détection duplicate IP
   - Mise à jour caches
   - Failover (VRRP)
   
[OK] PROXY ARP :
   - Fonctionnement
   - Avantages/Limites
   
[OK] ATTAQUES ARP :
   - ARP Spoofing/Poisoning
   - Man-in-the-Middle
   - Détection et contre-mesures
   - DAI, DHCP Snooping, Port Security
   
[OK] ICMP FONDAMENTAUX :
   - Types messages (Echo, Unreachable, Time Exceeded)
   - Rôle et format
   - Filtrage intelligent


PARTIE 2 : OUTILS ET DIAGNOSTIC
────────────────────────────────

[OK] PING :
   - Options avancées
   - Interprétation résultats
   - Usages pratiques
   - IPv4/IPv6
   
[OK] TRACEROUTE :
   - Fonctionnement TTL
   - Différences Windows/Linux
   - MTR et Pathping
   - Analyse chemin
   
[OK] ICMPv6/NDP :
   - Messages ICMPv6
   - NS/NA (résolution)
   - RS/RA (auto-config)
   - Sécurité (SEND, RA Guard)
   
[OK] IGMP :
   - Gestion groupes multicast
   - Versions (v2/v3)
   - IGMP Snooping
   - MLD (IPv6)
   
[OK] TROUBLESHOOTING :
   - Méthodologie structurée
   - Scénarios courants
   - Outils (Wireshark, tcpdump)
   - Bonnes pratiques


[OBJECTIF] COMPÉTENCES ACQUISES

Vous savez maintenant :

[OK] Comprendre fonctionnement ARP complet
[OK] Détecter et prévenir attaques ARP
[OK] Configurer sécurité (DAI, Port Security)
[OK] Utiliser ping efficacement
[OK] Analyser traceroute
[OK] Comprendre ICMPv6 et NDP
[OK] Gérer multicast (IGMP)
[OK] Diagnostiquer problèmes réseau
[OK] Utiliser outils avancés (MTR, Wireshark)
[OK] Résoudre exercices pratiques


[PRO] APPLICATIONS PRATIQUES

Ces connaissances vous permettent de :

[OK] Diagnostiquer connectivité réseau
[OK] Sécuriser infrastructure (attaques ARP)
[OK] Optimiser performances
[OK] Identifier goulots d'étranglement
[OK] Configurer multicast
[OK] Troubleshooter IPv4/IPv6
[OK] Analyser captures paquets
[OK] Réussir certifications (CCNA)


[LIEN] LIEN AVEC AUTRES CHAPITRES

Protocoles auxiliaires complètent :

- Chapitre 4 : Couche 3 OSI (IP utilise ICMP/ARP)
- Chapitre 7 : MAC (ARP résout IP->MAC)
- Chapitre 8 : IPv4 (ARP/ICMP essentiels)
- Chapitre 9 : IPv6 (NDP/ICMPv6)
- Chapitres suivants : DNS, DHCP (utilisent ces protocoles)


-> PROCHAINS CHAPITRES

La suite logique :

- Chapitre 11 : DNS (résolution noms)
- Chapitre 12 : DHCP (configuration automatique)
- Chapitre 13 : NAT (traduction adresses)
- Chapitre 14 : Services réseau


[RAPIDE] EXCELLENT TRAVAIL !

Les protocoles auxiliaires sont ESSENTIELS pour :
- Communication réseau
- Diagnostics
- Sécurité
- Performance

Vous maîtrisez maintenant ces outils FONDAMENTAUX !


═══════════════════════════════════════════════════════════
[GUIDE] FIN DU CHAPITRE 10 - PROTOCOLES RÉSEAU AUXILIAIRES
═══════════════════════════════════════════════════════════
"""

# ============================================================================
# CHAPITRE 10 : PROTOCOLES RÉSEAU AUXILIAIRES
# ============================================================================

"""
[OBJECTIF] OBJECTIFS DU CHAPITRE

Ce chapitre couvre les protocoles essentiels qui supportent IP :
[OK] ARP (Address Resolution Protocol)
[OK] ICMP (Internet Control Message Protocol)
[OK] ICMPv6 et NDP (Neighbor Discovery Protocol)
[OK] IGMP (Internet Group Management Protocol)
[OK] Diagnostics réseau (ping, traceroute)
[OK] Attaques et sécurité
[OK] Troubleshooting pratique

[IDEE] POURQUOI CES PROTOCOLES SONT CRUCIAUX ?

Ces protocoles sont ESSENTIELS pour le fonctionnement d'IP :
- ARP : Résolution IP->MAC (communication locale)
- ICMP : Diagnostics et messages d'erreur
- NDP : Remplace ARP en IPv6
- IGMP : Gestion groupes multicast

Sans eux, les réseaux IP ne fonctionneraient PAS !


[DOCS] PLAN DU CHAPITRE

PARTIE 1 :
1. ARP (Address Resolution Protocol)
2. Gratuitous ARP et Proxy ARP
3. Attaques ARP
4. ICMP (Internet Control Message Protocol)
5. Messages ICMP essentiels

PARTIE 2 :
6. Outils diagnostic (ping, traceroute)
7. ICMPv6 et NDP
8. IGMP (Multicast)
9. Troubleshooting
10. Exercices pratiques
"""


# ----------------------------------------------------------------------------
# [SYNC] PARTIE 1 : ARP (ADDRESS RESOLUTION PROTOCOL)
# ----------------------------------------------------------------------------

"""
ARP (ADDRESS RESOLUTION PROTOCOL)


RAPPEL PROBLÈME

Communication IP locale nécessite adresse MAC !

PC1 (192.168.1.10) veut envoyer vers PC2 (192.168.1.20)

PC1 connaît :
[OK] IP destination : 192.168.1.20
[X] MAC destination : ?

Solution : ARP résout IP -> MAC


FONCTIONNEMENT DÉTAILLÉ


ÉTAPE 1 : Vérification cache ARP
─────────────────────────────────

PC1 consulte d'abord son cache ARP local

Windows :
```
arp -a
```

Exemple cache :
```
Interface: 192.168.1.10 --- 0x5
  Adresse Internet      Adresse physique      Type
  192.168.1.1           00-11-22-33-44-55     dynamique
  192.168.1.15          AA-BB-CC-DD-EE-FF     dynamique
```

Si 192.168.1.20 présent -> Utilise MAC du cache [OK]
Si absent -> Processus ARP v


ÉTAPE 2 : ARP Request (Broadcast)
──────────────────────────────────

PC1 génère ARP Request

Trame Ethernet :
┌─────────────────────────────────────┐
│ MAC Dst : FF:FF:FF:FF:FF:FF (Broadcast)│
│ MAC Src : 00:1A:2B:3C:4D:5E (PC1)  │
│ Type : 0x0806 (ARP)                 │
└─────────────────────────────────────┘

Paquet ARP :
┌─────────────────────────────────────┐
│ Hardware Type : 1 (Ethernet)        │
│ Protocol Type : 0x0800 (IPv4)       │
│ HW Addr Length : 6 (MAC)            │
│ Protocol Addr Length : 4 (IPv4)     │
│ Operation : 1 (Request)             │
│ Sender MAC : 00:1A:2B:3C:4D:5E      │
│ Sender IP : 192.168.1.10            │
│ Target MAC : 00:00:00:00:00:00      │
│ Target IP : 192.168.1.20 <- Cherché  │
└─────────────────────────────────────┘

Question broadcast : "Qui a 192.168.1.20 ?"


ÉTAPE 3 : Réception par tous
─────────────────────────────

Broadcast -> TOUS équipements segment reçoivent

Chaque équipement examine Target IP :

PC2 (192.168.1.20) : "C'est moi !" -> Répondre
PC3 (192.168.1.30) : "Pas moi" -> Ignorer
PC4 (192.168.1.40) : "Pas moi" -> Ignorer


ÉTAPE 4 : ARP Reply (Unicast)
──────────────────────────────

PC2 envoie ARP Reply vers PC1

Trame Ethernet :
┌─────────────────────────────────────┐
│ MAC Dst : 00:1A:2B:3C:4D:5E (PC1)  │
│ MAC Src : 00:50:56:AB:CD:EF (PC2)  │
│ Type : 0x0806 (ARP)                 │
└─────────────────────────────────────┘

Paquet ARP :
┌─────────────────────────────────────┐
│ Operation : 2 (Reply)               │
│ Sender MAC : 00:50:56:AB:CD:EF      │
│ Sender IP : 192.168.1.20            │
│ Target MAC : 00:1A:2B:3C:4D:5E      │
│ Target IP : 192.168.1.10            │
└─────────────────────────────────────┘

Réponse : "192.168.1.20 = 00:50:56:AB:CD:EF"


ÉTAPE 5 : Mise à jour cache
────────────────────────────

PC1 ajoute/rafraîchit entrée dans cache ARP :

```
192.168.1.20    00-50-56-AB-CD-EF    dynamique
```

PC1 peut maintenant communiquer avec PC2 [OK]


CACHE ARP


STRUCTURE CACHE

Entrée typique :

┌──────────────┬──────────────────┬──────────┬────────┐
│  IP Address  │   MAC Address    │   Type   │  Age   │
├──────────────┼──────────────────┼──────────┼────────┤
│192.168.1.1   │00:11:22:33:44:55 │ Dynamic  │ 120s   │
│192.168.1.20  │00:50:56:AB:CD:EF │ Dynamic  │  30s   │
│192.168.1.100 │AA:BB:CC:DD:EE:FF │ Static   │   -    │
└──────────────┴──────────────────┴──────────┴────────┘


TYPES ENTRÉES

Dynamic (Dynamique) :
─────────────────────

Apprises automatiquement via ARP

Caractéristiques :
- Aging timer (expiration)
- Windows : 120-300s
- Linux : 60-1800s
- Supprimées si non utilisées


Static (Statique) :
───────────────────

Configurées manuellement

Caractéristiques :
- Permanentes (jusqu'à suppression/reboot)
- Priorité sur dynamiques
- Sécurité (évite ARP spoofing)

Configuration :

Windows :
```
arp -s 192.168.1.100 AA-BB-CC-DD-EE-FF
```

Linux :
```
arp -s 192.168.1.100 AA:BB:CC:DD:EE:FF
```

Cisco :
```
arp 192.168.1.100 AABB.CCDD.EEFF ARPA
```


COMMANDES ARP


Windows
═══════

Afficher cache :
```
arp -a
arp -a -N 192.168.1.10  (interface spécifique)
```

Ajouter entrée statique :
```
arp -s 192.168.1.100 AA-BB-CC-DD-EE-FF
```

Supprimer entrée :
```
arp -d 192.168.1.20
arp -d *  (tout vider)
```


Linux
═════

Afficher cache :
```
arp -n
arp -a
ip neighbor show
ip neigh show
```

Ajouter entrée statique :
```
arp -s 192.168.1.100 AA:BB:CC:DD:EE:FF
ip neighbor add 192.168.1.100 lladdr AA:BB:CC:DD:EE:FF dev eth0
```

Supprimer entrée :
```
arp -d 192.168.1.20
ip neighbor del 192.168.1.20 dev eth0
ip neighbor flush all
```


Cisco
═════

Afficher cache :
```
show arp
show ip arp
show ip arp 192.168.1.20
show ip arp vlan 10
```

Ajouter entrée statique :
```
arp 192.168.1.100 AABB.CCDD.EEFF ARPA
```

Vider cache :
```
clear arp-cache
clear ip arp 192.168.1.20
```


OPTIMISATIONS ARP


Apprentissage bidirectionnel
─────────────────────────────

ARP Request enrichit caches des deux côtés :

PC1 envoie ARP Request :
- Sender IP : 192.168.1.10
- Sender MAC : 00:1A:2B:3C:4D:5E

PC2 reçoit Request :
-> Ajoute à son cache : 192.168.1.10 = 00:1A:2B:3C:4D:5E

Avant même de répondre ! [OK]

Avantage : Réduit ARP traffic (réponse future évitée)


GRATUITOUS ARP
══════════════

Voir section suivante (détaillé)


PROXY ARP
═════════

Voir section suivante (détaillé)
"""


# ----------------------------------------------------------------------------
# [ANNONCE] PARTIE 2 : GRATUITOUS ARP ET PROXY ARP
# ----------------------------------------------------------------------------

"""
GRATUITOUS ARP


DÉFINITION

ARP Request SPÉCIAL :
- Sender IP = Target IP (même adresse)
- But : Annoncer/Vérifier sa propre IP


FORMAT

Trame Ethernet :
- MAC Dst : FF:FF:FF:FF:FF:FF (Broadcast)
- MAC Src : 00:1A:2B:3C:4D:5E

Paquet ARP :
- Operation : 1 (Request) ou 2 (Reply)
- Sender IP : 192.168.1.10
- Sender MAC : 00:1A:2B:3C:4D:5E
- Target IP : 192.168.1.10 <- MÊME que Sender !
- Target MAC : 00:00:00:00:00:00 (Request) ou FF:FF:FF:FF:FF:FF (Reply)


USAGES


1. DÉTECTION DUPLICATE IP
══════════════════════════

PC démarre avec IP 192.168.1.10

Processus :
1. PC envoie Gratuitous ARP pour 192.168.1.10
2. Si RÉPONSE reçue -> Duplicate IP détecté ! [X]
3. Si pas de réponse -> IP unique [OK]

Action si duplicate :
- Windows : Alerte "Conflit adresse IP"
- Linux : Logs (dmesg)
- Désactivation interface ou génération nouvelle IP


2. MISE À JOUR CACHES
══════════════════════

Scénario : Carte réseau changée (nouvelle MAC, même IP)

Serveur : 192.168.1.100
- Ancienne MAC : AA:BB:CC:DD:EE:FF
- Nouvelle MAC : 11:22:33:44:55:66

Sans Gratuitous ARP :
- Clients ont cache : 192.168.1.100 = AA:BB:CC:DD:EE:FF
- Nouvelle MAC invisible
- Communication échoue [X]

Avec Gratuitous ARP :
1. Serveur envoie Gratuitous ARP
2. Tous clients mettent à jour cache : 192.168.1.100 = 11:22:33:44:55:66
3. Communication restaurée immédiatement [OK]


3. FAILOVER / HAUTE DISPONIBILITÉ
══════════════════════════════════

VRRP (Virtual Router Redundancy Protocol) :

Routeur Master : 192.168.1.1 (IP virtuelle)
- MAC virtuelle : 00:00:5E:00:01:01

Routeur Master tombe :
-> Routeur Backup devient Master
-> Envoie Gratuitous ARP pour 192.168.1.1
-> Clients mettent à jour cache
-> Basculement transparent (< 1s) [OK]


4. LOAD BALANCERS
═════════════════

Load Balancer prend IP d'un serveur :
-> Gratuitous ARP annonce changement
-> Trafic redirigé


GÉNÉRATION GRATUITOUS ARP

Linux :
```
arping -U -I eth0 192.168.1.10
```

Windows (PowerShell - indirect) :
```
Test-Connection -ComputerName 192.168.1.10 -Count 1
```


PROXY ARP


DÉFINITION

Routeur répond ARP Request pour réseau distant


SCÉNARIO TYPIQUE

Mauvaise configuration masque :

PC1 : 192.168.1.10/16 (ERREUR - devrait être /24)
Routeur : 192.168.1.1/24
PC2 : 192.168.2.20/24

PC1 pense PC2 est local (masque /16)
-> Envoie ARP Request pour 192.168.2.20

Routeur voit requête :
- Connaît route vers 192.168.2.0/24
- Active Proxy ARP : Répond avec SA PROPRE MAC

PC1 envoie paquets vers MAC routeur
-> Routeur route vers 192.168.2.0/24
-> Communication fonctionne ! [OK]

Mais problème MASQUÉ (config incorrecte)


FONCTIONNEMENT

1. PC1 -> ARP Request broadcast : "Qui a 192.168.2.20 ?"
2. Routeur reçoit (même si pas destinataire)
3. Routeur vérifie : Route vers 192.168.2.0/24 existe ?
4. Si oui -> Routeur répond avec SA MAC
5. PC1 envoie paquets vers routeur
6. Routeur route normalement


CONFIGURATION

Cisco - Activer Proxy ARP (actif par défaut) :
```
interface GigabitEthernet0/1
 ip proxy-arp
```

Désactiver :
```
interface GigabitEthernet0/1
 no ip proxy-arp
```

Vérifier :
```
show ip interface GigabitEthernet0/1 | include Proxy
```


Linux - Activer :
```
echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp
```

Permanent (sysctl.conf) :
```
net.ipv4.conf.eth0.proxy_arp = 1
```


AVANTAGES PROXY ARP

[OK] Transparence (masque erreurs config)
[OK] Simplification (pas besoin route explicite client)


INCONVÉNIENTS PROXY ARP

[X] Masque problèmes configuration
[X] Sécurité réduite (ARP spoofing facilité)
[X] Trafic ARP accru
[X] Complexité diagnostic

Recommandation : DÉSACTIVER sauf besoin spécifique
"""


# ----------------------------------------------------------------------------
# [ATTENTION] PARTIE 3 : ATTAQUES ARP
# ----------------------------------------------------------------------------

"""
ATTAQUES ARP


VULNÉRABILITÉS ARP

ARP = Protocole SANS AUTHENTIFICATION

Problèmes :
[X] Pas de vérification identité
[X] Accepte réponses non-sollicitées
[X] Met à jour cache automatiquement
[X] Broadcast (écoutable par tous)


ATTAQUE 1 : ARP SPOOFING / POISONING
═════════════════════════════════════

But : Intercepter trafic (Man-in-the-Middle)


MÉTHODE

Réseau normal :
PC1 (192.168.1.10) <-> Routeur (192.168.1.1) <-> Internet

Cache ARP PC1 :
```
192.168.1.1    00:11:22:33:44:55  (MAC routeur)
```

Attaquant (192.168.1.50) envoie faux ARP Reply :
- Sender IP : 192.168.1.1
- Sender MAC : AA:AA:AA:AA:AA:AA (MAC attaquant)

PC1 met à jour cache :
```
192.168.1.1    AA:AA:AA:AA:AA:AA  (MAC attaquant) [X]
```

PC1 envoie paquets vers attaquant :
PC1 -> [Attaquant] -> Routeur -> Internet
         ^
    INTERCEPTION !

Attaquant peut :
- Lire trafic (sniffing)
- Modifier trafic
- Injecter contenu


ATTAQUE BIDIRECTIONNELLE

Empoisonner les DEUX caches :

PC1 cache :
```
192.168.1.1 -> MAC Attaquant
```

Routeur cache :
```
192.168.1.10 -> MAC Attaquant
```

Tout trafic PC1 <-> Routeur passe par attaquant !


OUTILS ATTAQUE

Ettercap :
```
ettercap -T -M arp:remote /192.168.1.1// /192.168.1.10//
```

arpspoof (dsniff) :
```
arpspoof -i eth0 -t 192.168.1.10 192.168.1.1
arpspoof -i eth0 -t 192.168.1.1 192.168.1.10
```

Cain & Abel (Windows - GUI)


DÉTECTION

Signes :
- Latence accrue
- Connexions HTTPS invalides (certificat)
- Duplicate MAC (plusieurs IPs -> même MAC)

Outils détection :

arpwatch (Linux) :
```
sudo arpwatch -i eth0
```

Alerte si :
- Nouvelle MAC pour IP connue
- IP flip-flop

XArp (Windows - GUI)

Wireshark :
- Filtrer ARP
- Chercher requêtes suspectes


CONTRE-MESURES


1. DYNAMIC ARP INSPECTION (DAI)
───────────────────────────────

Switch valide paquets ARP

Principe :
- Utilise DHCP Snooping binding table
- Vérifie cohérence IP-MAC-Port
- Bloque ARP invalides

Cisco :
```
ip dhcp snooping
ip dhcp snooping vlan 1-100

ip arp inspection vlan 1-100

interface GigabitEthernet0/1
 description UPLINK-ROUTEUR
 ip arp inspection trust

interface range GigabitEthernet0/2-24
 description ACCESS-PORTS
 (pas de trust - validation active)
```

Résultat : ARP spoofing bloqué [OK]


2. STATIC ARP ENTRIES
─────────────────────

Entrées statiques non modifiables

Exemple serveur critique :
```
arp -s 192.168.1.100 AA:BB:CC:DD:EE:FF
```

Avantage : Immunité ARP poisoning
Inconvénient : Gestion manuelle lourde


3. ARP SPOOFING DETECTION TOOLS
────────────────────────────────

Surveillance continue :

arpwatch (Linux)
XArp (Windows)
ARPGuard


4. CHIFFREMENT
──────────────

HTTPS, SSH, VPN :
- Trafic chiffré
- Attaquant voit flux mais pas contenu
- Certificats invalides alertent utilisateur


5. SEGMENTATION RÉSEAU
──────────────────────

VLANs séparés :
- Utilisateurs
- Serveurs
- Invités
- IoT

Limite impact attaque (confinement VLAN)


6. PORT SECURITY
────────────────

Limite MACs par port :

Cisco :
```
interface GigabitEthernet0/5
 switchport port-security
 switchport port-security maximum 2
 switchport port-security violation restrict
 switchport port-security mac-address sticky
```

Empêche attaquant usurper multiple MACs


ATTAQUE 2 : ARP FLOODING
═════════════════════════

But : Saturer switch (table MAC)

Méthode :
1. Générer milliers ARP avec MACs aléatoires
2. Table MAC switch sature
3. Switch flooding permanent (comme hub)
4. Attaquant peut sniffer tout trafic

Outil : macof (dsniff)

Contre-mesure : Port Security (limite MACs/port)


ATTAQUE 3 : ARP REQUEST FLOODING
═════════════════════════════════

But : DoS (déni de service)

Méthode : Inonder réseau de ARP Requests
-> Saturation bande passante
-> CPU équipements surchargé

Contre-mesure : Storm Control (limite broadcasts)

Cisco :
```
interface GigabitEthernet0/1
 storm-control broadcast level 10.00
 storm-control action shutdown
```


BONNES PRATIQUES SÉCURITÉ ARP

[OK] Activer DAI (Dynamic ARP Inspection)
[OK] DHCP Snooping prerequis
[OK] Port Security sur ports accès
[OK] Storm Control broadcasts
[OK] Monitoring ARP (arpwatch)
[OK] Segmentation VLANs
[OK] Chiffrement trafic sensible (HTTPS, VPN)
[OK] Sensibilisation utilisateurs
[OK] Mises à jour firmware switches
"""


# ----------------------------------------------------------------------------
# [MESSAGE] PARTIE 4 : ICMP (INTERNET CONTROL MESSAGE PROTOCOL)
# ----------------------------------------------------------------------------

"""
ICMP (INTERNET CONTROL MESSAGE PROTOCOL)


RÔLE

Protocole complémentaire IP (Couche 3)

Fonctions :
- Messages d'erreur (destination unreachable)
- Diagnostics (ping, traceroute)
- Informations réseau

Standard : RFC 792 (1981)

Protocol Number : 1 (dans header IP)


CARACTÉRISTIQUES

[OK] Encapsulé dans IP
[OK] Pas de transport fiable (best effort)
[OK] Utilisé par routeurs ET hôtes
[OK] Essentiel diagnostics


FORMAT PAQUET ICMP

┌────────────────────────────────────┐
│ Type (8 bits)                      │
├────────────────────────────────────┤
│ Code (8 bits)                      │
├────────────────────────────────────┤
│ Checksum (16 bits)                 │
├────────────────────────────────────┤
│ Rest of Header (32 bits)           │
│ (variable selon Type/Code)         │
├────────────────────────────────────┤
│ Data (variable)                    │
│ (copy of original IP header +      │
│  first 8 bytes of original payload)│
└────────────────────────────────────┘


TYPES ICMP ESSENTIELS

┌──────┬──────┬────────────────────────────┐
│ Type │ Code │         Message            │
├──────┼──────┼────────────────────────────┤
│  0   │  0   │ Echo Reply (pong)          │
│  3   │ 0-15 │ Destination Unreachable    │
│  5   │ 0-3  │ Redirect                   │
│  8   │  0   │ Echo Request (ping)        │
│  11  │ 0-1  │ Time Exceeded              │
│  12  │ 0-2  │ Parameter Problem          │
└──────┴──────┴────────────────────────────┘


TYPE 0/8 : ECHO REPLY / REQUEST (PING)
═══════════════════════════════════════

Usage : Test connectivité


Echo Request (Type 8, Code 0)
─────────────────────────────

Source envoie requête ping

Paquet ICMP Echo Request :
- Type : 8
- Code : 0
- Identifier : 1234 (aléatoire)
- Sequence Number : 1 (incrémenté)
- Data : Données test (32-64 octets)


Echo Reply (Type 0, Code 0)
───────────────────────────

Destination répond pong

Paquet ICMP Echo Reply :
- Type : 0
- Code : 0
- Identifier : 1234 (même que request)
- Sequence Number : 1 (même que request)
- Data : Copie des données request


Utilisation (ping) :
```
ping 8.8.8.8
```

Sortie :
```
Reply from 8.8.8.8: bytes=32 time=15ms TTL=57
Reply from 8.8.8.8: bytes=32 time=14ms TTL=57
Reply from 8.8.8.8: bytes=32 time=16ms TTL=57
```


TYPE 3 : DESTINATION UNREACHABLE
═════════════════════════════════

Routeur/hôte ne peut livrer paquet

Codes (15 types) :


Code 0 : Net Unreachable
─────────────────────────

Réseau destination inaccessible

Routeur n'a pas de route


Code 1 : Host Unreachable
──────────────────────────

Hôte sur réseau n'existe pas

Routeur ne reçoit pas ARP Reply


Code 2 : Protocol Unreachable
──────────────────────────────

Protocole non supporté

Ex: ICMP vers hôte sans ICMP


Code 3 : Port Unreachable
──────────────────────────

Port UDP fermé

Application n'écoute pas sur port


Code 4 : Fragmentation Needed but DF Set
─────────────────────────────────────────

Paquet trop gros, DF (Don't Fragment) activé

Utilisé Path MTU Discovery


Code 13 : Communication Administratively Prohibited
────────────────────────────────────────────────────

Firewall/ACL bloque

Exemple :
```
ping 10.0.0.1
Reply from 192.168.1.1: Destination host unreachable
```


TYPE 5 : REDIRECT
═════════════════

Routeur informe meilleur next-hop

Codes :


Code 0 : Redirect for Network
Code 1 : Redirect for Host
Code 2 : Redirect for ToS & Network
Code 3 : Redirect for ToS & Host

Scénario :

PC -> Routeur A -> Routeur B -> Destination

Routeur A dit PC :
"Pour cette destination, envoie directement à Routeur B"

PC met à jour table routage (route host)


TYPE 11 : TIME EXCEEDED
═══════════════════════

TTL atteint 0


Code 0 : TTL Expired in Transit
────────────────────────────────

Paquet traversé trop de routeurs

Chaque routeur décrémente TTL
TTL = 0 -> Paquet jeté + ICMP Time Exceeded

Utilisé par traceroute !


Code 1 : Fragment Reassembly Time Exceeded
───────────────────────────────────────────

Timeout réassemblage fragments

Tous fragments pas reçus dans délai


TYPE 12 : PARAMETER PROBLEM
════════════════════════════

Erreur header IP


Code 0 : Pointer indicates error
─────────────────────────────────

Champ IP header invalide

Pointer indique offset erreur


FILTRAGE ICMP

Débat sécurité : Bloquer ICMP ?


Arguments BLOQUER :
───────────────────

[X] Reconnaissance réseau (ping scan)
[X] DoS (ICMP flood)
[X] Covert channels


Arguments AUTORISER :
─────────────────────

[OK] Diagnostics essentiels (ping, traceroute)
[OK] Path MTU Discovery (nécessaire)
[OK] Messages erreur utiles


Recommandation :
────────────────

[OK] Autoriser Echo Request/Reply (ping)
[OK] Autoriser Destination Unreachable
[OK] Autoriser Time Exceeded (traceroute)
[OK] Autoriser Fragmentation Needed
[OK] Rate-limit (éviter flood)
[X] Bloquer Redirect (sécurité)
[X] Bloquer Timestamp

Cisco ACL exemple :
```
access-list 100 permit icmp any any echo
access-list 100 permit icmp any any echo-reply
access-list 100 permit icmp any any time-exceeded
access-list 100 permit icmp any any unreachable
access-list 100 permit icmp any any packet-too-big
access-list 100 deny icmp any any redirect
```
"""


# ============================================================================
# [OBJECTIF] FIN PARTIE 1 DU CHAPITRE 10
# ============================================================================

"""
[DOCS] RÉCAPITULATIF PARTIE 1

Vous avez appris :

[OK] ARP DÉTAILLÉ :
   - Processus complet (Request/Reply)
   - Cache ARP (dynamic/static)
   - Commandes (Windows/Linux/Cisco)
   - Optimisations
   
[OK] GRATUITOUS ARP :
   - Détection duplicate IP
   - Mise à jour caches
   - Failover / VRRP
   
[OK] PROXY ARP :
   - Fonctionnement
   - Avantages/Inconvénients
   - Configuration
   
[OK] ATTAQUES ARP :
   - ARP Spoofing/Poisoning
   - Man-in-the-Middle
   - Détection et contre-mesures
   - DAI, Port Security
   
[OK] ICMP FONDAMENTAUX :
   - Rôle et format
   - Echo Request/Reply (ping)
   - Destination Unreachable
   - Time Exceeded
   - Redirect
   - Filtrage ICMP


-> SUITE : PARTIE 2

Dans le prochain fichier :
- Outils diagnostic (ping, traceroute détaillés)
- ICMPv6 et NDP approfondi
- IGMP (multicast)
- Troubleshooting pratique
- Exercices complets
"""

# ============================================================================
# CHAPITRE 11 : DNS (DOMAIN NAME SYSTEM) - PARTIE 2
# ============================================================================


# ----------------------------------------------------------------------------
# [SAUVEGARDE] PARTIE 6 : CACHE DNS
# ----------------------------------------------------------------------------

"""
CACHE DNS


PRINCIPE

Stockage temporaire réponses DNS

Objectifs :
[OK] Performance (réponse instantanée)
[OK] Réduction charge serveurs
[OK] Résilience (disponibilité si serveur down)


NIVEAUX CACHE


1. CACHE NAVIGATEUR
═══════════════════

Navigateur web cache résolutions

Durée : Courte (minutes)

Chrome :
```
chrome://net-internals/#dns
```

Firefox :
```
about:networking#dns
```

Vider :
- Chrome : Settings -> Privacy -> Clear browsing data -> Cached images
- Firefox : Options -> Privacy -> Clear Data


2. CACHE SYSTÈME D'EXPLOITATION
════════════════════════════════

OS cache résolutions pour toutes applications


Windows
───────

Service : DNS Client

Voir cache :
```
ipconfig /displaydns
```

Vider cache :
```
ipconfig /flushdns
```

Sortie exemple :
```
Windows IP Configuration

    google.com
    ----------------------------------------
    Record Name . . . . . : google.com
    Record Type . . . . . : 1 (A)
    Time To Live  . . . . : 237
    Data Length . . . . . : 4
    Section . . . . . . . : Answer
    A (Host) Record . . . : 142.250.185.46
```


Linux
─────

Dépend distribution

systemd-resolved (Ubuntu/Debian récents) :
```
systemd-resolve --statistics
systemd-resolve --flush-caches
```

nscd (anciennes versions) :
```
sudo /etc/init.d/nscd restart
```

dnsmasq (si installé) :
```
sudo systemctl restart dnsmasq
```


macOS
─────

Vider cache :
```
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder
```


3. CACHE RÉSOLVEUR RÉCURSIF
════════════════════════════

Serveur DNS récursif (8.8.8.8, etc.) cache

Durée : TTL défini par enregistrement

Exemple :
```
www.google.com.  300  IN  A  142.250.185.46
                 ^
                TTL = 300s (5 minutes)
```

Après 300s : Cache expire, nouvelle résolution


TTL (TIME TO LIVE)


FONCTIONNEMENT

TTL = Durée validité cache (secondes)

Serveur autoritaire définit TTL

Exemple :
```
exemple.com.    3600    IN    A    93.184.216.34
```

TTL = 3600s = 1 heure

Résolveur cache 1h, puis re-résout


CHOIX TTL

Court (300-600s) :
──────────────────

Avantages :
[OK] Changements propagés rapidement
[OK] Flexibilité (migration serveurs)

Inconvénients :
[X] Charge serveurs accrue
[X] Latence (résolutions fréquentes)

Usage : Sites en changement, failover rapide


Long (3600-86400s) :
────────────────────

Avantages :
[OK] Performance maximale
[OK] Réduction charge
[OK] Résilience

Inconvénients :
[X] Changements lents à propager
[X] Migration complexe

Usage : Sites stables


Très long (86400+s) :
─────────────────────

[ATTENTION] Déconseillé généralement

Risques :
[X] Changements prennent jours
[X] Problèmes migration
[X] Urgences impossibles

Exception : Records très stables (NS, MX entreprise)


STRATÉGIE TTL

Avant migration :
1. Réduire TTL (ex: 300s)
2. Attendre ancien TTL expiré
3. Migration
4. Vérifier stabilité
5. Ré-augmenter TTL


NEGATIVE CACHING

Cache réponses NXDOMAIN (domaine inexistant)

Évite requêtes répétées domaines invalides

TTL négatif : Défini dans SOA (champ minimum)

Exemple :
```
exemple.com.  IN  SOA  ns1.exemple.com. admin.exemple.com. (
    2024011501  ; Serial
    7200        ; Refresh
    3600        ; Retry
    1209600     ; Expire
    86400 )     ; Minimum TTL (négatif) <- 24h
```

NXDOMAIN caché 86400s (24h)


CACHE POISONING

Attaque : Injecter fausses données dans cache

Exemple :
1. Attaquant envoie fausses réponses DNS
2. Résolveur cache : google.com -> IP_attaquant
3. Victimes redirigées vers attaquant

Contre-mesures :
[OK] Randomisation port source (> 1024)
[OK] Query ID aléatoire (16 bits)
[OK] Validation réponses
[OK] DNSSEC (signatures cryptographiques)

Attaque historique : Dan Kaminsky (2008)
-> Corrections généralisées


DNSSEC (Voir partie suivante)
"""


# ----------------------------------------------------------------------------
# [VERROUILLE] PARTIE 7 : DNSSEC (DNS SECURITY EXTENSIONS)
# ----------------------------------------------------------------------------

"""
DNSSEC (DNS SECURITY EXTENSIONS)


PROBLÈME DNS CLASSIQUE

DNS = NON sécurisé nativement

Vulnérabilités :
[X] Pas d'authentification réponses
[X] Cache poisoning
[X] Man-in-the-middle
[X] Interception/modification

Conséquence : Confiance aveugle


SOLUTION : DNSSEC

RFC 4033-4035 (2005)

Principe : Signatures cryptographiques

[OK] Authentification origine
[OK] Intégrité données
[OK] Chaîne de confiance (root -> TLD -> domaine)

[ATTENTION] DNSSEC ne chiffre PAS (confidentialité)
Seulement : Authentification + Intégrité


FONCTIONNEMENT


SIGNATURES NUMÉRIQUES

Chaque enregistrement signé

Enregistrement original :
```
www.exemple.com.  3600  IN  A  93.184.216.34
```

Signature (RRSIG) :
```
www.exemple.com.  3600  IN  RRSIG  A 8 3 3600 (
    20240201000000  ; Expiration signature
    20240115000000  ; Début validité
    12345           ; Key Tag
    exemple.com.
    base64signature... )
```

Vérification :
1. Résolveur reçoit A + RRSIG
2. Récupère clé publique (DNSKEY)
3. Vérifie signature
4. Si OK -> Donnée authentique [OK]
5. Si KO -> Donnée rejetée [X]


TYPES CLÉS


ZSK (Zone Signing Key)
──────────────────────

Signe enregistrements zone

Courte durée (mois)

Changement fréquent (rotation)


KSK (Key Signing Key)
─────────────────────

Signe DNSKEY (dont ZSK)

Longue durée (années)

Changement rare

Publiée dans DS record parent


CHAÎNE DE CONFIANCE

Root (.) signé
   v
.com signé (DS dans root)
   v
exemple.com signé (DS dans .com)
   v
www.exemple.com signé

Validation :
1. Résolveur a trust anchor root
2. Valide .com via DS root
3. Valide exemple.com via DS .com
4. Valide www.exemple.com via DNSKEY exemple.com

Toute rupture -> SERVFAIL


NOUVEAUX ENREGISTREMENTS


DNSKEY
──────

Clés publiques zone

```
exemple.com.  3600  IN  DNSKEY  256 3 8 (
    base64publickey... )  ; ZSK

exemple.com.  3600  IN  DNSKEY  257 3 8 (
    base64publickey... )  ; KSK (flag 257)
```


DS (Delegation Signer)
──────────────────────

Hash KSK, publié dans zone parente

```
exemple.com.  3600  IN  DS  12345 8 2 (
    hash_of_KSK... )
```

Établit chaîne confiance


RRSIG (Resource Record Signature)
──────────────────────────────────

Signature enregistrements

Un RRSIG par RRset (ensemble même type)


NSEC / NSEC3
────────────

Preuve non-existence

NSEC : Chaîne ordonnée domaines
NSEC3 : Version hashée (privacy)

Prouve : "X n'existe pas entre A et B"


AVANTAGES DNSSEC

[OK] Authentification (origine vérifiée)
[OK] Intégrité (données non-modifiées)
[OK] Protection cache poisoning
[OK] Confiance cryptographique


INCONVÉNIENTS DNSSEC

[X] Complexité déploiement
[X] Gestion clés (rotation)
[X] Taille réponses accrue (-> TCP)
[X] Pas de confidentialité
[X] Adoption partielle (~30% domaines)


VALIDATION DNSSEC

Résolveur doit activer validation

Google DNS (8.8.8.8) : [OK] Valide
Cloudflare (1.1.1.1) : [OK] Valide

Tester validation :
```
dig @8.8.8.8 +dnssec exemple.com
```

Flag "ad" (authenticated data) -> Validé [OK]


DÉPLOIEMENT DNSSEC

Étapes :

1. Générer clés (ZSK + KSK)
```
dnssec-keygen -a RSASHA256 -b 2048 -n ZONE exemple.com  (ZSK)
dnssec-keygen -a RSASHA256 -b 4096 -f KSK -n ZONE exemple.com  (KSK)
```

2. Signer zone
```
dnssec-signzone -o exemple.com exemple.com.zone
```

3. Publier DS chez registrar
   - Extraire DS du KSK
   - Soumettre à registrar (.com, .fr, etc.)

4. Activer DNSSEC serveurs
   - Servir zone signée
   - Activer NSEC/NSEC3

5. Rotation clés
   - ZSK : Tous les 1-3 mois
   - KSK : Tous les 1-2 ans


OUTILS VALIDATION

Online :
- dnsviz.net (visualisation)
- dnssec-analyzer.verisignlabs.com

Ligne commande :
```
dig +dnssec exemple.com
drill -D exemple.com
delv @8.8.8.8 exemple.com
```


DNS-OVER-TLS (DOT) & DNS-OVER-HTTPS (DOH)

Compléments DNSSEC

DOT (RFC 7858) :
- Chiffre requêtes DNS
- Port 853/TCP
- Privacy (ISP ne voit pas requêtes)

DOH (RFC 8484) :
- DNS via HTTPS
- Port 443/TCP
- Indistinguable trafic web

DNSSEC + DOT/DOH = Sécurité maximale
- DNSSEC : Authentification/Intégrité
- DOT/DOH : Confidentialité
"""


# ----------------------------------------------------------------------------
# [CONFIG] PARTIE 8 : CONFIGURATION DNS
# ----------------------------------------------------------------------------

"""
CONFIGURATION SERVEURS DNS


BIND (BERKELEY INTERNET NAME DOMAIN)


Serveur DNS référence (open-source)

Plus utilisé mondialement


INSTALLATION

Debian/Ubuntu :
```
sudo apt install bind9 bind9utils bind9-doc
```

RedHat/CentOS :
```
sudo yum install bind bind-utils
```


FICHIERS CONFIGURATION

/etc/bind/named.conf (Debian)
/etc/named.conf (RedHat)

Structure :
```
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
```


named.conf.options
──────────────────

Options globales

```
options {
    directory "/var/cache/bind";
    
    // Forwarders
    forwarders {
        8.8.8.8;
        8.8.4.4;
    };
    
    // Recursion (résolveur)
    recursion yes;
    allow-recursion { 192.168.1.0/24; localhost; };
    
    // Transferts zones
    allow-transfer { none; };
    
    // Version (sécurité - masquer)
    version none;
    
    // DNSSEC
    dnssec-validation auto;
    
    // IPv6
    listen-on-v6 { any; };
};
```


named.conf.local
────────────────

Zones locales

Zone autoritaire primaire :
```
zone "exemple.com" {
    type master;
    file "/etc/bind/zones/db.exemple.com";
    allow-transfer { 192.168.1.2; };  // Secondaire
    notify yes;
};
```

Zone autoritaire secondaire :
```
zone "exemple.com" {
    type slave;
    file "/var/cache/bind/db.exemple.com";
    masters { 192.168.1.1; };
};
```

Zone reverse :
```
zone "1.168.192.in-addr.arpa" {
    type master;
    file "/etc/bind/zones/db.192.168.1";
};
```


FICHIER ZONE

/etc/bind/zones/db.exemple.com

```
$TTL 3600
$ORIGIN exemple.com.

@       IN      SOA     ns1.exemple.com. admin.exemple.com. (
                        2024011501  ; Serial
                        7200        ; Refresh
                        3600        ; Retry
                        1209600     ; Expire
                        86400 )     ; Minimum TTL

; Name servers
        IN      NS      ns1.exemple.com.
        IN      NS      ns2.exemple.com.

; Mail servers
        IN      MX      10      mail.exemple.com.
        IN      MX      20      mail2.exemple.com.

; A records
ns1     IN      A       93.184.216.10
ns2     IN      A       93.184.216.11
mail    IN      A       93.184.216.20
mail2   IN      A       93.184.216.21
www     IN      A       93.184.216.34
@       IN      A       93.184.216.34

; AAAA records
www     IN      AAAA    2606:2800:220:1:248:1893:25c8:1946

; CNAME records
ftp     IN      CNAME   www.exemple.com.
blog    IN      CNAME   www.exemple.com.

; TXT records
@       IN      TXT     "v=spf1 mx -all"
_dmarc  IN      TXT     "v=DMARC1; p=reject; rua=mailto:dmarc@exemple.com"

; Wildcard
*       IN      A       93.184.216.50
```


FICHIER ZONE REVERSE

/etc/bind/zones/db.192.168.1

```
$TTL 3600
$ORIGIN 1.168.192.in-addr.arpa.

@       IN      SOA     ns1.exemple.com. admin.exemple.com. (
                        2024011501
                        7200
                        3600
                        1209600
                        86400 )

        IN      NS      ns1.exemple.com.
        IN      NS      ns2.exemple.com.

10      IN      PTR     ns1.exemple.com.
11      IN      PTR     ns2.exemple.com.
20      IN      PTR     mail.exemple.com.
34      IN      PTR     www.exemple.com.
```


VÉRIFICATION CONFIGURATION

Vérifier syntaxe :
```
named-checkconf
named-checkconf /etc/bind/named.conf.local
```

Vérifier fichier zone :
```
named-checkzone exemple.com /etc/bind/zones/db.exemple.com
```

Sortie si OK :
```
zone exemple.com/IN: loaded serial 2024011501
OK
```


DÉMARRAGE SERVICE

Démarrer :
```
sudo systemctl start bind9
```

Activer au boot :
```
sudo systemctl enable bind9
```

Status :
```
sudo systemctl status bind9
```

Redémarrer après changement :
```
sudo systemctl restart bind9
```

Recharger zones (sans restart) :
```
sudo rndc reload
sudo rndc reload exemple.com
```


LOGS

Debian : /var/log/syslog
RedHat : /var/log/messages

Logs spécifiques Bind :
```
tail -f /var/log/syslog | grep named
```


AUTRES SERVEURS DNS


PowerDNS
════════

Moderne, haute performance

Backend : MySQL, PostgreSQL, SQLite, etc.

Web interface : PowerAdmin

Usage : Hébergeurs, DNS grands volumes


Unbound
═══════

Résolveur récursif moderne

Léger, sécurisé (validateur DNSSEC natif)

Pas autoritaire (uniquement récursif)


dnsmasq
═══════

Léger, simple

Résolveur + DHCP

Usage : Réseaux petits/moyens, routers


Microsoft DNS
═════════════

Intégré Active Directory

Windows Server

Interface graphique

Intégration zones AD


CONFIGURATION CLIENT


Windows
═══════

GUI : Network Adapter Properties -> IPv4 -> DNS

Ligne commande :
```
netsh interface ipv4 set dns "Ethernet" static 192.168.1.1
netsh interface ipv4 add dns "Ethernet" 192.168.1.2 index=2
```


Linux
═════

/etc/resolv.conf (temporaire) :
```
nameserver 192.168.1.1
nameserver 8.8.8.8
search exemple.com
```

systemd-resolved (permanent) :
```
sudo systemctl edit systemd-resolved
```

NetworkManager :
```
nmcli connection modify eth0 ipv4.dns "192.168.1.1 8.8.8.8"
```


macOS
═════

System Preferences -> Network -> Advanced -> DNS

Ligne commande :
```
networksetup -setdnsservers Wi-Fi 192.168.1.1 8.8.8.8
```
"""


# ----------------------------------------------------------------------------
# [OUTIL] PARTIE 9 : TROUBLESHOOTING DNS
# ----------------------------------------------------------------------------

"""
TROUBLESHOOTING DNS


OUTILS DIAGNOSTIC


DIG (DOMAIN INFORMATION GROPER)
════════════════════════════════

Outil Linux/macOS principal

Installation Debian/Ubuntu :
```
sudo apt install dnsutils
```


Requête basique :
```
dig google.com
```

Sortie :
```
; <<>> DiG 9.18.1 <<>> google.com
;; QUESTION SECTION:
;google.com.                    IN      A

;; ANSWER SECTION:
google.com.             300     IN      A       142.250.185.46

;; Query time: 15 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Mon Jan 15 10:30:00 CET 2024
;; MSG SIZE  rcvd: 55
```


Requête spécifique serveur :
```
dig @8.8.8.8 google.com
```


Type enregistrement spécifique :
```
dig google.com A
dig google.com AAAA
dig google.com MX
dig google.com NS
dig google.com TXT
dig google.com ANY
```


Réponse courte :
```
dig +short google.com
```

Sortie :
```
142.250.185.46
```


Trace résolution :
```
dig +trace google.com
```

Affiche étapes : Root -> TLD -> Autoritaire


DNSSEC validation :
```
dig +dnssec google.com
```


Reverse lookup :
```
dig -x 142.250.185.46
```


NSLOOKUP
════════

Windows / Cross-platform

Basique :
```
nslookup google.com
```

Sortie :
```
Server:  dns.google
Address:  8.8.8.8

Non-authoritative answer:
Name:    google.com
Address:  142.250.185.46
```


Serveur spécifique :
```
nslookup google.com 8.8.8.8
```


Type spécifique :
```
nslookup -type=MX google.com
nslookup -type=NS google.com
```


Mode interactif :
```
nslookup
> server 8.8.8.8
> set type=MX
> google.com
> exit
```


HOST
════

Simple, rapide (Linux/macOS)

```
host google.com
host -t MX google.com
host -t NS google.com
host -a google.com  (tous types)
```


DRILL
═════

Alternative dig (ldns-utils)

```
drill google.com
drill -D google.com  (DNSSEC trace)
```


COMMANDES SYSTÈME


Windows
═══════

Voir cache :
```
ipconfig /displaydns
```

Vider cache :
```
ipconfig /flushdns
```

Voir configuration :
```
ipconfig /all
```


Linux
═════

systemd-resolved :
```
resolvectl status
resolvectl query google.com
resolvectl flush-caches
```

Fichier configuration :
```
cat /etc/resolv.conf
```


SCÉNARIOS TROUBLESHOOTING


Scénario 1 : Domaine ne résout pas
═══════════════════════════════════

Symptôme : "Server not found" ou "NXDOMAIN"


ÉTAPE 1 : Vérifier DNS configuré
```
ipconfig /all (Windows)
cat /etc/resolv.conf (Linux)
```

DNS présent ?


ÉTAPE 2 : Test résolution directe
```
dig @8.8.8.8 exemple.com
```

Si succès -> Problème DNS local
Si échec -> Problème autoritaire


ÉTAPE 3 : Vérifier autoritaire
```
dig exemple.com NS
dig @ns1.exemple.com exemple.com
```

Serveur autoritaire répond ?


ÉTAPE 4 : Vérifier propagation
```
dig @a.gtld-servers.net exemple.com NS
```

TLD connaît domaine ?


ÉTAPE 5 : Whois
```
whois exemple.com
```

Domaine enregistré ? Expiré ?


Scénario 2 : Résolution lente
══════════════════════════════

Symptôme : Navigation web lente


ÉTAPE 1 : Mesurer temps résolution
```
dig google.com | grep "Query time"
```

> 100ms : Lent


ÉTAPE 2 : Tester DNS alternatifs
```
dig @8.8.8.8 google.com
dig @1.1.1.1 google.com
```

Comparer performances


ÉTAPE 3 : Vérifier cache
```
dig google.com
dig google.com  (2e fois - devrait être instantané)
```

Cache fonctionne ?


ÉTAPE 4 : Test connectivité DNS
```
ping 8.8.8.8
traceroute 8.8.8.8
```

Latence réseau vers DNS ?


ÉTAPE 5 : Vérifier timeouts
Wireshark : Filtrer port 53
Chercher retransmissions


Scénario 3 : Changement DNS pas pris en compte
═══════════════════════════════════════════════

Symptôme : Modification faite mais ancienne IP


ÉTAPE 1 : Vérifier TTL
```
dig exemple.com
```

Noter TTL restant


ÉTAPE 2 : Vider caches
Client :
```
ipconfig /flushdns (Windows)
resolvectl flush-caches (Linux)
```

Navigateur : Vider cache


ÉTAPE 3 : Tester autoritaire
```
dig @ns1.exemple.com exemple.com
```

Serveur autoritaire à jour ?


ÉTAPE 4 : Vérifier serial SOA
```
dig exemple.com SOA
```

Serial incrémenté ?


ÉTAPE 5 : Forcer propagation secondaires
Serveur primaire :
```
rndc notify exemple.com
```


Scénario 4 : Email bounces (MX problème)
═════════════════════════════════════════

Symptôme : Emails rejetés


ÉTAPE 1 : Vérifier MX
```
dig exemple.com MX
```

MX records présents ?


ÉTAPE 2 : Vérifier priorité
```
dig exemple.com MX
```

Priorités correctes ?


ÉTAPE 3 : Vérifier A/AAAA serveur mail
```
dig mail.exemple.com A
```

Serveur mail résout ?


ÉTAPE 4 : Tester connectivité mail
```
telnet mail.exemple.com 25
```

Port 25 accessible ?


ÉTAPE 5 : Vérifier SPF/DMARC
```
dig exemple.com TXT
dig _dmarc.exemple.com TXT
```

Records anti-spam corrects ?


ANALYSE AVANCÉE


Wireshark
═════════

Filtrer DNS :
```
udp.port == 53 or tcp.port == 53
dns
```

Analyser :
- Requêtes/Réponses
- Temps réponse
- Erreurs (NXDOMAIN, SERVFAIL)
- Retransmissions


tcpdump
═══════

```
sudo tcpdump -i eth0 port 53
sudo tcpdump -i eth0 -nn port 53 -w dns.pcap
```


OUTILS ONLINE

DNSdumpster : Reconnaissance domaine
DNSViz : Visualisation DNSSEC
IntoDNS : Santé DNS
MXToolbox : Test MX, blacklists
WhatsMyDNS : Propagation mondiale


PROBLÈMES COURANTS


Firewall bloque port 53
───────────────────────

Symptôme : Timeouts

Test :
```
telnet 8.8.8.8 53
```

Solution : Autoriser UDP/TCP 53


TTL trop court/long
───────────────────

Court : Charge serveur
Long : Changements lents

Solution : Équilibrer (3600s recommandé)


DNS hijacking
─────────────

Symptôme : Redirections suspectes

Vérifier :
```
ipconfig /all
cat /etc/resolv.conf
```

DNS inconnus ? Malware possible


Split-brain DNS
───────────────

Interne ≠ Externe

Symptôme : Résultats différents selon réseau

Solution : Cohérence ou documentation


BONNES PRATIQUES

[OK] Minimum 2 serveurs NS (redondance)
[OK] Géographiquement séparés
[OK] TTL approprié (3600s défaut)
[OK] Monitoring (uptime, performance)
[OK] DNSSEC si possible
[OK] Logs activés
[OK] Backup configurations
[OK] Tests réguliers
"""


# ----------------------------------------------------------------------------
# [COURS] EXERCICES PRATIQUES - CHAPITRE 11
# ----------------------------------------------------------------------------

"""
[IDEE] EXERCICES


═══════════════════════════════════════════════════════════
EXERCICE 1 : ANALYSE ENREGISTREMENTS DNS
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Requête dig :

```
$ dig exemple.com

; <<>> DiG 9.18.1 <<>> exemple.com
;; QUESTION SECTION:
;exemple.com.                   IN      A

;; ANSWER SECTION:
exemple.com.            3600    IN      A       93.184.216.34

;; AUTHORITY SECTION:
exemple.com.            172800  IN      NS      ns1.exemple.com.
exemple.com.            172800  IN      NS      ns2.exemple.com.

;; ADDITIONAL SECTION:
ns1.exemple.com.        3600    IN      A       93.184.216.10
ns2.exemple.com.        3600    IN      A       93.184.216.11

;; Query time: 25 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Mon Jan 15 10:30:00 CET 2024
;; MSG SIZE  rcvd: 128
```

Questions :

1. Quelle est l'IP de exemple.com ?
2. Combien de temps sera cachée cette réponse ?
3. Quels sont les serveurs DNS autoritaires ?
4. Pourquoi ns1 et ns2 apparaissent en ADDITIONAL ?
5. D'où vient cette réponse ?


[OK] CORRECTION EXERCICE 1

1. IP DE EXEMPLE.COM
   ─────────────────

   ANSWER SECTION :
   exemple.com.    3600    IN    A    93.184.216.34
   
   IP : 93.184.216.34 [OK]


2. DURÉE CACHE
   ───────────

   TTL dans ANSWER SECTION : 3600 secondes
   
   3600s = 60 minutes = 1 heure
   
   Réponse cachée : 1 heure [OK]
   
   Après 1h : Cache expire, nouvelle résolution requise


3. SERVEURS DNS AUTORITAIRES
   ──────────────────────────

   AUTHORITY SECTION :
   
   NS1 : ns1.exemple.com (93.184.216.10)
   NS2 : ns2.exemple.com (93.184.216.11)
   
   2 serveurs NS (redondance) [OK]
   
   TTL NS records : 172800s = 48 heures
   (Normal : TTL NS plus long que A)


4. GLUE RECORDS (ADDITIONAL)
   ──────────────────────────

   ADDITIONAL SECTION contient IPs des NS
   
   Raison : Éviter dépendance circulaire
   
   Sans glue records :
   - Pour résoudre exemple.com, besoin ns1.exemple.com
   - Pour résoudre ns1.exemple.com, besoin exemple.com
   -> Circularité ! [X]
   
   Avec glue records :
   - IPs NS fournies directement
   - Pas de résolution supplémentaire
   -> Efficient [OK]


5. ORIGINE RÉPONSE
   ───────────────

   SERVER: 192.168.1.1#53(192.168.1.1)
   
   Réponse vient de : 192.168.1.1 port 53
   
   C'est le résolveur récursif local (probablement routeur/gateway)
   
   
   Analyse complète :
   
   Query time: 25 msec
   -> 25ms pour obtenir réponse
   -> Probablement cache hit (rapide)
   
   Si première résolution (cache miss) :
   -> Temps serait plus long (100-200ms)
   -> Résolveur interrogerait root -> TLD -> autoritaire



═══════════════════════════════════════════════════════════
EXERCICE 2 : DIAGNOSTIC PROBLÈME DNS
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Utilisateur signale : "Je ne peux pas accéder à www.entreprise.com"

Tests effectués :

```
$ ping 203.0.113.50
64 bytes from 203.0.113.50: icmp_seq=1 ttl=64 time=15 ms
(succès)

$ ping www.entreprise.com
ping: www.entreprise.com: Name or service not known
(échec)

$ dig www.entreprise.com
;; connection timed out; no servers could be reached
```

Configuration réseau :
```
IP: 192.168.1.100/24
Gateway: 192.168.1.1
DNS: 192.168.1.1
```

Questions :

1. Quel est le problème ?
2. Quelle est la cause probable ?
3. Comment diagnostiquer davantage ?
4. Quelle est la solution ?


[OK] CORRECTION EXERCICE 2

1. PROBLÈME IDENTIFIÉ
   ───────────────────

   Symptômes :
   [OK] Ping IP directe (203.0.113.50) : OK
   [X] Ping nom (www.entreprise.com) : ÉCHEC
   [X] dig : "connection timed out"
   
   Diagnostic : PROBLÈME DNS pur [OK]
   
   Connectivité IP : Fonctionnelle
   Résolution noms : Non-fonctionnelle


2. CAUSE PROBABLE
   ──────────────

   "connection timed out; no servers could be reached"
   
   dig ne peut contacter 192.168.1.1:53
   
   Causes possibles :
   
   a) Serveur DNS down/injoignable
      - 192.168.1.1 ne répond pas sur port 53
   
   b) Firewall bloque port 53
      - Entre client et 192.168.1.1
   
   c) Service DNS arrêté
      - 192.168.1.1 actif mais pas service DNS
   
   d) Configuration DNS incorrecte
      - IP DNS erronée (peu probable ici)
   
   
   Cause la plus probable : (a) ou (c)
   -> Serveur DNS 192.168.1.1 ne répond pas


3. DIAGNOSTIC APPROFONDI
   ─────────────────────

   TEST 1 : Vérifier joignabilité DNS
   ───────────────────────────────────
   
   ```
   ping 192.168.1.1
   ```
   
   Si succès : Serveur actif, mais service DNS problème
   Si échec : Serveur complètement down
   
   
   TEST 2 : Vérifier port 53
   ─────────────────────────
   
   ```
   telnet 192.168.1.1 53
   ```
   ou
   ```
   nc -zv 192.168.1.1 53
   ```
   
   Si connexion : Port 53 ouvert
   Si refusé/timeout : Port 53 fermé/filtré
   
   
   TEST 3 : Tester DNS alternatif
   ───────────────────────────────
   
   ```
   dig @8.8.8.8 www.entreprise.com
   ```
   
   Si succès : DNS public fonctionne
   -> Problème spécifique 192.168.1.1
   
   
   TEST 4 : Vérifier fichier hosts
   ────────────────────────────────
   
   Linux/Mac :
   ```
   cat /etc/hosts
   ```
   
   Windows :
   ```
   type C:\Windows\System32\drivers\etc\hosts
   ```
   
   Vérifier pas d'entrée conflictuelle
   
   
   TEST 5 : Vérifier cache DNS
   ────────────────────────────
   
   Windows :
   ```
   ipconfig /flushdns
   ```
   
   Linux :
   ```
   resolvectl flush-caches
   ```
   
   Retry après vidage


4. SOLUTIONS
   ─────────

   SOLUTION IMMÉDIATE : DNS alternatif
   ────────────────────────────────────
   
   Changer DNS temporairement :
   
   Windows :
   ```
   netsh interface ipv4 set dns "Ethernet" static 8.8.8.8
   netsh interface ipv4 add dns "Ethernet" 1.1.1.1 index=2
   ```
   
   Linux :
   ```
   sudo nano /etc/resolv.conf
   nameserver 8.8.8.8
   nameserver 1.1.1.1
   ```
   
   Résultat : Accès immédiat restauré [OK]
   
   
   SOLUTION PERMANENTE : Réparer 192.168.1.1
   ──────────────────────────────────────────
   
   CAS A : Service DNS arrêté (routeur)
   
   1. Accéder interface admin routeur (http://192.168.1.1)
   2. Vérifier service DNS actif
   3. Redémarrer routeur si nécessaire
   4. Ou activer "DNS relay" / "DNS forwarding"
   
   
   CAS B : Firewall bloque
   
   1. Vérifier règles firewall routeur
   2. Autoriser UDP/TCP port 53 LAN -> routeur
   3. Tester après modification
   
   
   CAS C : Serveur DNS externe problème
   
   Si routeur forward vers serveur externe down :
   1. Configurer routeur avec DNS publics (8.8.8.8, 1.1.1.1)
   2. Ou configurer clients directement
   
   
   VÉRIFICATION FINALE :
   
   ```
   ipconfig /flushdns
   dig www.entreprise.com
   ping www.entreprise.com
   ```
   
   Tout doit fonctionner [OK]



═══════════════════════════════════════════════════════════
EXERCICE 3 : CRÉATION ZONE DNS
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Vous devez configurer DNS pour le domaine "monentreprise.fr"

Besoins :
- Serveurs NS : ns1.monentreprise.fr (203.0.113.10)
                ns2.monentreprise.fr (203.0.113.11)
- Site web : www.monentreprise.fr (203.0.113.20)
- Site web IPv6 : 2001:db8:1::20
- Email : mail.monentreprise.fr (203.0.113.30)
         Priorité 10
         Backup mail2.monentreprise.fr (203.0.113.31)
         Priorité 20
- FTP : Alias vers www
- SPF : "v=spf1 mx -all"
- Wildcard : *.monentreprise.fr -> 203.0.113.50

Questions :

1. Créer fichier zone complet
2. Vérifier syntaxe
3. Quelle commande pour recharger zone ?


[OK] CORRECTION EXERCICE 3

1. FICHIER ZONE COMPLET
   ────────────────────

   /etc/bind/zones/db.monentreprise.fr
   
   ```
   ; Zone file for monentreprise.fr
   ; Date: 2024-01-15
   
   $TTL 3600
   $ORIGIN monentreprise.fr.
   
   ;; SOA Record
   @       IN      SOA     ns1.monentreprise.fr. admin.monentreprise.fr. (
                           2024011501  ; Serial (YYYYMMDDnn)
                           7200        ; Refresh (2 hours)
                           3600        ; Retry (1 hour)
                           1209600     ; Expire (2 weeks)
                           86400 )     ; Minimum TTL (1 day)
   
   ;; Name Server Records
   @       IN      NS      ns1.monentreprise.fr.
   @       IN      NS      ns2.monentreprise.fr.
   
   ;; Mail Exchange Records
   @       IN      MX      10      mail.monentreprise.fr.
   @       IN      MX      20      mail2.monentreprise.fr.
   
   ;; A Records (IPv4)
   ns1     IN      A       203.0.113.10
   ns2     IN      A       203.0.113.11
   www     IN      A       203.0.113.20
   mail    IN      A       203.0.113.30
   mail2   IN      A       203.0.113.31
   @       IN      A       203.0.113.20
   
   ;; AAAA Records (IPv6)
   www     IN      AAAA    2001:db8:1::20
   @       IN      AAAA    2001:db8:1::20
   
   ;; CNAME Records
   ftp     IN      CNAME   www.monentreprise.fr.
   
   ;; TXT Records
   @       IN      TXT     "v=spf1 mx -all"
   
   ;; Wildcard Record
   *       IN      A       203.0.113.50
   ```
   
   
   EXPLICATIONS LIGNE PAR LIGNE :
   
   $TTL 3600
   -> TTL par défaut : 1 heure (recommandé)
   
   $ORIGIN monentreprise.fr.
   -> Domaine racine (évite répéter)
   
   @ = monentreprise.fr. (raccourci)
   
   SOA :
   - Serial : YYYYMMDD01 (incrémenter à chaque modif)
   - Refresh : 2h (secondaires vérifient)
   - Retry : 1h (si refresh échoue)
   - Expire : 2 semaines (validité sans primaire)
   - Minimum TTL : 1 jour (négatif cache)
   
   NS Records :
   - Minimum 2 (redondance)
   - Doivent avoir A records (glue)
   
   MX Records :
   - Priorité 10 (primaire)
   - Priorité 20 (backup)
   - Plus bas = préféré
   
   A Records :
   - www ET @ (avec/sans www)
   - NS doivent avoir A (glue records)
   
   AAAA :
   - IPv6 pour www et apex
   
   CNAME :
   - ftp -> www (alias)
   - [ATTENTION] CNAME ne peut coexister avec autre type
   
   TXT :
   - SPF anti-spam
   
   Wildcard * :
   - Catch-all pour sous-domaines non-définis
   - test.monentreprise.fr -> 203.0.113.50


2. VÉRIFICATION SYNTAXE
   ────────────────────

   Vérifier configuration générale :
   ```
   sudo named-checkconf
   ```
   
   Si erreur : Affiche ligne problème
   Si OK : Pas de sortie
   
   
   Vérifier fichier zone :
   ```
   sudo named-checkzone monentreprise.fr /etc/bind/zones/db.monentreprise.fr
   ```
   
   Sortie attendue :
   ```
   zone monentreprise.fr/IN: loaded serial 2024011501
   OK
   ```
   
   Erreurs courantes détectées :
   - Point manquant fin FQDN
   - Serial non-incrémenté
   - CNAME coexistant avec autre type
   - Syntaxe SOA incorrecte
   - MX pointant vers IP (doit être nom)
   
   
   Vérifier glue records :
   ```
   dig @localhost monentreprise.fr NS
   dig @localhost ns1.monentreprise.fr A
   dig @localhost ns2.monentreprise.fr A
   ```
   
   NS doivent résoudre [OK]


3. RECHARGER ZONE
   ──────────────

   Méthode 1 : Reload spécifique zone (RECOMMANDÉ)
   ────────────────────────────────────────────────
   
   ```
   sudo rndc reload monentreprise.fr
   ```
   
   Avantages :
   [OK] Pas d'interruption service
   [OK] Rapide
   [OK] Seulement cette zone
   
   
   Méthode 2 : Reload toutes zones
   ────────────────────────────────
   
   ```
   sudo rndc reload
   ```
   
   Recharge toutes zones modifiées
   
   
   Méthode 3 : Restart service (ÉVITER)
   ─────────────────────────────────────
   
   ```
   sudo systemctl restart bind9
   ```
   
   Inconvénients :
   [X] Interruption brève service
   [X] Cache perdu
   [X] Connexions coupées
   
   Utiliser uniquement si reload échoue
   
   
   VÉRIFICATION APRÈS RELOAD :
   
   ```
   sudo rndc status
   ```
   
   Vérifier serial incrementé :
   ```
   dig @localhost monentreprise.fr SOA
   ```
   
   Serial doit correspondre fichier [OK]
   
   
   TEST COMPLET :
   
   ```
   dig @localhost monentreprise.fr A
   dig @localhost www.monentreprise.fr A
   dig @localhost monentreprise.fr MX
   dig @localhost ftp.monentreprise.fr
   dig @localhost test.monentreprise.fr  (wildcard)
   ```
   
   Tous doivent retourner valeurs correctes [OK]



═══════════════════════════════════════════════════════════
FIN DES EXERCICES
═══════════════════════════════════════════════════════════
"""


# ============================================================================
# [DOCS] CONCLUSION CHAPITRE 11
# ============================================================================

"""
[BRAVO] FÉLICITATIONS !

Vous avez terminé le Chapitre 11 : DNS (Domain Name System)


[GUIDE] RÉCAPITULATIF COMPLET

PARTIE 1 : FONDAMENTAUX
───────────────────────

[OK] INTRODUCTION :
   - Problème résolu (noms -> IPs)
   - Histoire (HOSTS.TXT -> DNS)
   - Architecture distribuée
   
[OK] HIÉRARCHIE :
   - Structure arborescente
   - Root (.) -> TLD -> Domaines
   - FQDN et zones
   
[OK] ENREGISTREMENTS :
   - A/AAAA (IPv4/IPv6)
   - CNAME (alias)
   - MX (email)
   - NS (serveurs)
   - PTR (reverse)
   - SOA, TXT, SRV, CAA
   
[OK] RÉSOLUTION :
   - Récursive vs itérative
   - Processus complet (cache -> root -> TLD -> autoritaire)
   - Glue records
   
[OK] SERVEURS :
   - Autoritaires (primaire/secondaire)
   - Récursifs
   - Root servers
   - Transferts zones


PARTIE 2 : AVANCÉ
─────────────────

[OK] CACHE :
   - Niveaux (navigateur, OS, résolveur)
   - TTL (durée validité)
   - Stratégies
   - Cache poisoning
   
[OK] DNSSEC :
   - Signatures cryptographiques
   - Chaîne de confiance
   - Types clés (ZSK, KSK)
   - Validation
   
[OK] CONFIGURATION :
   - BIND (installation, fichiers)
   - Zones autoritaires
   - PowerDNS, Unbound, dnsmasq
   - Configuration client
   
[OK] TROUBLESHOOTING :
   - dig, nslookup, host
   - Scénarios courants
   - Outils avancés
   - Bonnes pratiques


[OBJECTIF] COMPÉTENCES ACQUISES

Vous savez maintenant :

[OK] Comprendre architecture DNS complète
[OK] Lire et interpréter enregistrements
[OK] Tracer résolution DNS
[OK] Configurer serveur DNS (BIND)
[OK] Créer fichiers zones
[OK] Diagnostiquer problèmes DNS
[OK] Utiliser dig/nslookup efficacement
[OK] Comprendre DNSSEC
[OK] Optimiser cache et TTL
[OK] Résoudre exercices pratiques


[PRO] APPLICATIONS PRATIQUES

Ces connaissances vous permettent de :

[OK] Gérer domaines professionnels
[OK] Configurer serveurs DNS autoritaires
[OK] Troubleshooter problèmes résolution
[OK] Optimiser performances DNS
[OK] Sécuriser avec DNSSEC
[OK] Implémenter haute disponibilité
[OK] Diagnostiquer problèmes email (MX)
[OK] Réussir certifications (CCNA, Network+)


[LIEN] LIEN AVEC AUTRES CHAPITRES

DNS est central pour :

- Chapitre 4 : Couche Application (DNS = service app)
- Chapitre 8 : IPv4 (résolution noms -> IPv4)
- Chapitre 9 : IPv6 (AAAA records, IPv6 transport)
- Chapitre 10 : Protocoles (utilise UDP/TCP)
- Chapitres suivants : Email, Web, Services


-> PROCHAINS CHAPITRES

La suite logique :

- Chapitre 12 : DHCP (configuration auto)
- Chapitre 13 : NAT (traduction adresses)
- Chapitre 14 : Services applicatifs (HTTP, FTP)
- Chapitre 15 : Email (SMTP, POP, IMAP)


[RAPIDE] EXCELLENT TRAVAIL !

DNS est l'INFRASTRUCTURE CRITIQUE de l'Internet.
Sans DNS, Internet serait INUTILISABLE !

Vous maîtrisez maintenant :
- Architecture DNS mondiale
- Configuration serveurs
- Troubleshooting expert
- Sécurité (DNSSEC)

Compétence ESSENTIELLE pour tout professionnel réseau !


═══════════════════════════════════════════════════════════
[GUIDE] FIN DU CHAPITRE 11 - DNS
═══════════════════════════════════════════════════════════
"""

# ============================================================================
# CHAPITRE 12 : DHCP (DYNAMIC HOST CONFIGURATION PROTOCOL)
# ============================================================================

"""
[OBJECTIF] OBJECTIFS DU CHAPITRE

[OK] Principe et rôle DHCP
[OK] Processus DORA (Discover, Offer, Request, Acknowledge)
[OK] Baux DHCP (leases)
[OK] Options DHCP
[OK] DHCP Relay
[OK] DHCPv6
[OK] Configuration serveur DHCP
[OK] Troubleshooting
[OK] Exercices pratiques

[IDEE] POURQUOI DHCP EST CRUCIAL ?

DHCP automatise configuration réseau :
- Attribution IP automatique
- Configuration DNS, passerelle
- Simplifie gestion (PME -> Datacenter)
- Évite conflits IP
- Mobilité (laptops, smartphones)

Sans DHCP : Configuration manuelle de MILLIERS de machines !
"""


# ----------------------------------------------------------------------------
# [LISTE] PARTIE 1 : INTRODUCTION DHCP
# ----------------------------------------------------------------------------

"""
DHCP (DYNAMIC HOST CONFIGURATION PROTOCOL)


PROBLÈME RÉSOLU

Configuration IP manuelle :
[X] Fastidieuse (milliers de machines)
[X] Erreurs (duplicate IP, typos)
[X] Maintenance lourde (changement DNS, gateway)
[X] Mobilité impossible

Solution : DHCP automatise TOUT [OK]


DÉFINITION

DHCP = Protocole attribution automatique paramètres réseau

Standard : RFC 2131 (1997)

Paramètres fournis :
- Adresse IP
- Masque sous-réseau
- Passerelle par défaut
- Serveurs DNS
- Serveurs NTP
- Options diverses (150+ possibles)


ARCHITECTURE

Composants :

SERVEUR DHCP
────────────
Gère pool d'adresses
Attribue configurations
Maintient baux (leases)

CLIENT DHCP
───────────
Demande configuration
Renouvelle bail
Libère adresse

RELAY AGENT (optionnel)
────────────────────────
Transmet requêtes DHCP entre réseaux
Permet serveur centralisé


PROTOCOLE

Transport : UDP
Ports : 
- Serveur : 67
- Client : 68

Broadcast initial (pas d'IP client)


HISTORIQUE

BOOTP (1985) :
- Ancêtre DHCP
- IP statique par MAC
- Pas de gestion dynamique

DHCP (1993) :
- RFC 1531 puis RFC 2131 (1997)
- Attribution dynamique
- Baux temporaires
- Options étendues

DHCPv6 (2003) :
- RFC 3315
- IPv6
- Coexiste avec SLAAC
"""


# ----------------------------------------------------------------------------
# [SYNC] PARTIE 2 : PROCESSUS DORA
# ----------------------------------------------------------------------------

"""
PROCESSUS DORA


4 ÉTAPES : DISCOVER -> OFFER -> REQUEST -> ACKNOWLEDGE


ÉTAPE 1 : DHCP DISCOVER (Client -> Broadcast)
═════════════════════════════════════════════

Client démarre sans IP

Message DHCP Discover :
- Src IP : 0.0.0.0
- Dst IP : 255.255.255.255 (broadcast)
- Src MAC : MAC_client
- Dst MAC : FF:FF:FF:FF:FF:FF
- Src Port : 68
- Dst Port : 67

Contenu :
- Transaction ID : Aléatoire (identification)
- Client MAC : 00:1A:2B:3C:4D:5E
- Options demandées (53, 1, 3, 6, etc.)

Broadcast -> Tous serveurs DHCP reçoivent


ÉTAPE 2 : DHCP OFFER (Serveur -> Client)
════════════════════════════════════════

Serveur propose configuration

Message DHCP Offer :
- Src IP : IP_serveur (192.168.1.1)
- Dst IP : 255.255.255.255 (broadcast) ou IP_proposée (unicast)
- Dst MAC : MAC_client
- Src Port : 67
- Dst Port : 68

Contenu :
- IP proposée : 192.168.1.100
- Masque : 255.255.255.0
- Passerelle : 192.168.1.1
- DNS : 8.8.8.8, 8.8.4.4
- Durée bail : 86400s (24h)
- Serveur DHCP : 192.168.1.1

Si plusieurs serveurs -> Client reçoit plusieurs offers


ÉTAPE 3 : DHCP REQUEST (Client -> Broadcast)
════════════════════════════════════════════

Client accepte une offre

Message DHCP Request :
- Src IP : 0.0.0.0 (pas encore d'IP)
- Dst IP : 255.255.255.255 (broadcast)
- Src Port : 68
- Dst Port : 67

Contenu :
- IP demandée : 192.168.1.100
- Serveur choisi : 192.168.1.1
- Transaction ID : Même que Discover

Broadcast -> Tous serveurs informés
- Serveur choisi : Prépare ACK
- Autres serveurs : Libèrent offers


ÉTAPE 4 : DHCP ACKNOWLEDGE (Serveur -> Client)
══════════════════════════════════════════════

Serveur confirme attribution

Message DHCP ACK :
- Src IP : 192.168.1.1
- Dst IP : 192.168.1.100 (unicast) ou broadcast
- Dst MAC : MAC_client

Contenu :
- IP confirmée : 192.168.1.100
- Durée bail : 86400s
- Configuration complète

Client configure interface [OK]


CHRONOLOGIE COMPLÈTE

```
Client (0.0.0.0)                                 Serveur (192.168.1.1)
     │                                                    │
     │ DISCOVER (broadcast)                              │
     │ "Besoin d'une IP"                                 │
     ├──────────────────────────────────────────────────>│
     │                                                    │
     │                              OFFER (broadcast)    │
     │                     "Voici 192.168.1.100"         │
     │<──────────────────────────────────────────────────┤
     │                                                    │
     │ REQUEST (broadcast)                               │
     │ "J'accepte 192.168.1.100"                         │
     ├──────────────────────────────────────────────────>│
     │                                                    │
     │                              ACK (unicast)        │
     │                     "Confirmé [OK]"                 │
     │<──────────────────────────────────────────────────┤
     │                                                    │
   (192.168.1.100) Configuration active                  │
```


MESSAGES SUPPLÉMENTAIRES


DHCP NAK (Negative Acknowledge)
════════════════════════════════

Serveur refuse requête

Raisons :
- IP déjà attribuée
- IP hors pool
- Bail expiré

Client recommence (DISCOVER)


DHCP DECLINE
════════════

Client refuse IP proposée

Raison :
- Duplicate IP détecté (ARP probe)

Serveur marque IP comme "bad"


DHCP RELEASE
════════════

Client libère IP volontairement

Cas :
- Shutdown propre
- Changement réseau
- ipconfig /release (Windows)

Serveur libère IP immédiatement


DHCP INFORM
═══════════

Client a IP statique mais veut options (DNS, etc.)

Serveur répond avec ACK contenant options
"""


# ----------------------------------------------------------------------------
# [TEMPS] PARTIE 3 : BAUX DHCP (LEASES)
# ----------------------------------------------------------------------------

"""
BAUX DHCP (LEASES)


PRINCIPE

Bail = Attribution temporaire

Durée typique : 1-7 jours

Avantages :
[OK] Récupération IPs inutilisées
[OK] Adaptation dynamique
[OK] Nettoyage automatique


CYCLE VIE BAIL

1. ATTRIBUTION (T0)
───────────────────

Bail démarre : 86400s (24h)

T1 = 50% durée = 43200s (12h)
T2 = 87.5% durée = 75600s (21h)


2. RENOUVELLEMENT T1 (50%)
──────────────────────────

À T1 (12h) :
Client envoie DHCP REQUEST (unicast) vers serveur original

Si ACK -> Bail renouvelé (nouveau T0) [OK]
Si pas de réponse -> Attend T2


3. REBINDING T2 (87.5%)
───────────────────────

À T2 (21h) :
Client envoie DHCP REQUEST (broadcast) vers tous serveurs

N'importe quel serveur peut répondre

Si ACK -> Bail renouvelé [OK]
Si pas de réponse -> Expire


4. EXPIRATION (100%)
────────────────────

À T_expire (24h) :
Bail expire

Client DOIT arrêter utiliser IP
-> Recommence DORA


ÉTATS CLIENT

INIT : Pas de config
SELECTING : Attente Offers
REQUESTING : Attente ACK
BOUND : Config active, bail valide
RENEWING : Renouvellement T1 (unicast)
REBINDING : Renouvellement T2 (broadcast)
INIT-REBOOT : Redémarrage (vérifie ancien bail)


DURÉE BAIL


Courte (1h-4h)
──────────────

Avantages :
[OK] Libération rapide IPs inutilisées
[OK] Changements config rapides

Inconvénients :
[X] Charge serveur (renouvellements fréquents)
[X] Trafic réseau

Usage : Wi-Fi public, hotspots


Moyenne (24h-7j)
────────────────

Compromis optimal

Recommandée réseaux entreprise


Longue (>7j)
────────────

Avantages :
[OK] Charge serveur minimale

Inconvénients :
[X] Pool peut saturer
[X] Changements config lents

Usage : Machines stables (serveurs)


Infinie
───────

Bail ne expire jamais

Déconseillé (équivalent statique)


BASE DE DONNÉES BAUX

Serveur maintient table :

┌────────────────────┬────────────┬──────────────────┬──────────────┐
│        IP          │    MAC     │   Expiration     │     État     │
├────────────────────┼────────────┼──────────────────┼──────────────┤
│ 192.168.1.100      │00:1A:2B:.. │ 2024-01-16 10:00 │   Active     │
│ 192.168.1.101      │AA:BB:CC:.. │ 2024-01-15 15:30 │   Active     │
│ 192.168.1.102      │11:22:33:.. │ 2024-01-14 12:00 │   Expired    │
└────────────────────┴────────────┴──────────────────┴──────────────┘

Fichiers :
- Linux (ISC DHCP) : /var/lib/dhcp/dhcpd.leases
- Windows : Base registre
"""


# ----------------------------------------------------------------------------
# [CONFIG] PARTIE 4 : OPTIONS DHCP
# ----------------------------------------------------------------------------

"""
OPTIONS DHCP


STRUCTURE

Option = Type-Length-Value (TLV)

Format :
- Code option (1 octet)
- Longueur (1 octet)
- Données (variable)


OPTIONS ESSENTIELLES

┌──────┬────────────────────────────┬───────────────────┐
│ Code │        Nom                 │     Usage         │
├──────┼────────────────────────────┼───────────────────┤
│  1   │ Subnet Mask                │ Masque            │
│  3   │ Router (Gateway)           │ Passerelle        │
│  6   │ DNS Servers                │ DNS               │
│  15  │ Domain Name                │ Domaine           │
│  42  │ NTP Servers                │ Serveurs temps    │
│  51  │ Lease Time                 │ Durée bail        │
│  53  │ DHCP Message Type          │ Type (DISCOVER..) │
│  54  │ DHCP Server Identifier     │ IP serveur        │
│  58  │ Renewal Time (T1)          │ Renouvellement    │
│  59  │ Rebinding Time (T2)        │ Rebinding         │
│  66  │ TFTP Server                │ Boot PXE          │
│  67  │ Bootfile Name              │ Fichier boot      │
│  121 │ Classless Static Routes    │ Routes statiques  │
│  150 │ TFTP Server (Cisco)        │ Téléphonie IP     │
└──────┴────────────────────────────┴───────────────────┘


EXEMPLES OPTIONS


Option 1 : Subnet Mask
──────────────────────

Code : 1
Data : 255.255.255.0

Client configure masque


Option 3 : Router
─────────────────

Code : 3
Data : 192.168.1.1

Client configure passerelle par défaut


Option 6 : DNS Servers
──────────────────────

Code : 6
Data : 8.8.8.8, 8.8.4.4

Client configure serveurs DNS (ordre)


Option 42 : NTP Servers
───────────────────────

Code : 42
Data : 129.6.15.28

Client configure serveur temps


Option 66/67 : PXE Boot
───────────────────────

Option 66 : TFTP Server : 192.168.1.50
Option 67 : Bootfile : pxelinux.0

Client boot réseau (images OS)


Option 121 : Routes statiques
─────────────────────────────

Code : 121
Data : Routes encodées

Exemple :
Route : 10.0.0.0/8 via 192.168.1.254

Client ajoute route statique


VENDOR-SPECIFIC OPTIONS

Option 43 : Vendor Specific Information

Sous-options par constructeur

Exemple Cisco (téléphones IP) :
Option 150 : Serveur TFTP pour config phones


OPTION OVERLOAD

Option 52 : Surcharge champs

Permet options supplémentaires en utilisant :
- Champ "file" (67 octets)
- Champ "sname" (64 octets)

Si 255+ options nécessaires
"""


# ----------------------------------------------------------------------------
# [BRIDGE_AT_NIGHT] PARTIE 5 : DHCP RELAY
# ----------------------------------------------------------------------------

"""
DHCP RELAY (IP HELPER)


PROBLÈME

DHCP utilise broadcast (255.255.255.255)

Broadcast ne traverse PAS routeurs

Sans relay :
- Serveur DHCP requis CHAQUE réseau
- Multiplication serveurs
- Gestion complexe


SOLUTION : RELAY AGENT

Relay = Proxy DHCP

Rôle :
1. Reçoit DHCP Discover (broadcast)
2. Convertit en unicast
3. Transmet vers serveur DHCP distant
4. Retransmet réponses vers client


FONCTIONNEMENT

Réseau A : 192.168.1.0/24
Réseau B : 192.168.2.0/24

Serveur DHCP : 192.168.1.1 (Réseau A)


Client Réseau B démarre :

1. Client -> DHCP Discover (broadcast)
   Réseau B seulement

2. Routeur (relay) reçoit Discover

3. Relay modifie paquet :
   - Src IP : 192.168.2.1 (interface relay)
   - Dst IP : 192.168.1.1 (serveur DHCP)
   - giaddr : 192.168.2.1 (gateway address)
   - Flags : unicast

4. Relay -> Serveur DHCP (unicast)

5. Serveur voit giaddr -> Sait réseau client
   Sélectionne pool 192.168.2.0/24
   Propose 192.168.2.100

6. Serveur -> Relay : DHCP Offer (unicast)

7. Relay -> Client : DHCP Offer (broadcast ou unicast)

8. Process continue (REQUEST, ACK)


CHAMP GIADDR

giaddr = Gateway IP Address

Rempli par relay agent

Indique au serveur :
- Réseau origine client
- IP relay pour retour

Serveur utilise giaddr pour :
- Sélectionner pool correct
- Router réponse


CONFIGURATION


Cisco
─────

```
interface GigabitEthernet0/1
 ip address 192.168.2.1 255.255.255.0
 ip helper-address 192.168.1.1
```

ip helper-address = Relay vers serveur


Linux (isc-dhcp-relay)
──────────────────────

```
SERVERS="192.168.1.1"
INTERFACES="eth1"
OPTIONS=""
```


Windows Server
──────────────

Rôle DHCP Relay Agent
Configuration GUI


MULTIPLE SERVEURS

Relay peut transmettre vers plusieurs serveurs :

```
interface GigabitEthernet0/1
 ip helper-address 192.168.1.1
 ip helper-address 192.168.1.2
```

Redondance DHCP [OK]


SÉCURITÉ

Option 82 : Relay Agent Information

Relay ajoute infos :
- Circuit ID : Port/Interface
- Remote ID : MAC relay

Serveur peut filtrer/valider

Protection contre rogue DHCP clients
"""


# ----------------------------------------------------------------------------
# - PARTIE 6 : DHCPv6
# ----------------------------------------------------------------------------

"""
DHCPv6


CONTEXTE IPv6

IPv6 a SLAAC (auto-configuration stateless)

Pourquoi DHCPv6 ?

SLAAC seul :
[OK] Attribution IP automatique
[X] Pas d'options (DNS limité via RA)
[X] Pas de gestion centralisée
[X] Pas d'audit/logs

DHCPv6 :
[OK] Options complètes (DNS, NTP, etc.)
[OK] Gestion centralisée
[OK] Logs attributions
[OK] Réservations


MODES DHCPv6


Stateful
────────

DHCPv6 attribue IP complète

RA flags : M=1 (Managed)

Process similaire DHCPv4


Stateless
─────────

SLAAC pour IP, DHCPv6 pour options

RA flags : M=0, O=1 (Other)

Compromis : Auto-config + Options centralisées


MESSAGES DHCPv6

Différents DHCPv4 :

- SOLICIT (vs Discover)
- ADVERTISE (vs Offer)
- REQUEST
- REPLY (vs ACK)
- RENEW
- REBIND
- RELEASE
- DECLINE
- INFORMATION-REQUEST (stateless)

Transport : UDP
Ports :
- Serveur : 547
- Client : 546

Multicast (pas broadcast) :
- All DHCP Agents : FF02::1:2


DUID (DHCP UNIQUE IDENTIFIER)

Remplace MAC

Format : Type + Data

Types :
- DUID-LLT : Link-layer + Time
- DUID-EN : Enterprise Number
- DUID-LL : Link-layer

Exemple :
00:01:00:01:1A:2B:3C:4D:5E:6F:70:71:72:73

Persistant (même si MAC change)


CONFIGURATION DHCPv6

ISC DHCP (dhcpd6.conf) :

```
subnet6 2001:db8:1::/64 {
    range6 2001:db8:1::100 2001:db8:1::200;
    option dhcp6.name-servers 2001:4860:4860::8888;
    option dhcp6.domain-search "exemple.com";
}
```


COEXISTENCE SLAAC/DHCPv6

Client IPv6 peut avoir :
- Adresse SLAAC (auto-générée)
- Adresse DHCPv6 (serveur)
- Adresses multiples simultanées [OK]

Préférence : Politique OS (RFC 6724)
"""


# ----------------------------------------------------------------------------
# [CONFIG] PARTIE 7 : CONFIGURATION SERVEUR DHCP
# ----------------------------------------------------------------------------

"""
CONFIGURATION SERVEUR DHCP


ISC DHCP SERVER (LINUX)


Installation Debian/Ubuntu
──────────────────────────

```
sudo apt install isc-dhcp-server
```


Fichier configuration
─────────────────────

/etc/dhcp/dhcpd.conf

```
# Options globales
option domain-name "exemple.com";
option domain-name-servers 8.8.8.8, 8.8.4.4;
default-lease-time 86400;  # 24h
max-lease-time 604800;     # 7j

# Subnet déclaration
subnet 192.168.1.0 netmask 255.255.255.0 {
    range 192.168.1.100 192.168.1.200;
    option routers 192.168.1.1;
    option subnet-mask 255.255.255.0;
    option broadcast-address 192.168.1.255;
}

# Réservation (IP fixe par MAC)
host pc-bureau {
    hardware ethernet 00:1A:2B:3C:4D:5E;
    fixed-address 192.168.1.50;
}

# Multiple subnets
subnet 192.168.2.0 netmask 255.255.255.0 {
    range 192.168.2.100 192.168.2.200;
    option routers 192.168.2.1;
}
```


Démarrer service
────────────────

```
sudo systemctl start isc-dhcp-server
sudo systemctl enable isc-dhcp-server
sudo systemctl status isc-dhcp-server
```


Logs
────

```
tail -f /var/log/syslog | grep dhcp
```


Leases
──────

```
cat /var/lib/dhcp/dhcpd.leases
```


WINDOWS SERVER


Installation rôle DHCP
──────────────────────

Server Manager -> Add Roles -> DHCP Server


Configuration GUI
─────────────────

DHCP Manager :
1. Créer Scope (pool)
2. Range : 192.168.1.100-192.168.1.200
3. Exclusions (IPs réservées)
4. Lease duration : 8 days
5. Options :
   - Router : 192.168.1.1
   - DNS : 8.8.8.8
6. Activer Scope


Réservations
────────────

Scope -> Reservations -> New
- MAC : 00-1A-2B-3C-4D-5E
- IP : 192.168.1.50
- Name : PC-Bureau


DNSMASQ (LÉGER)


Installation
────────────

```
sudo apt install dnsmasq
```


Configuration
─────────────

/etc/dnsmasq.conf

```
interface=eth0
dhcp-range=192.168.1.100,192.168.1.200,24h
dhcp-option=3,192.168.1.1    # Gateway
dhcp-option=6,8.8.8.8,8.8.4.4 # DNS
dhcp-host=00:1A:2B:3C:4D:5E,192.168.1.50 # Réservation
```


BONNES PRATIQUES

[OK] Pool dimensionné (150% besoins)
[OK] Exclusions (gateway, serveurs)
[OK] Réservations serveurs critiques
[OK] Redondance (2 serveurs DHCP)
[OK] Split scope (50-50 ou 80-20)
[OK] Monitoring baux
[OK] Backup configuration
[OK] Documentation
"""


# ----------------------------------------------------------------------------
# [OUTIL] PARTIE 8 : TROUBLESHOOTING DHCP
# ----------------------------------------------------------------------------

"""
TROUBLESHOOTING DHCP


PROBLÈMES COURANTS


1. Client n'obtient pas d'IP (APIPA)
═════════════════════════════════════

Symptôme : 169.254.x.x

Windows :
```
ipconfig
ipconfig /release
ipconfig /renew
```

Linux :
```
sudo dhclient -r eth0
sudo dhclient eth0
```

Vérifications :
[OK] Serveur DHCP actif ?
[OK] Pool disponible (pas épuisé) ?
[OK] Câble/Wi-Fi connecté ?
[OK] VLAN correct ?


2. IP incorrecte (mauvais réseau)
══════════════════════════════════

Vérifier :
- giaddr relay correct ?
- Subnet configuration serveur ?


3. Options manquantes (pas de gateway/DNS)
═══════════════════════════════════════════

Vérifier configuration options serveur

Test : ipconfig /all (voir options reçues)


OUTILS DIAGNOSTIC


Wireshark
═════════

Filtre : bootp or dhcp

Analyser DORA complet


tcpdump
═══════

```
sudo tcpdump -i eth0 port 67 or port 68 -vv
```


Logs serveur
════════════

Linux :
```
tail -f /var/log/syslog | grep dhcp
```

Windows : Event Viewer -> DHCP logs


COMMANDES CLIENT

Windows :
```
ipconfig /all        # Config actuelle
ipconfig /release    # Libérer IP
ipconfig /renew      # Obtenir nouvelle IP
```

Linux :
```
ip addr              # Config actuelle
sudo dhclient -r eth0  # Release
sudo dhclient -v eth0  # Renew (verbose)
```


EXERCICES PRATIQUES

EXERCICE 1 : Analyse DORA
═════════════════════════

Capture Wireshark DHCP :
1. Identifier 4 messages
2. Noter Transaction ID
3. Vérifier options (1, 3, 6)
4. Calculer temps total process


EXERCICE 2 : Configuration serveur
═══════════════════════════════════

Configurer serveur DHCP :
- Pool : 192.168.10.0/24
- Range : .100-.200
- Gateway : .1
- DNS : 8.8.8.8
- Lease : 12h
- Réservation : MAC -> .50


EXERCICE 3 : Troubleshooting
═════════════════════════════

Client APIPA (169.254.x.x)
Diagnostiquer et résoudre :
1. Vérifier serveur actif
2. Vérifier pool disponible
3. Tester relay (si applicable)
4. Analyser logs
"""


# ============================================================================
# [DOCS] CONCLUSION CHAPITRE 12
# ============================================================================

"""
[BRAVO] FÉLICITATIONS !

Chapitre 12 : DHCP terminé


[GUIDE] RÉCAPITULATIF

[OK] Principe DHCP (automatisation config)
[OK] DORA (Discover, Offer, Request, ACK)
[OK] Baux (leases, renouvellement)
[OK] Options DHCP (150+ possibles)
[OK] DHCP Relay (serveur centralisé)
[OK] DHCPv6 (stateful/stateless)
[OK] Configuration serveurs
[OK] Troubleshooting


[OBJECTIF] COMPÉTENCES ACQUISES

[OK] Comprendre process DHCP complet
[OK] Configurer serveur DHCP
[OK] Gérer baux et réservations
[OK] Implémenter relay
[OK] Diagnostiquer problèmes
[OK] Analyser captures DHCP


[PRO] APPLICATIONS

[OK] Déployer DHCP entreprise
[OK] Gérer mobilité utilisateurs
[OK] Centraliser configuration réseau
[OK] Automatiser provisioning
[OK] Réussir certifications (CCNA, Network+)


-> PROCHAINS CHAPITRES

- Chapitre 13 : NAT
- Chapitre 14 : Services applicatifs
- Chapitre 15 : Email


[RAPIDE] EXCELLENT TRAVAIL !

DHCP est ESSENTIEL réseaux modernes.
Vous maîtrisez maintenant cette technologie critique !


═══════════════════════════════════════════════════════════
[GUIDE] FIN DU CHAPITRE 12 - DHCP
═══════════════════════════════════════════════════════════
"""

# ============================================================================
# CHAPITRE 13 : NAT (NETWORK ADDRESS TRANSLATION)
# ============================================================================

"""
[OBJECTIF] OBJECTIFS DU CHAPITRE

[OK] Principe et rôle NAT
[OK] Types NAT (Static, Dynamic, PAT/Overload)
[OK] Fonctionnement détaillé
[OK] Tables NAT
[OK] Avantages et inconvénients
[OK] NAT et applications
[OK] Configuration NAT (Cisco, Linux)
[OK] Troubleshooting
[OK] NAT64 (IPv6/IPv4)
[OK] Exercices pratiques

[IDEE] POURQUOI NAT EST CRUCIAL ?

NAT a SAUVÉ Internet de l'épuisement IPv4 :
- Épuisement IPv4 en 2011
- NAT permet partage 1 IP publique par milliers
- 99% réseaux domestiques/PME utilisent NAT
- Solution temporaire devenue permanente
- Transition vers IPv6 en cours

Sans NAT : Internet IPv4 aurait CESSÉ de croître en 1990s !
"""


# ----------------------------------------------------------------------------
# [LISTE] PARTIE 1 : INTRODUCTION NAT
# ----------------------------------------------------------------------------

"""
NAT (NETWORK ADDRESS TRANSLATION)


PROBLÈME RÉSOLU

IPv4 : 4.3 milliards d'adresses
Population : 8 milliards
Appareils : 50+ milliards

PÉNURIE ADRESSES IPv4 !

Solution temporaire (1994) : NAT
-> Devenue solution permanente


DÉFINITION

NAT = Traduction adresses IP

Principe : 
- Réseau privé (192.168.x.x)
- 1 IP publique partagée
- Routeur traduit adresses

Analogie : Standard téléphonique
- Entreprise : 1 numéro externe
- Interne : Multiples postes


ADRESSES PRIVÉES (RFC 1918)

Plages NON routables Internet :

Classe A : 10.0.0.0/8
- Range : 10.0.0.0 - 10.255.255.255
- Hôtes : 16,777,216

Classe B : 172.16.0.0/12
- Range : 172.16.0.0 - 172.31.255.255
- Hôtes : 1,048,576

Classe C : 192.168.0.0/16
- Range : 192.168.0.0 - 192.168.255.255
- Hôtes : 65,536

Utilisables infiniment (chaque réseau)


ADRESSES PUBLIQUES

Routables Internet
Uniques mondialement
Assignées par RIRs
Coût élevé (pénurie)


ARCHITECTURE NAT TYPIQUE

Internet (Public)
     │
     │ IP publique : 203.0.113.1
     │
┌────[BLACK_DOWN-POINTING_TRIANGLE]────┐
│ Routeur │ NAT
│  (NAT)  │
└────┬────┘
     │
     │ Réseau privé : 192.168.1.0/24
     │
┌────┴─────┬──────────┬──────────┐
│          │          │          │
PC1      PC2        PC3      Serveur
.10      .20        .30        .50

Tous partagent 203.0.113.1 (vue Internet)


TYPES NAT

1. STATIC NAT (1:1)
2. DYNAMIC NAT (N:M)
3. PAT / NAT OVERLOAD (N:1)
4. NAT64 (IPv6/IPv4)


HISTORIQUE

1994 : RFC 1631 (premier NAT)
1999 : RFC 2663 (terminologie)
2001 : RFC 3022 (NAT traditionnel)
2011 : Épuisement IPv4 IANA
-> NAT devient INDISPENSABLE

IPv6 rend NAT obsolète (théoriquement)
Mais NAT persiste (sécurité, habitudes)
"""


# ----------------------------------------------------------------------------
# [SYNC] PARTIE 2 : TYPES NAT
# ----------------------------------------------------------------------------

"""
TYPES NAT


1. STATIC NAT (1:1)
═══════════════════

Mapping permanent 1 IP privée <-> 1 IP publique

Exemple :
Serveur Web interne : 192.168.1.10
IP publique dédiée : 203.0.113.10

Mapping statique :
192.168.1.10 <-> 203.0.113.10

Internet -> 203.0.113.10 -> traduit -> 192.168.1.10 [OK]


Configuration Cisco :
```
ip nat inside source static 192.168.1.10 203.0.113.10
interface GigabitEthernet0/0
 ip nat inside
interface GigabitEthernet0/1
 ip nat outside
```

Avantages :
[OK] Serveurs accessibles depuis Internet
[OK] Mapping prévisible
[OK] Bidirectionnel

Inconvénients :
[X] 1 IP publique par machine
[X] Gaspillage adresses
[X] Coûteux

Usage : Serveurs DMZ (web, mail, DNS)


2. DYNAMIC NAT (N:M)
════════════════════

Pool IPs publiques attribué dynamiquement

Exemple :
Réseau privé : 192.168.1.0/24 (254 hôtes)
Pool public : 203.0.113.1 - 203.0.113.50 (50 IPs)

Premier PC -> Obtient 203.0.113.1
Deuxième PC -> Obtient 203.0.113.2
...
51ème PC -> [X] Pool épuisé !

Configuration Cisco :
```
ip nat pool PUBLIC-POOL 203.0.113.1 203.0.113.50 netmask 255.255.255.0
access-list 1 permit 192.168.1.0 0.0.0.255
ip nat inside source list 1 pool PUBLIC-POOL
```

Avantages :
[OK] Économie IPs (50 au lieu 254)
[OK] Dynamique

Inconvénients :
[X] Pool peut saturer
[X] Plusieurs IPs publiques nécessaires
[X] Coûteux

Usage : Rare (remplacé par PAT)


3. PAT (PORT ADDRESS TRANSLATION) / NAT OVERLOAD
═════════════════════════════════════════════════

1 IP publique pour TOUS (via ports)

Principe :
- IP source traduite
- Port source traduit (unique)
- Combinaison IP:Port unique

Exemple :

PC1 (192.168.1.10:50001) -> Internet
PC2 (192.168.1.20:50002) -> Internet
PC3 (192.168.1.30:50003) -> Internet

NAT traduit TOUT vers :
203.0.113.1:50001
203.0.113.1:50002
203.0.113.1:50003

Internet voit : Tout vient 203.0.113.1
Mais ports différents -> Routeur distingue !


Table NAT :

┌─────────────────┬───────────┬─────────────────┬───────────┐
│ Inside Local    │ Inside    │ Outside Local   │ Outside   │
│ (Privé)         │ Global    │                 │ Global    │
├─────────────────┼───────────┼─────────────────┼───────────┤
│192.168.1.10:5000│203.0.113.1│ 8.8.8.8:53      │8.8.8.8:53 │
│                 │    :60001 │                 │           │
├─────────────────┼───────────┼─────────────────┼───────────┤
│192.168.1.20:4500│203.0.113.1│ 142.250.185.46  │142.250... │
│                 │    :60002 │     :443        │    :443   │
└─────────────────┴───────────┴─────────────────┴───────────┘

Configuration Cisco :
```
access-list 1 permit 192.168.1.0 0.0.0.255
ip nat inside source list 1 interface GigabitEthernet0/1 overload
```

Avantages :
[OK] 1 seule IP publique
[OK] Milliers machines simultanées
[OK] Économie maximale
[OK] Standard actuel

Inconvénients :
[X] Complexité
[X] Problèmes applications (voir plus bas)

Usage : 99% réseaux (domicile, PME)


Limites PAT :

Ports disponibles : 65,535
- Réservés (0-1023) : ~1000
- Disponibles : ~64,000

Théorie : 64,000 connexions simultanées
Pratique : 
- TCP keepalive consomme
- Timeouts
- Limite ~10,000-30,000 typique


4. NAT64
════════

Traduction IPv6 <-> IPv4

Voir Chapitre 9 (IPv6 transition)

Principe :
Client IPv6 -> NAT64 -> Serveur IPv4

Préfixe : 64:FF9B::/96

Exemple :
IPv4 : 192.0.2.1
IPv6 : 64:FF9B::192.0.2.1

Client IPv6 utilise adresse synthétisée
"""


# ----------------------------------------------------------------------------
# [CONFIG] PARTIE 3 : FONCTIONNEMENT DÉTAILLÉ NAT/PAT
# ----------------------------------------------------------------------------

"""
FONCTIONNEMENT NAT/PAT


TERMINOLOGIE CISCO

Inside Local : IP privée source (192.168.1.10)
Inside Global : IP publique traduite (203.0.113.1)
Outside Local : IP destination vue depuis inside (8.8.8.8)
Outside Global : IP destination réelle (8.8.8.8)

Généralement : Outside Local = Outside Global


PROCESS OUTBOUND (INSIDE -> OUTSIDE)


ÉTAPE 1 : Paquet original
─────────────────────────

PC1 (192.168.1.10) -> Google (142.250.185.46)

Paquet IP :
- Src IP : 192.168.1.10
- Dst IP : 142.250.185.46
- Src Port : 50001
- Dst Port : 443 (HTTPS)


ÉTAPE 2 : Arrivée routeur NAT (interface inside)
─────────────────────────────────────────────────

Routeur reçoit paquet sur interface inside

Inspection :
- Src IP privée -> Nécessite NAT


ÉTAPE 3 : Traduction NAT
────────────────────────

Routeur traduit :
- Src IP : 192.168.1.10 -> 203.0.113.1
- Src Port : 50001 -> 60001 (traduit)

Table NAT :
192.168.1.10:50001 <-> 203.0.113.1:60001 -> 142.250.185.46:443

Paquet modifié :
- Src IP : 203.0.113.1
- Dst IP : 142.250.185.46
- Src Port : 60001
- Dst Port : 443


ÉTAPE 4 : Envoi Internet
────────────────────────

Paquet transmis interface outside

Google voit : Source = 203.0.113.1:60001 [OK]


PROCESS INBOUND (OUTSIDE -> INSIDE)


ÉTAPE 1 : Réponse Google
─────────────────────────

Google répond :
- Src IP : 142.250.185.46
- Dst IP : 203.0.113.1
- Src Port : 443
- Dst Port : 60001 <- Important !


ÉTAPE 2 : Arrivée routeur NAT (interface outside)
──────────────────────────────────────────────────

Routeur reçoit paquet


ÉTAPE 3 : Lookup table NAT
───────────────────────────

Routeur cherche : 203.0.113.1:60001

Table NAT :
203.0.113.1:60001 <-> 192.168.1.10:50001

Trouvé [OK]


ÉTAPE 4 : Traduction inverse
────────────────────────────

Routeur traduit :
- Dst IP : 203.0.113.1 -> 192.168.1.10
- Dst Port : 60001 -> 50001

Paquet modifié :
- Src IP : 142.250.185.46
- Dst IP : 192.168.1.10
- Src Port : 443
- Dst Port : 50001


ÉTAPE 5 : Livraison PC1
───────────────────────

Paquet livré 192.168.1.10:50001

PC1 reçoit réponse [OK]


TABLE NAT COMPLÈTE

Exemple avec 3 PCs simultanés :

┌──────────────────┬──────────────────┬─────────────────┬─────────┐
│ Inside Local     │ Inside Global    │ Outside Global  │ État    │
├──────────────────┼──────────────────┼─────────────────┼─────────┤
│192.168.1.10:5000 │203.0.113.1:60001 │8.8.8.8:53       │ Active  │
│192.168.1.10:5001 │203.0.113.1:60002 │1.1.1.1:53       │ Active  │
│192.168.1.20:4500 │203.0.113.1:60003 │142.250.185.46   │ Active  │
│                  │                  │    :443         │         │
│192.168.1.30:8080 │203.0.113.1:60004 │93.184.216.34:80 │ Active  │
│192.168.1.10:5002 │203.0.113.1:60005 │151.101.1.140:443│ Expired │
└──────────────────┴──────────────────┴─────────────────┴─────────┘


TIMEOUTS

Entrées NAT expirent si inactives

Timeouts typiques :
- TCP established : 24h
- TCP transitory : 60s
- UDP : 5 minutes
- ICMP : 60s

Expiration -> Entrée supprimée -> Port libéré


ASYMÉTRIE

Important : NAT STATEFUL

Connexion initiée INSIDE -> OK
Connexion initiée OUTSIDE -> [X] Bloquée

Raison : Pas d'entrée table NAT

Solution : Static NAT ou Port Forwarding
"""


# ----------------------------------------------------------------------------
# [INTERDIT] PARTIE 4 : PROBLÈMES NAT
# ----------------------------------------------------------------------------

"""
PROBLÈMES ET LIMITATIONS NAT


1. APPLICATIONS PEER-TO-PEER
════════════════════════════

Problème : IP embarquée dans payload

Exemple FTP :
- Connexion contrôle : OK
- Connexion données : IP privée transmise
- Serveur FTP essaie connecter IP privée -> [X]

Solution : ALG (Application Layer Gateway)
- Routeur inspecte payload
- Traduit IPs embarquées
- FTP ALG, SIP ALG, H.323 ALG

Configuration Cisco :
```
ip nat service ftp tcp port 21
```


2. VoIP (SIP, H.323)
════════════════════

Problème : IPs dans messages SIP

NAT casse signalisation VoIP

Solutions :
- ALG (Application Layer Gateway)
- STUN (Session Traversal Utilities for NAT)
- TURN (Traversal Using Relays around NAT)
- ICE (Interactive Connectivity Establishment)


3. IPSEC VPN
════════════

Problème : ESP protocole (IP protocol 50)
- Pas de ports
- PAT impossible

NAT-T (NAT Traversal) :
- Encapsule ESP dans UDP
- Port 4500
- RFC 3948


4. PEER-TO-PEER (BitTorrent, Gaming)
═════════════════════════════════════

Problème : Connexions entrantes

Solutions :
- UPnP (Universal Plug and Play)
  -> Routeur ouvre ports automatiquement
- Port Forwarding manuel
- DMZ (exposer 1 machine complètement)


5. PROTOCOLES AUTHENTIFICATION
═══════════════════════════════

Kerberos, IPsec :
- IPs dans tickets
- NAT casse authentification


6. LOGS ET AUDIT
════════════════

Problème : Tous clients -> même IP publique

Impossible tracer utilisateur spécifique

Solution : Logs NAT détaillés (requis légal)


7. END-TO-END PRINCIPLE VIOLÉ
══════════════════════════════

Philosophie Internet : End-to-end

NAT = Middlebox

Casse :
- Connectivité directe
- Certaines applications
- Innovation (nouveaux protocoles)


PORT FORWARDING

Redirection port public -> machine privée

Exemple : Serveur web interne

Configuration :
Port public 80 -> 192.168.1.10:80
Port public 443 -> 192.168.1.10:443

Cisco :
```
ip nat inside source static tcp 192.168.1.10 80 interface GigabitEthernet0/1 80
ip nat inside source static tcp 192.168.1.10 443 interface GigabitEthernet0/1 443
```

Accès Internet -> 203.0.113.1:80 -> traduit -> 192.168.1.10:80 [OK]


DMZ (DEMILITARIZED ZONE)

Exposer complètement 1 machine

Configuration routeur :
- Tout trafic non-matché -> DMZ host

[ATTENTION] Sécurité faible : Machine complètement exposée

Usage : Gaming console, tests


UPnP (UNIVERSAL PLUG AND PLAY)

Protocole auto-configuration NAT

Application demande port forwarding dynamique

Exemple : Jeu vidéo ouvre port 3074 automatiquement

[ATTENTION] Risque sécurité : Applications malveillantes

Recommandation : Désactiver UPnP (sauf besoin spécifique)
"""


# ----------------------------------------------------------------------------
# [CONFIG] PARTIE 5 : CONFIGURATION NAT
# ----------------------------------------------------------------------------

"""
CONFIGURATION NAT


CISCO IOS


PAT (Overload) - Configuration typique
───────────────────────────────────────

```
! Définir interfaces
interface GigabitEthernet0/0
 description LAN
 ip address 192.168.1.1 255.255.255.0
 ip nat inside
 
interface GigabitEthernet0/1
 description WAN
 ip address 203.0.113.1 255.255.255.252
 ip nat outside

! ACL définir trafic à traduire
access-list 1 permit 192.168.1.0 0.0.0.255

! NAT Overload (PAT)
ip nat inside source list 1 interface GigabitEthernet0/1 overload
```


Static NAT
──────────

```
ip nat inside source static 192.168.1.10 203.0.113.10
```


Port Forwarding
───────────────

```
ip nat inside source static tcp 192.168.1.10 80 interface GigabitEthernet0/1 80
ip nat inside source static tcp 192.168.1.10 443 interface GigabitEthernet0/1 443
```


Vérification
────────────

```
show ip nat translations
show ip nat statistics
debug ip nat
clear ip nat translation *
```


LINUX (iptables / nftables)


PAT avec iptables
─────────────────

```
# Activer forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward

# NAT Overload (Masquerade)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# Sauvegarder
iptables-save > /etc/iptables/rules.v4
```


Port Forwarding iptables
─────────────────────────

```
# Port 80 -> 192.168.1.10:80
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10:80

# Autoriser forwarding
iptables -A FORWARD -p tcp -d 192.168.1.10 --dport 80 -j ACCEPT
```


nftables (moderne)
──────────────────

```
table ip nat {
    chain postrouting {
        type nat hook postrouting priority 100;
        oifname "eth0" masquerade
    }
    
    chain prerouting {
        type nat hook prerouting priority -100;
        iifname "eth0" tcp dport 80 dnat to 192.168.1.10:80
    }
}
```


ROUTEURS DOMICILE

Interface web typique :
- NAT/PAT : Activé par défaut
- Port Forwarding : Configuration manuelle
- DMZ : Option disponible
- UPnP : Souvent activé (désactiver recommandé)


WINDOWS SERVER

Rôle : Routing and Remote Access

NAT configuré via GUI

Utilisation : Rare (préférer routeurs dédiés)
"""


# ----------------------------------------------------------------------------
# [OUTIL] PARTIE 6 : TROUBLESHOOTING NAT
# ----------------------------------------------------------------------------

"""
TROUBLESHOOTING NAT


PROBLÈMES COURANTS


1. Pas d'accès Internet
════════════════════════

Symptômes :
- Ping gateway local : OK
- Ping Internet : [X]

Vérifications :

A) Configuration NAT active ?
```
show ip nat statistics  (Cisco)
iptables -t nat -L -n -v  (Linux)
```

B) Interfaces inside/outside correctes ?
```
show ip interface brief
```

C) ACL correcte ?
```
show access-lists
```

D) Routes par défaut ?
```
show ip route
```


2. Connexions lentes/timeout
═════════════════════════════

Cause possible : Table NAT saturée

Vérifier :
```
show ip nat statistics
```

Translations total vs. max ?

Solution : Augmenter limites ou réduire timeouts


3. Application ne fonctionne pas
═════════════════════════════════

FTP, VoIP, Gaming

Vérifier :
- ALG activé ?
- Port forwarding configuré ?
- UPnP fonctionnel ?


COMMANDES DIAGNOSTIC


Cisco
═════

```
show ip nat translations
show ip nat translations verbose
show ip nat statistics
debug ip nat
debug ip nat detailed
clear ip nat translation *
```

Exemple sortie :
```
Router# show ip nat translations
Pro Inside global      Inside local       Outside local      Outside global
tcp 203.0.113.1:60001  192.168.1.10:5000  8.8.8.8:53         8.8.8.8:53
tcp 203.0.113.1:60002  192.168.1.20:4500  142.250.185.46:443 142.250.185.46:443
```


Linux
═════

```
iptables -t nat -L -n -v
conntrack -L
cat /proc/sys/net/netfilter/nf_conntrack_max
cat /proc/sys/net/netfilter/nf_conntrack_count
```


WIRESHARK

Filtres :
- Côté inside : IP privée visible
- Côté outside : IP publique visible

Capture simultanée 2 interfaces :
-> Vérifier traduction


TEST CONNECTIVITÉ

Depuis machine inside :
```
ping 8.8.8.8  # Test NAT
curl ifconfig.me  # Voir IP publique
traceroute 8.8.8.8  # Vérifier chemin
```


EXERCICES PRATIQUES


EXERCICE 1 : Configuration PAT
═══════════════════════════════

Réseau : 192.168.10.0/24
IP publique : 203.0.113.50
Gateway : 192.168.10.1

Configurer :
1. Interfaces inside/outside
2. ACL
3. PAT overload
4. Vérifier translations


EXERCICE 2 : Port Forwarding
═════════════════════════════

Serveur web interne : 192.168.10.10
Ports : 80, 443

Configurer redirection :
IP publique:80 -> 192.168.10.10:80
IP publique:443 -> 192.168.10.10:443

Tester depuis Internet


EXERCICE 3 : Troubleshooting
═════════════════════════════

Problème : Client n'accède pas Internet

Diagnostiquer :
1. Vérifier config NAT
2. Vérifier ACL
3. Vérifier routes
4. Analyser tables NAT
5. Identifier et résoudre
"""


# ============================================================================
# [DOCS] CONCLUSION CHAPITRE 13
# ============================================================================

"""
[BRAVO] FÉLICITATIONS !

Chapitre 13 : NAT terminé


[GUIDE] RÉCAPITULATIF

[OK] Principe NAT (partage IP publique)
[OK] Adresses privées RFC 1918
[OK] Types NAT (Static, Dynamic, PAT)
[OK] Fonctionnement détaillé (tables, traduction)
[OK] Problèmes applications (FTP, VoIP, P2P)
[OK] Port Forwarding et DMZ
[OK] Configuration (Cisco, Linux)
[OK] Troubleshooting


[OBJECTIF] COMPÉTENCES ACQUISES

[OK] Comprendre architecture NAT
[OK] Configurer PAT/NAT
[OK] Implémenter Port Forwarding
[OK] Diagnostiquer problèmes NAT
[OK] Optimiser tables NAT
[OK] Résoudre problèmes applications


[PRO] APPLICATIONS PRATIQUES

[OK] Déployer NAT entreprise/domicile
[OK] Gérer pénurie IPv4
[OK] Sécuriser réseaux (masquage)
[OK] Exposer serveurs (port forwarding)
[OK] Troubleshooter connectivité
[OK] Réussir certifications (CCNA)


[LIEN] RELATION AUTRES CHAPITRES

NAT complète :
- Chapitre 8 : IPv4 (adresses privées/publiques)
- Chapitre 9 : IPv6 (NAT64, transition)
- Chapitre 10 : Protocoles (ALG pour FTP/SIP)
- Chapitre 12 : DHCP (attribution privées)


-> PROCHAINS CHAPITRES

- Chapitre 14 : Sécurité réseaux (Firewall, ACL)
- Chapitre 15 : VPN
- Chapitre 16 : QoS
- Chapitres 17-20 : Routage (statique, RIP, OSPF, EIGRP)


[IDEE] POINTS CLÉS

NAT a SAUVÉ Internet IPv4 :
[OK] Solution temporaire devenue permanente
[OK] 99% réseaux l'utilisent
[OK] Permet croissance continue Internet
[X] Complique certaines applications
[X] Viole principe end-to-end

IPv6 élimine besoin NAT (adresses illimitées)
Mais NAT persiste (sécurité, habitudes)


[RAPIDE] EXCELLENT TRAVAIL !

NAT est technologie FONDAMENTALE réseaux modernes.
Vous maîtrisez maintenant cette compétence ESSENTIELLE !


═══════════════════════════════════════════════════════════
[GUIDE] FIN DU CHAPITRE 13 - NAT
═══════════════════════════════════════════════════════════
"""

# ============================================================================
# CHAPITRE 14 : SÉCURITÉ RÉSEAU (FIREWALLS, ACL, IDS/IPS)
# ============================================================================

"""
[OBJECTIF] OBJECTIFS DU CHAPITRE

[OK] Principes sécurité réseau
[OK] ACL (Access Control Lists) - Cisco
[OK] Firewalls (types, architectures)
[OK] Stateful vs Stateless
[OK] Zones de sécurité (DMZ)
[OK] IDS/IPS (Détection/Prévention intrusions)
[OK] VPN (concepts de base)
[OK] Attaques réseau courantes
[OK] Défense en profondeur
[OK] Configuration pratique
[OK] Troubleshooting sécurité
[OK] Exercices ultra-détaillés

[IDEE] POURQUOI LA SÉCURITÉ EST CRITIQUE ?

Les menaces réseau explosent :
- Ransomware : +150% (2023)
- Coût moyen brèche : $4.45M (IBM 2023)
- 93% entreprises ciblées
- Attaques DDoS : 10+ Tbps possibles
- Zero-day exploits quotidiens

Sans sécurité : Réseau = Passoire
Données volées, services down, réputation détruite

La sécurité n'est PAS optionnelle - c'est VITAL !
"""


# ----------------------------------------------------------------------------
# [SECURITE] PARTIE 1 : PRINCIPES FONDAMENTAUX SÉCURITÉ
# ----------------------------------------------------------------------------

"""
PRINCIPES SÉCURITÉ RÉSEAU


TRIADE CIA

C - CONFIDENTIALITÉ (Confidentiality)
────────────────────────────────────

Données accessibles seulement aux autorisés

Menaces : Écoute, interception, vol

Protections :
[OK] Chiffrement (AES, RSA)
[OK] VPN
[OK] Contrôle accès
[OK] Segmentation réseau


I - INTÉGRITÉ (Integrity)
─────────────────────────

Données non-modifiées

Menaces : Man-in-the-middle, corruption

Protections :
[OK] Hash (SHA-256)
[OK] Signatures numériques
[OK] HMAC
[OK] Checksums


A - DISPONIBILITÉ (Availability)
────────────────────────────────

Services accessibles quand nécessaire

Menaces : DoS, DDoS, pannes

Protections :
[OK] Redondance
[OK] Load balancing
[OK] Anti-DDoS
[OK] Backups
[OK] Disaster recovery


AUTRES PRINCIPES


Authentification
────────────────

Vérifier identité

Méthodes :
- Mot de passe
- Certificats
- Biométrie
- MFA (Multi-Factor Authentication)


Autorisation
────────────

Droits après authentification

Modèles :
- RBAC (Role-Based Access Control)
- ACL (Access Control Lists)
- Least privilege


Accounting (Audit)
──────────────────

Traçabilité actions

Logs :
- Qui ?
- Quoi ?
- Quand ?
- Où ?


Non-répudiation
───────────────

Impossibilité nier action

Méthodes :
- Signatures numériques
- Timestamps
- Logs immuables


DÉFENSE EN PROFONDEUR (Defense in Depth)

Principe : Multiples couches sécurité

Analogie : Château médiéval
- Fossé (périmètre)
- Muraille extérieure (firewall externe)
- Muraille intérieure (firewall interne)
- Tours de guet (IDS/IPS)
- Gardes (authentification)
- Coffres (chiffrement données)

Si une couche compromise -> Autres protègent


COUCHES SÉCURITÉ RÉSEAU

Couche 1 (Physique) :
- Sécurité datacenter
- Câbles protégés
- Locks

Couche 2 (Liaison) :
- Port Security
- 802.1X
- DHCP Snooping
- DAI

Couche 3 (Réseau) :
- ACL
- Firewalls
- IPsec VPN

Couche 4 (Transport) :
- Firewall stateful
- TCP/UDP filtering

Couche 7 (Application) :
- WAF (Web Application Firewall)
- Antivirus
- DLP (Data Loss Prevention)


ZÉRO TRUST

Principe moderne : "Ne jamais faire confiance, toujours vérifier"

Fin périmètre traditionnel (château)

Nouvelles règles :
- Vérifier CHAQUE accès
- Micro-segmentation
- Least privilege
- MFA systématique
- Monitoring continu


MODÈLE OSI SÉCURITÉ

┌─────────────┬────────────────────────────────┐
│   Couche    │        Menaces                 │
├─────────────┼────────────────────────────────┤
│ 7 App       │ Malware, phishing, injection   │
│ 6 Présent.  │ Chiffrement faible             │
│ 5 Session   │ Session hijacking              │
│ 4 Transport │ Port scanning, DoS             │
│ 3 Réseau    │ IP spoofing, routing attacks   │
│ 2 Liaison   │ ARP spoofing, MAC flooding     │
│ 1 Physique  │ Wiretapping, jamming           │
└─────────────┴────────────────────────────────┘
"""


# ----------------------------------------------------------------------------
# [VERROUILLE] PARTIE 2 : ACL (ACCESS CONTROL LISTS) - CISCO
# ----------------------------------------------------------------------------

"""
ACL (ACCESS CONTROL LISTS)


DÉFINITION

ACL = Liste règles filtrage trafic

Fonction : Autoriser/Refuser paquets

Critères :
- Adresses IP source/destination
- Ports source/destination
- Protocoles
- Flags TCP
- Etc.

Emplacement : Routeurs, switches L3


TYPES ACL


1. STANDARD ACL (1-99, 1300-1999)
══════════════════════════════════

Filtre uniquement IP SOURCE

Numéros : 1-99, 1300-1999

Syntaxe :
```
access-list <numéro> {permit|deny} <source> [wildcard]
```

Exemples :
```
access-list 1 permit 192.168.1.0 0.0.0.255
access-list 1 deny 192.168.2.10 0.0.0.0
access-list 1 permit any
```

Usage : Filtrage simple, NAT, route-maps

Placement : Proche destination (moins restrictif)


2. EXTENDED ACL (100-199, 2000-2699)
═════════════════════════════════════

Filtre DÉTAILLÉ :
- IP source ET destination
- Protocole (TCP, UDP, ICMP, etc.)
- Ports source ET destination
- Flags TCP
- ICMP types
- Etc.

Numéros : 100-199, 2000-2699

Syntaxe :
```
access-list <numéro> {permit|deny} <protocole> <source> [wildcard] [operator port] <destination> [wildcard] [operator port] [options]
```

Exemples :
```
access-list 100 permit tcp 192.168.1.0 0.0.0.255 any eq 80
access-list 100 permit tcp 192.168.1.0 0.0.0.255 any eq 443
access-list 100 permit icmp any any echo-reply
access-list 100 deny ip any any
```

Usage : Contrôle granulaire

Placement : Proche source (plus restrictif tôt)


3. NAMED ACL
════════════

ACL avec nom (au lieu numéro)

Plus lisible, maintenable

Syntaxe :
```
ip access-list {standard|extended} <nom>
 {permit|deny} ...
```

Exemple :
```
ip access-list extended BLOCK-MALWARE
 deny tcp any host 203.0.113.50 eq 4444
 deny tcp any host 198.51.100.25 eq 6667
 permit ip any any
```

Avantages :
[OK] Noms descriptifs
[OK] Modification ligne spécifique (numéros séquence)
[OK] Pas de limite numérique


WILDCARD MASKS

INVERSE du masque subnet !

Règle :
- 0 = Match exact
- 1 = Any (ignore)

Exemples :

Hôte unique (192.168.1.10) :
Wildcard : 0.0.0.0

Subnet /24 (192.168.1.0/24) :
Wildcard : 0.0.0.255

Subnet /16 (172.16.0.0/16) :
Wildcard : 0.0.255.255

Range 192.168.1.0 - 192.168.1.63 (/26) :
Wildcard : 0.0.0.63

Tous (any) :
Wildcard : 255.255.255.255
Raccourci : any


CALCUL WILDCARD

Formule : Wildcard = 255.255.255.255 - Subnet Mask

Exemple :
Subnet /24 : 255.255.255.0
Wildcard : 255.255.255.255 - 255.255.255.0 = 0.0.0.255


OPÉRATEURS PORTS

eq (equal) : Égal
```
eq 80  (port 80)
```

neq (not equal) : Différent
```
neq 23  (pas port 23)
```

gt (greater than) : Supérieur
```
gt 1023  (> 1023)
```

lt (less than) : Inférieur
```
lt 1024  (< 1024)
```

range : Plage
```
range 20 21  (FTP)
range 1024 65535  (Ports hauts)
```


RÈGLES IMPLICITES

Implicit Deny All : À la fin de CHAQUE ACL

```
access-list 100 permit tcp any any eq 80
! Implicit deny ip any any (invisible)
```

Si aucune règle match -> DENY [X]

Toujours terminer par permit explicite si nécessaire :
```
access-list 100 permit ip any any
```


ORDRE TRAITEMENT

Top-Down : Première règle matchée = appliquée

Exemple :
```
access-list 100 permit tcp any any eq 80     ! Ligne 1
access-list 100 deny tcp 192.168.1.10 0.0.0.0 any eq 80  ! Ligne 2 IGNORÉE
```

192.168.1.10 matche ligne 1 -> Permis [OK]
Ligne 2 jamais évaluée !

Ordre critique : Spécifique avant général


EXEMPLE COMPLET ACL

Scénario :
- Réseau interne : 192.168.1.0/24
- Serveur web DMZ : 10.0.0.10
- Internet : any

Règles :
1. Autoriser HTTP/HTTPS vers Internet
2. Autoriser DNS vers 8.8.8.8
3. Bloquer Telnet
4. Autoriser accès serveur web DMZ
5. Bloquer tout le reste

ACL :
```
ip access-list extended INTERNET-OUT
 ! HTTP/HTTPS
 permit tcp 192.168.1.0 0.0.0.255 any eq 80
 permit tcp 192.168.1.0 0.0.0.255 any eq 443
 
 ! DNS
 permit udp 192.168.1.0 0.0.0.255 host 8.8.8.8 eq 53
 
 ! Bloquer Telnet
 deny tcp 192.168.1.0 0.0.0.255 any eq 23
 
 ! Serveur web DMZ
 permit tcp 192.168.1.0 0.0.0.255 host 10.0.0.10 eq 80
 permit tcp 192.168.1.0 0.0.0.255 host 10.0.0.10 eq 443
 
 ! Réponses établies
 permit tcp any any established
 
 ! ICMP (ping)
 permit icmp any any echo-reply
 
 ! Implicit deny tout le reste
```


APPLICATION ACL

Interfaces : Inbound ou Outbound

Inbound : Avant routage
Outbound : Après routage

Syntaxe :
```
interface GigabitEthernet0/0
 ip access-group <ACL> {in|out}
```

Exemple :
```
interface GigabitEthernet0/0
 description LAN
 ip address 192.168.1.1 255.255.255.0
 ip access-group INTERNET-OUT in
```


1 ACL par interface par direction par protocole

Maximum :
- 1 ACL inbound IPv4
- 1 ACL outbound IPv4
- 1 ACL inbound IPv6
- 1 ACL outbound IPv6


BONNES PRATIQUES ACL

[OK] Nommer ACL (lisibilité)
[OK] Documenter (commentaires)
[OK] Ordre : Spécifique -> Général
[OK] Permit established (TCP retours)
[OK] Placement intelligent :
   - Standard : Proche destination
   - Extended : Proche source
[OK] Tester avant production
[OK] Logs (optionnel, charge CPU)
[OK] Réviser régulièrement


REMARKED ACL (Commentaires)

```
ip access-list extended FIREWALL-IN
 remark == HTTP/HTTPS Traffic ==
 permit tcp any any eq 80
 permit tcp any any eq 443
 
 remark == Block Telnet ==
 deny tcp any any eq 23
 
 remark == Allow ICMP ==
 permit icmp any any
```


SÉQUENCE NUMBERS

Éditer ACL sans tout réécrire

```
ip access-list extended TEST
 10 permit tcp any any eq 80
 20 permit tcp any any eq 443
 30 deny ip any any

! Insérer ligne entre 10 et 20
 15 permit tcp any any eq 8080
 
! Supprimer ligne
 no 30
```


LOG OPTION

Logger paquets matchés

```
access-list 100 deny tcp any any eq 23 log
access-list 100 deny ip any any log
```

[ATTENTION] Charge CPU ! Utiliser avec parcimonie

Logs : show logging


VÉRIFICATION ACL

```
show access-lists
show access-lists 100
show ip access-lists INTERNET-OUT
show ip interface GigabitEthernet0/0  (ACL appliquée ?)
```

Exemple sortie :
```
Extended IP access list INTERNET-OUT
    10 permit tcp 192.168.1.0 0.0.0.255 any eq www (150 matches)
    20 permit tcp 192.168.1.0 0.0.0.255 any eq 443 (230 matches)
    30 deny tcp 192.168.1.0 0.0.0.255 any eq telnet
    40 deny ip any any (25 matches)
```

Matches : Nombre paquets matchés (statistiques)


TROUBLESHOOTING ACL

Problème : Trafic bloqué

Debug :
```
debug ip packet detail  ([ATTENTION] CPU intensif !)
```

Méthodologie :
1. Vérifier ACL appliquée (show ip interface)
2. Vérifier ordre règles (show access-lists)
3. Tester règle par règle (séquences)
4. Vérifier wildcard masks
5. Vérifier direction (in/out)
"""


# ----------------------------------------------------------------------------
# [HOT] PARTIE 3 : FIREWALLS
# ----------------------------------------------------------------------------

"""
FIREWALLS


DÉFINITION

Firewall = Barrière sécurité réseau

Fonction : Filtrer trafic selon politiques

Décision : Autoriser / Bloquer / Inspecter

Types : Matériel (appliance) ou Logiciel


GÉNÉRATIONS FIREWALLS


1ère GÉNÉRATION : Packet Filtering
═══════════════════════════════════

Années 1980s

Filtrage couche 3-4 (IP, ports)

Stateless : Chaque paquet indépendant

Exemple : ACL basiques

Limitations :
[X] Pas de contexte session
[X] Vulnérable spoofing
[X] Pas d'inspection payload


2ème GÉNÉRATION : Stateful Inspection
══════════════════════════════════════

Années 1990s

Stateful : Suivi connexions (state table)

Connaît :
- Connexions établies
- Séquences TCP
- États sessions

Avantages :
[OK] Contexte session
[OK] Retours autorisés automatiquement
[OK] Protection spoofing

Exemple : Cisco ASA, pfSense


3ème GÉNÉRATION : Application Layer
════════════════════════════════════

Années 2000s

Inspection couche 7 (Application)

Fonctions :
- Deep Packet Inspection (DPI)
- Protocole identification
- Contrôle applications (P2P, streaming)
- URL filtering
- Antivirus intégré

Exemple : Palo Alto, Fortinet


4ème GÉNÉRATION : Next-Gen (NGFW)
══════════════════════════════════

Années 2010s+

Tout précédent + :
- IPS intégré
- Threat intelligence
- SSL/TLS inspection
- Application awareness
- User identity integration
- Sandboxing
- Machine learning

Exemple : Palo Alto PA-Series, Cisco Firepower


STATELESS vs STATEFUL


STATELESS (Packet Filter)
═════════════════════════

Chaque paquet évalué indépendamment

Pas de mémoire connexions

Exemple règle :
```
Permit TCP any -> 192.168.1.10:80
```

Problème : Retour ?
```
Permit TCP 192.168.1.10:80 -> any  (nécessaire !)
```

Vulnérabilité : Spoofing facile

Usage : ACL, filtres basiques


STATEFUL (État connexions)
═══════════════════════════

State Table : Suivi connexions actives

Exemple état :

┌───────────────┬────────────────┬─────────┬────────────┐
│ Source        │ Destination    │ État    │ Timeout    │
├───────────────┼────────────────┼─────────┼────────────┤
│192.168.1.10   │8.8.8.8:53      │ UDP     │ 30s        │
│  :50001       │                │         │            │
├───────────────┼────────────────┼─────────┼────────────┤
│192.168.1.20   │142.250.185.46  │ESTABLISH│ 3600s      │
│  :55002       │  :443          │         │            │
└───────────────┴────────────────┴─────────┴────────────┘

États TCP :
- SYN_SENT
- SYN_RECEIVED
- ESTABLISHED
- FIN_WAIT
- CLOSE_WAIT
- CLOSED

Règle :
```
Permit TCP any -> 192.168.1.10:80
```

Firewall stateful :
- Outbound : Autorisé si état ESTABLISHED
- Retours : Automatiques (state table)

Avantages :
[OK] Sécurité accrue
[OK] Moins de règles
[OK] Performance (table optimisée)


EXEMPLE STATEFUL

PC1 (192.168.1.10) -> Google (142.250.185.46:443)

1. PC1 envoie SYN
   Firewall : Vérifie règles outbound
   -> Autorisé -> Crée entrée state table
   
   State :
   192.168.1.10:50001 -> 142.250.185.46:443 [SYN_SENT]

2. Google répond SYN-ACK
   Firewall : Vérifie state table
   -> Correspondance trouvée -> Autorisé
   
   State :
   192.168.1.10:50001 -> 142.250.185.46:443 [SYN_RECEIVED]

3. PC1 envoie ACK
   State : [ESTABLISHED]

4. Échanges données
   Firewall : Vérifie state = ESTABLISHED -> Autorisé

5. FIN/ACK -> Fermeture
   State : [FIN_WAIT] -> [CLOSED] -> Supprimé

Pas de règle retour nécessaire ! [OK]


ZONES DE SÉCURITÉ


PRINCIPE

Segmentation logique réseau

Zones typiques :

INSIDE (Trust)
──────────────
Réseau interne
Niveau confiance : ÉLEVÉ
Exemple : LAN 192.168.1.0/24


DMZ (Demilitarized Zone)
────────────────────────
Serveurs publics
Niveau confiance : MOYEN
Exemple : Serveurs web, mail, DNS


OUTSIDE (Untrust)
─────────────────
Internet
Niveau confiance : ZÉRO
Exemple : any


ARCHITECTURE ZONES

```
Internet (OUTSIDE)
       │
       │
   ┌───[BLACK_DOWN-POINTING_TRIANGLE]────┐
   │Firewall│
   └───┬────┘
       │
   ┌───┴────┬──────────┐
   │        │          │
INSIDE    DMZ      GUEST
(LAN)   (Serveurs) (Wi-Fi)
```


POLITIQUES INTER-ZONES

Matrice sécurité :

┌─────────┬─────────┬─────────┬──────────┐
│ De \ À  │ INSIDE  │  DMZ    │ OUTSIDE  │
├─────────┼─────────┼─────────┼──────────┤
│ INSIDE  │  Allow  │ Allow   │ Allow    │
│ DMZ     │  Deny   │ Deny    │ Allow    │
│ OUTSIDE │  Deny   │ Allow*  │  N/A     │
└─────────┴─────────┴─────────┴──────────┘

* Allow spécifique (ports 80, 443, 25...)


Règles :
- INSIDE -> DMZ : Accès admin
- INSIDE -> OUTSIDE : Navigation
- DMZ -> OUTSIDE : Updates
- DMZ -> INSIDE : [X] INTERDIT
- OUTSIDE -> DMZ : Services publics uniquement
- OUTSIDE -> INSIDE : [X] INTERDIT


CONFIGURATION ZONES (Cisco ASA)

```
! Définir zones
security-level inside 100
security-level dmz 50
security-level outside 0

! Interfaces
interface GigabitEthernet0/0
 nameif inside
 security-level 100
 ip address 192.168.1.1 255.255.255.0
 
interface GigabitEthernet0/1
 nameif dmz
 security-level 50
 ip address 10.0.0.1 255.255.255.0
 
interface GigabitEthernet0/2
 nameif outside
 security-level 0
 ip address dhcp

! Règles
access-list INSIDE-DMZ permit tcp 192.168.1.0 255.255.255.0 10.0.0.0 255.255.255.0 eq 22
access-list OUTSIDE-DMZ permit tcp any host 10.0.0.10 eq 80
access-list OUTSIDE-DMZ permit tcp any host 10.0.0.10 eq 443

access-group INSIDE-DMZ in interface inside
access-group OUTSIDE-DMZ in interface outside
```


TYPES FIREWALLS


Hardware Appliance
══════════════════

Équipement dédié

Avantages :
[OK] Performance (ASIC)
[OK] Throughput élevé (10-100+ Gbps)
[OK] Support vendor

Exemples :
- Cisco ASA, Firepower
- Palo Alto PA-Series
- Fortinet FortiGate
- Check Point

Usage : Entreprise, datacenter


Software / Virtual
══════════════════

Logiciel sur serveur

Avantages :
[OK] Flexible
[OK] Coût (open-source)
[OK] Virtualisation

Exemples :
- pfSense (FreeBSD)
- OPNsense
- iptables/nftables (Linux)
- Windows Defender Firewall

Usage : PME, lab, cloud


Cloud Firewall
══════════════

Firewall-as-a-Service (FWaaS)

Avantages :
[OK] Scalabilité
[OK] Pas de matériel
[OK] Updates automatiques

Exemples :
- AWS Network Firewall
- Azure Firewall
- Cloudflare Magic Firewall

Usage : Infrastructures cloud


HOST-BASED FIREWALL

Sur chaque machine

Windows Defender Firewall
─────────────────────────

GUI : Control Panel -> Windows Defender Firewall

Profils :
- Domain
- Private
- Public

PowerShell :
```
New-NetFirewallRule -DisplayName "Block Telnet" -Direction Inbound -Protocol TCP -LocalPort 23 -Action Block
```


Linux iptables
──────────────

```
# Bloquer port 23
iptables -A INPUT -p tcp --dport 23 -j DROP

# Autoriser SSH
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# État
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Défaut DROP
iptables -P INPUT DROP
```


FIREWALLS POPULAIRES


pfSense
═══════

Open-source, FreeBSD

Interface web intuitive

Fonctions :
- Stateful firewall
- NAT
- VPN (IPsec, OpenVPN)
- DHCP, DNS
- Traffic shaping
- Packages (Snort, Squid, HAProxy)

Gratuit, performant, communauté active


Cisco ASA
═════════

Appliance entreprise

CLI + ASDM (GUI)

Fonctions complètes :
- Stateful firewall
- VPN (SSL, IPsec)
- IPS (avec modules)
- Clustering, failover

Coûteux, support Cisco


Fortinet FortiGate
══════════════════

NGFW leader

ASIC dédiés (performance)

Fonctions :
- NGFW complet
- SD-WAN
- Threat intelligence
- Sandboxing
- SSL inspection

Très performant, coût moyen
"""


# ----------------------------------------------------------------------------
# [ALERTE] PARTIE 4 : IDS/IPS
# ----------------------------------------------------------------------------

"""
IDS/IPS (INTRUSION DETECTION/PREVENTION SYSTEMS)


DÉFINITIONS


IDS (Intrusion Detection System)
═════════════════════════════════

Détection PASSIVE

Fonction : Alerter sur menaces

Actions :
[OK] Alerte (log, email, SIEM)
[X] PAS de blocage

Analogie : Alarme maison (détecte, n'empêche pas)

Avantage : Pas de faux positifs bloquants
Inconvénient : Réaction manuelle nécessaire


IPS (Intrusion Prevention System)
══════════════════════════════════

Prévention ACTIVE

Fonction : Bloquer menaces

Actions :
[OK] Bloquer paquet
[OK] Réinitialiser connexion
[OK] Bloquer IP source
[OK] Alerter

Analogie : Garde (détecte ET empêche)

Avantage : Blocage automatique
Inconvénient : Faux positifs peuvent bloquer légitime


DIFFÉRENCE IDS vs IPS

┌─────────────┬──────────────┬─────────────────┐
│   Critère   │     IDS      │      IPS        │
├─────────────┼──────────────┼─────────────────┤
│ Mode        │ Passif       │ Actif           │
│ Position    │ Hors flux    │ Inline (flux)   │
│ Action      │ Alerte seule │ Bloque          │
│ Performance │ Pas d'impact │ Latence ajoutée │
│ Risque      │ Faible       │ Faux positifs   │
└─────────────┴──────────────┴─────────────────┘


ARCHITECTURE


IDS (Passif)
════════════

```
Internet -> Firewall -> Switch -> LAN
                         │
                      [TAP/SPAN]
                         │
                        IDS
                         │
                    Monitoring
```

TAP (Test Access Point) : Copie trafic
SPAN (Switch Port Analyzer) : Mirror port

IDS analyse copie -> N'affecte pas flux


IPS (Inline)
════════════

```
Internet -> Firewall -> IPS -> Switch -> LAN
                       ^
                 Bloque menaces
```

IPS dans chemin -> Bloque inline

Si IPS down -> Trafic coupé (risque)
Solution : Bypass si défaillance


MÉTHODES DÉTECTION


1. SIGNATURE-BASED
══════════════════

Base signatures menaces connues

Similaire antivirus

Exemple signature :
```
alert tcp any any -> any 80 (content:"GET /admin"; msg:"Admin access attempt")
```

Avantages :
[OK] Précis (menaces connues)
[OK] Peu faux positifs

Inconvénients :
[X] Zero-day non détectés
[X] Mise à jour constante nécessaire


2. ANOMALY-BASED (Behavioral)
══════════════════════════════

Baseline comportement normal

Détecte déviations

Exemple :
- Trafic normal : 1 MB/s
- Soudain : 100 MB/s -> Alerte !

Machine learning, IA

Avantages :
[OK] Détecte zero-day
[OK] Nouveaux patterns

Inconvénients :
[X] Faux positifs élevés
[X] Configuration complexe


3. STATEFUL PROTOCOL ANALYSIS
══════════════════════════════

Analyse comportement protocoles

Détecte violations RFC

Exemple :
- TCP handshake invalide
- HTTP headers malformés
- Séquences anormales

Avantages :
[OK] Détecte attaques protocole
[OK] Moins faux positifs que anomaly

Inconvénients :
[X] Charge CPU
[X] Complexe


IDS/IPS POPULAIRES


Snort
═════

Open-source leader (Cisco)

Règles :
```
alert tcp any any -> 192.168.1.0/24 1337 (msg:"BACKDOOR ATTACK"; sid:1000001;)
alert icmp any any -> 192.168.1.0/24 (msg:"ICMP Flood"; threshold:type threshold, track by_src, count 100, seconds 1; sid:1000002;)
```

Modes :
- Sniffer : Capture paquets
- Logger : Log paquets
- IDS : Détection
- IPS : Inline (avec iptables/nftables)

Gratuit, très utilisé


Suricata
════════

Open-source moderne

Multi-threading (performance)

Compatible règles Snort

Fonctions :
- IDS/IPS
- Network Security Monitoring (NSM)
- File extraction
- TLS logging

Plus rapide que Snort


Cisco Firepower
═══════════════

Commercial (intégré ASA)

NGFW + IPS

Threat intelligence Talos (Cisco)

Très complet, coûteux


Palo Alto Threat Prevention
═══════════════════════════

Commercial NGFW

Détection avancée :
- Signatures
- Anomaly
- Machine learning
- Sandboxing

Leader marché, coût élevé


SIGNATURES SNORT


Anatomie règle
══════════════

```
alert tcp any any -> 192.168.1.0/24 80 (msg:"SQL Injection Attempt"; content:"union select"; nocase; sid:1000003; rev:1;)
```

Composants :
- Action : alert (log, pass, drop, reject)
- Protocol : tcp (udp, icmp, ip)
- Source : any any (IP port)
- Direction : -> (-> ou <> bidirectionnel)
- Destination : 192.168.1.0/24 80
- Options : (msg, content, sid, rev...)


Options courantes :
- msg : Message alerte
- content : Chaîne recherchée
- nocase : Insensible casse
- sid : Signature ID unique
- rev : Révision
- classtype : Catégorie (trojan, web-attack...)
- priority : 1 (élevé) - 4 (faible)
- threshold : Seuil déclenchement


Exemples règles
═══════════════

```
# Détection port scan (SYN scan)
alert tcp any any -> 192.168.1.0/24 any (flags:S; threshold:type threshold, track by_src, count 20, seconds 60; msg:"Port Scan Detected"; sid:1000010;)

# SQL Injection
alert tcp any any -> any 80 (content:"select"; nocase; content:"from"; nocase; content:"where"; nocase; msg:"SQL Injection"; sid:1000011;)

# Ransomware C2 communication
alert tcp 192.168.1.0/24 any -> any any (content:"encrypt"; content:".onion"; msg:"Possible Ransomware C2"; sid:1000012;)

# Brute force SSH
alert tcp any any -> 192.168.1.0/24 22 (flags:S; threshold:type threshold, track by_src, count 10, seconds 60; msg:"SSH Brute Force"; sid:1000013;)
```


TUNING IDS/IPS

Défi : Équilibre détection / faux positifs

Étapes :
1. Mode IDS (passif) initial
2. Baseline trafic légitime
3. Ajuster règles (whitelist, tuning)
4. Tester en production limitée
5. Activer IPS (blocage) progressivement
6. Monitoring continu
7. Affiner règles (itératif)


Réduction faux positifs :
[OK] Whitelist IPs confiance
[OK] Désactiver règles non-applicables
[OK] Ajuster seuils (threshold)
[OK] Contextualisation (OS, apps)


INTÉGRATION SIEM

SIEM = Security Information and Event Management

IDS/IPS -> Logs -> SIEM

SIEM :
- Agrège logs (firewall, IDS, serveurs, AD...)
- Corrélation événements
- Détection patterns complexes
- Dashboards
- Alertes

Exemples SIEM :
- Splunk
- ELK Stack (Elasticsearch, Logstash, Kibana)
- IBM QRadar
- ArcSight


CONFIGURATION SNORT

Installation (Debian/Ubuntu) :
```
sudo apt install snort
```

Configuration (/etc/snort/snort.conf) :
```
# Network
var HOME_NET 192.168.1.0/24
var EXTERNAL_NET !$HOME_NET

# Règles
include $RULE_PATH/local.rules
include $RULE_PATH/community.rules

# Output
output alert_fast: alerts.txt
output log_tcpdump: snort.log
```

Lancer IDS :
```
sudo snort -A console -c /etc/snort/snort.conf -i eth0
```

Lancer IPS (inline avec iptables) :
```
sudo iptables -I INPUT -j NFQUEUE --queue-num 0
sudo iptables -I OUTPUT -j NFQUEUE --queue-num 0
sudo snort -Q --daq nfq -c /etc/snort/snort.conf
```
"""


# ----------------------------------------------------------------------------
# [COMBAT] PARTIE 5 : ATTAQUES RÉSEAU COURANTES
# ----------------------------------------------------------------------------

"""
ATTAQUES RÉSEAU ET DÉFENSES


1. DOS / DDOS
═════════════

Denial of Service : Saturation ressources

DDOS (Distributed) : Botnet (millions machines)


Types attaques :

Volumétrique
────────────

Saturation bande passante

- UDP Flood : Milliers UDP aléatoires
- ICMP Flood (Ping flood)
- DNS Amplification : Requêtes DNS spoofées (amplification ×50)

Défense :
[OK] Rate limiting
[OK] Anti-DDoS cloud (Cloudflare, Akamai)
[OK] Anycast
[OK] Scrubbing centers


Protocole
─────────

Épuisement connexions (state tables)

- SYN Flood : Millions SYN, pas ACK -> Saturation state table
- TCP Connection Flood

Défense :
[OK] SYN cookies
[OK] Connection limits
[OK] Firewall stateful optimisé


Application Layer (L7)
──────────────────────

Requêtes légitimes massives

- HTTP Flood : GET / millions fois
- Slowloris : Connexions lentes maintenues
- DNS Query Flood

Défense :
[OK] WAF (Web Application Firewall)
[OK] Rate limiting applicatif
[OK] CAPTCHA
[OK] Behavioral analysis


2. RECONNAISSANCE
═════════════════

Collecte informations préattaque


Port Scanning
─────────────

Identifier services ouverts

Outils : nmap, masscan

```
nmap -sS -p- 192.168.1.10  (SYN scan tous ports)
nmap -sV 192.168.1.10      (Version services)
nmap -O 192.168.1.10       (OS fingerprinting)
```

Défense :
[OK] Firewall (bloquer scans)
[OK] IDS alertes
[OK] Port knocking
[OK] Fail2ban


Network Mapping
───────────────

Topologie réseau

Outils : traceroute, nmap

Défense :
[OK] Masquer topologie (TTL filtering)
[OK] Honeypots (diversion)


Banner Grabbing
───────────────

Identifier versions logiciels

```
telnet 192.168.1.10 80
GET / HTTP/1.1

-> Révèle "Server: Apache/2.4.41"
```

Défense :
[OK] Masquer banners (ServerTokens Prod)
[OK] Custom error pages


3. SPOOFING
═══════════

Usurpation identité


IP Spoofing
───────────

Falsifier IP source

Attaques :
- DDoS amplification
- Bypass ACL
- Anonymat

Défense :
[OK] uRPF (Unicast Reverse Path Forwarding)
[OK] Ingress filtering (RFC 2827)
[OK] BCP 38


ARP Spoofing
────────────

Voir Chapitre 7 (MAC addressing)

Défense :
[OK] DAI (Dynamic ARP Inspection)
[OK] Static ARP
[OK] Port Security


DNS Spoofing
────────────

Fausses réponses DNS (cache poisoning)

Défense :
[OK] DNSSEC
[OK] Random source port
[OK] Transaction ID aléatoire


4. MAN-IN-THE-MIDDLE (MITM)
════════════════════════════

Interception communication

ARP MITM
────────

ARP spoofing -> Trafic redirigé attaquant

Défense : DAI, Port Security


SSL/TLS Stripping
─────────────────

HTTPS -> HTTP (downgrade)

Outil : sslstrip

Défense :
[OK] HSTS (HTTP Strict Transport Security)
[OK] Certificate pinning


Rogue AP
────────

Faux point d'accès Wi-Fi

"Free_WiFi" -> Trafic capturé

Défense :
[OK] VPN
[OK] HTTPS systématique
[OK] 802.1X (authentification)


5. MALWARE
══════════

Logiciels malveillants


Ransomware
──────────

Chiffre données -> Demande rançon

Exemples : WannaCry, Petya, LockBit

Défense :
[OK] Backups (3-2-1 rule)
[OK] Segmentation réseau
[OK] EDR (Endpoint Detection Response)
[OK] User training
[OK] Patch management


Botnet
──────

Réseau machines compromises

Usage : DDoS, spam, cryptomining

Défense :
[OK] Antivirus/EDR
[OK] Firewall egress filtering
[OK] IDS/IPS


Trojan / Backdoor
─────────────────

Accès distant caché

Défense :
[OK] Application whitelisting
[OK] Network monitoring
[OK] Regular scans


6. EXPLOITATION VULNÉRABILITÉS
═══════════════════════════════

Zero-Day
────────

Vulnérabilité inconnue vendor

Exemple : Log4Shell (2021)

Défense :
[OK] Virtual patching (IPS)
[OK] WAF rules
[OK] Segmentation
[OK] Monitoring anomalies


Buffer Overflow
───────────────

Débordement mémoire -> Code arbitraire

Défense :
[OK] DEP (Data Execution Prevention)
[OK] ASLR (Address Space Layout Randomization)
[OK] Stack canaries
[OK] Code audits


SQL Injection
─────────────

Injection SQL malveillant

Exemple :
```
username: admin' OR '1'='1
```

Défense :
[OK] Prepared statements
[OK] Input validation
[OK] WAF
[OK] Least privilege DB


XSS (Cross-Site Scripting)
──────────────────────────

Injection JavaScript

Défense :
[OK] Input sanitization
[OK] CSP (Content Security Policy)
[OK] Output encoding


7. ATTAQUES PHYSIQUES
══════════════════════

Physical Access
───────────────

Accès datacenter -> Connexion directe

Défense :
[OK] Physical security (locks, cameras)
[OK] Port security
[OK] Encrypted disks


Shoulder Surfing
────────────────

Observation mot de passe

Défense :
[OK] Privacy screens
[OK] Awareness training


Dumpster Diving
───────────────

Récupération documents poubelle

Défense :
[OK] Shredding
[OK] Secure disposal
"""


# ----------------------------------------------------------------------------
# [COURS] EXERCICES ULTRA-DÉTAILLÉS
# ----------------------------------------------------------------------------

"""
[IDEE] EXERCICES PRATIQUES


═══════════════════════════════════════════════════════════
EXERCICE 1 : CONFIGURATION ACL COMPLEXE
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Réseau entreprise :

Zones :
- LAN : 192.168.1.0/24
- DMZ : 10.0.0.0/24
- SERVEURS : 172.16.0.0/24

Serveurs DMZ :
- Web : 10.0.0.10
- Mail : 10.0.0.20
- DNS : 10.0.0.30

Serveurs internes :
- File Server : 172.16.0.10
- Database : 172.16.0.20
- AD : 172.16.0.30

Règles sécurité :

1. LAN -> Internet :
   - Autoriser HTTP/HTTPS
   - Autoriser DNS (vers 8.8.8.8 uniquement)
   - Bloquer Telnet/FTP
   - Autoriser retours établis

2. LAN -> DMZ :
   - Autoriser HTTP/HTTPS vers Web
   - Autoriser SMTP vers Mail
   - Autoriser DNS vers DNS server
   - Bloquer SSH/RDP

3. LAN -> SERVEURS :
   - Autoriser SMB (445) vers File Server
   - Autoriser MySQL (3306) vers Database (admins seulement)
   - Autoriser Kerberos (88), LDAP (389) vers AD
   - Admin subnet (192.168.1.0/26) : Full access

4. Internet -> DMZ :
   - Autoriser HTTP/HTTPS vers Web
   - Autoriser SMTP vers Mail
   - Autoriser DNS vers DNS
   - Bloquer tout le reste

5. DMZ -> Internet :
   - Autoriser HTTP/HTTPS (updates)
   - Autoriser DNS
   - Bloquer le reste

6. Bloquer complètement :
   - DMZ -> LAN
   - DMZ -> SERVEURS
   - Internet -> LAN
   - Internet -> SERVEURS

Mission :
Créer ACL extended nommées complètes


[OK] CORRECTION EXERCICE 1

ACL 1 : LAN -> INTERNET
──────────────────────

```
ip access-list extended LAN-TO-INTERNET
 remark == Allow HTTP/HTTPS ==
 permit tcp 192.168.1.0 0.0.0.255 any eq 80
 permit tcp 192.168.1.0 0.0.0.255 any eq 443
 
 remark == Allow DNS to 8.8.8.8 only ==
 permit udp 192.168.1.0 0.0.0.255 host 8.8.8.8 eq 53
 
 remark == Block Telnet and FTP ==
 deny tcp 192.168.1.0 0.0.0.255 any eq 23 log
 deny tcp 192.168.1.0 0.0.0.255 any eq 21 log
 deny tcp 192.168.1.0 0.0.0.255 any eq 20 log
 
 remark == Allow established connections (return traffic) ==
 permit tcp any 192.168.1.0 0.0.0.255 established
 
 remark == Allow ICMP Echo Reply ==
 permit icmp any 192.168.1.0 0.0.0.255 echo-reply
 
 remark == Deny everything else ==
 deny ip any any log
```


ACL 2 : LAN -> DMZ
─────────────────

```
ip access-list extended LAN-TO-DMZ
 remark == Allow HTTP/HTTPS to Web Server ==
 permit tcp 192.168.1.0 0.0.0.255 host 10.0.0.10 eq 80
 permit tcp 192.168.1.0 0.0.0.255 host 10.0.0.10 eq 443
 
 remark == Allow SMTP to Mail Server ==
 permit tcp 192.168.1.0 0.0.0.255 host 10.0.0.20 eq 25
 
 remark == Allow DNS to DNS Server ==
 permit udp 192.168.1.0 0.0.0.255 host 10.0.0.30 eq 53
 permit tcp 192.168.1.0 0.0.0.255 host 10.0.0.30 eq 53
 
 remark == Block SSH and RDP ==
 deny tcp 192.168.1.0 0.0.0.255 10.0.0.0 0.0.0.255 eq 22 log
 deny tcp 192.168.1.0 0.0.0.255 10.0.0.0 0.0.0.255 eq 3389 log
 
 remark == Allow established ==
 permit tcp any 192.168.1.0 0.0.0.255 established
 
 remark == Deny rest ==
 deny ip any any log
```


ACL 3 : LAN -> SERVEURS
──────────────────────

```
ip access-list extended LAN-TO-SERVERS
 remark == Allow SMB to File Server ==
 permit tcp 192.168.1.0 0.0.0.255 host 172.16.0.10 eq 445
 
 remark == Allow MySQL to Database (Admins subnet only) ==
 permit tcp 192.168.1.0 0.0.0.63 host 172.16.0.20 eq 3306
 deny tcp 192.168.1.0 0.0.0.255 host 172.16.0.20 eq 3306 log
 
 remark == Allow Kerberos and LDAP to AD ==
 permit tcp 192.168.1.0 0.0.0.255 host 172.16.0.30 eq 88
 permit udp 192.168.1.0 0.0.0.255 host 172.16.0.30 eq 88
 permit tcp 192.168.1.0 0.0.0.255 host 172.16.0.30 eq 389
 permit udp 192.168.1.0 0.0.0.255 host 172.16.0.30 eq 389
 permit tcp 192.168.1.0 0.0.0.255 host 172.16.0.30 eq 636
 
 remark == Admin subnet full access ==
 permit ip 192.168.1.0 0.0.0.63 172.16.0.0 0.0.0.255
 
 remark == Allow established ==
 permit tcp any 192.168.1.0 0.0.0.255 established
 
 remark == Deny rest ==
 deny ip any any log
```


ACL 4 : INTERNET -> DMZ
──────────────────────

```
ip access-list extended INTERNET-TO-DMZ
 remark == Allow HTTP/HTTPS to Web Server ==
 permit tcp any host 10.0.0.10 eq 80
 permit tcp any host 10.0.0.10 eq 443
 
 remark == Allow SMTP to Mail Server ==
 permit tcp any host 10.0.0.20 eq 25
 
 remark == Allow DNS to DNS Server ==
 permit udp any host 10.0.0.30 eq 53
 permit tcp any host 10.0.0.30 eq 53
 
 remark == Allow established connections ==
 permit tcp any 10.0.0.0 0.0.0.255 established
 
 remark == Deny everything else ==
 deny ip any any log
```


ACL 5 : DMZ -> INTERNET
──────────────────────

```
ip access-list extended DMZ-TO-INTERNET
 remark == Allow HTTP/HTTPS for updates ==
 permit tcp 10.0.0.0 0.0.0.255 any eq 80
 permit tcp 10.0.0.0 0.0.0.255 any eq 443
 
 remark == Allow DNS ==
 permit udp 10.0.0.0 0.0.0.255 any eq 53
 
 remark == Allow established ==
 permit tcp any 10.0.0.0 0.0.0.255 established
 
 remark == Deny rest ==
 deny ip any any log
```


ACL 6 : DMZ -> LAN (BLOCK ALL)
──────────────────────────────

```
ip access-list extended DMZ-TO-LAN
 remark == BLOCK ALL DMZ to LAN ==
 deny ip 10.0.0.0 0.0.0.255 192.168.1.0 0.0.0.255 log
 deny ip any any
```


ACL 7 : DMZ -> SERVEURS (BLOCK ALL)
───────────────────────────────────

```
ip access-list extended DMZ-TO-SERVERS
 remark == BLOCK ALL DMZ to SERVERS ==
 deny ip 10.0.0.0 0.0.0.255 172.16.0.0 0.0.0.255 log
 deny ip any any
```


ACL 8 : INTERNET -> LAN (BLOCK ALL)
───────────────────────────────────

```
ip access-list extended INTERNET-TO-LAN
 remark == BLOCK ALL Internet to LAN ==
 deny ip any 192.168.1.0 0.0.0.255 log
 deny ip any any
```


Application interfaces :

```
interface GigabitEthernet0/0
 description LAN
 ip address 192.168.1.1 255.255.255.0
 ip access-group LAN-TO-INTERNET out
 ip access-group INTERNET-TO-LAN in

interface GigabitEthernet0/1
 description DMZ
 ip address 10.0.0.1 255.255.255.0
 ip access-group LAN-TO-DMZ in
 ip access-group DMZ-TO-INTERNET out
 ip access-group INTERNET-TO-DMZ in
 ip access-group DMZ-TO-LAN out
 ip access-group DMZ-TO-SERVERS out

interface GigabitEthernet0/2
 description SERVERS
 ip address 172.16.0.1 255.255.255.0
 ip access-group LAN-TO-SERVERS in

interface GigabitEthernet0/3
 description INTERNET
 ip address dhcp
 ip access-group INTERNET-TO-LAN out
 ip access-group INTERNET-TO-DMZ out
```


VÉRIFICATION :

```
show access-lists
show ip access-lists LAN-TO-INTERNET
show ip interface GigabitEthernet0/0
```


TESTS :

Depuis LAN :
```
telnet google.com 80     # OK (HTTP)
telnet google.com 443    # OK (HTTPS)
nslookup google.com 8.8.8.8  # OK (DNS)
telnet 10.0.0.10 80      # OK (DMZ Web)
telnet 10.0.0.10 22      # BLOCKED (SSH)
telnet 172.16.0.10 445   # OK (File Server)
```

Depuis Internet (simulation) :
```
telnet 10.0.0.10 80      # OK (DMZ Web)
telnet 10.0.0.10 22      # BLOCKED
telnet 192.168.1.10 80   # BLOCKED (LAN)
```



═══════════════════════════════════════════════════════════
EXERCICE 2 : ANALYSE ATTAQUE ET DÉFENSE
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Logs IDS (Snort) :

```
[**] [1:1000001:1] BACKDOOR ATTACK [**]
[Priority: 1]
01/15-10:30:15.123456 203.0.113.50:54321 -> 192.168.1.100:1337
TCP TTL:64 TOS:0x0 ID:12345 IpLen:20 DgmLen:60
***AP*** Seq: 0x12345678  Ack: 0x87654321  Win: 0x4000  TcpLen: 20

[**] [1:1000002:1] SQL INJECTION ATTEMPT [**]
[Priority: 1]
01/15-10:31:20.987654 203.0.113.75:50123 -> 10.0.0.10:80
TCP TTL:128 TOS:0x0 ID:54321 IpLen:20 DgmLen:500
***AP*** Seq: 0xABCDEF12  Ack: 0x11111111  Win: 0x8000  TcpLen: 20
Content: "GET /login.php?user=admin' OR '1'='1 HTTP/1.1"

[**] [1:1000003:1] PORT SCAN DETECTED [**]
[Priority: 2]
01/15-10:32:00.111111 198.51.100.25:Various -> 192.168.1.0/24:Various
TCP SYN packets: 1000+ in 60 seconds

[**] [1:1000004:1] DNS AMPLIFICATION [**]
[Priority: 1]
01/15-10:33:45.555555 192.168.1.10:53 -> 203.0.113.100:random
UDP packets: 10,000+ DNS responses (size 4KB each)
Source IP spoofed (various)

[**] [1:1000005:1] ARP SPOOFING [**]
[Priority: 1]
01/15-10:35:12.777777 AA:BB:CC:DD:EE:FF -> FF:FF:FF:FF:FF:FF
ARP Reply: 192.168.1.1 is at AA:BB:CC:DD:EE:FF
Original: 192.168.1.1 is at 00:11:22:33:44:55
```

Questions :

1. Identifier chaque type d'attaque
2. Évaluer criticité (1-5)
3. Déterminer impact potentiel
4. Proposer contre-mesures immédiates
5. Proposer mesures préventives long-terme


[OK] CORRECTION EXERCICE 2

ALERTE 1 : BACKDOOR ATTACK
──────────────────────────

Type : Backdoor / Command & Control (C2)

Port 1337 : Port typique backdoors

Analyse :
- Source : 203.0.113.50 (externe)
- Destination : 192.168.1.100:1337 (interne)
- Machine interne COMPROMISE [X]

Criticité : 5/5 [ROUGE] CRITIQUE

Impact :
- Machine compromise contrôlée attaquant
- Vol données possible
- Pivot vers autres machines
- Exfiltration
- Ransomware potentiel

Contre-mesures IMMÉDIATES :
1. Isoler 192.168.1.100 (déconnecter réseau)
   ```
   interface GigabitEthernet0/5
    shutdown
   ```

2. Bloquer IP source firewall
   ```
   access-list 100 deny ip host 203.0.113.50 any log
   ```

3. Bloquer port 1337 globalement
   ```
   access-list 100 deny tcp any any eq 1337 log
   ```

4. Analyse forensique machine
   - Memory dump
   - Disk imaging
   - Process analysis
   - Network connections

5. Scan réseau complet (compromises additionnelles ?)

Mesures PRÉVENTIVES :
[OK] EDR (Endpoint Detection Response) déployer
[OK] Egress filtering strict (bloquer ports non-standard sortants)
[OK] IPS inline (bloquer automatiquement)
[OK] Application whitelisting
[OK] User training (phishing)
[OK] Network segmentation
[OK] Regular vulnerability scans


ALERTE 2 : SQL INJECTION
─────────────────────────

Type : Web application attack (SQL Injection)

Analyse :
- Source : 203.0.113.75 (externe)
- Destination : 10.0.0.10:80 (DMZ Web Server)
- Payload : admin' OR '1'='1 (classique SQLi)
- Tente bypass authentification

Criticité : 4/5 [ROUGE] ÉLEVÉE

Impact :
- Accès non-autorisé admin panel
- Dump database
- Modification données
- Escalade privilèges
- Potential RCE (si stacked queries)

Contre-mesures IMMÉDIATES :
1. Bloquer IP attaquant
   ```
   access-list 100 deny ip host 203.0.113.75 any log
   ```

2. Vérifier logs serveur web (succès attaque ?)
   ```
   tail -f /var/log/apache2/access.log | grep 203.0.113.75
   ```

3. Inspecter database logs (modifications suspectes ?)

4. Si compromis : Restaurer backup, changer credentials

5. Patcher application URGENT

Mesures PRÉVENTIVES :
[OK] WAF (Web Application Firewall) déployer
   - ModSecurity
   - Cloudflare WAF
   - AWS WAF

[OK] Code secure :
   - Prepared statements (PDO, mysqli_prepare)
   - Input validation
   - Output encoding

[OK] Least privilege database
[OK] Regular pentesting
[OK] OWASP Top 10 training devs


ALERTE 3 : PORT SCAN
─────────────────────

Type : Reconnaissance (pre-attack phase)

Analyse :
- Source : 198.51.100.25 (externe)
- Destination : 192.168.1.0/24 (LAN interne !)
- 1000+ SYN packets 60s
- Scan massif

Criticité : 3/5 [ORANGE] MOYENNE (précurseur attaque)

Impact :
- Mapping réseau attaquant
- Identification services vulnérables
- Préparation exploitation future

Question CRITIQUE : Comment externe scanne LAN interne ?
-> Firewall défaillant OU
-> Machine interne compromise (scan interne)

Contre-mesures IMMÉDIATES :
1. Bloquer IP source
   ```
   access-list 100 deny ip host 198.51.100.25 any log
   ```

2. Vérifier firewall rules (scan externe ne devrait PAS atteindre LAN)
   ```
   show ip access-lists
   ```

3. Identifier comment scan atteint LAN :
   - Firewall misconfiguration ?
   - VPN compromise ?
   - Machine interne scanne (pivot) ?

4. Si machine interne : Identifier et isoler

Mesures PRÉVENTIVES :
[OK] Firewall strict (bloquer SYN floods)
[OK] Rate limiting (max connexions/IP/seconde)
[OK] IPS règles anti-scan
[OK] Port knocking (services sensibles)
[OK] Fail2ban
[OK] Honeypots (détection early)


ALERTE 4 : DNS AMPLIFICATION
─────────────────────────────

Type : DDoS (Distributed Denial of Service)

Analyse :
- Source : 192.168.1.10:53 (DNS interne)
- Destination : 203.0.113.100 (externe)
- 10,000+ réponses DNS 4KB
- IP source spoofée (attaquant utilise NOTRE serveur)

Criticité : 5/5 [ROUGE] CRITIQUE

Impact :
- NOUS sommes utilisés attaque DDoS
- Victime : 203.0.113.100
- Saturation bande passante sortante
- Réputation IP (blacklist)
- Possible action légale

Mécanisme :
1. Attaquant spoofs 203.0.113.100
2. Envoie requêtes DNS massives vers NOTRE serveur
3. NOTRE serveur répond -> Inonde victime
4. Amplification ×50-100 (requête 60B -> Réponse 4KB)

Contre-mesures IMMÉDIATES :
1. Limiter résolveur DNS interne uniquement
   ```
   ! Bind9 /etc/bind/named.conf.options
   allow-query { 192.168.1.0/24; };
   allow-recursion { 192.168.1.0/24; };
   ```

2. Rate limiting DNS
   ```
   rate-limit {
       responses-per-second 10;
   };
   ```

3. Bloquer requêtes externes
   ```
   access-list 100 deny udp any any eq 53 log
   access-list 100 permit udp 192.168.1.0 0.0.0.255 any eq 53
   ```

4. BCP 38 (Ingress filtering - bloquer IPs spoofées)
   ```
   ip verify unicast source reachable-via rx
   ```

Mesures PRÉVENTIVES :
[OK] DNS resolver INTERNE uniquement
[OK] Firewall egress strict
[OK] Response Rate Limiting (RRL)
[OK] Anycast DNS (distribution)
[OK] Anti-DDoS cloud (Cloudflare)


ALERTE 5 : ARP SPOOFING
───────────────────────

Type : Man-in-the-Middle (Layer 2)

Analyse :
- MAC AA:BB:CC:DD:EE:FF usurpe gateway (192.168.1.1)
- Original gateway MAC : 00:11:22:33:44:55
- Attaquant intercepte trafic LAN

Criticité : 5/5 [ROUGE] CRITIQUE

Impact :
- MITM : Tout trafic LAN intercepté
- Vol credentials
- Injection malware
- Session hijacking
- SSL stripping possible

Contre-mesures IMMÉDIATES :
1. Identifier machine attaquante
   ```
   show mac address-table | include AABB.CCDD.EEFF
   ```

2. Shutdown port
   ```
   interface GigabitEthernet0/X
    shutdown
   ```

3. Isoler machine

4. Vider caches ARP réseau
   ```
   clear arp-cache
   ```

Mesures PRÉVENTIVES :
[OK] DAI (Dynamic ARP Inspection)
   ```
   ip dhcp snooping
   ip dhcp snooping vlan 1
   ip arp inspection vlan 1
   
   interface GigabitEthernet0/1
    description UPLINK
    ip arp inspection trust
   ```

[OK] Port Security
   ```
   switchport port-security
   switchport port-security maximum 2
   switchport port-security violation restrict
   ```

[OK] 802.1X (authentification)
[OK] Static ARP (serveurs critiques)


SYNTHÈSE PRIORITÉS

URGENCE IMMÉDIATE (30 min) :
1. Isoler 192.168.1.100 (backdoor)
2. Bloquer 203.0.113.50, 203.0.113.75, 198.51.100.25
3. Identifier/isoler machine ARP spoofing
4. Sécuriser DNS (internal only)

COURT TERME (24h) :
1. Forensics machines compromises
2. Patch web server (SQLi)
3. Audit firewall rules
4. Déployer DAI
5. Scan réseau complet

MOYEN TERME (1 semaine) :
1. WAF déploiement
2. EDR déploiement
3. IPS inline activation
4. Network segmentation
5. Egress filtering strict

LONG TERME (1 mois+) :
1. Security awareness training
2. Regular pentesting
3. SIEM déploiement
4. Incident response plan
5. Disaster recovery testing
"""


# ============================================================================
# [DOCS] CONCLUSION CHAPITRE 14
# ============================================================================

"""
[BRAVO] FÉLICITATIONS !

Chapitre 14 : SÉCURITÉ RÉSEAU terminé


[GUIDE] RÉCAPITULATIF

[OK] Principes sécurité (CIA, défense en profondeur)
[OK] ACL Cisco (Standard, Extended, Named)
[OK] Firewalls (générations, stateful, zones)
[OK] IDS/IPS (signatures, Snort, tuning)
[OK] Attaques courantes (DoS, MITM, spoofing, malware)
[OK] Défenses (DAI, Port Security, WAF, EDR)
[OK] Configuration détaillée
[OK] Troubleshooting sécurité
[OK] 2 Exercices ultra-complets


[OBJECTIF] COMPÉTENCES MAÎTRISÉES

[OK] Concevoir architecture sécurité multi-couches
[OK] Configurer ACL complexes Cisco
[OK] Déployer firewalls (zones, policies)
[OK] Implémenter IDS/IPS
[OK] Identifier attaques réseaux
[OK] Répondre incidents sécurité
[OK] Analyser logs sécurité
[OK] Proposer défenses adaptées


[PRO] APPLICATIONS RÉELLES

[OK] Sécuriser infrastructure entreprise
[OK] SOC (Security Operations Center)
[OK] Pentesting / Red Team
[OK] Blue Team / Défense
[OK] Certifications (CCNA Security, CEH, OSCP)
[OK] Compliance (ISO 27001, PCI-DSS)


-> CHAPITRES SUIVANTS

- Chapitre 15 : VPN (Site-to-Site, Remote Access)
- Chapitre 16 : QoS (Quality of Service)
- Chapitres 17-20 : Routage (Statique, RIP, OSPF, EIGRP)


[RAPIDE] SÉCURITÉ = PRIORITÉ #1

Les menaces évoluent QUOTIDIENNEMENT.
La sécurité n'est JAMAIS finie.
C'est un PROCESSUS CONTINU.

Vous avez maintenant les fondations solides pour :
[OK] Protéger réseaux
[OK] Détecter menaces
[OK] Réagir incidents
[OK] Anticiper attaques

EXCELLENT TRAVAIL ! [SECURITE]


═══════════════════════════════════════════════════════════
[GUIDE] FIN DU CHAPITRE 14 - SÉCURITÉ RÉSEAU
═══════════════════════════════════════════════════════════
"""

# ============================================================================
# CHAPITRE 15 : VPN (VIRTUAL PRIVATE NETWORKS)
# ============================================================================

"""
[OBJECTIF] OBJECTIFS DU CHAPITRE

[OK] Principes VPN (tunneling, encapsulation)
[OK] Types VPN (Site-to-Site, Remote Access, Client-to-Client)
[OK] Protocoles VPN (IPsec, SSL/TLS, PPTP, L2TP, OpenVPN, WireGuard)
[OK] IPsec détaillé (AH, ESP, IKE, modes tunnel/transport)
[OK] SSL/TLS VPN
[OK] Cryptographie (chiffrement, hash, clés)
[OK] Configuration Cisco IPsec
[OK] Configuration OpenVPN
[OK] WireGuard (moderne)
[OK] VPN cloud (AWS, Azure)
[OK] Troubleshooting VPN
[OK] Exercices ultra-pratiques

[IDEE] POURQUOI VPN EST ESSENTIEL ?

Le VPN est CRITIQUE pour :
- Télétravail (70% emplois post-COVID)
- Connexion sites distants
- Sécurité Wi-Fi public
- Contournement censure
- Privacy (masquer IP)
- Accès ressources internes

Marché VPN : $44.6B (2024) -> $92.6B (2030)

Sans VPN : Données transitent en CLAIR sur Internet !
Avec VPN : Tunnel CHIFFRÉ, sécurisé, privé [OK]
"""


# ----------------------------------------------------------------------------
# [SECURISE] PARTIE 1 : PRINCIPES FONDAMENTAUX VPN
# ----------------------------------------------------------------------------

"""
VPN (VIRTUAL PRIVATE NETWORK)


DÉFINITION

VPN = Réseau privé virtuel sur infrastructure publique

Principe : Tunnel chiffré à travers Internet

Analogie : Tunnel sous montagne
- Surface (Internet) : Dangereux, public
- Tunnel (VPN) : Sécurisé, privé, direct


PROBLÈME RÉSOLU

Réseau traditionnel privé (MPLS, Leased Line) :
[X] Coûteux ($1000s/mois)
[X] Complexe déploiement
[X] Pas flexible (télétravail)

VPN sur Internet :
[OK] Économique (Internet existant)
[OK] Simple déploiement
[OK] Flexible (anywhere)
[OK] Sécurisé (chiffrement)


FONCTIONS VPN

1. CONFIDENTIALITÉ
──────────────────

Chiffrement trafic

AES-256, ChaCha20

Intercepteur voit : Gibberish [OK]


2. AUTHENTIFICATION
───────────────────

Vérifier identités

Méthodes :
- Preshared Keys (PSK)
- Certificats (PKI)
- Username/Password
- MFA


3. INTÉGRITÉ
────────────

Données non-modifiées

Hash : SHA-256, HMAC

Modification détectée [OK]


4. ANTI-REPLAY
──────────────

Empêcher replay attacks

Sequence numbers

Anciens paquets rejetés [OK]


COMPOSANTS VPN


Tunnel
──────

Connexion logique chiffrée

Endpoints : 2 extrémités VPN


Encapsulation
─────────────

Paquet original -> Enveloppe chiffrée

```
[IP Header ORIGINAL] [Data ORIGINAL]
           v Encapsulation
[IP Header NOUVEAU] [VPN Header] [CHIFFRÉ: IP Original | Data]
```

Paquet VPN contient paquet original chiffré


Gateway VPN
───────────

Équipement endpoint VPN

Types :
- Routeur VPN
- Firewall VPN
- Serveur VPN dédié
- Appliance VPN


Client VPN
──────────

Logiciel endpoint utilisateur

Exemples :
- Cisco AnyConnect
- OpenVPN Client
- WireGuard
- NordVPN, ExpressVPN (commercial)


TYPES VPN


1. SITE-TO-SITE VPN
═══════════════════

Connecte 2+ sites (bureaux, datacenters)

```
Site A (Paris)                Site B (Lyon)
   LAN A                         LAN B
192.168.1.0/24               192.168.2.0/24
     │                             │
  Router A <-═══ Internet ═══-> Router B
  (VPN GW)      (Tunnel)      (VPN GW)
```

Caractéristiques :
- Gateway-to-Gateway
- Always-on
- Transparent pour utilisateurs
- Connecte réseaux entiers

Usage : Entreprises multi-sites


2. REMOTE ACCESS VPN
════════════════════

Utilisateur distant -> Réseau entreprise

```
Utilisateur (Maison/Café)
   Laptop + VPN Client
        │
        v Internet
        │
    VPN Gateway <- LAN Entreprise
```

Caractéristiques :
- Client-to-Gateway
- On-demand (connexion manuelle)
- Utilisateur authentifié

Usage : Télétravail, nomades


3. CLIENT-TO-CLIENT (P2P)
═════════════════════════

Pair-à-pair direct

Exemple : Hamachi, ZeroTier

Usage : Gaming, partage fichiers


ARCHITECTURE VPN


Full Tunnel
───────────

TOUT trafic via VPN

Internet aussi -> VPN -> Entreprise -> Internet

```
Client -> VPN -> Entreprise -> Internet -> Google
```

Avantages :
[OK] Sécurité maximale
[OK] Contrôle total trafic

Inconvénients :
[X] Charge bande passante entreprise
[X] Latence accrue Internet


Split Tunnel
────────────

Trafic entreprise -> VPN
Trafic Internet -> Direct

```
Client -> Entreprise VPN
      -> Internet Direct
```

Avantages :
[OK] Performance Internet
[OK] Économie bande passante

Inconvénients :
[X] Sécurité réduite
[X] Fuites possibles


PROTOCOLES VPN (Aperçu)

┌───────────┬──────────┬───────────┬──────────────┐
│ Protocole │ Couche   │ Sécurité  │    Usage     │
├───────────┼──────────┼───────────┼──────────────┤
│ IPsec     │ L3 (IP)  │ Très fort │ Site-to-Site │
│ SSL/TLS   │ L5-7     │ Fort      │ Remote Access│
│ PPTP      │ L2       │ FAIBLE [X] │ Obsolète     │
│ L2TP      │ L2       │ Moyen*    │ Combiné IPsec│
│ OpenVPN   │ L3-4     │ Très fort │ Flexible     │
│ WireGuard │ L3       │ Très fort │ Moderne      │
│ SSTP      │ L5       │ Fort      │ Windows      │
└───────────┴──────────┴───────────┴──────────────┘

* L2TP seul faible, combiné avec IPsec = fort


AVANTAGES VPN

[OK] Sécurité (chiffrement)
[OK] Privacy (masque IP)
[OK] Économie (vs MPLS)
[OK] Flexibilité (télétravail)
[OK] Accès ressources internes
[OK] Contournement géo-restrictions


INCONVÉNIENTS VPN

[X] Latence accrue
[X] Débit réduit (overhead chiffrement)
[X] Complexité configuration
[X] Single point of failure (gateway)
[X] Compatibilité applications (NAT, ports)
"""


# ----------------------------------------------------------------------------
# [SECURITE] PARTIE 2 : IPSEC (IP SECURITY)
# ----------------------------------------------------------------------------

"""
IPSEC (IP SECURITY)


DÉFINITION

IPsec = Suite protocoles sécurité IP (Layer 3)

Standard : RFC 4301+ (2005)

Framework modulaire :
- Authentification
- Chiffrement
- Intégrité
- Modes tunnel/transport


COMPOSANTS IPSEC


1. AH (AUTHENTICATION HEADER)
══════════════════════════════

Protocol Number : 51

Fonctions :
[OK] Authentification
[OK] Intégrité
[X] PAS de chiffrement

Hash : HMAC-SHA1/SHA256

Format paquet :

```
[IP Header] [AH Header] [Data CLAIR]
```

AH Header :
- Next Header : Protocole suivant
- Payload Length
- SPI (Security Parameter Index)
- Sequence Number
- ICV (Integrity Check Value - Hash)

Problème : NAT incompatible (hash inclut IP header)

Usage : Rare (ESP préféré)


2. ESP (ENCAPSULATING SECURITY PAYLOAD)
════════════════════════════════════════

Protocol Number : 50

Fonctions :
[OK] Authentification
[OK] Intégrité
[OK] Chiffrement [OK]

Algorithmes :
- Chiffrement : AES, 3DES, ChaCha20
- Hash : SHA-256, SHA-512

Format paquet :

```
[IP Header] [ESP Header] [CHIFFRÉ: Data] [ESP Trailer] [ESP Auth]
```

ESP Header :
- SPI
- Sequence Number

ESP Trailer :
- Padding
- Pad Length
- Next Header

ESP Auth :
- ICV (Hash)

Avantages :
[OK] Confidentialité (chiffrement)
[OK] Compatible NAT (NAT-T)

Usage : Standard actuel (99%)


3. IKE (INTERNET KEY EXCHANGE)
═══════════════════════════════

Protocol : UDP 500, 4500 (NAT-T)

Fonctions :
- Négociation paramètres
- Échange clés
- Authentification endpoints

Versions :
- IKEv1 (1998) : Complexe, 2 phases
- IKEv2 (2005) : Simplifié, performant [OK]


MODES IPSEC


MODE TRANSPORT
══════════════

Chiffre seulement payload

IP header ORIGINAL conservé

```
[IP Header ORIGINAL] [ESP Header] [CHIFFRÉ: Data]
```

Usage : Host-to-Host

Avantage : Overhead minimal

Exemple : Client VPN -> Serveur spécifique


MODE TUNNEL
═══════════

Chiffre TOUT paquet (IP header + payload)

Nouveau IP header ajouté

```
[IP Header NOUVEAU] [ESP Header] [CHIFFRÉ: IP Header Original | Data]
```

Usage : Site-to-Site, Remote Access

Avantage : Masque IPs originales

Exemple : Site Paris -> Site Lyon


Comparaison :

Transport :
```
PC 192.168.1.10 -> Serveur 10.0.0.10
[IP: 192.168.1.10 -> 10.0.0.10] [ESP] [Data chiffré]
```

Tunnel :
```
PC 192.168.1.10 -> Serveur 10.0.0.10
VPN Gateway 203.0.113.1 -> VPN Gateway 198.51.100.1

[IP: 203.0.113.1 -> 198.51.100.1] [ESP] [CHIFFRÉ: IP: 192.168.1.10 -> 10.0.0.10 | Data]
```


IKE PHASES


IKEv1 (Legacy)
══════════════

Phase 1 : ISAKMP SA (Security Association)
──────────────────────────────────────────

Établir tunnel sécurisé IKE

Modes :
- Main Mode (6 messages) : Sécurisé, lent
- Aggressive Mode (3 messages) : Rapide, moins sécurisé

Négociation :
- Hash : SHA-256
- Chiffrement : AES-256
- Authentification : PSK ou Certificates
- Diffie-Hellman Group : 14, 19, 20

Résultat : Tunnel IKE protégé


Phase 2 : IPsec SA
──────────────────

Établir tunnels IPsec (données)

Mode : Quick Mode

Négociation :
- ESP ou AH
- Chiffrement : AES-256
- Hash : SHA-256
- PFS (Perfect Forward Secrecy)
- Lifetime

Résultat : Tunnels IPsec actifs


IKEv2 (Moderne)
═══════════════

Simplifié : 4 messages (IKE_SA_INIT, IKE_AUTH)

Avantages vs IKEv1 :
[OK] Plus rapide (moins messages)
[OK] Mobilité (MOBIKE)
[OK] Détection NAT intégré
[OK] EAP support (Extensible Authentication)
[OK] Plus fiable (retransmission)

Recommandé : Toujours IKEv2 si possible


SA (SECURITY ASSOCIATION)

SA = Paramètres négociés VPN

Unidirectionnel -> 2 SAs (inbound + outbound)

Identifié par :
- SPI (Security Parameter Index)
- Destination IP
- Protocole (AH ou ESP)

Contenu SA :
- Algorithmes (AES-256, SHA-256)
- Clés cryptographiques
- Lifetime
- Sequence number
- Mode (tunnel/transport)


CRYPTOGRAPHIE IPSEC


Chiffrement Symétrique
──────────────────────

Même clé chiffrement/déchiffrement

Algorithmes :
- AES-128/192/256 (Standard) [OK]
- 3DES (Obsolète)
- ChaCha20 (Moderne, rapide)

AES-256 : Quasi-incassable (2^256 combinaisons)

Performance : AES-NI (accélération matérielle CPU)


Hash (Intégrité)
────────────────

Empreinte message

Algorithmes :
- SHA-256 (Standard) [OK]
- SHA-384/512
- MD5 (OBSOLÈTE - cassé)

HMAC : Hash + clé secrète


Diffie-Hellman (DH)
───────────────────

Échange clés sécurisé

Groupes :
- Group 2 (1024-bit) : OBSOLÈTE
- Group 14 (2048-bit) : Minimum
- Group 19 (256-bit ECC) : Recommandé
- Group 20 (384-bit ECC)

Plus grand = Plus sécurisé mais plus lent


Perfect Forward Secrecy (PFS)
─────────────────────────────

Nouvelles clés chaque session

Si clé compromise -> Seulement cette session

PFS activé : Recommandé [OK]


Authentification
────────────────

Preshared Key (PSK)
───────────────────

Clé partagée manuellement

Simple mais :
[X] Scalabilité faible
[X] Gestion clés manuelle
[X] Compromise = Tout refaire

Usage : Petits déploiements, lab


Certificats (PKI)
─────────────────

Certificate Authority (CA)

Chaque endpoint : Certificat signé CA

Scalable [OK]

Complexe initial [X]

Usage : Entreprises grandes


CONFIGURATION IPSEC CISCO


Site-to-Site VPN
════════════════

Scénario :
- Site A (Paris) : 192.168.1.0/24, Gateway 203.0.113.1
- Site B (Lyon) : 192.168.2.0/24, Gateway 198.51.100.1


Configuration Router A (Paris) :

```
! Phase 1 - ISAKMP Policy
crypto isakmp policy 10
 encryption aes 256
 hash sha256
 authentication pre-share
 group 14
 lifetime 86400

! Preshared Key
crypto isakmp key MySecretKey123! address 198.51.100.1

! Phase 2 - IPsec Transform Set
crypto ipsec transform-set STRONG esp-aes 256 esp-sha256-hmac
 mode tunnel

! ACL - Trafic intéressant (à chiffrer)
access-list 100 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255

! Crypto Map
crypto map VPNMAP 10 ipsec-isakmp
 set peer 198.51.100.1
 set transform-set STRONG
 set pfs group14
 match address 100

! Application sur interface WAN
interface GigabitEthernet0/1
 description WAN
 ip address 203.0.113.1 255.255.255.252
 crypto map VPNMAP

! Route statique vers réseau distant
ip route 192.168.2.0 255.255.255.0 198.51.100.1
```


Configuration Router B (Lyon) :

```
! Mirror config Router A
crypto isakmp policy 10
 encryption aes 256
 hash sha256
 authentication pre-share
 group 14
 lifetime 86400

crypto isakmp key MySecretKey123! address 203.0.113.1

crypto ipsec transform-set STRONG esp-aes 256 esp-sha256-hmac
 mode tunnel

access-list 100 permit ip 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.255

crypto map VPNMAP 10 ipsec-isakmp
 set peer 203.0.113.1
 set transform-set STRONG
 set pfs group14
 match address 100

interface GigabitEthernet0/1
 description WAN
 ip address 198.51.100.1 255.255.255.252
 crypto map VPNMAP

ip route 192.168.1.0 255.255.255.0 203.0.113.1
```


VÉRIFICATION

```
! Status tunnel
show crypto isakmp sa
show crypto ipsec sa

! Statistiques
show crypto ipsec sa detail

! Debug ([ATTENTION] CPU intensif)
debug crypto isakmp
debug crypto ipsec
```

Exemple sortie :
```
Router# show crypto isakmp sa

IPv4 Crypto ISAKMP SA
dst             src             state          conn-id status
198.51.100.1    203.0.113.1     QM_IDLE           1001 ACTIVE

Router# show crypto ipsec sa

interface: GigabitEthernet0/1
    Crypto map tag: VPNMAP, local addr 203.0.113.1

   protected vrf: (none)
   local  ident (addr/mask/prot/port): (192.168.1.0/255.255.255.0/0/0)
   remote ident (addr/mask/prot/port): (192.168.2.0/255.255.255.0/0/0)
   current_peer 198.51.100.1 port 500
     PERMIT, flags={origin_is_acl,}
    #pkts encaps: 1000, #pkts encrypt: 1000, #pkts digest: 1000
    #pkts decaps: 950, #pkts decrypt: 950, #pkts verify: 950
```


NAT-T (NAT TRAVERSAL)

Problème : ESP incompatible NAT

Solution : NAT-T (UDP 4500)

ESP encapsulé dans UDP

Cisco auto-détecte NAT

```
! Si nécessaire forcer
crypto isakmp nat-traversal 20
```


RECOMMANDATIONS SÉCURITÉ

[OK] IKEv2 (si supporté)
[OK] AES-256
[OK] SHA-256 minimum
[OK] DH Group 14+ (19/20 meilleur)
[OK] PFS activé
[OK] Lifetime court (3600s)
[OK] Certificats (vs PSK) si possible
[OK] Logs activés
[OK] Updates firmware régulières


DÉPANNAGE IPSEC

Problème : Tunnel ne monte pas

Checklist :
1. Connectivité IP (ping peer)
2. Firewall autorise UDP 500, 4500
3. PSK identique
4. Peer IPs corrects
5. ACL intéressant matching
6. Phase 1 paramètres identiques
7. Phase 2 paramètres identiques
8. Routes correctes

Debug :
```
debug crypto isakmp
debug crypto ipsec
```

Erreurs courantes :
- "MM_NO_STATE" : Pas de réponse peer
- "Invalid ID" : PSK incorrect
- "No proposal chosen" : Paramètres mismatch
"""


# ----------------------------------------------------------------------------
# [WEB] PARTIE 3 : SSL/TLS VPN
# ----------------------------------------------------------------------------

"""
SSL/TLS VPN


DÉFINITION

VPN utilisant SSL/TLS (HTTPS)

Port : 443 (TCP)

Avantages :
[OK] Traverse firewalls facilement (port 443)
[OK] Pas de client spécial (browser suffit)
[OK] Simple utilisateur
[OK] Compatible NAT


DIFFÉRENCE vs IPSEC

┌─────────────┬───────────────┬──────────────┐
│   Critère   │    IPsec      │   SSL VPN    │
├─────────────┼───────────────┼──────────────┤
│ Couche      │ L3 (IP)       │ L5-7 (App)   │
│ Client      │ Obligatoire   │ Optionnel    │
│ Port        │ 500, 4500     │ 443          │
│ NAT         │ NAT-T requis  │ Natif        │
│ Firewall    │ Bloqué parfois│ Passe [OK]     │
│ Performance │ Meilleure     │ Overhead TLS │
│ Granularité │ Réseau        │ Application  │
└─────────────┴───────────────┴──────────────┘


MODES SSL VPN


1. CLIENTLESS (BROWSER)
═══════════════════════

Accès via navigateur web uniquement

Portail HTTPS

Applications web, RDP, SSH (via applets)

Avantages :
[OK] Zéro installation
[OK] N'importe quel OS
[OK] Kiosques publics possible

Inconvénients :
[X] Fonctionnalité limitée
[X] Seulement apps web
[X] Performance réduite

Usage : Accès occasionnel


2. THIN CLIENT (JAVA/ACTIVEХ)
══════════════════════════════

Applet téléchargé temporairement

Étend fonctionnalités (partage fichiers, clients lourds)

Avantages :
[OK] Pas d'installation permanente
[OK] Plus fonctionnel que clientless

Inconvénients :
[X] Sécurité applets
[X] Compatibilité browser


3. FULL CLIENT (TUNNEL)
═══════════════════════

Client VPN installé

Tunnel complet (comme IPsec)

Exemples : Cisco AnyConnect, Pulse Secure

Avantages :
[OK] Fonctionnalité complète
[OK] Performance
[OK] Split tunnel support

Inconvénients :
[X] Installation nécessaire
[X] Maintenance client

Usage : Télétravail quotidien


PROTOCOLES


TLS 1.2 / 1.3
═════════════

Transport Layer Security

TLS 1.3 (2018) : Recommandé [OK]
- Plus rapide (1-RTT)
- Plus sécurisé
- Moins algorithmes obsolètes

TLS 1.2 : Acceptable
TLS 1.0/1.1 : OBSOLÈTE [X]


DTLS (DATAGRAM TLS)
═══════════════════

TLS sur UDP

Avantages :
[OK] Pas de HOL blocking
[OK] Meilleure performance
[OK] VoIP, streaming

Cisco AnyConnect : TLS + DTLS


CONFIGURATION CISCO ASA


SSL VPN (AnyConnect)
════════════════════

```
! Activer WebVPN
webvpn
 enable outside
 anyconnect image disk0:/anyconnect-win-4.10.pkg
 anyconnect enable
 tunnel-group-list enable

! Tunnel Group (VPN Pool)
tunnel-group REMOTE-USERS type remote-access
tunnel-group REMOTE-USERS general-attributes
 address-pool VPN-POOL
 default-group-policy REMOTE-POLICY

tunnel-group REMOTE-USERS webvpn-attributes
 group-alias REMOTE-USERS enable

! IP Pool
ip local pool VPN-POOL 192.168.100.1-192.168.100.100 mask 255.255.255.0

! Group Policy
group-policy REMOTE-POLICY internal
group-policy REMOTE-POLICY attributes
 vpn-tunnel-protocol ssl-client
 split-tunnel-policy tunnelspecified
 split-tunnel-network-list value SPLIT-ACL
 dns-server value 8.8.8.8 8.8.4.4
 wins-server none
 default-domain value entreprise.com

! Split Tunnel ACL
access-list SPLIT-ACL standard permit 192.168.1.0 255.255.255.0
access-list SPLIT-ACL standard permit 10.0.0.0 255.255.255.0

! Authentification locale (ou RADIUS/LDAP)
username alice password SecurePass123! encrypted
username bob password SecurePass456! encrypted

! Certificat SSL
crypto ca trustpoint SSL-CERT
 enrollment self
 subject-name CN=vpn.entreprise.com
 keypair SSL-KEYPAIR

crypto ca enroll SSL-CERT noconfirm

ssl trust-point SSL-CERT outside
```


AUTHENTIFICATION


Local
─────

Base ASA locale

Simple, non-scalable


RADIUS
──────

Serveur externe (FreeRADIUS, NPS)

Scalable [OK]

MFA support

```
aaa-server RADIUS-SERVER protocol radius
aaa-server RADIUS-SERVER (inside) host 192.168.1.50
 key RadiusSecret123!

tunnel-group REMOTE-USERS general-attributes
 authentication-server-group RADIUS-SERVER
```


LDAP / Active Directory
───────────────────────

Intégration AD

SSO possible

```
aaa-server AD-SERVER protocol ldap
aaa-server AD-SERVER (inside) host 192.168.1.10
 ldap-base-dn DC=entreprise,DC=com
 ldap-scope subtree
 ldap-naming-attribute sAMAccountName
 server-type microsoft

tunnel-group REMOTE-USERS general-attributes
 authentication-server-group AD-SERVER
```


MFA (MULTI-FACTOR)
──────────────────

2FA/MFA : Sécurité renforcée

Solutions :
- Duo Security
- Google Authenticator
- RSA SecurID
- Okta

Recommandé entreprise [OK]


CLIENT ANYCONNECT

Installation utilisateur :
1. Naviguer https://vpn.entreprise.com
2. Télécharger AnyConnect
3. Installer
4. Connecter (username/password)

Profils XML déployés automatiquement


RECOMMANDATIONS SSL VPN

[OK] TLS 1.3 uniquement
[OK] Certificats valides (pas self-signed production)
[OK] MFA obligatoire
[OK] Split tunnel (sauf haute sécurité)
[OK] Client updates automatiques
[OK] Posture assessment (antivirus, OS updates)
[OK] Session timeouts
[OK] Logs détaillés
"""


# ----------------------------------------------------------------------------
# [RAPIDE] PARTIE 4 : OPENVPN & WIREGUARD
# ----------------------------------------------------------------------------

"""
OPENVPN


DÉFINITION

VPN open-source très populaire

Multi-plateforme : Windows, Linux, macOS, iOS, Android

Flexible : Site-to-Site, Remote Access


CARACTÉRISTIQUES

Transport : UDP 1194 (défaut) ou TCP 443

Chiffrement : OpenSSL (AES-256, ChaCha20)

Authentification : Certificats (PKI obligatoire)

Modes :
- Routing (tun) : Layer 3
- Bridging (tap) : Layer 2


INSTALLATION


Linux (Serveur)
───────────────

```
# Debian/Ubuntu
sudo apt update
sudo apt install openvpn easy-rsa

# Copier Easy-RSA
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
```


PKI Setup
─────────

```
# Initialiser PKI
./easyrsa init-pki

# Créer CA
./easyrsa build-ca nopass

# Créer certificat serveur
./easyrsa gen-req server nopass
./easyrsa sign-req server server

# Créer certificat client
./easyrsa gen-req client1 nopass
./easyrsa sign-req client client1

# Diffie-Hellman
./easyrsa gen-dh

# TLS Auth key (optionnel, recommandé)
openvpn --genkey --secret ta.key
```


CONFIGURATION SERVEUR

/etc/openvpn/server.conf

```
# Port et protocole
port 1194
proto udp
dev tun

# Certificats et clés
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh.pem
tls-auth /etc/openvpn/ta.key 0

# Réseau VPN
server 10.8.0.0 255.255.255.0

# Routes poussées aux clients
push "route 192.168.1.0 255.255.255.0"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

# Client-to-client (optionnel)
;client-to-client

# Keepalive
keepalive 10 120

# Chiffrement
cipher AES-256-CBC
auth SHA256

# Compression (optionnel)
comp-lzo

# User/Group
user nobody
group nogroup

# Persistence
persist-key
persist-tun

# Logs
status /var/log/openvpn/openvpn-status.log
log-append /var/log/openvpn/openvpn.log
verb 3
```


IP Forwarding
──────────────

```
# Activer
echo 1 > /proc/sys/net/ipv4/ip_forward

# Permanent
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
```


Firewall (NAT)
──────────────

```
# iptables
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

# Sauvegarder
iptables-save > /etc/iptables/rules.v4
```


Démarrer
────────

```
sudo systemctl start openvpn@server
sudo systemctl enable openvpn@server
sudo systemctl status openvpn@server
```


CONFIGURATION CLIENT

client1.ovpn

```
client
dev tun
proto udp

# Serveur
remote vpn.entreprise.com 1194

# Certificats
ca ca.crt
cert client1.crt
key client1.key
tls-auth ta.key 1

# Chiffrement (match serveur)
cipher AES-256-CBC
auth SHA256

# Persistence
persist-key
persist-tun

# Logs
verb 3
```


Connexion
─────────

Linux :
```
sudo openvpn --config client1.ovpn
```

Windows : OpenVPN GUI

Mobile : OpenVPN Connect app


AVANTAGES OPENVPN

[OK] Open-source (audit communauté)
[OK] Très flexible
[OK] Multi-plateforme
[OK] Mature (20+ ans)
[OK] Traverse NAT/firewalls
[OK] Forte cryptographie


INCONVÉNIENTS

[X] Performance (vs WireGuard)
[X] Complexité configuration
[X] PKI requis


WIREGUARD


DÉFINITION

VPN moderne (2020)

Ultra-rapide, simple, sécurisé

Protocole : UDP (port configurable)

Chiffrement : ChaCha20, Curve25519


CARACTÉRISTIQUES

Code : ~4,000 lignes (vs OpenVPN 100,000+)

Performance : 3-5× plus rapide OpenVPN

Cryptographie moderne :
- ChaCha20 (chiffrement)
- Poly1305 (authentification)
- Curve25519 (ECDH)
- BLAKE2s (hash)

Pas de choix algorithmes (simplicité)


INSTALLATION

Linux :
```
sudo apt install wireguard
```

Windows : WireGuard installer

macOS : brew install wireguard-tools


CONFIGURATION


Serveur
───────

Générer clés :
```
wg genkey | tee server_private.key | wg pubkey > server_public.key
```

/etc/wireguard/wg0.conf

```
[Interface]
Address = 10.9.0.1/24
ListenPort = 51820
PrivateKey = <SERVER_PRIVATE_KEY>

# Forwarding
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

# Peer (client1)
[Peer]
PublicKey = <CLIENT1_PUBLIC_KEY>
AllowedIPs = 10.9.0.2/32

# Peer (client2)
[Peer]
PublicKey = <CLIENT2_PUBLIC_KEY>
AllowedIPs = 10.9.0.3/32
```

Démarrer :
```
sudo wg-quick up wg0
sudo systemctl enable wg-quick@wg0
```


Client
──────

Générer clés :
```
wg genkey | tee client_private.key | wg pubkey > client_public.key
```

client1.conf

```
[Interface]
Address = 10.9.0.2/24
PrivateKey = <CLIENT_PRIVATE_KEY>
DNS = 8.8.8.8

[Peer]
PublicKey = <SERVER_PUBLIC_KEY>
Endpoint = vpn.entreprise.com:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
```

Connexion :
```
sudo wg-quick up client1
```

Windows : Import .conf dans app


VÉRIFICATION

```
sudo wg show

interface: wg0
  public key: <PUBLIC_KEY>
  private key: (hidden)
  listening port: 51820

peer: <PEER_PUBLIC_KEY>
  endpoint: 203.0.113.50:51820
  allowed ips: 10.9.0.2/32
  latest handshake: 30 seconds ago
  transfer: 5.2 MiB received, 1.8 MiB sent
```


AVANTAGES WIREGUARD

[OK] Ultra-rapide
[OK] Simple configuration
[OK] Code minimal (sécurité)
[OK] Cryptographie moderne
[OK] Roaming (changement IP transparent)
[OK] Batterie économique (mobile)


INCONVÉNIENTS

[X] Jeune (moins mature qu'OpenVPN)
[X] Pas de chiffrement user-space (privilèges requis)
[X] Gestion clés manuelle


COMPARAISON

┌────────────┬──────────┬──────────┬──────────┐
│  Critère   │  IPsec   │ OpenVPN  │WireGuard │
├────────────┼──────────┼──────────┼──────────┤
│Performance │ Très bon │  Moyen   │Excellent │
│Simplicité  │ Complexe │  Moyen   │ Simple   │
│Sécurité    │ Excellent│Excellent │Excellent │
│Maturité    │ 20+ ans  │ 20+ ans  │ 4 ans    │
│NAT/Firewall│ Difficile│  Facile  │  Facile  │
│Mobile      │  Moyen   │  Bon     │Excellent │
└────────────┴──────────┴──────────┴──────────┘


RECOMMANDATIONS

Site-to-Site entreprise : IPsec [OK]
Remote Access corporate : SSL VPN (AnyConnect) [OK]
Remote Access flexible : OpenVPN [OK]
Moderne/Performance : WireGuard [OK]
Mobile : WireGuard [OK]
"""


# ----------------------------------------------------------------------------
# [COURS] EXERCICES ULTRA-DÉTAILLÉS
# ----------------------------------------------------------------------------

"""
[IDEE] EXERCICES PRATIQUES


═══════════════════════════════════════════════════════════
EXERCICE 1 : CONFIGURATION IPSEC SITE-TO-SITE AVANCÉE
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Entreprise multi-sites :

HQ Paris :
- LAN : 192.168.1.0/24
- DMZ : 10.1.0.0/24
- Gateway : 203.0.113.1

Branch Lyon :
- LAN : 192.168.2.0/24
- Gateway : 198.51.100.1

Branch Marseille :
- LAN : 192.168.3.0/24
- Gateway : 198.51.100.50

Requis :
1. VPN HQ <-> Lyon (IKEv2, AES-256, SHA-256, PFS DH20)
2. VPN HQ <-> Marseille (mêmes paramètres)
3. Lyon et Marseille NE PEUVENT PAS communiquer directement
4. Split tunnel : DMZ accessible depuis branches
5. Monitoring : Keepalives, logs

Mission : Configuration complète 3 routeurs


[OK] CORRECTION EXERCICE 1

ROUTER HQ (PARIS)
─────────────────

```
! ============================================
! ROUTER HQ PARIS - IPsec Multi-Site
! ============================================

hostname HQ-PARIS

! ============================================
! INTERFACES
! ============================================

interface GigabitEthernet0/0
 description LAN-HQ
 ip address 192.168.1.1 255.255.255.0
 no shutdown

interface GigabitEthernet0/1
 description DMZ-HQ
 ip address 10.1.0.1 255.255.255.0
 no shutdown

interface GigabitEthernet0/2
 description WAN-INTERNET
 ip address 203.0.113.1 255.255.255.252
 no shutdown

! ============================================
! IPSEC - VPN HQ <-> LYON
! ============================================

! IKEv2 Profile LYON
crypto ikev2 proposal IKEv2-PROPOSAL
 encryption aes-cbc-256
 integrity sha256
 group 20

crypto ikev2 policy IKEv2-POLICY
 proposal IKEv2-PROPOSAL

crypto ikev2 keyring KEYRING-LYON
 peer LYON-PEER
  address 198.51.100.1
  pre-shared-key MyVerySecretKey-LYON-2024!

crypto ikev2 profile IKEv2-PROFILE-LYON
 match identity remote address 198.51.100.1 255.255.255.255
 authentication remote pre-share
 authentication local pre-share
 keyring local KEYRING-LYON
 lifetime 3600

! IPsec Transform Set
crypto ipsec transform-set IPSEC-TS-LYON esp-aes 256 esp-sha256-hmac
 mode tunnel

! Crypto Map LYON
crypto map CRYPTOMAP-LYON 10 ipsec-isakmp
 set peer 198.51.100.1
 set transform-set IPSEC-TS-LYON
 set ikev2-profile IKEv2-PROFILE-LYON
 set pfs group20
 match address ACL-VPN-LYON

! ACL Traffic intéressant HQ -> LYON
ip access-list extended ACL-VPN-LYON
 remark == HQ LAN to LYON LAN ==
 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
 remark == HQ DMZ to LYON LAN (Split Tunnel) ==
 permit ip 10.1.0.0 0.0.0.255 192.168.2.0 0.0.0.255

! ============================================
! IPSEC - VPN HQ <-> MARSEILLE
! ============================================

! IKEv2 Keyring MARSEILLE
crypto ikev2 keyring KEYRING-MARSEILLE
 peer MARSEILLE-PEER
  address 198.51.100.50
  pre-shared-key MyVerySecretKey-MARSEILLE-2024!

crypto ikev2 profile IKEv2-PROFILE-MARSEILLE
 match identity remote address 198.51.100.50 255.255.255.255
 authentication remote pre-share
 authentication local pre-share
 keyring local KEYRING-MARSEILLE
 lifetime 3600

! Crypto Map MARSEILLE
crypto map CRYPTOMAP-MARSEILLE 20 ipsec-isakmp
 set peer 198.51.100.50
 set transform-set IPSEC-TS-LYON
 set ikev2-profile IKEv2-PROFILE-MARSEILLE
 set pfs group20
 match address ACL-VPN-MARSEILLE

! ACL Traffic intéressant HQ -> MARSEILLE
ip access-list extended ACL-VPN-MARSEILLE
 remark == HQ LAN to MARSEILLE LAN ==
 permit ip 192.168.1.0 0.0.0.255 192.168.3.0 0.0.0.255
 remark == HQ DMZ to MARSEILLE LAN ==
 permit ip 10.1.0.0 0.0.0.255 192.168.3.0 0.0.0.255

! ============================================
! APPLICATION CRYPTO MAPS
! ============================================

interface GigabitEthernet0/2
 crypto map CRYPTOMAP-LYON
 crypto map CRYPTOMAP-MARSEILLE

! ============================================
! ROUTES STATIQUES
! ============================================

ip route 192.168.2.0 255.255.255.0 198.51.100.1
ip route 192.168.3.0 255.255.255.0 198.51.100.50

! ============================================
! KEEPALIVE & MONITORING
! ============================================

! DPD (Dead Peer Detection)
crypto ikev2 dpd 10 3 on-demand

! Logging
logging buffered 16384 debugging
logging 192.168.1.100

! SNMP (optionnel)
snmp-server community VPN-Monitor RO
snmp-server enable traps ipsec

! ============================================
! SÉCURITÉ
! ============================================

! Disable unused services
no ip http server
no ip http secure-server
no cdp run

! NTP (synchronisation temps - crucial IPsec)
ntp server 129.6.15.28

! ============================================
! SAVE
! ============================================

end
write memory
```


ROUTER LYON
───────────

```
! ============================================
! ROUTER LYON - IPsec to HQ
! ============================================

hostname BRANCH-LYON

interface GigabitEthernet0/0
 description LAN-LYON
 ip address 192.168.2.1 255.255.255.0
 no shutdown

interface GigabitEthernet0/1
 description WAN-INTERNET
 ip address 198.51.100.1 255.255.255.252
 no shutdown

! IKEv2 Configuration
crypto ikev2 proposal IKEv2-PROPOSAL
 encryption aes-cbc-256
 integrity sha256
 group 20

crypto ikev2 policy IKEv2-POLICY
 proposal IKEv2-PROPOSAL

crypto ikev2 keyring KEYRING-HQ
 peer HQ-PEER
  address 203.0.113.1
  pre-shared-key MyVerySecretKey-LYON-2024!

crypto ikev2 profile IKEv2-PROFILE-HQ
 match identity remote address 203.0.113.1 255.255.255.255
 authentication remote pre-share
 authentication local pre-share
 keyring local KEYRING-HQ
 lifetime 3600

! IPsec Transform Set
crypto ipsec transform-set IPSEC-TS-HQ esp-aes 256 esp-sha256-hmac
 mode tunnel

! Crypto Map
crypto map CRYPTOMAP-HQ 10 ipsec-isakmp
 set peer 203.0.113.1
 set transform-set IPSEC-TS-HQ
 set ikev2-profile IKEv2-PROFILE-HQ
 set pfs group20
 match address ACL-VPN-HQ

! ACL Traffic intéressant LYON -> HQ
ip access-list extended ACL-VPN-HQ
 remark == LYON LAN to HQ LAN ==
 permit ip 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.255
 remark == LYON LAN to HQ DMZ (Split Tunnel) ==
 permit ip 192.168.2.0 0.0.0.255 10.1.0.0 0.0.0.255

! Application
interface GigabitEthernet0/1
 crypto map CRYPTOMAP-HQ

! Routes
ip route 192.168.1.0 255.255.255.0 203.0.113.1
ip route 10.1.0.0 255.255.255.0 203.0.113.1

! DPD
crypto ikev2 dpd 10 3 on-demand

! Logging
logging buffered 16384 debugging

! NTP
ntp server 129.6.15.28

end
write memory
```


ROUTER MARSEILLE
────────────────

```
! ============================================
! ROUTER MARSEILLE - IPsec to HQ
! ============================================

hostname BRANCH-MARSEILLE

interface GigabitEthernet0/0
 description LAN-MARSEILLE
 ip address 192.168.3.1 255.255.255.0
 no shutdown

interface GigabitEthernet0/1
 description WAN-INTERNET
 ip address 198.51.100.50 255.255.255.252
 no shutdown

! IKEv2 Configuration
crypto ikev2 proposal IKEv2-PROPOSAL
 encryption aes-cbc-256
 integrity sha256
 group 20

crypto ikev2 policy IKEv2-POLICY
 proposal IKEv2-PROPOSAL

crypto ikev2 keyring KEYRING-HQ
 peer HQ-PEER
  address 203.0.113.1
  pre-shared-key MyVerySecretKey-MARSEILLE-2024!

crypto ikev2 profile IKEv2-PROFILE-HQ
 match identity remote address 203.0.113.1 255.255.255.255
 authentication remote pre-share
 authentication local pre-share
 keyring local KEYRING-HQ
 lifetime 3600

! IPsec Transform Set
crypto ipsec transform-set IPSEC-TS-HQ esp-aes 256 esp-sha256-hmac
 mode tunnel

! Crypto Map
crypto map CRYPTOMAP-HQ 10 ipsec-isakmp
 set peer 203.0.113.1
 set transform-set IPSEC-TS-HQ
 set ikev2-profile IKEv2-PROFILE-HQ
 set pfs group20
 match address ACL-VPN-HQ

! ACL Traffic intéressant MARSEILLE -> HQ
ip access-list extended ACL-VPN-HQ
 remark == MARSEILLE LAN to HQ LAN ==
 permit ip 192.168.3.0 0.0.0.255 192.168.1.0 0.0.0.255
 remark == MARSEILLE LAN to HQ DMZ ==
 permit ip 192.168.3.0 0.0.0.255 10.1.0.0 0.0.0.255

! Application
interface GigabitEthernet0/1
 crypto map CRYPTOMAP-HQ

! Routes
ip route 192.168.1.0 255.255.255.0 203.0.113.1
ip route 10.1.0.0 255.255.255.0 203.0.113.1

! DPD
crypto ikev2 dpd 10 3 on-demand

! Logging
logging buffered 16384

! NTP
ntp server 129.6.15.28

end
write memory
```


VÉRIFICATION TOPOLOGIE
───────────────────────

TOUS ROUTEURS :

```
! Status tunnels
show crypto ikev2 sa
show crypto ipsec sa

! Statistiques détaillées
show crypto ipsec sa detail

! Routes
show ip route

! Interfaces crypto map
show crypto map
```


TESTS CONNECTIVITÉ
──────────────────

HQ -> LYON :
```
HQ-PARIS# ping 192.168.2.1 source 192.168.1.1
```

HQ -> MARSEILLE :
```
HQ-PARIS# ping 192.168.3.1 source 192.168.1.1
```

LYON -> HQ DMZ :
```
BRANCH-LYON# ping 10.1.0.10 source 192.168.2.1
```

LYON -> MARSEILLE (DOIT ÉCHOUER) :
```
BRANCH-LYON# ping 192.168.3.1 source 192.168.2.1
(Timeout - Pas de route/tunnel)
```


MONITORING
──────────

Logs en temps réel :
```
terminal monitor
debug crypto ikev2
debug crypto ipsec
```

[ATTENTION] Désactiver après test (CPU intensif) :
```
undebug all
```


Exemple sortie show crypto ikev2 sa :
```
IPv4 Crypto IKEv2 SA

Tunnel-id Local                 Remote                fvrf/ivrf            Status
2         203.0.113.1/500       198.51.100.1/500      none/none            READY
      Encr: AES-CBC, keysize: 256, PRF: SHA256, Hash: SHA256, DH Grp:20, Auth sign: PSK, Auth verify: PSK
      Life/Active Time: 3600/125 sec

3         203.0.113.1/500       198.51.100.50/500     none/none            READY
      Encr: AES-CBC, keysize: 256, PRF: SHA256, Hash: SHA256, DH Grp:20, Auth sign: PSK, Auth verify: PSK
      Life/Active Time: 3600/87 sec
```


TROUBLESHOOTING
───────────────

Problème : Tunnel HQ-LYON ne monte pas

1. Vérifier connectivité IP :
```
HQ-PARIS# ping 198.51.100.1
```

2. Vérifier PSK identiques (sensible casse)

3. Vérifier paramètres IKEv2 matching

4. Vérifier firewall autorise UDP 500, 4500

5. Vérifier ACL intéressant correct

6. Debug :
```
debug crypto ikev2
```

Chercher erreurs :
- "No proposal chosen" -> Paramètres mismatch
- "Invalid ID" -> PSK incorrect
- "No response" -> Connectivité/Firewall


SÉCURITÉ ADDITIONNELLE
──────────────────────

ACL filtrage WAN (optionnel) :
```
ip access-list extended WAN-IN-LYON
 permit udp host 203.0.113.1 host 198.51.100.1 eq isakmp
 permit udp host 203.0.113.1 host 198.51.100.1 eq non500-isakmp
 permit esp host 203.0.113.1 host 198.51.100.1
 deny ip any any log

interface GigabitEthernet0/1
 ip access-group WAN-IN-LYON in
```



═══════════════════════════════════════════════════════════
EXERCICE 2 : DÉPANNAGE VPN COMPLEXE
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Tickets support VPN :

TICKET #1 :
Utilisateur Alice (Remote Access SSL VPN)
"Je ne peux pas me connecter au VPN"
AnyConnect : "Connection failed"

TICKET #2 :
Site-to-Site IPsec HQ-Lyon
"Tunnel monte mais pas de trafic"
show crypto ipsec sa : 0 packets encrypt/decrypt

TICKET #3 :
Utilisateur Bob (Remote Access SSL VPN)
"VPN connecté mais je n'accède pas aux ressources internes"
IP reçue : 192.168.100.50
Peut pinger : 192.168.100.1 (gateway VPN)
Ne peut pas pinger : 192.168.1.10 (serveur interne)

Mission :
1. Diagnostiquer chaque problème
2. Identifier cause racine
3. Proposer solution détaillée
4. Prévention future


[OK] CORRECTION EXERCICE 2

TICKET #1 : Alice - Connection Failed
──────────────────────────────────────

DIAGNOSTIC
──────────

ÉTAPE 1 : Vérifier serveur VPN actif

ASA :
```
show webvpn
```

Vérifier : "WebVPN: enabled on 'outside'"

Si disabled :
```
webvpn
 enable outside
```


ÉTAPE 2 : Vérifier certificat SSL

```
show crypto ca certificates
```

Certificat expiré ?

Si expiré -> Renouveler :
```
crypto ca enroll SSL-CERT
```


ÉTAPE 3 : Vérifier connectivity Alice -> ASA

Alice ping ASA IP publique ?

Firewall bloque port 443 ?


ÉTAPE 4 : Logs ASA

```
show logging | include Alice
```

Erreurs authentification ?


CAUSES PROBABLES & SOLUTIONS
─────────────────────────────

CAUSE A : Certificat SSL expiré
────────────────────────────────

Symptôme : "Certificate invalid"

Solution :
```
crypto ca trustpoint SSL-CERT
 enrollment self
 subject-name CN=vpn.entreprise.com
 
crypto ca enroll SSL-CERT noconfirm
ssl trust-point SSL-CERT outside
```


CAUSE B : Compte Alice désactivé/expiré
────────────────────────────────────────

Vérifier compte :
```
show run username
```

Si local :
```
username alice password NewPassword123! encrypted
```

Si RADIUS/LDAP : Vérifier serveur externe


CAUSE C : Firewall bloque 443
──────────────────────────────

Vérifier ACL outside :
```
show run access-list OUTSIDE-IN
```

Ajouter règle :
```
access-list OUTSIDE-IN permit tcp any interface outside eq 443
access-group OUTSIDE-IN in interface outside
```


CAUSE D : AnyConnect client obsolète
─────────────────────────────────────

Alice : Update client

ASA : Update image :
```
webvpn
 anyconnect image disk0:/anyconnect-win-4.10.pkg
```


SOLUTION TICKET #1
──────────────────

Après investigation : Certificat expiré

Actions :
1. Renouveler certificat SSL
2. Tester connexion Alice
3. Email utilisateurs : Client update si <4.10


PRÉVENTION
──────────

[OK] Monitoring expiration certificats (90 jours avant)
[OK] Updates clients automatiques
[OK] Healthcheck VPN quotidien



TICKET #2 : IPsec Tunnel Monte, Pas de Trafic
──────────────────────────────────────────────

DIAGNOSTIC
──────────

SYMPTÔME : Tunnel UP, 0 packets

```
HQ# show crypto ipsec sa

interface: GigabitEthernet0/1
    Crypto map tag: VPNMAP, local addr 203.0.113.1

   local  ident (addr/mask/prot/port): (192.168.1.0/255.255.255.0/0/0)
   remote ident (addr/mask/prot/port): (192.168.2.0/255.255.255.0/0/0)
   current_peer 198.51.100.1 port 500
     PERMIT, flags={origin_is_acl,}
    #pkts encaps: 0, #pkts encrypt: 0
    #pkts decaps: 0, #pkts decrypt: 0
    
    Tunnel UP mais 0 packets !
```


ÉTAPE 1 : Vérifier ACL intéressant
───────────────────────────────────

```
show access-list 100
```

Exemple ERREUR :
```
access-list 100 permit ip 192.168.1.0 0.0.0.255 192.168.3.0 0.0.0.255
                                                 ^ ERREUR réseau
```

Devrait être 192.168.2.0 (Lyon) !


ÉTAPE 2 : Tester trafic
───────────────────────

HQ :
```
ping 192.168.2.10 source 192.168.1.10
```

Si échoue -> Trafic pas encapsulé


ÉTAPE 3 : Vérifier routes
──────────────────────────

```
show ip route 192.168.2.0
```

Route existe ?

Si manquante :
```
ip route 192.168.2.0 255.255.255.0 198.51.100.1
```


ÉTAPE 4 : NAT Exemption
────────────────────────

Si NAT actif, exempter trafic VPN

```
ip access-list extended NAT-EXEMPT
 deny ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
 permit ip 192.168.1.0 0.0.0.255 any

ip nat inside source list NAT-EXEMPT interface GigabitEthernet0/1 overload
```


SOLUTION TICKET #2
──────────────────

CAUSE : ACL intéressant incorrect (192.168.3.0 au lieu 192.168.2.0)

Correction :
```
no access-list 100
access-list 100 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
```

Test :
```
HQ# ping 192.168.2.1 source 192.168.1.1

Success rate is 100 percent (5/5)

HQ# show crypto ipsec sa

#pkts encaps: 5, #pkts encrypt: 5  <- Trafic passe [OK]
```


PRÉVENTION
──────────

[OK] Documenter ACLs (commentaires)
[OK] Peer review configurations
[OK] Automated testing (ping après config)



TICKET #3 : Bob VPN Connecté, Pas d'Accès Interne
──────────────────────────────────────────────────

DIAGNOSTIC
──────────

Symptômes :
[OK] Bob connecté VPN
[OK] IP : 192.168.100.50
[OK] Ping gateway VPN (192.168.100.1) : OK
[X] Ping serveur interne (192.168.1.10) : FAIL


ÉTAPE 1 : Vérifier routes Bob
──────────────────────────────

Bob PC :
```
route print (Windows)
ip route (Linux)
```

Route vers 192.168.1.0/24 via VPN ?

Si manquante -> ASA ne pousse pas route


ÉTAPE 2 : Vérifier Group Policy ASA
────────────────────────────────────

```
show run group-policy REMOTE-POLICY
```

Exemple ERREUR :
```
group-policy REMOTE-POLICY attributes
 vpn-tunnel-protocol ssl-client
 split-tunnel-policy tunnelspecified
 split-tunnel-network-list value SPLIT-ACL
```

Vérifier SPLIT-ACL :
```
show run access-list SPLIT-ACL
```

Exemple VIDE ou INCORRECT :
```
access-list SPLIT-ACL standard permit 10.0.0.0 255.255.255.0
                                      ^ Mauvais réseau
```


ÉTAPE 3 : Vérifier routage ASA -> LAN
─────────────────────────────────────

ASA :
```
show route 192.168.1.0
```

Route existe ?


ÉTAPE 4 : Firewall ACL
──────────────────────

ASA ACL autorise VPN pool -> LAN ?

```
show run access-list INSIDE-IN
```

Si manquant :
```
access-list INSIDE-IN permit ip 192.168.100.0 255.255.255.0 192.168.1.0 255.255.255.0
access-group INSIDE-IN in interface inside
```


SOLUTION TICKET #3
──────────────────

CAUSE : SPLIT-ACL ne contient pas 192.168.1.0/24

Correction :
```
access-list SPLIT-ACL standard permit 192.168.1.0 255.255.255.0
access-list SPLIT-ACL standard permit 10.0.0.0 255.255.255.0
```

Vérifier Group Policy :
```
group-policy REMOTE-POLICY attributes
 split-tunnel-network-list value SPLIT-ACL
```

Bob : Déconnecter/Reconnecter VPN

Test Bob :
```
C:\> ping 192.168.1.10

Reply from 192.168.1.10: bytes=32 time=25ms  [OK]
```


VÉRIFICATION ROUTES BOB
───────────────────────

```
C:\> route print | findstr 192.168.1

192.168.1.0    255.255.255.0     192.168.100.1      25  [OK]
```


PRÉVENTION
──────────

[OK] Template Group Policy
[OK] Testing checklist (nouvelles configs)
[OK] Documentation split-tunnel ACL
[OK] Automated testing (post-deployment)


SYNTHÈSE 3 TICKETS
──────────────────

┌─────────┬──────────────────┬─────────────────┬──────────────────┐
│ Ticket  │    Problème      │     Cause       │    Solution      │
├─────────┼──────────────────┼─────────────────┼──────────────────┤
│   #1    │ Connection failed│ Cert SSL expiré │ Renouveler cert  │
│   #2    │ Tunnel no traffic│ ACL incorrect   │ Corriger ACL     │
│   #3    │ No internal accessSplit-ACL manque│ Ajouter réseau   │
└─────────┴──────────────────┴─────────────────┴──────────────────┘

Leçon : 80% problèmes VPN = Configuration (ACL, routes, certs)
"""


# ============================================================================
# [DOCS] CONCLUSION CHAPITRE 15
# ============================================================================

"""
[BRAVO] FÉLICITATIONS !

Chapitre 15 : VPN terminé (ultra-détaillé)


[GUIDE] RÉCAPITULATIF COMPLET

[OK] Principes VPN (tunneling, encapsulation, types)
[OK] IPsec détaillé (AH, ESP, IKE, modes, SA)
[OK] Cryptographie (AES-256, SHA-256, DH, PFS)
[OK] Configuration Cisco IPsec (Site-to-Site multi-sites)
[OK] SSL/TLS VPN (AnyConnect, modes, MFA)
[OK] OpenVPN (PKI, serveur/client Linux)
[OK] WireGuard (moderne, ultra-rapide)
[OK] VPN cloud (concepts AWS/Azure)
[OK] Troubleshooting expert (3 tickets résolus)
[OK] 2 Exercices ultra-pratiques


[OBJECTIF] COMPÉTENCES MAÎTRISÉES

[OK] Concevoir architecture VPN entreprise
[OK] Configurer IPsec Site-to-Site (IKEv2)
[OK] Déployer SSL VPN (Remote Access)
[OK] Installer OpenVPN / WireGuard
[OK] Troubleshooter problèmes VPN complexes
[OK] Sécuriser avec cryptographie moderne
[OK] Optimiser performance VPN
[OK] Gérer multi-sites


[PRO] APPLICATIONS RÉELLES

[OK] Déployer VPN entreprise (télétravail)
[OK] Interconnecter sites distants
[OK] Sécuriser communications
[OK] Certifications (CCNA Security, CCNP Security)
[OK] Architecture cloud hybride
[OK] SOC / Network Engineer


[LIEN] TECHNOLOGIES COUVERTES

- IPsec (IKEv1, IKEv2)
- SSL/TLS (AnyConnect, OpenVPN)
- WireGuard
- Cisco ASA
- Linux OpenVPN
- Cryptographie (AES, SHA, DH, PFS)


-> PROCHAINS CHAPITRES

- Chapitre 16 : QoS (Quality of Service)
- Chapitres 17-20 : Routage (Statique, RIP, OSPF, EIGRP, BGP)
- Chapitre 21 : SDN (Software-Defined Networking)


[IDEE] POINTS CLÉS

VPN = ESSENTIEL monde moderne :
[OK] Télétravail : 70%+ emplois
[OK] Sécurité : Chiffrement bout-en-bout
[OK] Économie : vs Leased Lines
[OK] Flexibilité : Anywhere, anytime

Technologies évoluent :
- IPsec : Mature, fiable
- SSL VPN : Flexible, facile
- WireGuard : Futur (performance + sécurité)

Crypto moderne NON-NÉGOCIABLE :
[OK] AES-256 minimum
[OK] SHA-256+ hashes
[OK] DH Group 14+ (20 recommandé)
[OK] PFS activé
[OK] IKEv2 (vs IKEv1)


[RAPIDE] EXCELLENT TRAVAIL !

VPN est compétence CRITIQUE ingénieur réseau moderne.
Vous maîtrisez maintenant :
- Théorie complète
- Configuration multi-vendors
- Troubleshooting expert
- Best practices sécurité

Prêt pour déploiements production ! [SECURISE]


═══════════════════════════════════════════════════════════
[GUIDE] FIN DU CHAPITRE 15 - VPN
═══════════════════════════════════════════════════════════
"""

# ============================================================================
# CHAPITRE 16 : QoS (QUALITY OF SERVICE)
# ============================================================================

"""
[OBJECTIF] OBJECTIFS DU CHAPITRE

[OK] Principes QoS (pourquoi, quand, comment)
[OK] Problèmes réseau (latence, jitter, perte)
[OK] Classification et marquage (DSCP, CoS, ToS)
[OK] Queuing (FIFO, PQ, WFQ, CBWFQ, LLQ)
[OK] Congestion Management
[OK] Congestion Avoidance (WRED)
[OK] Policing et Shaping
[OK] Modèles QoS (Best Effort, IntServ, DiffServ)
[OK] VoIP QoS (configuration détaillée)
[OK] Configuration Cisco (MQC)
[OK] QoS Wi-Fi (WMM)
[OK] Troubleshooting QoS
[OK] Exercices ultra-pratiques

[IDEE] POURQUOI QoS EST CRITIQUE ?

Applications temps-réel exigeantes :
- VoIP : Latence <150ms, Jitter <30ms, Perte <1%
- Vidéoconférence : Latence <200ms, Perte <0.5%
- Gaming : Latence <50ms
- Streaming : Buffer minimal

Sans QoS :
[X] VoIP coupée, incompréhensible
[X] Vidéo saccadée, pixelisée
[X] Gaming lag intolérable
[X] Applications critiques ralenties

Avec QoS :
[OK] Priorisation intelligente
[OK] Bande passante garantie
[OK] Latence prévisible
[OK] Expérience utilisateur optimale

QoS = DIFFÉRENCE entre réseau amateur et professionnel !
"""


# ----------------------------------------------------------------------------
# [GRAPHIQUE] PARTIE 1 : PRINCIPES FONDAMENTAUX QoS
# ----------------------------------------------------------------------------

"""
QoS (QUALITY OF SERVICE)


DÉFINITION

QoS = Ensemble techniques gérant performance réseau

Objectif : Garantir niveau service applications critiques

Principe : Priorisation trafic selon importance


PROBLÈME À RÉSOUDRE

Bande passante limitée + Trafic mixte = Congestion

Exemple lien 100 Mbps :
- VoIP : 5 Mbps (critique)
- Email : 10 Mbps (non-urgent)
- Backup : 200 Mbps (flexible)

Sans QoS : First-Come-First-Served
-> Backup sature lien
-> VoIP paquets jetés
-> Appels coupés [X]

Avec QoS : Priorisation
-> VoIP priorité haute (5 Mbps garantis)
-> Email priorité moyenne
-> Backup utilise restant
-> Appels fluides [OK]


PARAMÈTRES RÉSEAU CRITIQUES


1. BANDE PASSANTE (Bandwidth)
══════════════════════════════

Débit max lien (Mbps, Gbps)

Limitation physique

Exemple : Lien WAN 10 Mbps

QoS alloue bande passante par classe trafic


2. LATENCE (Delay)
══════════════════

Temps transit paquet (ms)

Types :
- Processing Delay : Traitement routeur
- Queuing Delay : Attente queue
- Serialization Delay : Transmission bits
- Propagation Delay : Vitesse lumière

Total : One-Way Delay (OWD)

Exemples :
- LAN : <1ms
- WAN national : 20-50ms
- WAN intercontinental : 150-300ms

Seuils applications :
- VoIP : <150ms [OK]
- Vidéoconférence : <200ms
- Gaming FPS : <50ms
- Web : <1000ms


3. JITTER (Variation Latence)
══════════════════════════════

Variation delay entre paquets

Exemple :
Paquet 1 : 20ms
Paquet 2 : 45ms  <- Jitter 25ms
Paquet 3 : 18ms  <- Jitter 27ms

Problème VoIP/Vidéo : Désynchronisation

Seuils :
- VoIP : <30ms [OK]
- Vidéo : <50ms

Solution : Jitter buffer (queue réception)


4. PERTE PAQUETS (Packet Loss)
═══════════════════════════════

Paquets jetés (congestion, erreurs)

Pourcentage : (Perdu / Total) × 100

Exemples :
- LAN : <0.1%
- WAN : <1%

Seuils applications :
- VoIP : <1% [OK]
- Vidéo : <0.5%
- TCP : <3% (retransmissions)
- UDP streaming : <0.1%


IMPACT CONGESTION

Lien saturé -> Queues pleines -> Tail Drop

Tail Drop : Dernier paquet arrivé = jeté

Problèmes :
[X] TCP global synchronization
[X] Bursty traffic mal géré
[X] Pas de distinction priorités


BESOIN QoS

Applications tolérantes (Email, FTP) :
- Latence : Acceptable
- Perte : Retransmission TCP OK
- Priorité : Basse

Applications intolérantes (VoIP, Vidéo) :
- Latence : <150ms strict
- Perte : <1% strict
- Jitter : <30ms strict
- Priorité : HAUTE [OK]

QoS = Protéger trafic intolérant


QUAND QoS NÉCESSAIRE ?

Scénarios :

[OK] Liens WAN (bande passante limitée)
[OK] VoIP/Vidéoconférence déployés
[OK] Applications critiques métier
[OK] Trafic mixte (données + temps-réel)
[OK] Utilisateurs nombreux (>100)

Pas nécessaire :
- LAN Gigabit peu utilisé
- Applications tolérant délai uniquement
- Bande passante >>> Besoins


APPROCHES QoS


Best Effort (Défaut)
════════════════════

Aucune garantie

First-Come-First-Served (FIFO)

Simple, pas de config

Inadéquat applications critiques


IntServ (Integrated Services)
══════════════════════════════

Réservation ressources par flux

Protocole : RSVP (Resource Reservation Protocol)

Avantages :
[OK] Garanties strictes
[OK] Admission Control

Inconvénients :
[X] Scalabilité faible
[X] État par flux (overhead)

Usage : Rare (abandonné)


DiffServ (Differentiated Services)
═══════════════════════════════════

Classification par classe trafic

Scalable [OK]

Standard actuel (RFC 2475)

Principe :
1. Classification (edge)
2. Marquage (DSCP)
3. Queuing/Scheduling (core)

Pas d'état par flux
-> Scalable millions flux


MODÈLE QoS CISCO

3 Étapes :

1. CLASSIFICATION
─────────────────

Identifier trafic

Critères :
- IP source/destination
- Ports TCP/UDP
- Protocole
- DSCP existant
- ACL

Outils : class-map


2. MARQUAGE
───────────

Marquer paquet (priorité)

Champs :
- Layer 2 : CoS (802.1p)
- Layer 3 : DSCP (IP)

Valeurs : 0-7 (CoS), 0-63 (DSCP)


3. QUEUING/POLICING/SHAPING
────────────────────────────

Appliquer politique QoS

Actions :
- Priority queue (VoIP)
- Bandwidth guarantee
- Policing (limit rate)
- Shaping (smooth rate)
- Drop policy (WRED)

Outil : policy-map
"""


# ----------------------------------------------------------------------------
# [LABEL] PARTIE 2 : CLASSIFICATION ET MARQUAGE
# ----------------------------------------------------------------------------

"""
CLASSIFICATION ET MARQUAGE


CLASSIFICATION

Identifier type trafic

Méthodes :

1. ACL
──────

```
access-list 100 permit udp any any range 16384 32767
```

Trafic RTP (VoIP) identifié


2. NBAR (Network-Based Application Recognition)
────────────────────────────────────────────────

Deep Packet Inspection

Identifie applications (HTTP, BitTorrent, Netflix...)

```
class-map match-all VOIP
 match protocol rtp audio
```


3. QoS Group
────────────

Interne routeur (non-propagé)

```
set qos-group 1
```


MARQUAGE


LAYER 2 : CoS (CLASS OF SERVICE)
═════════════════════════════════

802.1Q/p (VLAN tag)

3 bits -> Valeurs 0-7

PCP (Priority Code Point)

```
Frame Ethernet 802.1Q :
[...] [TPID] [PCP(3bits)|DEI(1bit)|VID(12bits)] [...]
              ^ CoS
```

Valeurs :

┌─────┬──────────────────┬─────────────────┐
│ CoS │    Priorité      │     Usage       │
├─────┼──────────────────┼─────────────────┤
│  0  │ Best Effort      │ Trafic standard │
│  1  │ Background       │ Backup          │
│  2  │ Spare            │                 │
│  3  │ Excellent Effort │ Business apps   │
│  4  │ Controlled Load  │ Streaming vidéo │
│  5  │ Voice/Video      │ VoIP signaling  │
│  6  │ Internetwork Ctrl│ Routage (OSPF)  │
│  7  │ Network Control  │ Critical (BGP)  │
└─────┴──────────────────┴─────────────────┘

Recommandation Cisco :
- CoS 5 : VoIP (audio)
- CoS 4 : Vidéoconférence
- CoS 3 : Applications critiques
- CoS 0 : Reste

Limitation : Layer 2 seulement (switch)
-> Perdu routage


LAYER 3 : ToS / DSCP
════════════════════

IP Header : ToS byte (8 bits)

Evolution :
1. ToS (Type of Service) - Obsolète
2. IP Precedence (3 bits) - Obsolète
3. DSCP (6 bits) - Standard actuel [OK]

```
IP Header :
[...] [DSCP(6bits)|ECN(2bits)] [...]
       ^ QoS marking
```


IP PRECEDENCE (Ancien)
───────────────────────

3 bits (valeurs 0-7)

Compatible DSCP (3 bits hauts)

┌──────┬─────────────────┐
│ IPP  │   Priorité      │
├──────┼─────────────────┤
│  0   │ Routine         │
│  1   │ Priority        │
│  2   │ Immediate       │
│  3   │ Flash           │
│  4   │ Flash-Override  │
│  5   │ Critical (VoIP) │
│  6   │ Internetwork    │
│  7   │ Network         │
└──────┴─────────────────┘

Obsolète -> Utiliser DSCP


DSCP (DIFFERENTIATED SERVICES CODE POINT)
══════════════════════════════════════════

6 bits -> Valeurs 0-63

Standard RFC 2474

Classes PHB (Per-Hop Behavior) :


1. DEFAULT (BE)
───────────────

DSCP 0 (CS0)

Best Effort

Pas de garantie


2. EF (EXPEDITED FORWARDING)
─────────────────────────────

DSCP 46 (101110 binary)

Priorité maximale

Low latency, low loss, low jitter

Usage : VoIP (audio) [OK]

Recommandation : <30% bande passante


3. AF (ASSURED FORWARDING)
──────────────────────────

4 classes × 3 drop precedences = 12 valeurs

Format : AFxy
- x : Classe (1-4)
- y : Drop precedence (1-3)

┌──────┬──────┬────────────────┬─────────┐
│ Nom  │ DSCP │   Binaire      │ Usage   │
├──────┼──────┼────────────────┼─────────┤
│ AF11 │  10  │ 001010         │         │
│ AF12 │  12  │ 001100         │ Classe 1│
│ AF13 │  14  │ 001110         │         │
├──────┼──────┼────────────────┼─────────┤
│ AF21 │  18  │ 010010         │         │
│ AF22 │  20  │ 010100         │ Classe 2│
│ AF23 │  22  │ 010110         │         │
├──────┼──────┼────────────────┼─────────┤
│ AF31 │  26  │ 011010         │         │
│ AF32 │  28  │ 011100         │ Classe 3│
│ AF33 │  30  │ 011110         │         │
├──────┼──────┼────────────────┼─────────┤
│ AF41 │  34  │ 100010         │ Vidéo   │
│ AF42 │  36  │ 100100         │ Conf.   │
│ AF43 │  38  │ 100110         │         │
└──────┴──────┴────────────────┴─────────┘

Drop Precedence :
- 1 : Low drop (prioritaire)
- 2 : Medium drop
- 3 : High drop (jeté en premier)

Usage :
- AF4x : Vidéo conférence
- AF3x : Applications critiques
- AF2x : Transactionnel
- AF1x : Bulk data


4. CS (CLASS SELECTOR)
──────────────────────

Compatibilité IP Precedence

CS0, CS1, ..., CS7 (valeurs 0, 8, 16, 24, 32, 40, 48, 56)

┌─────┬──────┬─────────────────┐
│ CS  │ DSCP │   IP Prec       │
├─────┼──────┼─────────────────┤
│ CS0 │  0   │ 0 (Routine)     │
│ CS1 │  8   │ 1 (Priority)    │
│ CS2 │ 16   │ 2 (Immediate)   │
│ CS3 │ 24   │ 3 (Flash)       │
│ CS4 │ 32   │ 4               │
│ CS5 │ 40   │ 5 (Critical)    │
│ CS6 │ 48   │ 6 (Internetwork)│
│ CS7 │ 56   │ 7 (Network)     │
└─────┴──────┴─────────────────┘

Usage :
- CS5 : VoIP signaling (SIP, H.323)
- CS6 : Routage (OSPF, EIGRP, BGP)


RECOMMANDATIONS MARQUAGE

RFC 4594 : Configuration Guidelines

Application -> DSCP :

┌──────────────────────┬──────┬─────────┐
│     Application      │ DSCP │  PHB    │
├──────────────────────┼──────┼─────────┤
│ VoIP (audio)         │  46  │  EF     │
│ VoIP signaling       │  24  │  CS3    │
│ Vidéo conférence     │  34  │  AF41   │
│ Vidéo streaming      │  32  │  CS4    │
│ Applications métier  │  26  │  AF31   │
│ Email                │  10  │  AF11   │
│ Backup               │   8  │  CS1    │
│ Best Effort          │   0  │  BE     │
└──────────────────────┴──────┴─────────┘


CONFIGURATION MARQUAGE CISCO

MQC (Modular QoS CLI) :

```
! Classification
class-map match-all VOIP
 match ip dscp ef

class-map match-all BUSINESS-APPS
 match access-group 100

! Marquage
policy-map MARKING-POLICY
 class VOIP
  set dscp ef
 class BUSINESS-APPS
  set dscp af31
 class class-default
  set dscp default

! Application interface
interface GigabitEthernet0/0
 service-policy input MARKING-POLICY
```


CoS -> DSCP MAPPING

Switch L3 :

```
! Table mapping
mls qos map cos-dscp 0 8 16 24 32 46 48 56

! CoS 0 -> DSCP 0
! CoS 1 -> DSCP 8
! CoS 5 -> DSCP 46 (VoIP)
! CoS 6 -> DSCP 48
```


TRUST BOUNDARIES

Principe : Où faire confiance marquage existant ?

Scénarios :

1. Trust PC
───────────

PC marque trafic (DSCP)

Réseau trust

[ATTENTION] Risque : User abuse (tout marque EF)

Déconseillé


2. Trust IP Phone
─────────────────

Téléphone IP Cisco marque DSCP 46

Switch trust port téléphone

Sécurisé (firmware contrôlé)

Recommandé [OK]


3. Trust rien (Re-mark)
───────────────────────

Edge switch re-classifie et re-marque TOUT

Sécurité maximale

Overhead config

Usage : Haute sécurité


Configuration Cisco Switch :

```
! Trust IP Phone (CDP)
interface GigabitEthernet0/1
 switchport voice vlan 100
 mls qos trust dscp
 auto qos voip cisco-phone

! Re-mark PC (pas de trust)
interface GigabitEthernet0/2
 mls qos trust dscp
 service-policy input REMARK-POLICY
```
"""


# ----------------------------------------------------------------------------
# [PACKAGE] PARTIE 3 : QUEUING (FILES D'ATTENTE)
# ----------------------------------------------------------------------------

"""
QUEUING (FILES D'ATTENTE)


PRINCIPE

Queue = Buffer stockage paquets avant transmission

Nécessaire quand : Input rate > Output rate

Scheduler : Décide quel paquet transmettre (ordre)


ALGORITHMES QUEUING


1. FIFO (FIRST-IN-FIRST-OUT)
════════════════════════════

Plus simple : Premier arrivé = Premier sorti

Pas de priorité

Problème :
[X] VoIP attend comme backup
[X] Pas de QoS

Usage : Liens rapides non-congestionnés


2. PQ (PRIORITY QUEUING)
════════════════════════

4 queues : High, Medium, Normal, Low

High vidée complètement avant Medium, etc.

Strict Priority

Avantage :
[OK] Latence minimale High queue

Inconvénient :
[X] Starvation queues basses
[X] Low/Normal jamais servies si High saturée

Usage : Obsolète (remplacé LLQ)


3. CQ (CUSTOM QUEUING)
══════════════════════

16 queues

Round-robin pondéré

Chaque queue : X bytes par tour

Avantage :
[OK] Pas de starvation

Inconvénient :
[X] Latence VoIP variable

Usage : Obsolète


4. WFQ (WEIGHTED FAIR QUEUING)
═══════════════════════════════

Queuing "intelligent" par flux

Flux = Combinaison Src IP, Dst IP, Src Port, Dst Port, Protocol

Principe :
- Poids basé IP Precedence (ou DSCP)
- Priorité haute -> Plus de bande passante
- Fair : Flux basse priorité obtiennent quand même capacité

Avantages :
[OK] Automatique (pas de config)
[OK] Fair (pas starvation)
[OK] Adaptatif

Inconvénients :
[X] Pas de garantie stricte latence
[X] Overhead calcul flows

Usage : Liens <2 Mbps (défaut Cisco)

Configuration :
```
interface Serial0/0
 fair-queue
```


5. CBWFQ (CLASS-BASED WFQ)
══════════════════════════

Extension WFQ avec classes définies manuellement

Garantie bande passante par classe

Configuration MQC :

```
policy-map CBWFQ-POLICY
 class BUSINESS
  bandwidth 2000  ! 2 Mbps garantis
 class EMAIL
  bandwidth 500   ! 500 Kbps
 class class-default
  fair-queue      ! WFQ pour reste
```

Avantages :
[OK] Contrôle granulaire
[OK] Garanties bande passante
[OK] Pas de starvation

Inconvénient :
[X] Pas de strict priority (latence VoIP variable)


6. LLQ (LOW LATENCY QUEUING)
════════════════════════════

CBWFQ + Priority Queue

Standard actuel Cisco [OK]

Principe :
- 1+ priority queue (strict priority)
- Autres classes : CBWFQ

Priority queue servie AVANT autres
-> Latence minimale [OK]

Policing priority queue (éviter starvation)

Configuration :

```
policy-map LLQ-POLICY
 class VOIP
  priority 512      ! 512 Kbps strict priority
 class VIDEO
  bandwidth 2000    ! 2 Mbps garanti
 class BUSINESS
  bandwidth 1000
 class class-default
  fair-queue
```

Avantages :
[OK] Latence minimale VoIP (priority)
[OK] Garanties bande passante (CBWFQ)
[OK] Pas starvation (policing priority)

Recommandation : Standard production [OK]


CONFIGURATION COMPLÈTE LLQ

Exemple WAN 10 Mbps :

```
! ============================================
! Classification
! ============================================

class-map match-all VOIP
 match dscp ef

class-map match-all VIDEO-CONF
 match dscp af41

class-map match-all BUSINESS-CRITICAL
 match dscp af31 af32 af33

class-map match-all TRANSACTIONAL
 match dscp af21 af22 af23

class-map match-all BULK-DATA
 match dscp af11 af12 af13

! ============================================
! Policy Map
! ============================================

policy-map WAN-QOS
 class VOIP
  priority percent 10       ! 10% (1 Mbps) strict priority
 class VIDEO-CONF
  bandwidth percent 30      ! 30% (3 Mbps) garanti
 class BUSINESS-CRITICAL
  bandwidth percent 25      ! 25% (2.5 Mbps)
 class TRANSACTIONAL
  bandwidth percent 15      ! 15% (1.5 Mbps)
 class BULK-DATA
  bandwidth percent 10      ! 10% (1 Mbps)
 class class-default
  bandwidth percent 10      ! 10% (1 Mbps)
  fair-queue
  random-detect             ! WRED

! ============================================
! Application interface WAN
! ============================================

interface Serial0/0
 description WAN-10Mbps
 bandwidth 10000              ! Important pour %
 service-policy output WAN-QOS
```


VÉRIFICATION

```
show policy-map interface Serial0/0

Service-policy output: WAN-QOS

  Class-map: VOIP (match-all)
    0 packets, 0 bytes
    5 minute offered rate 0000 bps, drop rate 0000 bps
    Match: dscp ef (46)
    Queueing
      Strict Priority
      Output Queue: Conversation 264
      Bandwidth 10 (%)
      Bandwidth 1000 (kbps) Burst 25000 (Bytes)
      (pkts matched/bytes matched) 1500/180000

  Class-map: VIDEO-CONF (match-all)
    ...
```


QUEUE DEPTH

Profondeur queue = Nombre max paquets

Trop petite -> Tail drop prématuré
Trop grande -> Latence excessive

Calcul : Bandwidth × Delay

Exemple 10 Mbps, 50ms max delay :
(10,000,000 / 8) × 0.05 = 62,500 bytes

Défaut Cisco : 64 paquets (ajustable)

```
policy-map WAN-QOS
 class BUSINESS
  bandwidth 2000
  queue-limit 100   ! Max 100 paquets
```


TX-RING (HARDWARE QUEUE)

Queue hardware avant interface

Bypass QoS software !

Problème si TX-Ring trop grand :
- VoIP paquets bloqués derrière bulk

Solution : Réduire TX-Ring

```
interface Serial0/0
 tx-ring-limit 3   ! Défaut 10-20
```
"""


# ----------------------------------------------------------------------------
# [SIGNAL] PARTIE 4 : CONGESTION MANAGEMENT & AVOIDANCE
# ----------------------------------------------------------------------------

"""
CONGESTION MANAGEMENT


Problème : Queue pleine -> Tail Drop

Tail Drop :
- Dernier paquet arrivé = jeté
- Pas de distinction priorité
- TCP global synchronization


TCP GLOBAL SYNCHRONIZATION

Phénomène :

1. Lien congestionné -> Queues pleines
2. Tail Drop -> Multiples connexions TCP perdent paquets
3. Toutes connexions TCP réduisent window simultanément
4. Utilisation lien chute
5. Connexions TCP augmentent window simultanément
6. Retour congestion -> Cycle recommence

Résultat : Sawtooth pattern (inefficace)


CONGESTION AVOIDANCE : WRED
════════════════════════════

WRED (Weighted Random Early Detection)

Principe : Drop proactif AVANT queue pleine

Algorithme :

1. Queue < Min Threshold : Pas de drop
2. Queue entre Min et Max : Drop probabiliste (croissant)
3. Queue > Max Threshold : Drop tout (tail drop)

Paramètres par classe DSCP :
- Min Threshold
- Max Threshold  
- Mark Probability Denominator (MPD)

```
      ^
Drop  │                    ┌────── Tail Drop (100%)
Prob  │                   /
      │                  /
      │                 / MPD (ex: 1/10)
      │                /
      │               /
      │______________/
      0────────────────────────────> Queue Depth
           Min    Max
```


Configuration :

```
policy-map WAN-QOS
 class BUSINESS
  bandwidth 2000
  random-detect dscp-based    ! WRED basé DSCP
  
  ! AF31 (low drop)
  random-detect dscp af31 40 80 10
  ! Min: 40 packets, Max: 80, MPD: 1/10
  
  ! AF32 (medium drop)  
  random-detect dscp af32 30 70 10
  
  ! AF33 (high drop)
  random-detect dscp af33 20 60 10
```


Avantages WRED :
[OK] Prévient global synchronization
[OK] Distinction priorités (AF drop precedence)
[OK] Meilleure utilisation lien

Quand utiliser :
[OK] Trafic TCP majoritaire
[OK] Classes multiples priorités (AF)

Quand NE PAS utiliser :
[X] Trafic UDP majoritaire (pas de retransmission)
[X] Priority queue (VoIP déjà protégé)


ECN (EXPLICIT CONGESTION NOTIFICATION)

Extension WRED

Au lieu drop : Marque paquet ECN bits

TCP endpoint réduit window SANS perte paquet

Avantages :
[OK] Pas de perte (meilleure latence)
[OK] Réaction rapide congestion

Requis : Support endpoints

Configuration :
```
policy-map WAN-QOS
 class BUSINESS
  random-detect ecn
```
"""


# ----------------------------------------------------------------------------
# [POLICE_CAR] PARTIE 5 : POLICING & SHAPING
# ----------------------------------------------------------------------------

"""
POLICING & SHAPING


Objectif : Limiter débit trafic

Policing : Drop excès
Shaping : Buffer excès (smooth)


POLICING
════════

Limite rate strict

Trafic > Rate : DROP immédiat

Mécanisme : Token Bucket

Token Bucket :
- Bucket : Capacité tokens
- Rate : Tokens ajoutés/seconde
- Paquet : Consomme tokens
- Bucket vide : DROP

Paramètres :
- CIR (Committed Information Rate) : Rate normal
- Bc (Burst committed) : Bucket size
- Be (Burst excess - optionnel)

Configuration :

```
policy-map POLICE-POLICY
 class BULK-DATA
  police cir 1000000 bc 31250
   ! CIR 1 Mbps, Bc 31250 bytes
   conform-action transmit
   exceed-action drop
```

Calcul Bc :
Bc = CIR × (Time Interval)
Défaut Time Interval = 250ms

Bc = 1,000,000 × 0.25 = 250,000 bits = 31,250 bytes


Policing avec 3 actions :

```
policy-map POLICE-3COLOR
 class TRAFFIC
  police cir 1000000 bc 31250 be 31250
   conform-action transmit            ! Dans CIR
   exceed-action set-dscp-transmit af13  ! CIR < x < CIR+Be
   violate-action drop                ! > CIR+Be
```

Avantages Policing :
[OK] Réaction immédiate
[OK] Pas de latence ajoutée
[OK] Simple

Inconvénients :
[X] Bursty traffic mal géré (drops)
[X] TCP retransmissions
[X] Utilisation sous-optimale

Usage : Entrée (ingress), ISP enforcement


SHAPING
═══════

Limite rate SANS drop

Trafic > Rate : BUFFER (queue)

Transmission smooth

Paramètres :
- CIR : Rate cible
- Bc : Burst size
- Be : Excess burst (optionnel)

Configuration :

```
policy-map SHAPE-POLICY
 class class-default
  shape average 2000000   ! 2 Mbps
   ! Bc calculé auto
```

Avec child policy (nested) :

```
policy-map CHILD-QOS
 class VOIP
  priority 512
 class VIDEO
  bandwidth 1000
 class class-default
  fair-queue

policy-map PARENT-SHAPE
 class class-default
  shape average 2000000
  service-policy CHILD-QOS   ! Nested policy
```

Avantages Shaping :
[OK] Smooth traffic
[OK] Pas de drops (TCP friendly)
[OK] Burst support
[OK] Nested policies

Inconvénients :
[X] Latence ajoutée (buffering)
[X] Overhead mémoire

Usage : Sortie (egress), Frame Relay/ATM, Adaptive


SHAPING vs POLICING

┌─────────────┬──────────────┬──────────────┐
│   Critère   │   Policing   │   Shaping    │
├─────────────┼──────────────┼──────────────┤
│ Excès       │ DROP         │ BUFFER       │
│ Latence     │ Aucune       │ Ajoutée      │
│ Bursty      │ Mal géré     │ Géré [OK]      │
│ TCP         │ Retransmet   │ Friendly     │
│ Direction   │ Ingress      │ Egress       │
│ Nested QoS  │ Non          │ Oui [OK]       │
└─────────────┴──────────────┴──────────────┘


FRAME RELAY TRAFFIC SHAPING (Legacy)

Frame Relay : CIR contractuel

Burst > CIR : DE bit (Discard Eligible)

Shaping adaptatif :
- Reçoit BECN (Backward ECN) si congestion
- Réduit rate dynamiquement
- Remonte après

```
map-class frame-relay ADAPTIVE
 frame-relay adaptive-shaping becn
 frame-relay cir 256000
 frame-relay bc 2560
 frame-relay be 0
 frame-relay mincir 128000
```

Note : Frame Relay obsolète (2020s)
Concepts applicables MPLS, Metro Ethernet


GTS (GENERIC TRAFFIC SHAPING)

Shaping simple (legacy)

```
interface Serial0/0
 traffic-shape rate 2000000
```

Remplacé par class-based shaping (MQC)
"""


# ----------------------------------------------------------------------------
# [AUDIO] PARTIE 6 : VoIP QoS (CAS PRATIQUE)
# ----------------------------------------------------------------------------

"""
VoIP QoS DÉTAILLÉ


EXIGENCES VoIP

ITU-T G.114 Recommendations :

Latence (One-Way Delay) :
- <150ms : Acceptable [OK]
- 150-400ms : Tolérable (dégradé)
- >400ms : Inacceptable

Jitter :
- <30ms : Acceptable [OK]
- >50ms : Problématique

Perte :
- <1% : Acceptable [OK]
- 1-3% : Audible
- >3% : Inacceptable

Bande passante par appel :
- G.711 (PSTN quality) : 64 Kbps + overhead = ~80-90 Kbps
- G.729 (compressed) : 8 Kbps + overhead = ~30-35 Kbps


CALCUL BANDE PASSANTE VoIP

Codec G.711 :

Payload : 64 Kbps
RTP : 12 bytes
UDP : 8 bytes
IP : 20 bytes
Layer 2 (Ethernet) : 18 bytes

Total overhead : 58 bytes / paquet

Paquets/sec : 50 (20ms packetization)

Bande passante :
(160 bytes payload + 58 bytes overhead) × 50 pps = 87,200 bps ≈ 87 Kbps

10 appels simultanés : 870 Kbps


Codec G.729 :

Payload : 8 Kbps (20 bytes / 20ms)
Overhead : Identique (58 bytes)

(20 + 58) × 50 = 31,200 bps ≈ 31 Kbps

10 appels : 310 Kbps


COMPOSANTS VoIP

1. RTP (Real-time Transport Protocol)
──────────────────────────────────────

UDP ports 16384-32767

Transport audio/vidéo

DSCP : EF (46)


2. Signaling (SIP, H.323, SCCP)
────────────────────────────────

Établissement appels

TCP (SIP: 5060, H.323: 1720, SCCP: 2000)

DSCP : CS3 (24) ou AF31


3. Call Control (CUCM, etc.)
─────────────────────────────

Serveur contrôle appels

DSCP : CS3


CONFIGURATION QoS VoIP COMPLÈTE

Topologie :
```
IP Phones -> Switch Access -> Router WAN -> PSTN/SIP Provider
```


SWITCH ACCESS (Cisco Catalyst)
═══════════════════════════════

```
! ============================================
! Global QoS
! ============================================

mls qos

! CoS-to-DSCP mapping
mls qos map cos-dscp 0 8 16 24 32 46 48 56

! ============================================
! Interface vers IP Phone
! ============================================

interface GigabitEthernet0/1
 description IP-Phone-User1
 switchport mode access
 switchport access vlan 10
 switchport voice vlan 100
 
 ! Trust IP Phone marquage
 mls qos trust dscp
 
 ! Auto QoS VoIP
 auto qos voip cisco-phone
 
 ! Priority queue egress
 priority-queue out
 
 ! PoE pour téléphone
 power inline auto
 
 spanning-tree portfast
```


Auto QoS fait automatiquement :
- Trust DSCP si CDP détecte Cisco phone
- Sinon : Classification et re-marking
- Priority queue sortie
- Policing ingress (éviter abuse)


ROUTEUR WAN
═══════════

Exemple lien WAN 2 Mbps :

```
! ============================================
! Classification
! ============================================

class-map match-all VOIP-RTP
 description "VoIP Audio (G.711/G.729)"
 match ip dscp ef

class-map match-all VOIP-SIGNALING
 description "SIP/H.323/SCCP Signaling"
 match ip dscp cs3

class-map match-all VIDEO-CONF
 description "Video Conferencing"
 match ip dscp af41

class-map match-all BUSINESS-CRITICAL
 description "ERP, CRM, Database"
 match ip dscp af31

class-map match-all TRANSACTIONAL
 description "Email, Web"
 match ip dscp af21

class-map match-all BULK
 description "Backup, FTP"
 match ip dscp af11

class-map match-all SCAVENGER
 description "P2P, Streaming personnel"
 match ip dscp cs1

! ============================================
! Policy Map
! ============================================

policy-map WAN-VOIP-QOS
 
 ! VoIP RTP - Strict Priority
 class VOIP-RTP
  priority percent 33           ! Max 33% (660 Kbps)
  ! Limite éviter starvation
 
 ! VoIP Signaling
 class VOIP-SIGNALING
  bandwidth percent 5           ! 5% (100 Kbps)
 
 ! Vidéo Conférence
 class VIDEO-CONF
  bandwidth percent 23          ! 23% (460 Kbps)
  random-detect dscp-based      ! WRED
 
 ! Business Critical
 class BUSINESS-CRITICAL
  bandwidth percent 17          ! 17% (340 Kbps)
  random-detect dscp-based
 
 ! Transactional
 class TRANSACTIONAL
  bandwidth percent 10          ! 10% (200 Kbps)
  random-detect dscp-based
 
 ! Bulk
 class BULK
  bandwidth percent 4           ! 4% (80 Kbps)
  random-detect dscp-based
 
 ! Scavenger (basse priorité)
 class SCAVENGER
  bandwidth percent 1           ! 1% (20 Kbps)
 
 ! Default
 class class-default
  bandwidth percent 7           ! 7% (140 Kbps)
  fair-queue
  random-detect

! ============================================
! Shaping parent (2 Mbps)
! ============================================

policy-map WAN-SHAPE
 class class-default
  shape average 2000000
  service-policy WAN-VOIP-QOS

! ============================================
! Application
! ============================================

interface Serial0/0
 description WAN-2Mbps
 bandwidth 2000
 ip address 203.0.113.2 255.255.255.252
 service-policy output WAN-SHAPE
 
 ! Réduire TX-Ring (important VoIP)
 tx-ring-limit 3
```


VÉRIFICATION VoIP QoS

```
! Statistics
show policy-map interface Serial0/0

! Vérifier VoIP class :
Service-policy output: WAN-SHAPE
  Class-map: class-default (match-any)
    ...
    Service-policy : WAN-VOIP-QOS
      Class-map: VOIP-RTP (match-all)
        5000 packets, 600000 bytes
        5 minute offered rate 80000 bps, drop rate 0000 bps
        Match: ip dscp ef (46)
        Queueing
          Strict Priority
          Output Queue: Conversation 264
          Bandwidth 33 (%)
          Bandwidth 660 (kbps) Burst 16500 (Bytes)
          (pkts matched/bytes matched) 5000/600000
          (total drops/bytes drops) 0/0   <- Pas de drops [OK]
```


CALL ADMISSION CONTROL (CAC)

Limite nombre appels simultanés

Évite sursouscription bande passante

Méthodes :

1. Local CAC
────────────

Routeur calcul localement

```
voice-class codec 1
 codec preference 1 g729r8
 codec preference 2 g711ulaw

dial-peer voice 1 voip
 voice-class codec 1
 max-conn 10         ! Max 10 appels
```


2. RSVP (Resource Reservation)
───────────────────────────────

Réservation bande passante par appel

```
interface Serial0/0
 ip rsvp bandwidth 660   ! 660 Kbps réservable

dial-peer voice 1 voip
 req-qos guaranteed-delay audio
```


3. Measurement-based CAC
────────────────────────

Surveillance utilisation réelle

Rejette appel si bande passante insuffisante


TESTS VoIP

1. Latency
──────────

```
Router# ping 203.0.113.50 size 200 df-bit

Success rate is 100 percent (5/5), round-trip min/avg/max = 24/28/32 ms
```

OWD ≈ RTT / 2 = 14ms [OK]


2. Jitter
─────────

IP SLA :

```
ip sla 1
 udp-jitter 203.0.113.50 16384 codec g711ulaw
 frequency 60

ip sla schedule 1 start-time now life forever

! Voir résultats
show ip sla statistics 1
```


3. MOS Score
────────────

Mean Opinion Score (1-5)

5 : Excellent
4 : Good [OK]
3 : Fair
2 : Poor
1 : Bad

Calculé basé perte, latency, jitter

```
show ip sla statistics 1 details

IPSLA operation id: 1
Latest RTT: 28 milliseconds
Latest operation start time: 10:30:00 UTC Mon Jan 15 2024
Latest operation return code: OK
Number of successes: 100
Number of failures: 0
Operation time to live: Forever
Jitter average: 2 ms
Packet loss: 0%
MOS score: 4.40   <- Excellent [OK]
```
"""


# ----------------------------------------------------------------------------
# [COURS] EXERCICES ULTRA-DÉTAILLÉS
# ----------------------------------------------------------------------------

"""
[IDEE] EXERCICES PRATIQUES


═══════════════════════════════════════════════════════════
EXERCICE 1 : CONFIGURATION QoS WAN MULTI-SERVICES
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Entreprise déploie services sur lien WAN 10 Mbps :

Services :
1. VoIP (G.729) : 20 appels simultanés peak
2. Vidéoconférence HD : 3 salles (1 Mbps chacune)
3. ERP SAP (critique) : 2 Mbps minimum garanti
4. Email/Web : Best effort
5. Backup nocturne : Basse priorité

Exigences :
- VoIP : Latence <150ms, Jitter <30ms, Perte <1%
- Vidéo : Latence <200ms, Perte <0.5%
- SAP : Bande passante garantie
- Backup : Limité 1 Mbps

Mission :
1. Calculer bande passante requise
2. Créer classification (class-maps)
3. Configurer policy-map (LLQ, CBWFQ, WRED)
4. Appliquer sur interface WAN
5. Vérifier configuration


[OK] CORRECTION EXERCICE 1

ÉTAPE 1 : CALCUL BANDE PASSANTE
────────────────────────────────

VoIP (G.729) :
──────────────

1 appel G.729 : ~31 Kbps (avec overhead)
20 appels : 20 × 31 = 620 Kbps

Recommandation : +20% margin = 744 Kbps
-> Allocation : 800 Kbps (8% du 10 Mbps)


Vidéoconférence :
─────────────────

3 salles × 1 Mbps = 3 Mbps

+10% margin = 3.3 Mbps
-> Allocation : 3.5 Mbps (35%)


SAP ERP :
─────────

Minimum garanti : 2 Mbps (20%)


Email/Web :
───────────

Best effort : 10-15%
-> Allocation : 1.5 Mbps (15%)


Backup :
────────

Limité : 1 Mbps (10%)


Default :
─────────

Reste : 10-12%
-> 1 Mbps


Total allocation : 100%


ÉTAPE 2 : CLASSIFICATION
─────────────────────────

```
! ============================================
! ACCESS-LISTS
! ============================================

! VoIP RTP (G.729 - ports UDP 16384-32767)
access-list 100 remark VoIP RTP Traffic
access-list 100 permit udp any any range 16384 32767

! VoIP Signaling (SIP TCP 5060-5061)
access-list 101 remark VoIP Signaling SIP
access-list 101 permit tcp any any eq 5060
access-list 101 permit tcp any any eq 5061

! SAP ERP (ports 3200-3299)
access-list 102 remark SAP ERP Traffic
access-list 102 permit tcp any any range 3200 3299

! Backup (destination subnet backup server)
access-list 103 remark Backup Traffic
access-list 103 permit ip any host 10.0.0.50

! ============================================
! CLASS-MAPS
! ============================================

class-map match-all VOIP-RTP
 description "Voice RTP (G.729)"
 match access-group 100

class-map match-all VOIP-SIGNALING
 description "VoIP Signaling (SIP)"
 match access-group 101

class-map match-all VIDEO-CONFERENCING
 description "Video Conferencing HD"
 match ip dscp af41 af42

class-map match-all SAP-ERP
 description "SAP ERP Critical"
 match access-group 102

class-map match-all EMAIL-WEB
 description "Email and Web Traffic"
 match protocol http
 match protocol https
 match protocol smtp
 match protocol pop3
 match protocol imap

class-map match-all BACKUP
 description "Backup Traffic"
 match access-group 103
```


ÉTAPE 3 : POLICY-MAP
────────────────────

```
! ============================================
! CHILD POLICY (QUEUING)
! ============================================

policy-map CHILD-WAN-QOS
 
 ! ========================================
 ! VoIP RTP - Strict Priority (LLQ)
 ! ========================================
 class VOIP-RTP
  priority 800              ! 800 Kbps strict priority
  ! Limite protection starvation
 
 ! ========================================
 ! VoIP Signaling - Guaranteed BW
 ! ========================================
 class VOIP-SIGNALING
  bandwidth 100             ! 100 Kbps garanti
 
 ! ========================================
 ! Video Conferencing - Guaranteed + WRED
 ! ========================================
 class VIDEO-CONFERENCING
  bandwidth 3500            ! 3.5 Mbps garanti
  random-detect dscp-based
  ! WRED pour AF41/AF42
  random-detect dscp af41 80 160 10
  random-detect dscp af42 60 120 10
 
 ! ========================================
 ! SAP ERP - Guaranteed + WRED
 ! ========================================
 class SAP-ERP
  bandwidth 2000            ! 2 Mbps garanti
  random-detect dscp-based
  random-detect dscp af31 70 140 10
  random-detect dscp af32 50 100 10
  random-detect dscp af33 30 60 10
 
 ! ========================================
 ! Email/Web - Best Effort + WRED
 ! ========================================
 class EMAIL-WEB
  bandwidth 1500            ! 1.5 Mbps garanti
  random-detect
 
 ! ========================================
 ! Backup - Limited BW + Low Priority
 ! ========================================
 class BACKUP
  bandwidth 1000            ! 1 Mbps garanti (mais basse priorité)
  random-detect
 
 ! ========================================
 ! Default - Fair Queue + WRED
 ! ========================================
 class class-default
  bandwidth 1100            ! 1.1 Mbps
  fair-queue
  random-detect

! ============================================
! PARENT POLICY (SHAPING)
! ============================================

policy-map PARENT-WAN-SHAPE
 class class-default
  shape average 10000000    ! 10 Mbps
  service-policy CHILD-WAN-QOS
```


ÉTAPE 4 : APPLICATION INTERFACE
────────────────────────────────

```
! ============================================
! INTERFACE WAN
! ============================================

interface GigabitEthernet0/1
 description WAN-10Mbps-to-HQ
 ip address 203.0.113.2 255.255.255.252
 
 ! Bandwidth pour calculs QoS
 bandwidth 10000
 
 ! Apply QoS Policy Outbound
 service-policy output PARENT-WAN-SHAPE
 
 ! Reduce TX-Ring (important pour VoIP)
 tx-ring-limit 3
 
 no shutdown
```


ÉTAPE 5 : VÉRIFICATION
──────────────────────

```
! ============================================
! Vérifier configuration
! ============================================

show policy-map CHILD-WAN-QOS
show policy-map PARENT-WAN-SHAPE

! ============================================
! Vérifier application interface
! ============================================

show policy-map interface GigabitEthernet0/1

! ============================================
! Statistiques détaillées
! ============================================

show policy-map interface GigabitEthernet0/1 output class VOIP-RTP

! Exemple sortie :
!
! Service-policy output: PARENT-WAN-SHAPE
!   Class-map: class-default (match-any)
!     Shape average 10000000, queue limit 64 packets
!     ...
!     Service-policy : CHILD-WAN-QOS
!       Class-map: VOIP-RTP (match-all)
!         2500 packets, 300000 bytes
!         5 minute offered rate 96000 bps, drop rate 0 bps
!         Match: access-group 100
!         Queueing
!           Strict Priority
!           Output Queue: Conversation 264
!           Bandwidth 800 (kbps) Burst 20000 (Bytes)
!           (pkts matched/bytes matched) 2500/300000
!           (total drops/bytes drops) 0/0   <- Excellent [OK]

! ============================================
! Vérifier class-maps matchent trafic
! ============================================

show class-map VOIP-RTP

! ============================================
! Debug (si problème)
! ============================================

debug qos
debug policy-map
```


TESTS VALIDATION
────────────────

1. Test VoIP
────────────

Simuler appels VoIP :

```
! IP SLA VoIP test
ip sla 10
 udp-jitter 203.0.113.50 16384 codec g729r8
 frequency 60
ip sla schedule 10 start-time now life forever

! Vérifier après 5 min
show ip sla statistics 10

! Vérifier :
! - Latency < 150ms [OK]
! - Jitter < 30ms [OK]
! - Packet loss < 1% [OK]
```


2. Test Saturation
──────────────────

Générer trafic massif (iperf) classe BACKUP :

```
! Lancer backup
! Observer QoS stats

show policy-map interface Gi0/1 output class VOIP-RTP
! Drops doivent être 0 même si backup sature [OK]

show policy-map interface Gi0/1 output class BACKUP
! BACKUP peut avoir drops (normal, basse priorité)
```


3. Monitoring Continu
─────────────────────

```
! Script monitoring (cron)
#!/bin/bash

while true; do
  echo "=== QoS Stats $(date) ===" >> /var/log/qos-monitor.log
  
  # Via SNMP ou SSH
  ssh router "show policy-map interface Gi0/1" >> /var/log/qos-monitor.log
  
  # Alertes si drops VoIP > 0
  drops=$(ssh router "show policy-map int Gi0/1" | grep VOIP-RTP -A20 | grep "total drops" | awk '{print $4}')
  
  if [ "$drops" -gt 0 ]; then
    echo "ALERT: VoIP drops detected!" | mail -s "QoS Alert" admin@entreprise.com
  fi
  
  sleep 300  # Every 5 min
done
```


DOCUMENTATION
─────────────

Créer documentation QoS :

```
QoS Configuration WAN 10 Mbps
=============================

Date: 2024-01-15
Engineer: [Nom]

Allocation Bande Passante:
- VoIP RTP: 800 Kbps (8%) - Priority
- VoIP Signaling: 100 Kbps (1%)
- Vidéo Conf: 3500 Kbps (35%)
- SAP ERP: 2000 Kbps (20%)
- Email/Web: 1500 Kbps (15%)
- Backup: 1000 Kbps (10%)
- Default: 1100 Kbps (11%)

Classification:
- VoIP RTP: ACL 100 (UDP 16384-32767)
- SAP: ACL 102 (TCP 3200-3299)
- Backup: ACL 103 (dst 10.0.0.50)

Queuing:
- LLQ: VoIP RTP (strict priority)
- CBWFQ: Autres classes
- WRED: Video, SAP, Email

Verification Commands:
- show policy-map interface Gi0/1
- show ip sla statistics 10

Contact: support@entreprise.com
```


═══════════════════════════════════════════════════════════
FIN EXERCICE 1
═══════════════════════════════════════════════════════════
"""


# ============================================================================
# [DOCS] CONCLUSION CHAPITRE 16
# ============================================================================

"""
[BRAVO] FÉLICITATIONS !

Chapitre 16 : QoS (Quality of Service) terminé (ultra-détaillé)


[GUIDE] RÉCAPITULATIF COMPLET

[OK] Principes QoS (bande passante, latence, jitter, perte)
[OK] Classification (ACL, NBAR, QoS groups)
[OK] Marquage (CoS L2, DSCP L3, PHB)
[OK] Queuing (FIFO, PQ, WFQ, CBWFQ, LLQ)
[OK] Congestion Management (WRED, ECN)
[OK] Policing vs Shaping (token bucket, rate limiting)
[OK] VoIP QoS (configuration complète Cisco)
[OK] MQC (Modular QoS CLI)
[OK] Exercice ultra-complet (WAN 10 Mbps multi-services)


[OBJECTIF] COMPÉTENCES MAÎTRISÉES

[OK] Concevoir architecture QoS entreprise
[OK] Calculer bande passante applications
[OK] Classifier trafic (ACL, NBAR)
[OK] Marquer paquets (DSCP optimal)
[OK] Configurer LLQ (VoIP priorité)
[OK] Implémenter WRED (congestion avoidance)
[OK] Policing/Shaping (rate limiting)
[OK] Troubleshooter problèmes QoS
[OK] Optimiser VoIP/Vidéo
[OK] Valider avec tests (IP SLA)


[PRO] APPLICATIONS RÉELLES

[OK] Déployer VoIP entreprise (UC)
[OK] Optimiser liens WAN
[OK] Prioriser applications critiques
[OK] Certifications (CCNA, CCNP Enterprise)
[OK] Architecture SD-WAN
[OK] Network Engineer / VoIP Engineer


[LIEN] TECHNOLOGIES COUVERTES

- Classification (ACL, NBAR)
- Marquage (DSCP, CoS, PHB)
- Queuing (LLQ, CBWFQ, WFQ)
- WRED (Weighted Random Early Detection)
- Policing/Shaping
- VoIP (G.711, G.729, RTP, SIP)
- IP SLA (testing)
- MQC (Cisco Modular QoS)


-> PROCHAINS CHAPITRES

- Chapitres 17-20 : **ROUTAGE** (Statique, RIP, OSPF, EIGRP, BGP)
- Chapitre 21 : SD-WAN
- Chapitre 22 : Automation (Python, Ansible)


[IDEE] POINTS CLÉS

QoS = ESSENTIEL réseaux modernes :
[OK] VoIP/Vidéo : Exigences strictes
[OK] Applications critiques : Priorité
[OK] Liens WAN : Bande passante limitée
[OK] Expérience utilisateur : Qualité

Best Practices :
[OK] Classification edge (trust boundaries)
[OK] Marquage DSCP standard (RFC 4594)
[OK] LLQ pour VoIP (<33% bande passante)
[OK] WRED pour TCP (éviter global sync)
[OK] Policing ingress, Shaping egress
[OK] Tests réguliers (IP SLA)
[OK] Monitoring continu

Recommandations marquage :
- VoIP audio : EF (46)
- VoIP signaling : CS3 (24)
- Vidéo conf : AF41 (34)
- Business critical : AF31 (26)
- Scavenger : CS1 (8)


[RAPIDE] EXCELLENT TRAVAIL !

QoS est compétence CRITIQUE ingénieur réseau.
Différence entre réseau amateur et professionnel !

Vous maîtrisez maintenant :
- Théorie complète (latence, jitter, perte)
- Configuration production (MQC, LLQ)
- VoIP déploiement (end-to-end)
- Troubleshooting expert
- Best practices Cisco

Prêt pour environnements production complexes ! [OBJECTIF]


═══════════════════════════════════════════════════════════
[GUIDE] FIN DU CHAPITRE 16 - QoS (QUALITY OF SERVICE)
═══════════════════════════════════════════════════════════
"""

# ============================================================================
# CHAPITRE 17 : ROUTAGE STATIQUE
# ============================================================================

"""
[OBJECTIF] OBJECTIFS DU CHAPITRE

[OK] Principes routage (tables, décision, forwarding)
[OK] Types routes (connectées, statiques, dynamiques)
[OK] Routes statiques (configuration, types)
[OK] Routes par défaut (default route)
[OK] Routes flottantes (backup)
[OK] Distance administrative
[OK] Métrique et sélection route
[OK] Routage inter-VLAN
[OK] Route récursive vs directe
[OK] Route résumée (supernet)
[OK] IPv6 statique
[OK] Troubleshooting routage
[OK] Exercices ultra-pratiques

[IDEE] POURQUOI LE ROUTAGE EST FONDAMENTAL ?

Le routage = CŒUR des réseaux interconnectés

Sans routage :
[X] Réseaux isolés (broadcast domains séparés)
[X] Pas d'Internet
[X] Pas de communication inter-sites

Avec routage :
[OK] Interconnexion réseaux
[OK] Internet global
[OK] Scalabilité infinie
[OK] Redondance et résilience

Routage statique = BASE à maîtriser avant protocoles dynamiques !
"""


# ----------------------------------------------------------------------------
# [WORLD_MAP] PARTIE 1 : PRINCIPES FONDAMENTAUX ROUTAGE
# ----------------------------------------------------------------------------

"""
ROUTAGE (ROUTING)


DÉFINITION

Routage = Processus sélection chemin paquets entre réseaux

Routeur = Équipement L3 interconnectant réseaux


RÔLE ROUTEUR

1. Séparer broadcast domains
2. Interconnecter réseaux IP différents
3. Prendre décisions routage (table routage)
4. Forwarding paquets (commutation)


DIFFÉRENCE ROUTEUR vs SWITCH

Switch (L2) :
- Même réseau IP (broadcast domain)
- Commutation MAC
- Table MAC

Routeur (L3) :
- Réseaux IP différents
- Routage IP
- Table routage


PROCESSUS ROUTAGE


Étape 1 : Réception paquet
──────────────────────────

Interface routeur reçoit trame

Vérification :
- FCS (Frame Check Sequence) -> Intégrité
- MAC destination = MAC routeur ?

Si OK -> Désencapsulation L2


Étape 2 : Lookup table routage
───────────────────────────────

Extraction IP destination paquet

Recherche table routage : Best match

Longest Prefix Match : Route plus spécifique


Étape 3 : Décrémentation TTL
─────────────────────────────

TTL (Time To Live) décrémenté : TTL - 1

Si TTL = 0 :
-> Paquet jeté
-> ICMP Time Exceeded envoyé source

Protection boucles routage


Étape 4 : Encapsulation & Forwarding
─────────────────────────────────────

Nouvelle trame L2 (MAC source = routeur, MAC dest = next-hop)

Transmission interface sortie


EXEMPLE COMPLET

Topologie :
```
PC1 (192.168.1.10)
    │
    v
Router A (192.168.1.1) <--> (10.0.0.1) Router B (10.0.0.2) <--> (192.168.2.1)
                                                                  │
                                                                  v
                                                          PC2 (192.168.2.10)
```

PC1 ping 192.168.2.10 :

1. PC1 crée paquet :
   - IP Src : 192.168.1.10
   - IP Dst : 192.168.2.10
   - TTL : 64

2. PC1 vérifie : Même réseau ?
   192.168.2.10 vs 192.168.1.0/24 -> NON
   -> Envoie gateway : 192.168.1.1

3. Trame L2 :
   - MAC Src : PC1
   - MAC Dst : Router A (ARP)

4. Router A reçoit :
   - Désencapsule L2
   - Lookup 192.168.2.10 table routage
   - Match : 192.168.2.0/24 via 10.0.0.2
   - Décrémente TTL : 64 -> 63
   - Encapsule nouvelle trame (MAC dst = Router B)
   - Forward interface 10.0.0.1

5. Router B reçoit :
   - Lookup 192.168.2.10
   - Match : 192.168.2.0/24 connected
   - TTL : 63 -> 62
   - ARP 192.168.2.10 (si pas en cache)
   - Encapsule (MAC dst = PC2)
   - Forward

6. PC2 reçoit [OK]


TABLE ROUTAGE


Structure :

┌────────────────┬──────────────┬──────────┬──────────┬─────────┐
│ Destination    │ Mask         │ Next-Hop │Interface │ Metric  │
├────────────────┼──────────────┼──────────┼──────────┼─────────┤
│ 192.168.1.0    │ /24          │ Connected│  Gi0/0   │    0    │
│ 10.0.0.0       │ /30          │ Connected│  Gi0/1   │    0    │
│ 192.168.2.0    │ /24          │ 10.0.0.2 │  Gi0/1   │    1    │
│ 0.0.0.0        │ /0           │ 10.0.0.2 │  Gi0/1   │    1    │
└────────────────┴──────────────┴──────────┴──────────┴─────────┘

Cisco :
```
Router# show ip route

Codes: C - connected, S - static, R - RIP, O - OSPF
       L - local

Gateway of last resort is 10.0.0.2 to network 0.0.0.0

C    192.168.1.0/24 is directly connected, GigabitEthernet0/0
L    192.168.1.1/32 is directly connected, GigabitEthernet0/0
C    10.0.0.0/30 is directly connected, GigabitEthernet0/1
L    10.0.0.1/32 is directly connected, GigabitEthernet0/1
S    192.168.2.0/24 [1/0] via 10.0.0.2
S*   0.0.0.0/0 [1/0] via 10.0.0.2
```


TYPES ROUTES


1. CONNECTED (C)
════════════════

Réseaux directement connectés

Auto-ajoutées quand interface UP

Exemple :
```
interface GigabitEthernet0/0
 ip address 192.168.1.1 255.255.255.0
 no shutdown
```

-> Route 192.168.1.0/24 connected ajoutée


2. LOCAL (L)
════════════

Adresse IP locale interface (/32)

Cisco IOS 15+

Utilisation interne routeur


3. STATIC (S)
═════════════

Configurées manuellement

Pas d'adaptation automatique

Persistantes


4. DYNAMIC
══════════

Apprises protocoles routage :
- RIP (R)
- OSPF (O)
- EIGRP (D)
- BGP (B)

S'adaptent topologie

Convergence automatique


LONGEST PREFIX MATCH

Principe : Route PLUS SPÉCIFIQUE gagne

Exemple table :
```
192.168.1.0/24  -> Router A
192.168.1.0/25  -> Router B
192.168.1.64/26 -> Router C
```

Destination 192.168.1.100 :
- Match 192.168.1.0/24 ? OUI
- Match 192.168.1.0/25 ? NON (100 > 127)
- Gagnant : 192.168.1.0/24 (/24 plus long match)

Destination 192.168.1.50 :
- Match 192.168.1.0/24 ? OUI
- Match 192.168.1.0/25 ? OUI (50 < 127)
- Match 192.168.1.64/26 ? NON
- Gagnant : 192.168.1.0/25 (/25 plus spécifique)

Destination 192.168.1.80 :
- Match 192.168.1.64/26 ? OUI
- Gagnant : 192.168.1.64/26 (/26 PLUS spécifique)


DISTANCE ADMINISTRATIVE (AD)

Priorité source route (si plusieurs routes même destination)

Plus FAIBLE = Plus fiable

┌─────────────────────┬─────┐
│      Source         │ AD  │
├─────────────────────┼─────┤
│ Connected           │  0  │
│ Static              │  1  │
│ EIGRP Summary       │  5  │
│ eBGP                │ 20  │
│ EIGRP (internal)    │ 90  │
│ IGRP                │100  │
│ OSPF                │110  │
│ IS-IS               │115  │
│ RIP                 │120  │
│ EIGRP (external)    │170  │
│ iBGP                │200  │
│ Unknown             │255  │
└─────────────────────┴─────┘

Exemple :
```
192.168.2.0/24 via OSPF (AD 110)
192.168.2.0/24 via Static (AD 1)
```

-> Static gagne (AD 1 < 110) [OK]


MÉTRIQUE

Distance/Coût vers destination

Utilisée si plusieurs routes MÊME AD

Plus FAIBLE = Meilleur

Exemples :
- Static : Pas de métrique (distance only)
- RIP : Hop count
- OSPF : Cost (basé bande passante)
- EIGRP : Composite (BW, delay, load, reliability)
"""


# ----------------------------------------------------------------------------
# [MOTORWAY] PARTIE 2 : ROUTES STATIQUES
# ----------------------------------------------------------------------------

"""
ROUTES STATIQUES


DÉFINITION

Route configurée manuellement administrateur

Pas de mise à jour automatique


SYNTAXE CISCO

```
ip route <destination> <mask> {<next-hop> | <exit-interface>} [distance] [permanent]
```

Paramètres :
- destination : Réseau destination
- mask : Masque réseau
- next-hop : IP routeur suivant
- exit-interface : Interface sortie
- distance : AD (optionnel, défaut 1)
- permanent : Reste même si interface down


TYPES ROUTES STATIQUES


1. ROUTE NEXT-HOP (Standard)
════════════════════════════

Spécifie IP next-hop

Configuration :
```
ip route 192.168.2.0 255.255.255.0 10.0.0.2
```

Signification :
- Pour atteindre 192.168.2.0/24
- Envoyer à 10.0.0.2 (next-hop)

Avantages :
[OK] Fonctionne réseaux multi-accès
[OK] Standard

Inconvénients :
[X] Route récursive (lookup supplémentaire)


2. ROUTE DIRECTLY CONNECTED
════════════════════════════

Spécifie interface sortie

Configuration :
```
ip route 192.168.2.0 255.255.255.0 GigabitEthernet0/1
```

Avantages :
[OK] Pas de récursion

Inconvénients :
[X] Point-to-point uniquement (Serial, tunnel)
[X] Multi-accès : Problème ARP (pas de next-hop)

[ATTENTION] Sur Ethernet : Routeur essaie ARP destination finale
-> Pas forcément sur même LAN
-> Échec


3. ROUTE FULLY SPECIFIED
═════════════════════════

Next-hop ET interface

Configuration :
```
ip route 192.168.2.0 255.255.255.0 GigabitEthernet0/1 10.0.0.2
```

Usage :
- Point-to-point (Serial, Frame Relay)
- Situations spécifiques

Avantages :
[OK] Pas de récursion
[OK] Fonctionne partout

Recommandation : Utiliser uniquement si nécessaire


ROUTE RÉCURSIVE vs DIRECTE

Récursive (Next-hop) :
──────────────────────

```
ip route 192.168.2.0 255.255.255.0 10.0.0.2
```

Lookup 192.168.2.10 :
1. Match route 192.168.2.0/24 -> Next-hop 10.0.0.2
2. Lookup 10.0.0.2 -> Connected Gi0/1
3. Forward Gi0/1

2 lookups (récursif)


Directe (Interface) :
─────────────────────

```
ip route 192.168.2.0 255.255.255.0 Gi0/1
```

Lookup 192.168.2.10 :
1. Match route -> Interface Gi0/1
2. Forward Gi0/1

1 lookup (direct)


CONFIGURATION EXEMPLE

Topologie :
```
R1 (192.168.1.1) ─ (10.0.0.1/30) ─ (10.0.0.2) R2 (192.168.2.1)
  LAN1: 192.168.1.0/24              LAN2: 192.168.2.0/24
```


R1 Configuration :
──────────────────

```
hostname R1

interface GigabitEthernet0/0
 description LAN1
 ip address 192.168.1.1 255.255.255.0
 no shutdown

interface GigabitEthernet0/1
 description WAN-to-R2
 ip address 10.0.0.1 255.255.255.252
 no shutdown

! Route statique vers LAN2
ip route 192.168.2.0 255.255.255.0 10.0.0.2
```


R2 Configuration :
──────────────────

```
hostname R2

interface GigabitEthernet0/0
 description LAN2
 ip address 192.168.2.1 255.255.255.0
 no shutdown

interface GigabitEthernet0/1
 description WAN-to-R1
 ip address 10.0.0.2 255.255.255.252
 no shutdown

! Route statique vers LAN1
ip route 192.168.1.0 255.255.255.0 10.0.0.1
```


Vérification :
──────────────

R1 :
```
R1# show ip route

S    192.168.2.0/24 [1/0] via 10.0.0.2
C    192.168.1.0/24 is directly connected, GigabitEthernet0/0
C    10.0.0.0/30 is directly connected, GigabitEthernet0/1
```

Test :
```
R1# ping 192.168.2.1 source 192.168.1.1

Success rate is 100 percent (5/5)
```


ROUTE PAR DÉFAUT (DEFAULT ROUTE)
═════════════════════════════════

Route "catch-all" : 0.0.0.0/0

Utilisée si aucune route spécifique

Configuration :
```
ip route 0.0.0.0 0.0.0.0 <next-hop>
```

Exemple :
```
ip route 0.0.0.0 0.0.0.0 10.0.0.2
```

Signification : "Tout trafic inconnu -> 10.0.0.2"

Affichage :
```
S*   0.0.0.0/0 [1/0] via 10.0.0.2
     ^ Étoile = Default route
```

Gateway of Last Resort :
```
Gateway of last resort is 10.0.0.2 to network 0.0.0.0
```

Usage typique :
- Branch router -> Internet via ISP
- Stub router (1 seul chemin sortie)


ROUTES FLOTTANTES (FLOATING STATIC)
════════════════════════════════════

Route backup avec AD supérieure

Active uniquement si route primaire down

Configuration :
```
! Route primaire (OSPF, AD 110)
router ospf 1
 network 192.168.2.0 0.0.0.255 area 0

! Route flottante (AD 120 > 110)
ip route 192.168.2.0 255.255.255.0 10.0.1.2 120
```

Fonctionnement :
- Normal : OSPF active (AD 110)
- OSPF down : Static active (AD 120) [OK]

Exemple dual-path :

```
! Path primaire (Fast)
ip route 0.0.0.0 0.0.0.0 203.0.113.1

! Path backup (Slow, AD 10)
ip route 0.0.0.0 0.0.0.0 198.51.100.1 10
```

Si 203.0.113.1 down -> Bascule 198.51.100.1


LOAD BALANCING
══════════════

Plusieurs routes MÊME destination, MÊME AD, MÊME métrique

Trafic réparti (par défaut 4 chemins max)

Configuration :
```
ip route 192.168.2.0 255.255.255.0 10.0.0.2
ip route 192.168.2.0 255.255.255.0 10.0.1.2
```

Table routage :
```
S    192.168.2.0/24 [1/0] via 10.0.0.2
                    [1/0] via 10.0.1.2
```

Répartition : Per-destination (hash IP src/dst)

Maximum paths :
```
maximum-paths 6   ! Jusqu'à 6 chemins (défaut 4)
```


NULL ROUTE (BLACK HOLE)
════════════════════════

Route vers Null0 (interface virtuelle qui drop)

Usage : Filtrage, agrégation

Configuration :
```
ip route 192.168.0.0 255.255.0.0 Null0
```

Tout trafic vers 192.168.0.0/16 -> Dropped

Cas d'usage :
- Prévenir boucles routage (route summary)
- Bloquer trafic malveillant
- Lab/Testing


ROUTE RÉSUMÉE (SUMMARY)
════════════════════════

Route agrégée (supernet)

Exemple :
```
192.168.1.0/24
192.168.2.0/24
192.168.3.0/24
192.168.4.0/24
```

Résumé : 192.168.0.0/22 (4 réseaux /24)

Calcul :
- Binaire commun : 192.168.00
- Masque : /22 (255.255.252.0)

Configuration :
```
ip route 192.168.0.0 255.255.252.0 10.0.0.2
```

Avantages :
[OK] Moins d'entrées table routage
[OK] Moins d'overhead protocoles dynamiques
[OK] Scalabilité

Protection boucles :
```
! Null route pour protection
ip route 192.168.0.0 255.255.252.0 Null0 254
! AD 254 -> Utilisée seulement si pas de route spécifique
```


PERMANENT KEYWORD
═════════════════

Route reste même si interface down

```
ip route 192.168.2.0 255.255.255.0 10.0.0.2 permanent
```

Usage : Situations spécifiques (généralement évité)


NAMED STATIC ROUTE
══════════════════

Route statique avec nom (IOS 15.0+)

Configuration :
```
ip route static name ROUTE-TO-DMZ 10.0.0.0 255.255.255.0 10.1.1.2
```

Avantages :
[OK] Documentation
[OK] Lisibilité

Affichage :
```
show ip route static
```
"""


# ----------------------------------------------------------------------------
# [MELANGE] PARTIE 3 : ROUTAGE INTER-VLAN
# ----------------------------------------------------------------------------

"""
ROUTAGE INTER-VLAN


PROBLÈME

VLANs = Broadcast domains séparés (L2)

Communication inter-VLAN requiert routage (L3)


MÉTHODES


1. ROUTER-ON-A-STICK (Legacy)
══════════════════════════════

1 interface physique routeur
Sous-interfaces 802.1Q par VLAN

Topologie :
```
PC VLAN10 ─┐
           ├─ Switch ─ (Trunk) ─ Router (sub-interfaces)
PC VLAN20 ─┘
```

Configuration Switch :
```
interface GigabitEthernet0/1
 description Trunk-to-Router
 switchport mode trunk
 switchport trunk allowed vlan 10,20
```

Configuration Router :
```
interface GigabitEthernet0/0
 no ip address
 no shutdown

interface GigabitEthernet0/0.10
 description VLAN10-Users
 encapsulation dot1Q 10
 ip address 192.168.10.1 255.255.255.0

interface GigabitEthernet0/0.20
 description VLAN20-Servers
 encapsulation dot1Q 20
 ip address 192.168.20.1 255.255.255.0
```

Avantages :
[OK] 1 interface physique
[OK] Simple

Inconvénients :
[X] Goulot étranglement (1 lien)
[X] Performance limitée


2. SWITCH L3 (SVI - Switched Virtual Interface)
════════════════════════════════════════════════

Switch L3 route entre VLANs

Configuration :
```
! Activer routage
ip routing

! VLAN 10
vlan 10
 name Users
interface Vlan10
 ip address 192.168.10.1 255.255.255.0
 no shutdown

! VLAN 20
vlan 20
 name Servers
interface Vlan20
 ip address 192.168.20.1 255.255.255.0
 no shutdown
```

Ports access :
```
interface GigabitEthernet0/1
 switchport mode access
 switchport access vlan 10

interface GigabitEthernet0/2
 switchport mode access
 switchport access vlan 20
```

Routage automatique entre VLAN10 <-> VLAN20 [OK]

Avantages :
[OK] Performance (hardware switching)
[OK] Pas de goulot
[OK] Standard moderne

Recommandé : Production [OK]


3. ROUTED PORT (L3 Interface)
══════════════════════════════

Port switch configuré L3 (routed)

Configuration :
```
interface GigabitEthernet0/3
 no switchport              ! Passe en mode routed
 ip address 10.0.0.1 255.255.255.252
 no shutdown
```

Usage : Connexion inter-switches L3


EXEMPLE COMPLET INTER-VLAN


Topologie :
```
PC1 (VLAN10) ─┐
              ├─ Switch L3 ─ (Routed) ─ Router ─ Internet
PC2 (VLAN20) ─┘
```


Switch L3 Configuration :
──────────────────────────

```
hostname SW1

! Activer routage
ip routing

! VLANs
vlan 10
 name Users
vlan 20
 name Servers

! SVIs
interface Vlan10
 description Users-Gateway
 ip address 192.168.10.1 255.255.255.0
 no shutdown

interface Vlan20
 description Servers-Gateway
 ip address 192.168.20.1 255.255.255.0
 no shutdown

! Ports access
interface range GigabitEthernet0/1-10
 switchport mode access
 switchport access vlan 10

interface range GigabitEthernet0/11-20
 switchport mode access
 switchport access vlan 20

! Routed port vers Router
interface GigabitEthernet0/24
 no switchport
 ip address 10.0.0.2 255.255.255.252
 no shutdown

! Route par défaut
ip route 0.0.0.0 0.0.0.0 10.0.0.1
```


Router Configuration :
──────────────────────

```
hostname R1

interface GigabitEthernet0/0
 description To-Switch
 ip address 10.0.0.1 255.255.255.252
 no shutdown

interface GigabitEthernet0/1
 description WAN-Internet
 ip address dhcp
 no shutdown

! Routes vers VLANs
ip route 192.168.10.0 255.255.255.0 10.0.0.2
ip route 192.168.20.0 255.255.255.0 10.0.0.2

! NAT
ip nat inside source list 1 interface Gi0/1 overload
access-list 1 permit 192.168.0.0 0.0.255.255

interface Gi0/0
 ip nat inside
interface Gi0/1
 ip nat outside
```


Test :
──────

PC1 (VLAN10 - 192.168.10.10) ping PC2 (VLAN20 - 192.168.20.10) :

```
PC1> ping 192.168.20.10

Reply from 192.168.20.10: bytes=32 time<1ms
```

Chemin :
1. PC1 -> Gateway 192.168.10.1 (SVI VLAN10)
2. Switch route VLAN10 -> VLAN20 (hardware)
3. SVI VLAN20 -> PC2

Performance : Wire-speed [OK]
"""


# ----------------------------------------------------------------------------
# [WEB] PARTIE 4 : IPv6 STATIQUE
# ----------------------------------------------------------------------------

"""
ROUTAGE STATIQUE IPv6


SYNTAXE

```
ipv6 route <prefix/length> {<next-hop> | <exit-interface>} [distance]
```

Similaire IPv4


CONFIGURATION

Topologie :
```
R1 (2001:db8:1::1/64) ─ (2001:db8:10::1/127) ─ (2001:db8:10::2/127) R2 (2001:db8:2::1/64)
```


R1 :
────

```
ipv6 unicast-routing   ! Activer routage IPv6

interface GigabitEthernet0/0
 description LAN1
 ipv6 address 2001:db8:1::1/64
 no shutdown

interface GigabitEthernet0/1
 description WAN
 ipv6 address 2001:db8:10::1/127
 no shutdown

! Route statique vers LAN2
ipv6 route 2001:db8:2::/64 2001:db8:10::2
```


R2 :
────

```
ipv6 unicast-routing

interface GigabitEthernet0/0
 description LAN2
 ipv6 address 2001:db8:2::1/64
 no shutdown

interface GigabitEthernet0/1
 description WAN
 ipv6 address 2001:db8:10::2/127
 no shutdown

! Route statique vers LAN1
ipv6 route 2001:db8:1::/64 2001:db8:10::1
```


ROUTE PAR DÉFAUT IPv6

```
ipv6 route ::/0 <next-hop>
```

Exemple :
```
ipv6 route ::/0 2001:db8:10::2
```


LINK-LOCAL NEXT-HOP

IPv6 permet link-local comme next-hop

[ATTENTION] DOIT spécifier interface sortie

```
ipv6 route 2001:db8:2::/64 GigabitEthernet0/1 fe80::2
```

Raison : Link-local pas unique globalement


FLOATING STATIC IPv6

Identique IPv4 :

```
ipv6 route 2001:db8:2::/64 2001:db8:10::2
ipv6 route 2001:db8:2::/64 2001:db8:11::2 120
                                         ^ AD backup
```


FULLY SPECIFIED IPv6

```
ipv6 route 2001:db8:2::/64 GigabitEthernet0/1 2001:db8:10::2
```


VÉRIFICATION IPv6

```
show ipv6 route

IPv6 Routing Table - default - 7 entries
Codes: C - Connected, L - Local, S - Static

C   2001:db8:1::/64 [0/0]
     via GigabitEthernet0/0, directly connected
L   2001:db8:1::1/128 [0/0]
     via GigabitEthernet0/0, receive
C   2001:db8:10::/127 [0/0]
     via GigabitEthernet0/1, directly connected
L   2001:db8:10::1/128 [0/0]
     via GigabitEthernet0/1, receive
S   2001:db8:2::/64 [1/0]
     via 2001:db8:10::2
L   fe80::/10 [0/0]
     via Null0, receive
L   ff00::/8 [0/0]
     via Null0, receive
```


TEST

```
R1# ping ipv6 2001:db8:2::1 source 2001:db8:1::1

Success rate is 100 percent (5/5)
```
"""


# ----------------------------------------------------------------------------
# [OUTIL] PARTIE 5 : TROUBLESHOOTING ROUTAGE
# ----------------------------------------------------------------------------

"""
TROUBLESHOOTING ROUTAGE


COMMANDES VÉRIFICATION


1. SHOW IP ROUTE
════════════════

Affiche table routage complète

```
Router# show ip route

Codes: C - connected, S - static, R - RIP, O - OSPF

Gateway of last resort is 10.0.0.2 to network 0.0.0.0

C    192.168.1.0/24 is directly connected, GigabitEthernet0/0
C    10.0.0.0/30 is directly connected, GigabitEthernet0/1
S    192.168.2.0/24 [1/0] via 10.0.0.2
S*   0.0.0.0/0 [1/0] via 10.0.0.2
```


2. SHOW IP ROUTE <IP>
═════════════════════

Lookup spécifique

```
Router# show ip route 192.168.2.10

Routing entry for 192.168.2.0/24
  Known via "static", distance 1, metric 0
  Routing Descriptor Blocks:
  * 10.0.0.2
      Route metric is 0, traffic share count is 1
```


3. SHOW IP ROUTE STATIC
═══════════════════════

Seulement routes statiques

```
Router# show ip route static

S    192.168.2.0/24 [1/0] via 10.0.0.2
S*   0.0.0.0/0 [1/0] via 10.0.0.2
```


4. SHOW IP INTERFACE BRIEF
═══════════════════════════

Status interfaces

```
Router# show ip interface brief

Interface         IP-Address      Status    Protocol
Gi0/0             192.168.1.1     up        up
Gi0/1             10.0.0.1        up        up
Gi0/2             unassigned      admin down down
```


5. SHOW IP PROTOCOLS
════════════════════

Protocoles routage actifs

```
Router# show ip protocols

Routing Protocol is "static"
```


6. SHOW ARP
═══════════

Table ARP (résolution L3->L2)

```
Router# show arp

Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  192.168.1.10            5   0011.2233.4455  ARPA   Gi0/0
Internet  10.0.0.2               12   aa11.bb22.cc33  ARPA   Gi0/1
```


PING & TRACEROUTE


PING
════

Test connectivité

```
Router# ping 192.168.2.10

Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms
```

Extended ping :
```
Router# ping
Protocol [ip]:
Target IP address: 192.168.2.10
Source address or interface: 192.168.1.1
```


TRACEROUTE
══════════

Chemin paquets

```
Router# traceroute 192.168.2.10

  1 10.0.0.2 4 msec 4 msec 4 msec
  2 192.168.2.1 8 msec *  8 msec
```


PROBLÈMES COURANTS


1. ROUTE MANQUANTE
═══════════════════

Symptôme : Ping échoue

Vérifier :
```
show ip route <destination>
```

Si pas de route :
```
% Network not in table
```

Solution : Ajouter route
```
ip route <network> <mask> <next-hop>
```


2. NEXT-HOP INACCESSIBLE
════════════════════════

Route existe mais next-hop down

```
show ip route 192.168.2.0

% Network not in table
```

Vérifier next-hop :
```
ping 10.0.0.2
```

Si échec : Problème connectivité ou interface


3. ROUTE RÉCURSIVE ÉCHEC
═════════════════════════

```
ip route 192.168.2.0 255.255.255.0 10.0.0.2
```

Mais pas de route vers 10.0.0.2

Solution : Vérifier route vers next-hop existe


4. LONGEST MATCH INCORRECT
═══════════════════════════

Route trop spécifique ou générale

Vérifier :
```
show ip route 192.168.2.50
```

Identifier quelle route matchée


5. AD/MÉTRIQUE PROBLÈME
═══════════════════════

Route non-préférée active

Vérifier AD :
```
show ip route 192.168.2.0

S    192.168.2.0/24 [120/1] via 10.0.1.2
                    ^ AD
```

Ajuster si nécessaire


6. ROUTAGE ASYMÉTRIQUE
══════════════════════

Aller ≠ Retour

Problème firewall stateful, NAT

Traceroute bidirectionnel :
```
R1# traceroute 192.168.2.10
R2# traceroute 192.168.1.10
```

Comparer chemins


DEBUG

```
debug ip routing
debug ip packet
```

[ATTENTION] CPU intensif : Production avec précaution


MÉTHODOLOGIE DÉPANNAGE

1. Vérifier connectivité physique (LED, câbles)
2. Vérifier interfaces UP
3. Vérifier adresses IP correctes
4. Ping gateway local
5. Vérifier table routage (destination existe ?)
6. Ping next-hop
7. Traceroute destination
8. Vérifier routes retour (bidirectionnel)
9. Vérifier firewall/ACL
10. Vérifier NAT (si applicable)


OUTILS AVANCÉS

Cisco IP SLA :
```
ip sla 1
 icmp-echo 192.168.2.10 source-ip 192.168.1.1
 frequency 60
ip sla schedule 1 start-time now life forever

show ip sla statistics 1
```


KRON (Scheduler) :
```
kron occurrence HOURLY-CHECK in 0:60 recurring
 policy-list CHECK-ROUTES

kron policy-list CHECK-ROUTES
 cli show ip route | append flash:route-log.txt
```
"""


# ----------------------------------------------------------------------------
# [COURS] EXERCICES ULTRA-DÉTAILLÉS
# ----------------------------------------------------------------------------

"""
[IDEE] EXERCICES PRATIQUES


═══════════════════════════════════════════════════════════
EXERCICE 1 : ROUTAGE STATIQUE MULTI-SITES
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Topologie entreprise 3 sites :

```
HQ (Paris)              Branch1 (Lyon)          Branch2 (Marseille)
LAN: 192.168.1.0/24     LAN: 192.168.2.0/24     LAN: 192.168.3.0/24
                        
    R1                      R2                      R3
    │                       │                       │
    └─(10.0.1.0/30)────────┴─(10.0.2.0/30)────────┘
      .1              .2    .1                .2
```

Liens :
- R1-R2 : 10.0.1.0/30 (R1: .1, R2: .2)
- R2-R3 : 10.0.2.0/30 (R2: .1, R3: .2)

Requis :
1. Routage bidirectionnel tous sites
2. Route par défaut vers Internet (R1)
3. Route backup R1->R3 via R2 (floating)
4. Load balancing si possible
5. Routage inter-VLAN sur chaque site (VLAN 10 Users, VLAN 20 Servers)

Mission : Configuration complète 3 routeurs


[OK] CORRECTION EXERCICE 1

ROUTER R1 (HQ PARIS)
────────────────────

```
! ============================================
! ROUTER R1 - HQ PARIS
! ============================================

hostname R1-HQ-Paris

! ============================================
! INTERFACES
! ============================================

! LAN HQ
interface GigabitEthernet0/0
 description LAN-HQ-Trunk
 no ip address
 no shutdown

! VLAN 10 - Users
interface GigabitEthernet0/0.10
 description VLAN10-Users-HQ
 encapsulation dot1Q 10
 ip address 192.168.1.1 255.255.255.0
 no shutdown

! VLAN 20 - Servers
interface GigabitEthernet0/0.20
 description VLAN20-Servers-HQ
 encapsulation dot1Q 20
 ip address 192.168.1.129 255.255.255.128
 ! Subnet 192.168.1.128/25 for servers
 no shutdown

! WAN vers R2 (Lyon)
interface GigabitEthernet0/1
 description WAN-to-R2-Lyon
 ip address 10.0.1.1 255.255.255.252
 no shutdown

! WAN vers Internet
interface GigabitEthernet0/2
 description WAN-Internet
 ip address dhcp
 no shutdown

! ============================================
! ROUTES STATIQUES
! ============================================

! Route vers Lyon LAN (R2)
ip route 192.168.2.0 255.255.255.0 10.0.1.2

! Route vers Marseille LAN (via R2)
ip route 192.168.3.0 255.255.255.0 10.0.1.2

! Route vers lien R2-R3
ip route 10.0.2.0 255.255.255.252 10.0.1.2

! Route par défaut Internet
ip route 0.0.0.0 0.0.0.0 GigabitEthernet0/2

! ============================================
! NAT (vers Internet)
! ============================================

access-list 1 remark NAT-ACL
access-list 1 permit 192.168.1.0 0.0.0.255
access-list 1 permit 192.168.2.0 0.0.0.255
access-list 1 permit 192.168.3.0 0.0.0.255

ip nat inside source list 1 interface GigabitEthernet0/2 overload

interface GigabitEthernet0/0.10
 ip nat inside
interface GigabitEthernet0/0.20
 ip nat inside
interface GigabitEthernet0/1
 ip nat inside
interface GigabitEthernet0/2
 ip nat outside

! ============================================
! DHCP (optionnel)
! ============================================

ip dhcp pool VLAN10-HQ
 network 192.168.1.0 255.255.255.0
 default-router 192.168.1.1
 dns-server 8.8.8.8 8.8.4.4

ip dhcp pool VLAN20-HQ
 network 192.168.1.128 255.255.255.128
 default-router 192.168.1.129
 dns-server 8.8.8.8

ip dhcp excluded-address 192.168.1.1 192.168.1.10
ip dhcp excluded-address 192.168.1.129 192.168.1.139

end
write memory
```


ROUTER R2 (BRANCH LYON)
───────────────────────

```
! ============================================
! ROUTER R2 - BRANCH LYON
! ============================================

hostname R2-Branch-Lyon

! ============================================
! INTERFACES
! ============================================

! LAN Lyon
interface GigabitEthernet0/0
 description LAN-Lyon-Trunk
 no ip address
 no shutdown

interface GigabitEthernet0/0.10
 description VLAN10-Users-Lyon
 encapsulation dot1Q 10
 ip address 192.168.2.1 255.255.255.0
 no shutdown

interface GigabitEthernet0/0.20
 description VLAN20-Servers-Lyon
 encapsulation dot1Q 20
 ip address 192.168.2.129 255.255.255.128
 no shutdown

! WAN vers R1 (HQ)
interface GigabitEthernet0/1
 description WAN-to-R1-HQ
 ip address 10.0.1.2 255.255.255.252
 no shutdown

! WAN vers R3 (Marseille)
interface GigabitEthernet0/2
 description WAN-to-R3-Marseille
 ip address 10.0.2.1 255.255.255.252
 no shutdown

! ============================================
! ROUTES STATIQUES
! ============================================

! Route vers HQ (R1)
ip route 192.168.1.0 255.255.255.0 10.0.1.1

! Route vers Marseille (R3)
ip route 192.168.3.0 255.255.255.0 10.0.2.2

! Route par défaut vers HQ (Internet)
ip route 0.0.0.0 0.0.0.0 10.0.1.1

! ============================================
! DHCP
! ============================================

ip dhcp pool VLAN10-Lyon
 network 192.168.2.0 255.255.255.0
 default-router 192.168.2.1
 dns-server 8.8.8.8

ip dhcp pool VLAN20-Lyon
 network 192.168.2.128 255.255.255.128
 default-router 192.168.2.129
 dns-server 8.8.8.8

ip dhcp excluded-address 192.168.2.1 192.168.2.10
ip dhcp excluded-address 192.168.2.129 192.168.2.139

end
write memory
```


ROUTER R3 (BRANCH MARSEILLE)
─────────────────────────────

```
! ============================================
! ROUTER R3 - BRANCH MARSEILLE
! ============================================

hostname R3-Branch-Marseille

! ============================================
! INTERFACES
! ============================================

! LAN Marseille
interface GigabitEthernet0/0
 description LAN-Marseille-Trunk
 no ip address
 no shutdown

interface GigabitEthernet0/0.10
 description VLAN10-Users-Marseille
 encapsulation dot1Q 10
 ip address 192.168.3.1 255.255.255.0
 no shutdown

interface GigabitEthernet0/0.20
 description VLAN20-Servers-Marseille
 encapsulation dot1Q 20
 ip address 192.168.3.129 255.255.255.128
 no shutdown

! WAN vers R2 (Lyon)
interface GigabitEthernet0/1
 description WAN-to-R2-Lyon
 ip address 10.0.2.2 255.255.255.252
 no shutdown

! ============================================
! ROUTES STATIQUES
! ============================================

! Route vers Lyon (R2)
ip route 192.168.2.0 255.255.255.0 10.0.2.1

! Route vers HQ (via R2)
ip route 192.168.1.0 255.255.255.0 10.0.2.1

! Route vers lien R1-R2
ip route 10.0.1.0 255.255.255.252 10.0.2.1

! Route par défaut vers R2 (Internet via HQ)
ip route 0.0.0.0 0.0.0.0 10.0.2.1

! ============================================
! DHCP
! ============================================

ip dhcp pool VLAN10-Marseille
 network 192.168.3.0 255.255.255.0
 default-router 192.168.3.1
 dns-server 8.8.8.8

ip dhcp pool VLAN20-Marseille
 network 192.168.3.128 255.255.255.128
 default-router 192.168.3.129
 dns-server 8.8.8.8

ip dhcp excluded-address 192.168.3.1 192.168.3.10
ip dhcp excluded-address 192.168.3.129 192.168.3.139

end
write memory
```


VÉRIFICATION
────────────

R1 :
```
R1# show ip route

Gateway of last resort is 0.0.0.0 to network 0.0.0.0

C    192.168.1.0/24 is directly connected, Gi0/0.10
C    192.168.1.128/25 is directly connected, Gi0/0.20
C    10.0.1.0/30 is directly connected, Gi0/1
S    192.168.2.0/24 [1/0] via 10.0.1.2
S    192.168.3.0/24 [1/0] via 10.0.1.2
S    10.0.2.0/30 [1/0] via 10.0.1.2
S*   0.0.0.0/0 is directly connected, Gi0/2
```

R2 :
```
R2# show ip route

Gateway of last resort is 10.0.1.1 to network 0.0.0.0

S    192.168.1.0/24 [1/0] via 10.0.1.1
C    192.168.2.0/24 is directly connected, Gi0/0.10
S    192.168.3.0/24 [1/0] via 10.0.2.2
C    10.0.1.0/30 is directly connected, Gi0/1
C    10.0.2.0/30 is directly connected, Gi0/2
S*   0.0.0.0/0 [1/0] via 10.0.1.1
```

R3 :
```
R3# show ip route

Gateway of last resort is 10.0.2.1 to network 0.0.0.0

S    192.168.1.0/24 [1/0] via 10.0.2.1
S    192.168.2.0/24 [1/0] via 10.0.2.1
C    192.168.3.0/24 is directly connected, Gi0/0.10
S    10.0.1.0/30 [1/0] via 10.0.2.1
C    10.0.2.0/30 is directly connected, Gi0/1
S*   0.0.0.0/0 [1/0] via 10.0.2.1
```


TESTS CONNECTIVITÉ
──────────────────

HQ -> Lyon :
```
R1# ping 192.168.2.1 source 192.168.1.1
Success rate is 100 percent (5/5)
```

HQ -> Marseille :
```
R1# ping 192.168.3.1 source 192.168.1.1
Success rate is 100 percent (5/5)
```

Lyon -> Marseille :
```
R2# ping 192.168.3.1 source 192.168.2.1
Success rate is 100 percent (5/5)
```

Traceroute HQ -> Marseille :
```
R1# traceroute 192.168.3.1 source 192.168.1.1

  1 10.0.1.2 4 msec 4 msec 4 msec    (R2)
  2 192.168.3.1 8 msec 8 msec 8 msec (R3)
```


FLOATING ROUTE (Bonus)
──────────────────────

Si lien direct R1-R3 existe :

R1 ajouter :
```
! Lien backup direct R1-R3 (si existe)
interface GigabitEthernet0/3
 ip address 10.0.3.1 255.255.255.252

! Route primaire via R2 (AD 1)
ip route 192.168.3.0 255.255.255.0 10.0.1.2

! Route backup directe (AD 10)
ip route 192.168.3.0 255.255.255.0 10.0.3.2 10
```

Normal : Via R2
Si R2 down : Bascule lien direct R1-R3 [OK]


═══════════════════════════════════════════════════════════
FIN EXERCICE 1
═══════════════════════════════════════════════════════════
"""


# ============================================================================
# [DOCS] CONCLUSION CHAPITRE 17
# ============================================================================

"""
[BRAVO] FÉLICITATIONS !

Chapitre 17 : ROUTAGE STATIQUE terminé (ultra-détaillé)


[GUIDE] RÉCAPITULATIF COMPLET

[OK] Principes routage (tables, lookup, forwarding, TTL)
[OK] Types routes (connected, local, static, dynamic)
[OK] Routes statiques (next-hop, interface, fully specified)
[OK] Routes par défaut (0.0.0.0/0)
[OK] Routes flottantes (backup avec AD)
[OK] Distance administrative (priorité sources)
[OK] Longest prefix match
[OK] Load balancing (ECMP)
[OK] Routage inter-VLAN (router-on-stick, SVI L3)
[OK] IPv6 statique
[OK] Troubleshooting complet
[OK] Exercice ultra-pratique (3 sites, VLANs, NAT)


[OBJECTIF] COMPÉTENCES MAÎTRISÉES

[OK] Comprendre processus routage complet
[OK] Configurer routes statiques Cisco
[OK] Implémenter redondance (floating)
[OK] Routage inter-VLAN production
[OK] IPv6 statique
[OK] Load balancing multi-paths
[OK] Troubleshooter problèmes routage
[OK] Architectures multi-sites
[OK] Best practices routage


[PRO] APPLICATIONS RÉELLES

[OK] Déployer réseaux multi-sites
[OK] Configuration routeurs branch
[OK] Architectures Hub-and-Spoke
[OK] Certifications (CCNA, CCNP)
[OK] Network Engineer
[OK] Base solide protocoles dynamiques


[LIEN] FONDATION PROTOCOLES DYNAMIQUES

Routage statique = BASE essentielle

Prochains chapitres :
- Ch 18 : RIP (Distance Vector)
- Ch 19 : OSPF (Link State)
- Ch 20 : EIGRP (Hybrid)
- Ch 21 : BGP (Path Vector)

Concepts maîtrisés ici applicables TOUS protocoles !


[IDEE] POINTS CLÉS

Routage statique :
[OK] Simple, prévisible
[OK] Contrôle total administrateur
[OK] Pas d'overhead protocole
[OK] Sécurisé (pas d'annonces)

Limitations :
[X] Pas de convergence auto
[X] Scalabilité limitée
[X] Maintenance manuelle

Usage optimal :
[OK] Petits réseaux (<10 routeurs)
[OK] Stub networks (1 seul chemin)
[OK] Routes par défaut
[OK] Backup routes (floating)
[OK] Routes spécifiques critiques

Best Practices :
[OK] Documentation routes
[OK] Nommage interfaces descriptif
[OK] Floating routes redondance
[OK] Route summary (agrégation)
[OK] Null routes protection boucles
[OK] Tests bidirectionnels


[RAPIDE] EXCELLENT TRAVAIL !

Routage statique = FONDATION routing.

Vous maîtrisez maintenant :
- Tables routage complètes
- Longest prefix match
- AD et métrique
- Configuration production
- Inter-VLAN routage
- IPv4 et IPv6
- Troubleshooting expert

Prêt pour protocoles dynamiques ! [WORLD_MAP]


═══════════════════════════════════════════════════════════
[GUIDE] FIN DU CHAPITRE 17 - ROUTAGE STATIQUE
═══════════════════════════════════════════════════════════
"""

# ============================================================================
# CHAPITRE 18 : RIP (ROUTING INFORMATION PROTOCOL)
# ============================================================================

"""
[OBJECTIF] OBJECTIFS DU CHAPITRE

[OK] Principes routage dynamique (vs statique)
[OK] Distance Vector (Bellman-Ford)
[OK] RIP versions (RIPv1, RIPv2, RIPng)
[OK] Métrique (hop count)
[OK] Timers RIP (update, invalid, holddown, flush)
[OK] Boucles routage (problèmes et solutions)
[OK] Split Horizon, Route Poisoning, Holddown
[OK] Configuration RIPv2 (Cisco)
[OK] Authentification RIP
[OK] Route summarization
[OK] Passive interfaces
[OK] Default route propagation
[OK] RIPng (IPv6)
[OK] Troubleshooting RIP
[OK] Exercices ultra-pratiques

[IDEE] POURQUOI ÉTUDIER RIP ?

RIP = Premier protocole routage dynamique (1988)

Aujourd'hui :
[X] Rarement utilisé production (limité, lent)
[OK] ESSENTIEL apprentissage (concepts fondamentaux)

RIP enseigne :
- Distance Vector (base EIGRP, BGP)
- Métrique
- Timers
- Problèmes boucles
- Solutions anti-boucles
- Convergence

Maîtriser RIP = Comprendre TOUS protocoles routage !
"""


# ----------------------------------------------------------------------------
# [SYNC] PARTIE 1 : ROUTAGE DYNAMIQUE - PRINCIPES
# ----------------------------------------------------------------------------

"""
ROUTAGE DYNAMIQUE


DÉFINITION

Protocoles permettent routeurs :
- Découvrir réseaux automatiquement
- Partager informations routage
- Calculer meilleurs chemins
- S'adapter changements topologie


AVANTAGES vs STATIQUE

Statique :
[X] Configuration manuelle
[X] Pas d'adaptation
[X] Scalabilité limitée
[OK] Prévisible
[OK] Pas d'overhead

Dynamique :
[OK] Configuration minimale
[OK] Convergence auto
[OK] Scalable
[OK] Redondance
[X] Overhead (CPU, BW, mémoire)
[X] Complexité


TYPES PROTOCOLES ROUTAGE


1. CLASSEMENT PAR PORTÉE
════════════════════════

IGP (Interior Gateway Protocol)
────────────────────────────────

Intra-AS (Autonomous System)

Exemples :
- RIP
- OSPF
- EIGRP
- IS-IS


EGP (Exterior Gateway Protocol)
────────────────────────────────

Inter-AS

Exemple :
- BGP (Border Gateway Protocol)


2. CLASSEMENT PAR ALGORITHME
═════════════════════════════

Distance Vector
───────────────

Principe : Direction (vecteur) et Distance

Algorithme : Bellman-Ford

Informations échangées :
- Réseaux connus
- Distance (métrique)

Routeur connaît :
- Direction (next-hop)
- Distance (métrique)
- PAS la topologie complète

Exemples : RIP, EIGRP (hybride)

Analogie : Panneau routier
"Paris -> 50 km"
(pas de carte détaillée)


Link State
──────────

Principe : État liens (topologie)

Algorithme : Dijkstra (SPF - Shortest Path First)

Informations échangées :
- LSA (Link State Advertisements)
- État chaque lien

Routeur connaît :
- Topologie COMPLÈTE
- Calcule meilleur chemin (SPF)

Exemples : OSPF, IS-IS

Analogie : GPS
Carte complète -> Calcul route optimale


Path Vector
───────────

Principe : Chemin complet (AS-PATH)

Exemple : BGP

Décisions basées :
- Chemin AS
- Policies
- Attributs multiples


MÉTRIQUE

Coût vers destination

Distance Vector : Métrique cumulative

Exemples métriques :

┌──────────┬────────────────────────┐
│Protocole │       Métrique         │
├──────────┼────────────────────────┤
│ RIP      │ Hop count              │
│ OSPF     │ Cost (BW)              │
│ EIGRP    │ Composite (BW+Delay)   │
│ BGP      │ AS-PATH + attributes   │
└──────────┴────────────────────────┘


CONVERGENCE

Temps pour TOUS routeurs :
- Connaître changement topologie
- Calculer nouvelles routes
- Installer table routage

Convergence rapide = Crucial [OK]

RIP : Lent (minutes)
OSPF : Rapide (secondes)
EIGRP : Très rapide (secondes)
"""


# ----------------------------------------------------------------------------
# [MESURE] PARTIE 2 : RIP - FONCTIONNEMENT
# ----------------------------------------------------------------------------

"""
RIP (ROUTING INFORMATION PROTOCOL)


HISTORIQUE

1988 : RIPv1 (RFC 1058)
- Classful
- Pas d'authentification
- Broadcast

1993 : RIPv2 (RFC 2453)
- Classless (CIDR)
- Authentification
- Multicast
- VLSM support

1997 : RIPng (RFC 2080)
- IPv6


CARACTÉRISTIQUES RIP

Type : Distance Vector

Métrique : Hop count (nombre routeurs)

Métrique max : 15 hops
-> 16 = Inaccessible (infini)

AD : 120

Timers :
- Update : 30s
- Invalid : 180s
- Holddown : 180s
- Flush : 240s

Transport :
- RIPv1 : UDP 520, Broadcast (255.255.255.255)
- RIPv2 : UDP 520, Multicast (224.0.0.9)


MÉTRIQUE HOP COUNT

Problème : Ignore bande passante

Exemple :
```
Chemin A : 3 × 100 Mbps -> 3 hops
Chemin B : 1 × 10 Mbps -> 1 hop
```

RIP choisit B (1 hop < 3 hops)
Mais A meilleur (100 Mbps > 10 Mbps) !

Limitation majeure RIP


LIMITE 15 HOPS

Réseaux > 15 hops : Inaccessibles

Raison :
- Éviter boucles infinies
- Count-to-infinity lent
- Scalabilité limitée

Conséquence : RIP inadapté grandes entreprises


FONCTIONNEMENT DISTANCE VECTOR


Étape 1 : Initialisation
────────────────────────

Routeur démarre :
- Connaît réseaux connectés
- Métrique 0 (directement connectés)


Étape 2 : Partage informations
───────────────────────────────

Toutes les 30s :
- Envoie table routage complète voisins
- RIPv1 : Broadcast
- RIPv2 : Multicast 224.0.0.9


Étape 3 : Réception & Traitement
─────────────────────────────────

Routeur reçoit update :

Pour chaque route reçue :

A. Calcul métrique
──────────────────

Métrique reçue + 1 (hop actuel)

Exemple :
Router A annonce : 192.168.2.0/24 métrique 2
Router B reçoit : 192.168.2.0/24 métrique 2 + 1 = 3


B. Décision installation
────────────────────────

Si réseau NOUVEAU :
-> Installer table routage

Si réseau EXISTE :
-> Comparer métriques :
  - Nouvelle < Ancienne : Remplacer
  - Nouvelle > Ancienne : Ignorer
  - Nouvelle = Ancienne, même source : Réinitialiser timer
  - Nouvelle = Ancienne, source différente : Load balancing


Étape 4 : Convergence
─────────────────────

Processus répété jusqu'à stabilité

Tous routeurs : Mêmes informations


EXEMPLE COMPLET

Topologie :
```
R1 (192.168.1.0/24) ─ R2 ─ R3 (192.168.3.0/24)
```


T=0s : Démarrage
────────────────

R1 table :
```
192.168.1.0/24 - Connected, 0 hops
```

R2 table :
```
(Aucune route initialement)
```

R3 table :
```
192.168.3.0/24 - Connected, 0 hops
```


T=30s : Premier Update
──────────────────────

R1 -> R2 : "192.168.1.0/24, 0 hops"
R3 -> R2 : "192.168.3.0/24, 0 hops"

R2 table après :
```
192.168.1.0/24 - via R1, 1 hop
192.168.3.0/24 - via R3, 1 hop
```


T=60s : Deuxième Update
───────────────────────

R2 -> R1 : "192.168.3.0/24, 1 hop"
R2 -> R3 : "192.168.1.0/24, 1 hop"

R1 table après :
```
192.168.1.0/24 - Connected, 0 hops
192.168.3.0/24 - via R2, 2 hops [OK]
```

R3 table après :
```
192.168.1.0/24 - via R2, 2 hops [OK]
192.168.3.0/24 - Connected, 0 hops
```


CONVERGENCE ATTEINTE [OK]

Tous routeurs connaissent tous réseaux


TIMERS RIP


1. UPDATE TIMER (30s)
═════════════════════

Fréquence envoi updates

Défaut : 30 secondes

Toutes les 30s : Update complet


2. INVALID TIMER (180s)
═══════════════════════

Sans update pendant 180s :
-> Route marquée "possibly down"
-> Métrique -> 16 (inaccessible)

Garde route 180s avant flush


3. HOLDDOWN TIMER (180s)
════════════════════════

Après route down :
- Ignore updates inférieurs pendant 180s
- Prévient informations obsolètes

Exemple :
Route down (métrique 16)
-> Holddown 180s
-> Ignore updates < 16 pendant 180s


4. FLUSH TIMER (240s)
═════════════════════

240s sans update :
-> Route SUPPRIMÉE table

Total : 180s (invalid) + 60s = 240s


CALCUL TIMERS

Update : 30s
Invalid : 180s (6 × Update)
Flush : 240s (8 × Update)

Customisation :
```
router rip
 timers basic <update> <invalid> <holddown> <flush>

! Exemple : Updates 10s
router rip
 timers basic 10 60 60 80
```

[ATTENTION] TOUS routeurs doivent avoir MÊMES timers


RIPv1 vs RIPv2


RIPv1 (Obsolète)
════════════════

Caractéristiques :
[X] Classful (pas de masque)
[X] Pas d'authentification
[X] Broadcast (255.255.255.255)
[X] Pas de VLSM
[X] Pas de route tags
[X] Auto-summary forcé

Problèmes :
- Réseaux discontigus : ÉCHEC
- VLSM : Impossible
- Sécurité : Nulle


RIPv2 (Standard actuel)
═══════════════════════

Caractéristiques :
[OK] Classless (masque inclus)
[OK] Authentification (MD5, SHA)
[OK] Multicast (224.0.0.9)
[OK] VLSM support
[OK] Route tags
[OK] Manual summary

Améliorations :
- Scalabilité meilleure
- Sécurité
- Flexibilité
- Efficacité (multicast vs broadcast)


COMPARAISON

┌──────────────┬─────────┬─────────┐
│  Critère     │ RIPv1   │ RIPv2   │
├──────────────┼─────────┼─────────┤
│ Classful     │   Oui   │  Non    │
│ VLSM         │   Non   │  Oui [OK] │
│ Auth         │   Non   │  Oui [OK] │
│ Transport    │Broadcast│Multicast│
│ Auto-summary │  Forcé  │Optionnel│
│ Discontiguous│   Non   │  Oui [OK] │
└──────────────┴─────────┴─────────┘

Recommandation : TOUJOURS RIPv2 [OK]
"""


# ----------------------------------------------------------------------------
# [SYNC] PARTIE 3 : PROBLÈMES BOUCLES & SOLUTIONS
# ----------------------------------------------------------------------------

"""
BOUCLES ROUTAGE


PROBLÈME COUNT-TO-INFINITY

Distance Vector vulnérable boucles

Exemple :

Topologie :
```
R1 (192.168.1.0/24) ─ R2 ─ R3
```

Normal :
```
R1 : 192.168.1.0/24 - Connected, 0
R2 : 192.168.1.0/24 - via R1, 1
R3 : 192.168.1.0/24 - via R2, 2
```

Problème : Réseau 192.168.1.0/24 DOWN


Séquence événements :
─────────────────────

T=0s : R1 détecte down
R1 : 192.168.1.0/24 -> Métrique 16 (inaccessible)

T=30s : R2 update vers R1
R2 -> R1 : "192.168.1.0/24, métrique 1"
(Information OBSOLÈTE de dernier update)

R1 pense : "Oh ! Route via R2, métrique 2"
R1 installe : 192.168.1.0/24 via R2, métrique 2

T=60s : R1 update vers R2
R1 -> R2 : "192.168.1.0/24, métrique 2"

R2 pense : "Métrique augmentée, update"
R2 : 192.168.1.0/24 via R1, métrique 3

T=90s : R2 update vers R3
R2 -> R3 : "192.168.1.0/24, métrique 3"
R3 : Métrique 4

...

Cycle INFINI jusqu'à métrique 16 !

Temps convergence : 16 hops × 30s = 8 minutes ! [X]


BOUCLE PAQUET

Pire : Paquets bouclent R1 <-> R2

TTL décrémente jusqu'à 0 -> Drop

Congestion réseau


SOLUTIONS ANTI-BOUCLES


1. MÉTRIQUE MAXIMUM (15)
════════════════════════

16 = Inaccessible (infini)

Limite count-to-infinity à 16

Convergence max : ~8 minutes


2. SPLIT HORIZON
════════════════

Règle : NE PAS annoncer route via interface d'où elle vient

Exemple :
R2 apprend 192.168.1.0/24 via R1
-> R2 N'annonce PAS cette route À R1

Évite boucles simples [OK]

Configuration Cisco (défaut activé) :
```
interface GigabitEthernet0/0
 ip split-horizon
```


3. SPLIT HORIZON WITH POISON REVERSE
═════════════════════════════════════

Extension Split Horizon

Règle : Annoncer route métrique 16 (poison) via interface source

Exemple :
R2 apprend 192.168.1.0/24 via R1
-> R2 annonce "192.168.1.0/24, métrique 16" À R1

Avantage : Information explicite route down

Converge plus vite que Split Horizon seul


4. ROUTE POISONING
══════════════════

Route down -> Annoncer métrique 16 IMMÉDIATEMENT

Triggered update (hors cycle 30s)

Exemple :
R1 détecte 192.168.1.0/24 down
-> R1 annonce IMMÉDIATEMENT "métrique 16" à voisins


5. HOLDDOWN TIMER
═════════════════

Après route poisoned (métrique 16) :
- Ignore updates métrique < 16 pendant 180s
- Sauf si même source annonce route up

Prévient informations obsolètes


6. TRIGGERED UPDATES
════════════════════

Update immédiat (pas attendre 30s) si :
- Route down
- Métrique change significativement

Convergence plus rapide


EXEMPLE CONVERGENCE AVEC SOLUTIONS

Même topologie, réseau 192.168.1.0/24 down :

T=0s : R1 détecte down
R1 : Métrique 16
Triggered update -> R2 : "192.168.1.0/24, métrique 16"

T=0s+5ms : R2 reçoit
R2 : Métrique 16
Holddown 180s activé
Triggered update -> R3 : "métrique 16"

T=0s+10ms : R3 reçoit
R3 : Métrique 16

CONVERGENCE : ~10ms (vs 8 min) [OK]

Split Horizon : R2 n'annonce pas route obsolète à R1
Poison Reverse : R2 annonce métrique 16 explicitement
Route Poisoning : Update immédiat métrique 16
Holddown : Ignore infos obsolètes 180s
"""


# ----------------------------------------------------------------------------
# [CONFIG] PARTIE 4 : CONFIGURATION RIPv2 CISCO
# ----------------------------------------------------------------------------

"""
CONFIGURATION RIPv2


SYNTAXE BASIQUE

```
router rip
 version 2
 network <classful-network>
 no auto-summary
```


COMMANDES DÉTAILLÉES


Activer RIP
───────────

```
router rip
```

Entre en mode config RIP


Version
───────

```
version 2
```

Force RIPv2 (défaut : RIPv1)

TOUJOURS spécifier version 2 [OK]


Network
───────

```
network <classful-network>
```

Spécifie réseaux à annoncer

[ATTENTION] CLASSFUL uniquement (Class A/B/C)

Exemples :
```
network 192.168.1.0    ! Classe C -> /24
network 10.0.0.0       ! Classe A -> /8
network 172.16.0.0     ! Classe B -> /16
```

Fonction :
1. Active RIP sur interfaces matchant réseau
2. Annonce réseaux connectés interfaces


Auto-Summary
────────────

```
no auto-summary
```

Désactive résumé automatique classful

TOUJOURS désactiver (RIPv2) [OK]

Raison : VLSM, réseaux discontigus


EXEMPLE CONFIGURATION

Topologie :
```
R1 (192.168.1.0/24) ─ (10.0.0.0/30) ─ R2 ─ (10.0.0.4/30) ─ R3 (192.168.3.0/24)
     Gi0/0                Gi0/1            Gi0/0  Gi0/1
```


R1 Configuration :
──────────────────

```
! ============================================
! ROUTER R1
! ============================================

hostname R1

! Interfaces
interface GigabitEthernet0/0
 description LAN-R1
 ip address 192.168.1.1 255.255.255.0
 no shutdown

interface GigabitEthernet0/1
 description WAN-to-R2
 ip address 10.0.0.1 255.255.255.252
 no shutdown

! RIP Configuration
router rip
 version 2
 network 192.168.1.0     ! Active sur Gi0/0, annonce 192.168.1.0/24
 network 10.0.0.0        ! Active sur Gi0/1, annonce 10.0.0.0/30
 no auto-summary
```


R2 Configuration :
──────────────────

```
hostname R2

interface GigabitEthernet0/0
 description WAN-to-R1
 ip address 10.0.0.2 255.255.255.252
 no shutdown

interface GigabitEthernet0/1
 description WAN-to-R3
 ip address 10.0.0.5 255.255.255.252
 no shutdown

router rip
 version 2
 network 10.0.0.0        ! Covers both interfaces (Classe A)
 no auto-summary
```


R3 Configuration :
──────────────────

```
hostname R3

interface GigabitEthernet0/0
 description WAN-to-R2
 ip address 10.0.0.6 255.255.255.252
 no shutdown

interface GigabitEthernet0/1
 description LAN-R3
 ip address 192.168.3.1 255.255.255.0
 no shutdown

router rip
 version 2
 network 10.0.0.0
 network 192.168.3.0
 no auto-summary
```


VÉRIFICATION

R1 :
```
R1# show ip protocols

Routing Protocol is "rip"
  Outgoing update filter list for all interfaces is not set
  Incoming update filter list for all interfaces is not set
  Sending updates every 30 seconds, next due in 15 seconds
  Invalid after 180 seconds, hold down 180, flushed after 240
  Redistributing: rip
  Default version control: send version 2, receive version 2
    Interface             Send  Recv  Triggered RIP  Key-chain
    GigabitEthernet0/0    2     2
    GigabitEthernet0/1    2     2
  Automatic network summarization is not in effect
  Maximum path: 4
  Routing for Networks:
    192.168.1.0
    10.0.0.0
  Routing Information Sources:
    Gateway         Distance      Last Update
    10.0.0.2             120      00:00:15
  Distance: (default is 120)
```


R1 Table Routage :
```
R1# show ip route

Codes: C - connected, R - RIP

C    192.168.1.0/24 is directly connected, GigabitEthernet0/0
C    10.0.0.0/30 is directly connected, GigabitEthernet0/1
R    10.0.0.4/30 [120/1] via 10.0.0.2, 00:00:15, GigabitEthernet0/1
R    192.168.3.0/24 [120/2] via 10.0.0.2, 00:00:15, GigabitEthernet0/1
                           ^ AD   ^ Métrique (2 hops)
```


R1 RIP Database :
```
R1# show ip rip database

10.0.0.0/30    auto-summary
10.0.0.0/30    directly connected, GigabitEthernet0/1
10.0.0.4/30    
    [1] via 10.0.0.2, 00:00:20, GigabitEthernet0/1
192.168.1.0/24    auto-summary
192.168.1.0/24    directly connected, GigabitEthernet0/0
192.168.3.0/24    auto-summary
192.168.3.0/24    
    [2] via 10.0.0.2, 00:00:20, GigabitEthernet0/1
```


Tests :
```
R1# ping 192.168.3.1 source 192.168.1.1

Success rate is 100 percent (5/5), round-trip min/avg/max = 4/8/12 ms
```


DEBUG RIP

```
R1# debug ip rip
RIP protocol debugging is on

*Jan 15 10:30:00.123: RIP: received v2 update from 10.0.0.2 on Gi0/1
*Jan 15 10:30:00.124:      10.0.0.4/30 via 0.0.0.0 in 1 hops
*Jan 15 10:30:00.125:      192.168.3.0/24 via 0.0.0.0 in 2 hops

*Jan 15 10:30:15.456: RIP: sending v2 update to 224.0.0.9 via Gi0/0 (192.168.1.1)
*Jan 15 10:30:15.457: RIP: build update entries
*Jan 15 10:30:15.458:      10.0.0.0/30 via 0.0.0.0, metric 1, tag 0
*Jan 15 10:30:15.459:      10.0.0.4/30 via 0.0.0.0, metric 2, tag 0
*Jan 15 10:30:15.460:      192.168.3.0/24 via 0.0.0.0, metric 3, tag 0
```

Désactiver :
```
R1# undebug all
```


PASSIVE INTERFACE

Interface RIP active MAIS :
- N'envoie PAS updates
- Reçoit toujours updates

Usage : Interfaces LAN (pas besoin updates)

Configuration :
```
router rip
 passive-interface GigabitEthernet0/0
```

Ou tous par défaut :
```
router rip
 passive-interface default
 no passive-interface GigabitEthernet0/1   ! Sauf Gi0/1
```

Avantages :
[OK] Sécurité (pas d'updates LAN)
[OK] Overhead réduit
[OK] Performance


DEFAULT ROUTE PROPAGATION

Injecter route par défaut dans RIP

Configuration :
```
! Route statique défaut
ip route 0.0.0.0 0.0.0.0 <next-hop>

! Propager RIP
router rip
 default-information originate
```

Exemple R1 (edge router) :
```
interface GigabitEthernet0/2
 description WAN-Internet
 ip address dhcp

ip route 0.0.0.0 0.0.0.0 GigabitEthernet0/2

router rip
 version 2
 network 192.168.1.0
 network 10.0.0.0
 default-information originate
```

R2 et R3 reçoivent route 0.0.0.0/0 via RIP [OK]


AUTHENTIFICATION RIP

Sécurise updates RIP

Types :
- Plaintext (MD5 - obsolète)
- SHA (RIPv2)


Configuration MD5 :
───────────────────

```
! Key chain
key chain RIP-KEYS
 key 1
  key-string MySecretPassword123!
  
! Interface
interface GigabitEthernet0/1
 ip rip authentication mode md5
 ip rip authentication key-chain RIP-KEYS
```

[ATTENTION] TOUS voisins doivent avoir même key


ROUTE SUMMARIZATION

Agrégation routes (manuellement)

Configuration :
```
interface GigabitEthernet0/1
 ip summary-address rip 192.168.0.0 255.255.252.0
```

Annonce résumé au lieu routes individuelles

Exemple :
```
192.168.1.0/24
192.168.2.0/24
192.168.3.0/24
```

Résumé : 192.168.0.0/22

Avantages :
[OK] Table routage réduite
[OK] Updates plus petits
[OK] Convergence rapide


OFFSET-LIST

Ajouter métrique artificiellement

Usage : Influencer sélection chemin

Configuration :
```
router rip
 offset-list 0 in 5 GigabitEthernet0/1
 ! Ajoute +5 à toutes routes reçues Gi0/1
```


MAXIMUM PATHS

Load balancing (défaut 4)

Configuration :
```
router rip
 maximum-paths 6   ! Jusqu'à 6 chemins ECMP
```
"""


# ----------------------------------------------------------------------------
# [WEB] PARTIE 5 : RIPng (IPv6)
# ----------------------------------------------------------------------------

"""
RIPng (RIP NEXT GENERATION)


DIFFÉRENCES vs RIPv2

- IPv6 (vs IPv4)
- Multicast FF02::9 (vs 224.0.0.9)
- UDP 521 (vs 520)
- Basé sur liens (vs réseaux)
- Authentification IPsec (vs MD5)


CONFIGURATION

```
! Activer routage IPv6
ipv6 unicast-routing

! RIPng process
ipv6 router rip RIPNG-PROCESS
 ! Config globale si nécessaire

! Interface
interface GigabitEthernet0/0
 ipv6 address 2001:db8:1::1/64
 ipv6 rip RIPNG-PROCESS enable
```


EXEMPLE

Topologie :
```
R1 (2001:db8:1::/64) ─ R2 ─ R3 (2001:db8:3::/64)
```


R1 :
────

```
ipv6 unicast-routing

ipv6 router rip MYRIPNG

interface GigabitEthernet0/0
 description LAN
 ipv6 address 2001:db8:1::1/64
 ipv6 rip MYRIPNG enable

interface GigabitEthernet0/1
 description WAN
 ipv6 address 2001:db8:10::1/127
 ipv6 rip MYRIPNG enable
```


R2 :
────

```
ipv6 unicast-routing

ipv6 router rip MYRIPNG

interface GigabitEthernet0/0
 ipv6 address 2001:db8:10::2/127
 ipv6 rip MYRIPNG enable

interface GigabitEthernet0/1
 ipv6 address 2001:db8:10::10/127
 ipv6 rip MYRIPNG enable
```


VÉRIFICATION

```
R1# show ipv6 route rip

R   2001:db8:3::/64 [120/2]
     via FE80::R2, GigabitEthernet0/1

R1# show ipv6 rip

RIP process "MYRIPNG", port 521, multicast-group FF02::9, pid 123
     Administrative distance is 120. Maximum paths is 16
     Updates every 30 seconds, expire after 180
     Holddown lasts 0 seconds, garbage collect after 120
     Split horizon is on; poison reverse is off
     Default routes are not generated
     Periodic updates 1234, trigger updates 5
```


DEFAULT ROUTE RIPng

```
ipv6 route ::/0 <next-hop>

ipv6 router rip MYRIPNG
 default-information originate
```
"""


# ----------------------------------------------------------------------------
# [OUTIL] PARTIE 6 : TROUBLESHOOTING RIP
# ----------------------------------------------------------------------------

"""
TROUBLESHOOTING RIP


PROBLÈMES COURANTS


1. VOISINAGE NON-ÉTABLI
═══════════════════════

Symptômes :
- Pas de routes RIP
- show ip protocols : Pas de sources

Causes :
A. Version mismatch (v1 vs v2)
B. Network statement manquant
C. Passive interface
D. Authentification mismatch
E. ACL bloque UDP 520

Diagnostic :
```
show ip protocols
debug ip rip
```

Solution :
Vérifier version, network, passive-interface


2. ROUTES MANQUANTES
════════════════════

Symptômes :
- Quelques routes absentes

Causes :
A. Split Horizon (NBMA networks)
B. Métrique > 15
C. ACL filtrage
D. Distribute-list

Diagnostic :
```
show ip rip database
show ip route rip
```


3. CONVERGENCE LENTE
════════════════════

Symptômes :
- Minutes convergence après changement

Cause : Nature RIP (30s updates)

Solution : Pas de solution RIP
-> Migrer OSPF/EIGRP si critique


4. BOUCLES ROUTAGE
══════════════════

Symptômes :
- Paquets bouclent
- TTL expiration

Causes :
A. Split Horizon désactivé
B. Configuration asymétrique

Diagnostic :
```
traceroute <destination>
debug ip rip
```

Solution :
Activer Split Horizon


5. AUTO-SUMMARY PROBLÈME
════════════════════════

Symptômes :
- Réseaux discontigus ne communiquent pas
- Routes résumées incorrectement

Cause : Auto-summary activé (défaut RIPv1)

Solution :
```
router rip
 no auto-summary
```


6. MÉTRIQUE INCORRECT
═════════════════════

Symptômes :
- Chemin sous-optimal sélectionné

Cause : Métrique hop count (ignore BW)

Solution : Offset-list ou migrer OSPF


COMMANDES VÉRIFICATION


Show IP Protocols
─────────────────

```
show ip protocols

Routing Protocol is "rip"
  Sending updates every 30 seconds
  Invalid after 180 seconds, hold down 180, flushed after 240
  Default version control: send version 2, receive version 2
  Automatic network summarization is not in effect
  Maximum path: 4
  Routing for Networks:
    192.168.1.0
    10.0.0.0
  Routing Information Sources:
    Gateway         Distance      Last Update
    10.0.0.2             120      00:00:05
  Distance: (default is 120)
```


Show IP Route RIP
─────────────────

```
show ip route rip

R    192.168.3.0/24 [120/2] via 10.0.0.2, 00:00:15, Gi0/1
```


Show IP RIP Database
────────────────────

```
show ip rip database

192.168.3.0/24    auto-summary
192.168.3.0/24    
    [2] via 10.0.0.2, 00:00:15, GigabitEthernet0/1
```


Debug IP RIP
────────────

```
debug ip rip

RIP: received v2 update from 10.0.0.2 on Gi0/1
     192.168.3.0/24 via 0.0.0.0 in 2 hops

RIP: sending v2 update to 224.0.0.9 via Gi0/0
     192.168.3.0/24 via 0.0.0.0, metric 3
```


Show IP Interface
─────────────────

```
show ip interface GigabitEthernet0/1 | include RIP

Outgoing access list is not set
RIP is enabled
  Split horizon is enabled
  Poison reverse is off
```


MÉTHODOLOGIE DÉPANNAGE

1. Vérifier connectivité L1/L2 (ping direct)
2. Vérifier RIP activé (show ip protocols)
3. Vérifier version RIP (2 partout)
4. Vérifier network statements
5. Vérifier passive interfaces
6. Vérifier auto-summary (désactivé)
7. Vérifier authentification (si configurée)
8. Debug RIP updates
9. Vérifier ACL/firewall UDP 520
10. Vérifier timers (si customisés)


SCÉNARIOS


Scénario 1 : Pas de voisinage
──────────────────────────────

```
R1# show ip protocols
% IP routing not enabled

Solution :
R1(config)# ip routing
```


Scénario 2 : Routes manquantes
───────────────────────────────

```
R1# show ip route
! 192.168.3.0/24 absent

R1# show ip rip database
! 192.168.3.0/24 présent, métrique 16 !

Cause : Métrique > 15 (trop de hops)

Solution : Réduire hops ou changer protocole
```


Scénario 3 : Auto-summary
──────────────────────────

Topologie :
```
R1 (192.168.1.0/24) ─ R2 (10.0.0.0/8) ─ R3 (192.168.2.0/24)
```

Auto-summary ON :
R2 annonce 192.168.0.0/16 (résumé)
-> Conflit, routes perdues

Solution :
```
router rip
 no auto-summary
```
"""


# ----------------------------------------------------------------------------
# [COURS] EXERCICES ULTRA-DÉTAILLÉS
# ----------------------------------------------------------------------------

"""
[IDEE] EXERCICES PRATIQUES


═══════════════════════════════════════════════════════════
EXERCICE 1 : CONFIGURATION RIP MULTI-SITES
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Topologie entreprise 4 routeurs :

```
        R1 (HQ)
       /    \
      /      \
    R2       R3
     \      /
      \    /
        R4
```

Réseaux :
- R1 LAN : 192.168.1.0/24 (Gi0/0)
- R2 LAN : 192.168.2.0/24 (Gi0/0)
- R3 LAN : 192.168.3.0/24 (Gi0/0)
- R4 LAN : 192.168.4.0/24 (Gi0/0)

Liens :
- R1-R2 : 10.0.1.0/30 (R1 .1, R2 .2)
- R1-R3 : 10.0.2.0/30 (R1 .1, R3 .2)
- R2-R4 : 10.0.3.0/30 (R2 .1, R4 .2)
- R3-R4 : 10.0.4.0/30 (R3 .1, R4 .2)

Requis :
1. RIPv2 tous routeurs
2. Authentification MD5 tous liens WAN
3. Passive interfaces LAN
4. Route par défaut depuis R1 (Internet Gi0/2)
5. Summarization R4 (192.168.0.0/22 vers R2 et R3)
6. Load balancing R1 <-> R4


[OK] CORRECTION EXERCICE 1

ROUTER R1 (HQ)
──────────────

```
! ============================================
! ROUTER R1 - HQ
! ============================================

hostname R1-HQ

! ============================================
! KEY CHAIN (Authentication)
! ============================================

key chain RIP-AUTH
 key 1
  key-string Cisco123SecureRIP!
  
! ============================================
! INTERFACES
! ============================================

! LAN
interface GigabitEthernet0/0
 description LAN-HQ
 ip address 192.168.1.1 255.255.255.0
 no shutdown

! WAN to R2
interface GigabitEthernet0/1
 description WAN-to-R2
 ip address 10.0.1.1 255.255.255.252
 ip rip authentication mode md5
 ip rip authentication key-chain RIP-AUTH
 no shutdown

! WAN to R3
interface GigabitEthernet0/2
 description WAN-to-R3
 ip address 10.0.2.1 255.255.255.252
 ip rip authentication mode md5
 ip rip authentication key-chain RIP-AUTH
 no shutdown

! Internet
interface GigabitEthernet0/3
 description INTERNET
 ip address dhcp
 no shutdown

! ============================================
! RIP CONFIGURATION
! ============================================

router rip
 version 2
 network 192.168.1.0
 network 10.0.0.0
 no auto-summary
 passive-interface GigabitEthernet0/0
 default-information originate
 maximum-paths 4

! ============================================
! DEFAULT ROUTE
! ============================================

ip route 0.0.0.0 0.0.0.0 GigabitEthernet0/3

! ============================================
! NAT (optionnel)
! ============================================

access-list 1 permit 192.168.0.0 0.0.255.255
access-list 1 permit 10.0.0.0 0.0.255.255

ip nat inside source list 1 interface Gi0/3 overload

interface Gi0/0
 ip nat inside
interface Gi0/1
 ip nat inside
interface Gi0/2
 ip nat inside
interface Gi0/3
 ip nat outside

end
write memory
```


ROUTER R2
─────────

```
! ============================================
! ROUTER R2
! ============================================

hostname R2

! Key Chain
key chain RIP-AUTH
 key 1
  key-string Cisco123SecureRIP!

! INTERFACES
interface GigabitEthernet0/0
 description LAN-R2
 ip address 192.168.2.1 255.255.255.0
 no shutdown

interface GigabitEthernet0/1
 description WAN-to-R1
 ip address 10.0.1.2 255.255.255.252
 ip rip authentication mode md5
 ip rip authentication key-chain RIP-AUTH
 no shutdown

interface GigabitEthernet0/2
 description WAN-to-R4
 ip address 10.0.3.1 255.255.255.252
 ip rip authentication mode md5
 ip rip authentication key-chain RIP-AUTH
 no shutdown

! RIP
router rip
 version 2
 network 192.168.2.0
 network 10.0.0.0
 no auto-summary
 passive-interface GigabitEthernet0/0
 maximum-paths 4

end
write memory
```


ROUTER R3
─────────

```
! ============================================
! ROUTER R3
! ============================================

hostname R3

key chain RIP-AUTH
 key 1
  key-string Cisco123SecureRIP!

interface GigabitEthernet0/0
 description LAN-R3
 ip address 192.168.3.1 255.255.255.0
 no shutdown

interface GigabitEthernet0/1
 description WAN-to-R1
 ip address 10.0.2.2 255.255.255.252
 ip rip authentication mode md5
 ip rip authentication key-chain RIP-AUTH
 no shutdown

interface GigabitEthernet0/2
 description WAN-to-R4
 ip address 10.0.4.1 255.255.255.252
 ip rip authentication mode md5
 ip rip authentication key-chain RIP-AUTH
 no shutdown

router rip
 version 2
 network 192.168.3.0
 network 10.0.0.0
 no auto-summary
 passive-interface GigabitEthernet0/0
 maximum-paths 4

end
write memory
```


ROUTER R4
─────────

```
! ============================================
! ROUTER R4
! ============================================

hostname R4

key chain RIP-AUTH
 key 1
  key-string Cisco123SecureRIP!

interface GigabitEthernet0/0
 description LAN-R4
 ip address 192.168.4.1 255.255.255.0
 no shutdown

interface GigabitEthernet0/1
 description WAN-to-R2
 ip address 10.0.3.2 255.255.255.252
 ip rip authentication mode md5
 ip rip authentication key-chain RIP-AUTH
 ! SUMMARY towards R2
 ip summary-address rip 192.168.0.0 255.255.252.0
 no shutdown

interface GigabitEthernet0/2
 description WAN-to-R3
 ip address 10.0.4.2 255.255.255.252
 ip rip authentication mode md5
 ip rip authentication key-chain RIP-AUTH
 ! SUMMARY towards R3
 ip summary-address rip 192.168.0.0 255.255.252.0
 no shutdown

router rip
 version 2
 network 192.168.4.0
 network 10.0.0.0
 no auto-summary
 passive-interface GigabitEthernet0/0
 maximum-paths 4

end
write memory
```


VÉRIFICATION
────────────

R1 Routes :
```
R1# show ip route rip

R    192.168.2.0/24 [120/1] via 10.0.1.2, Gi0/1
R    192.168.3.0/24 [120/1] via 10.0.2.2, Gi0/2
R    192.168.4.0/24 [120/2] via 10.0.1.2, Gi0/1
                    [120/2] via 10.0.2.2, Gi0/2  <- Load Balancing [OK]
R    10.0.3.0/30 [120/1] via 10.0.1.2, Gi0/1
R    10.0.4.0/30 [120/1] via 10.0.2.2, Gi0/2
```


R2 Routes (avec summary) :
```
R2# show ip route rip

R    0.0.0.0/0 [120/1] via 10.0.1.1, Gi0/1  <- Default route [OK]
R    192.168.0.0/22 [120/1] via 10.0.3.2, Gi0/2  <- Summary [OK]
R    192.168.3.0/24 [120/2] via 10.0.1.1, Gi0/1
R    10.0.2.0/30 [120/1] via 10.0.1.1, Gi0/1
R    10.0.4.0/30 [120/1] via 10.0.3.2, Gi0/2
```


R4 Routes :
```
R4# show ip route rip

R    0.0.0.0/0 [120/2] via 10.0.3.1, Gi0/1
                [120/2] via 10.0.4.1, Gi0/2  <- Load Balancing [OK]
R    192.168.1.0/24 [120/2] via 10.0.3.1, Gi0/1
                    [120/2] via 10.0.4.1, Gi0/2
R    192.168.2.0/24 [120/1] via 10.0.3.1, Gi0/1
R    192.168.3.0/24 [120/1] via 10.0.4.1, Gi0/2
R    10.0.1.0/30 [120/1] via 10.0.3.1, Gi0/1
R    10.0.2.0/30 [120/1] via 10.0.4.1, Gi0/2
```


Vérification Authentification :
```
R1# show ip rip database

192.168.2.0/24    auto-summary
192.168.2.0/24
    [1] via 10.0.1.2, 00:00:05, GigabitEthernet0/1  <- MD5 auth OK [OK]
```


Tests Connectivité :
```
R1# ping 192.168.4.1 source 192.168.1.1
Success rate is 100 percent (5/5)

R1# traceroute 192.168.4.1 source 192.168.1.1
  1 10.0.1.2 [AS 0] 4 msec
    10.0.2.2 [AS 0] 4 msec  <- Load Balancing visible [OK]
  2 10.0.3.2 [AS 0] 8 msec
```


═══════════════════════════════════════════════════════════
FIN EXERCICE
═══════════════════════════════════════════════════════════
"""


# ============================================================================
# [DOCS] CONCLUSION CHAPITRE 18
# ============================================================================

"""
[BRAVO] FÉLICITATIONS !

Chapitre 18 : RIP terminé (ultra-détaillé)


[GUIDE] RÉCAPITULATIF COMPLET

[OK] Routage dynamique (principes, IGP/EGP, Distance Vector)
[OK] RIP fonctionnement (Bellman-Ford, hop count, timers)
[OK] RIPv1 vs RIPv2 (classful/classless, VLSM)
[OK] Boucles routage (count-to-infinity)
[OK] Solutions anti-boucles (Split Horizon, Poison Reverse, Holddown)
[OK] Configuration RIPv2 Cisco complète
[OK] Authentification MD5
[OK] Passive interfaces
[OK] Route summarization
[OK] Default route propagation
[OK] RIPng (IPv6)
[OK] Troubleshooting complet
[OK] Exercice ultra-pratique (4 routeurs, auth, summary)


[OBJECTIF] COMPÉTENCES MAÎTRISÉES

[OK] Comprendre Distance Vector complet
[OK] Configurer RIPv2 production
[OK] Implémenter authentification
[OK] Optimiser RIP (passive, summary)
[OK] Diagnostiquer problèmes RIP
[OK] Prévenir boucles routage
[OK] RIPng IPv6
[OK] Best practices RIP


[PRO] APPLICATIONS RÉELLES

[OK] Petits réseaux (<10 routeurs)
[OK] Labs / Formation
[OK] Compréhension Distance Vector
[OK] Base EIGRP
[OK] Certifications CCNA
[OK] Fondation protocoles routage


[LIEN] FONDATION PROTOCOLES AVANCÉS

RIP = École protocoles routage

Concepts maîtrisés applicables :
- EIGRP (Distance Vector avancé)
- BGP (Path Vector)
- Métrique
- Convergence
- Boucles

Prochains chapitres :
- Ch 19 : OSPF (Link State)
- Ch 20 : EIGRP (Hybrid/Advanced Distance Vector)


[IDEE] POINTS CLÉS

RIP Caractéristiques :
[OK] Simple configuration
[OK] Standard ouvert (RFC)
[OK] Peu ressources
[OK] Pédagogique

Limitations :
[X] Métrique hop count (ignore BW)
[X] Max 15 hops
[X] Convergence lente (minutes)
[X] Updates périodiques (overhead)
[X] Scalabilité limitée

Quand utiliser RIP :
[OK] Très petits réseaux (<10 routeurs)
[OK] Compatibilité legacy
[OK] Ressources limitées
[OK] Apprentissage

Quand NE PAS utiliser :
[X] Réseaux >15 hops
[X] Convergence rapide requise
[X] Sélection chemin basée BW
[X] Grandes entreprises

Migration recommandée :
- Petites entreprises : EIGRP (Cisco) ou OSPF
- Grandes entreprises : OSPF ou IS-IS
- Internet/ISP : BGP


Best Practices RIP :
[OK] TOUJOURS RIPv2 (jamais v1)
[OK] no auto-summary systématique
[OK] Passive interfaces LAN
[OK] Authentification liens WAN
[OK] Summarization manuelle
[OK] Monitoring convergence
[OK] Documentation complète


[RAPIDE] EXCELLENT TRAVAIL !

RIP = Fondation ESSENTIELLE routage dynamique.

Vous maîtrisez maintenant :
- Distance Vector complet
- Boucles et solutions
- Configuration production
- Optimisations
- Troubleshooting expert
- IPv4 et IPv6

Prêt pour OSPF (Link State) ! [WORLD_MAP]


═══════════════════════════════════════════════════════════
[GUIDE] FIN DU CHAPITRE 18 - RIP
═══════════════════════════════════════════════════════════
"""

# ============================================================================
# CHAPITRE 19 : OSPF (OPEN SHORTEST PATH FIRST)
# ============================================================================

"""
[OBJECTIF] OBJECTIFS DU CHAPITRE

[OK] Principes Link State (vs Distance Vector)
[OK] OSPF fonctionnement complet (LSA, LSDB, SPF)
[OK] Types réseaux OSPF (Broadcast, P2P, NBMA)
[OK] États voisinage (Down, Init, 2-Way, ExStart, Exchange, Loading, Full)
[OK] DR/BDR (Designated Router)
[OK] Types LSA (1-7)
[OK] Areas OSPF (Backbone, Standard, Stub)
[OK] Métrique Cost (basée bande passante)
[OK] SPF Algorithm (Dijkstra)
[OK] Configuration OSPF (single-area, multi-area)
[OK] Authentification OSPF
[OK] Route summarization
[OK] Default route propagation
[OK] OSPFv3 (IPv6)
[OK] Troubleshooting OSPF avancé
[OK] Exercices ultra-pratiques

[IDEE] POURQUOI OSPF EST CRUCIAL ?

OSPF = Standard de facto IGP entreprise

Utilisé par :
- 70%+ entreprises (Fortune 500)
- ISPs (backbone interne)
- Datacenters
- Cloud providers

Avantages sur RIP :
[OK] Convergence rapide (secondes vs minutes)
[OK] Scalabilité (milliers routeurs)
[OK] Métrique intelligente (bande passante)
[OK] Hiérarchie (areas)
[OK] VLSM natif
[OK] Updates incrémentales (pas périodiques)

OSPF = COMPÉTENCE ESSENTIELLE ingénieur réseau !
"""


# ----------------------------------------------------------------------------
# [LIEN] PARTIE 1 : LINK STATE - PRINCIPES
# ----------------------------------------------------------------------------

"""
LINK STATE ROUTING


DIFFÉRENCE vs DISTANCE VECTOR

Distance Vector (RIP) :
- Connaît direction (next-hop) et distance (métrique)
- Pas de vision topologie complète
- Routing by rumor
- Convergence lente

Link State (OSPF) :
- Connaît topologie COMPLÈTE
- Base de données liens (LSDB)
- Calcule meilleur chemin (SPF)
- Convergence rapide


PRINCIPE LINK STATE

1. DÉCOUVERTE VOISINS
═════════════════════

Hello packets -> Établir adjacences

Protocole : OSPF Hello (IP protocol 89)


2. ÉCHANGE INFORMATIONS LIENS
══════════════════════════════

LSA (Link State Advertisements)

Chaque routeur annonce :
- Ses liens (interfaces)
- État liens (up/down)
- Coût liens


3. CONSTRUCTION LSDB
════════════════════

LSDB (Link State Database)

Base de données topologie COMPLÈTE

Tous routeurs même area : LSDB identique


4. CALCUL SPF
═════════════

Algorithme Dijkstra (SPF - Shortest Path First)

Routeur = Racine arbre

Calcule chemin le plus court (coût) vers TOUTES destinations


5. INSTALLATION TABLE ROUTAGE
══════════════════════════════

Meilleurs chemins SPF -> Table routage


AVANTAGES LINK STATE

[OK] Convergence rapide
[OK] Topologie complète (pas de boucles)
[OK] Scalable (hiérarchie)
[OK] Métrique flexible
[OK] Updates incrémentales
[OK] Support VLSM natif

Inconvénients :
[X] Complexe
[X] Ressources (CPU, RAM)
[X] Configuration plus lourde


OSPF CARACTÉRISTIQUES

Standard : RFC 2328 (OSPFv2), RFC 5340 (OSPFv3)

Type : Link State IGP

Algorithme : Dijkstra (SPF)

Métrique : Cost (basé bande passante)

AD : 110

Transport : IP protocol 89

Multicast :
- AllSPFRouters : 224.0.0.5
- AllDRRouters : 224.0.0.6

Areas : Hiérarchie (Area 0 = Backbone)

Timers :
- Hello : 10s (Broadcast/P2P), 30s (NBMA)
- Dead : 40s (Broadcast/P2P), 120s (NBMA)

Authentication : Plaintext, MD5, SHA (OSPFv3)
"""


# ----------------------------------------------------------------------------
# [ACCORD] PARTIE 2 : VOISINAGE OSPF
# ----------------------------------------------------------------------------

"""
VOISINAGE OSPF (ADJACENCY)


HELLO PROTOCOL

Paquet Hello découvre voisins

Champs Hello :
- Router ID
- Area ID
- Network Mask
- Hello/Dead Intervals
- Priority
- DR/BDR
- Authentication
- Neighbors (Router IDs vus)


ROUTER ID (RID)

Identifiant unique routeur OSPF

Format : IPv4 (ex: 1.1.1.1)

Sélection automatique (ordre priorité) :
1. Configuré manuellement (router-id)
2. Loopback IP la plus haute
3. Interface physique IP la plus haute (up)

[ATTENTION] RID ne change pas dynamiquement (requis clear)

Best Practice : TOUJOURS configurer manuellement [OK]

Configuration :
```
router ospf 1
 router-id 1.1.1.1
```


ÉTATS VOISINAGE


1. DOWN
═══════

État initial

Aucun Hello reçu


2. INIT
═══════

Hello reçu de voisin

Voisin pas encore vu notre RID dans son Hello


3. 2-WAY
════════

Communication bidirectionnelle établie [OK]

Notre RID apparaît dans Hello voisin

Élection DR/BDR (si multi-access)

C'est ici que la décision est prise :
- Former adjacence complète (Full) ?
- Rester en 2-Way ?

Cas Full :
- Point-to-Point : Toujours
- Broadcast : Avec DR/BDR uniquement
- NBMA : Avec DR/BDR uniquement


4. EXSTART
══════════

Début échange LSDB

Négociation Master/Slave

Router ID le plus ÉLEVÉ = Master

Paquets DBD (Database Description) vides


5. EXCHANGE
═══════════

Échange DBD (Database Description)

DBD = Résumé LSDB (headers LSA)

Pas de détails complets, juste liste


6. LOADING
══════════

Demande LSA manquants/plus récents

LSR (Link State Request)

Réception LSU (Link State Update)

LSAck (Link State Acknowledgment)


7. FULL
═══════

Adjacence complète [OK]

LSDB synchronisée

État stable


SÉQUENCE COMPLÈTE

```
DOWN -> Hello envoyé
  v
INIT -> Hello reçu (notre RID pas dedans)
  v
2-WAY -> Notre RID dans Hello voisin
  v  (Élection DR/BDR si multi-access)
  v
EXSTART -> Négociation Master/Slave
  v
EXCHANGE -> Échange DBD
  v
LOADING -> Demande/Réception LSA
  v
FULL -> LSDB synchronisée [OK]
```


REQUIS POUR VOISINAGE

Paramètres doivent MATCHER :

[OK] Area ID
[OK] Subnet (même réseau IP)
[OK] Hello/Dead intervals
[OK] Authentication
[OK] Stub area flag
[OK] MTU (pour Full, Exchange peut bloquer)

Ne doivent PAS matcher :
- Router ID (doit être unique)
- Priority


PAQUETS OSPF


1. HELLO (Type 1)
═════════════════

Découverte, keepalive, élection DR/BDR

Multicast 224.0.0.5

Périodicité : Hello timer (10s/30s)


2. DBD (Database Description - Type 2)
═══════════════════════════════════════

Résumé LSDB (headers LSA)

États : ExStart, Exchange


3. LSR (Link State Request - Type 3)
════════════════════════════════════

Demande LSA spécifiques

État : Loading


4. LSU (Link State Update - Type 4)
═══════════════════════════════════

Contient LSA complets

Réponse LSR ou flooding nouveau LSA


5. LSAck (Link State Acknowledgment - Type 5)
══════════════════════════════════════════════

Accusé réception LSA

Fiabilité
"""


# ----------------------------------------------------------------------------
# [CROWN] PARTIE 3 : DR/BDR (DESIGNATED ROUTER)
# ----------------------------------------------------------------------------

"""
DR/BDR (DESIGNATED ROUTER / BACKUP DR)


PROBLÈME MULTI-ACCESS

Réseau multi-access (Ethernet) : N routeurs

Sans DR : N×(N-1)/2 adjacences

Exemple 5 routeurs : 5×4/2 = 10 adjacences

Problème :
[X] Overhead (LSA flooding)
[X] Complexité


SOLUTION : DR/BDR

DR (Designated Router) :
- Point central adjacences
- Collecte LSA
- Redistribue à tous

BDR (Backup DR) :
- Backup DR
- Prend relais si DR down

Autres : DROther


ADJACENCES

DROther <-> DR : Full
DROther <-> BDR : Full
DROther <-> DROther : 2-Way (pas Full)

Exemple 5 routeurs :
- 1 DR
- 1 BDR  
- 3 DROther

Adjacences : 3×2 = 6 (vs 10 sans DR)


ÉLECTION DR/BDR

Critères (ordre) :

1. Priority la plus HAUTE
   - Défaut : 1
   - Range : 0-255
   - 0 = Jamais DR/BDR

2. Router ID le plus ÉLEVÉ (si priority égale)


PROCESSUS ÉLECTION

État 2-Way :
1. Écoute Hellos (DR/BDR annoncés)
2. Si pas de DR : Élection BDR puis DR
3. Si DR existe : DROther

[ATTENTION] Élection NON-PREEMPTIVE

Si DR élu, nouveau routeur priority supérieure :
-> NE devient PAS DR
-> Attend que DR actuel down

Forcer réélection :
```
clear ip ospf process
```


CONFIGURATION PRIORITY

```
interface GigabitEthernet0/0
 ip ospf priority 100
```

Priority 0 : Jamais DR/BDR
Priority 255 : Quasi certain DR


ADRESSES MULTICAST

AllSPFRouters (224.0.0.5) :
- Tous routeurs OSPF
- Hellos, LSAck

AllDRRouters (224.0.0.6) :
- DR et BDR uniquement
- DROther envoie LSA ici


RÉSEAU POINT-TO-POINT

Pas de DR/BDR

Pourquoi : Seulement 2 routeurs

Toujours adjacence Full directe


RÉSEAU NBMA

DR/BDR nécessaires

Configuration manuelle neighbors (pas multicast)

Voir section Types Réseaux
"""


# ----------------------------------------------------------------------------
# [RESEAU] PARTIE 4 : LSA & LSDB
# ----------------------------------------------------------------------------

"""
LSA (LINK STATE ADVERTISEMENTS)


DÉFINITION

LSA = Unité information OSPF

Décrit lien, réseau, routeur

Transporté dans LSU (Link State Update)


CHAMPS LSA

Communs tous types :
- LS Age : Âge LSA (secondes)
- LS Type : Type LSA (1-7)
- Link State ID : Identifiant
- Advertising Router : RID émetteur
- LS Sequence Number : Numéro séquence
- LS Checksum : Intégrité
- Length : Taille


SEQUENCE NUMBER

Détecte LSA plus récent

Range : 0x80000001 - 0x7FFFFFFF

Plus ÉLEVÉ = Plus récent

Incrémenté chaque mise à jour


LS AGE

Âge LSA (secondes)

Max : 3600s (1 heure)

À 3600s : LSA reflooded pour rafraîchir

MaxAge : LSA obsolète -> Suppression


TYPES LSA


TYPE 1 : ROUTER LSA
═══════════════════

Généré par : Chaque routeur

Scope : Intra-area (pas propagé hors area)

Contenu :
- Tous liens routeur dans area
- États liens
- Coûts

Link State ID : Router ID émetteur

Exemple :
R1 annonce ses interfaces :
- Gi0/0 : 192.168.1.0/24, Cost 1
- Gi0/1 : 10.0.0.0/30, Cost 10


TYPE 2 : NETWORK LSA
════════════════════

Généré par : DR (seulement)

Scope : Intra-area

Contenu :
- Réseau multi-access
- Routeurs connectés

Link State ID : IP interface DR

Exemple :
DR annonce réseau Ethernet :
- 192.168.1.0/24
- Routeurs : R1, R2, R3


TYPE 3 : SUMMARY LSA
════════════════════

Généré par : ABR (Area Border Router)

Scope : Inter-area

Contenu :
- Routes entre areas
- Résumé réseaux autres areas

Link State ID : Réseau annoncé

Exemple :
ABR entre Area 0 et Area 1 :
- Annonce réseaux Area 1 dans Area 0
- Vice versa


TYPE 4 : ASBR SUMMARY LSA
═════════════════════════

Généré par : ABR

Scope : Inter-area

Contenu :
- Localisation ASBR (AS Boundary Router)
- Chemin vers ASBR

Link State ID : RID ASBR


TYPE 5 : EXTERNAL LSA
═════════════════════

Généré par : ASBR

Scope : Tout AS (sauf stub areas)

Contenu :
- Routes externes OSPF (redistribuées)
- Ex : BGP, static, RIP

Link State ID : Réseau externe

Type 5 : E1 ou E2
- E1 : Métrique cumulative (coût interne + externe)
- E2 : Métrique externe seulement (défaut)


TYPE 7 : NSSA EXTERNAL LSA
══════════════════════════

Généré par : ASBR dans NSSA (Not-So-Stubby Area)

Scope : NSSA area

Converti Type 5 par ABR

Permet routes externes dans Stub areas


LSDB (LINK STATE DATABASE)

Base de données tous LSA

Tous routeurs MÊME area : LSDB identique

Commande :
```
show ip ospf database
```

Exemple sortie :
```
Router# show ip ospf database

            OSPF Router with ID (1.1.1.1) (Process ID 1)

                Router Link States (Area 0)

Link ID         ADV Router      Age         Seq#       Checksum
1.1.1.1         1.1.1.1         120         0x80000003 0xABCD
2.2.2.2         2.2.2.2         150         0x80000002 0x1234

                Net Link States (Area 0)

Link ID         ADV Router      Age         Seq#       Checksum
192.168.1.1     1.1.1.1         200         0x80000001 0x5678
```


SPF CALCULATION (DIJKSTRA)

Algorithme :

1. Routeur = Racine arbre
2. Ajoute liens directs (cost)
3. Calcule coût cumulatif chaque destination
4. Sélectionne chemin coût minimum
5. Répète jusqu'à tous réseaux

Résultat : Arbre SPF (Shortest Path Tree)

Complexité : O(N²) ou O(N log N) optimisé

Déclenché par :
- Changement topologie
- Nouveau LSA
- LSA expiré


FLOODING LSA

Nouveau LSA :
1. Reçu sur interface
2. Vérifié (sequence, checksum)
3. Installé LSDB (si plus récent)
4. Floodé TOUTES interfaces OSPF (sauf source)
5. SPF recalculé (si nécessaire)

Fiabilité : LSAck requis
"""


# ----------------------------------------------------------------------------
# [MONDE] PARTIE 5 : AREAS OSPF
# ----------------------------------------------------------------------------

"""
AREAS OSPF


HIÉRARCHIE

OSPF scalable via areas

Area = Groupe logique routeurs

Avantages :
[OK] LSDB réduite (par area)
[OK] SPF localisé
[OK] Overhead réduit
[OK] Convergence rapide
[OK] Scalabilité


AREA 0 (BACKBONE)

Obligatoire [OK]

Toutes areas connectées Area 0

Hub central


TOPOLOGIE TYPIQUE

```
        Area 1
           │
           │
    ┌──────[BLACK_DOWN-POINTING_TRIANGLE]──────┐
    │   Area 0    │ <- Backbone
    │  (Backbone) │
    └──────┬──────┘
           │
           │
        Area 2
```


TYPES ROUTEURS


1. INTERNAL ROUTER
══════════════════

Toutes interfaces même area

LSDB : Seulement area locale


2. ABR (AREA BORDER ROUTER)
════════════════════════════

Interfaces multiples areas

Connecte areas à backbone

Fonctions :
- Génère Type 3 LSA (summary)
- Maintient LSDB par area
- Route inter-area

Requis : Au moins 1 interface Area 0


3. ASBR (AS BOUNDARY ROUTER)
═════════════════════════════

Redistribue routes externes dans OSPF

Exemples :
- BGP -> OSPF
- Static -> OSPF
- RIP -> OSPF

Génère Type 5 LSA (external)


4. BACKBONE ROUTER
══════════════════

Au moins 1 interface Area 0

Peut être Internal, ABR, ou ASBR


TYPES AREAS


1. STANDARD AREA
════════════════

Area normale

Tous types LSA


2. STUB AREA
════════════

Bloque Type 5 LSA (external)

ABR génère route par défaut (Type 3)

Usage : Réduire LSDB areas périphériques

Configuration :
```
router ospf 1
 area 1 stub
```

[ATTENTION] TOUS routeurs area doivent être configurés stub


3. TOTALLY STUBBY AREA (Cisco)
═══════════════════════════════

Bloque Type 3, 4, 5 LSA

Seulement Type 1, 2 + route défaut

ABR injecte 0.0.0.0/0

Configuration ABR :
```
router ospf 1
 area 1 stub no-summary
```

Routeurs internes :
```
router ospf 1
 area 1 stub
```


4. NSSA (NOT-SO-STUBBY AREA)
═════════════════════════════

Stub MAIS permet redistribution externe

Type 7 LSA (converti Type 5 par ABR)

Usage : Stub area avec ASBR

Configuration :
```
router ospf 1
 area 1 nssa
```


5. TOTALLY NSSA
═══════════════

Totally Stubby + NSSA

Bloque Type 3, 4, 5

Permet Type 7

Configuration ABR :
```
router ospf 1
 area 1 nssa no-summary
```


COMPARAISON AREAS

┌──────────────┬───────┬───────┬────────┬────────┐
│    Type      │ LSA 3 │ LSA 4 │ LSA 5  │ LSA 7  │
├──────────────┼───────┼───────┼────────┼────────┤
│ Standard     │  Oui  │  Oui  │  Oui   │  Non   │
│ Stub         │  Oui  │  Non  │  Non   │  Non   │
│ Totally Stub │  Non* │  Non  │  Non   │  Non   │
│ NSSA         │  Oui  │  Non  │  Non   │  Oui   │
│ Totally NSSA │  Non* │  Non  │  Non   │  Oui   │
└──────────────┴───────┴───────┴────────┴────────┘

* Sauf route défaut 0.0.0.0/0 (Type 3)


VIRTUAL LINK

Connecte area NON-directement à Area 0

Tunnel logique via area transit

Utilisation : Contournement topology contrainte

[ATTENTION] Éviter si possible (complexité)

Configuration :
```
router ospf 1
 area 1 virtual-link 2.2.2.2
```
"""


# ----------------------------------------------------------------------------
# [MESURE] PARTIE 6 : MÉTRIQUE OSPF (COST)
# ----------------------------------------------------------------------------

"""
MÉTRIQUE OSPF : COST


CALCUL COST

Formule : Cost = Reference BW / Interface BW

Reference BW défaut : 100 Mbps (100,000,000 bps)

Exemples :

Interface 10 Mbps :
Cost = 100,000,000 / 10,000,000 = 10

Interface 100 Mbps (FastEthernet) :
Cost = 100,000,000 / 100,000,000 = 1 [OK]

Interface 1 Gbps (GigabitEthernet) :
Cost = 100,000,000 / 1,000,000,000 = 0.1 -> 1 (min)

Interface 10 Gbps :
Cost = 100,000,000 / 10,000,000,000 = 0.01 -> 1 (min)


PROBLÈME RÉFÉRENCE 100 Mbps

Gigabit et 10 Gigabit : Cost = 1 (identique)

Pas de distinction [X]


SOLUTION : MODIFIER REFERENCE BW

Configuration :
```
router ospf 1
 auto-cost reference-bandwidth 10000
 ! Reference = 10,000 Mbps (10 Gbps)
```

Nouveaux coûts :

FastEthernet (100 Mbps) :
Cost = 10,000 / 100 = 100

GigabitEthernet (1 Gbps) :
Cost = 10,000 / 1,000 = 10 [OK]

10 GigabitEthernet :
Cost = 10,000 / 10,000 = 1 [OK]

[ATTENTION] TOUS routeurs OSPF domain doivent avoir MÊME reference BW


COST MANUEL

Override calcul auto

Configuration interface :
```
interface GigabitEthernet0/0
 ip ospf cost 50
```

Priorité : Manuel > Auto


COST CUMULATIF

Métrique route = Somme costs chemin

Exemple :

```
R1 ─(Cost 10)─ R2 ─(Cost 1)─ R3 ─ 192.168.3.0/24
```

R1 vers 192.168.3.0/24 :
Cost = 10 + 1 + 0 (connected R3) = 11


VÉRIFICATION COST

```
R1# show ip ospf interface GigabitEthernet0/0

GigabitEthernet0/0 is up, line protocol is up
  Internet Address 192.168.1.1/24, Area 0
  Process ID 1, Router ID 1.1.1.1, Network Type BROADCAST
  Cost: 1, Transmit Delay is 1 sec, State DR, Priority 1
```


```
R1# show ip route ospf

O    192.168.3.0/24 [110/11] via 10.0.0.2, GigabitEthernet0/1
                           ^ AD  ^ Cost
```


BEST PRACTICES

[OK] Reference BW cohérente (tous routeurs)
[OK] 10000 (10 Gbps) ou 100000 (100 Gbps) moderne
[OK] Cost manuel si nécessaire (traffic engineering)
[OK] Documenter costs manuels
"""


# ----------------------------------------------------------------------------
# [CONFIG] PARTIE 7 : CONFIGURATION OSPF
# ----------------------------------------------------------------------------

"""
CONFIGURATION OSPF CISCO


SINGLE-AREA OSPF


Syntaxe basique :
```
router ospf <process-id>
 router-id <RID>
 network <address> <wildcard> area <area-id>
```


EXEMPLE SIMPLE

Topologie :
```
R1 (192.168.1.0/24) ─ R2 ─ R3 (192.168.3.0/24)
     Gi0/0             Gi0/0   Gi0/1
              10.0.0.0/30  10.0.0.4/30
```


R1 Configuration :
──────────────────

```
! ============================================
! ROUTER R1
! ============================================

hostname R1

! Interfaces
interface GigabitEthernet0/0
 description LAN-R1
 ip address 192.168.1.1 255.255.255.0
 no shutdown

interface GigabitEthernet0/1
 description WAN-to-R2
 ip address 10.0.0.1 255.255.255.252
 no shutdown

! OSPF Configuration
router ospf 1
 router-id 1.1.1.1
 network 192.168.1.0 0.0.0.255 area 0
 network 10.0.0.0 0.0.0.3 area 0
 auto-cost reference-bandwidth 10000
```


R2 Configuration :
──────────────────

```
hostname R2

interface GigabitEthernet0/0
 description WAN-to-R1
 ip address 10.0.0.2 255.255.255.252
 no shutdown

interface GigabitEthernet0/1
 description WAN-to-R3
 ip address 10.0.0.5 255.255.255.252
 no shutdown

router ospf 1
 router-id 2.2.2.2
 network 10.0.0.0 0.0.0.7 area 0
 ! Single statement covers both /30 subnets
 auto-cost reference-bandwidth 10000
```


R3 Configuration :
──────────────────

```
hostname R3

interface GigabitEthernet0/0
 description WAN-to-R2
 ip address 10.0.0.6 255.255.255.252
 no shutdown

interface GigabitEthernet0/1
 description LAN-R3
 ip address 192.168.3.1 255.255.255.0
 no shutdown

router ospf 1
 router-id 3.3.3.3
 network 10.0.0.4 0.0.0.3 area 0
 network 192.168.3.0 0.0.0.255 area 0
 auto-cost reference-bandwidth 10000
```


PROCESS ID

Numéro local routeur (1-65535)

Pas besoin matcher voisins

Usage : Multiples instances OSPF


NETWORK STATEMENT

Format : network <address> <wildcard> area <area>

Wildcard : INVERSE masque subnet

Exemples :

/24 (255.255.255.0) -> Wildcard 0.0.0.255
/30 (255.255.255.252) -> Wildcard 0.0.0.3
/16 (255.255.0.0) -> Wildcard 0.0.255.255

Fonction :
1. Active OSPF interfaces matchant
2. Annonce réseaux connectés


ALTERNATIVE : INTERFACE MODE

Configuration directe interface :

```
interface GigabitEthernet0/0
 ip ospf 1 area 0
```

Avantages :
[OK] Plus précis
[OK] Pas de wildcard
[OK] Clair

Équivalent :
```
router ospf 1
 network 192.168.1.1 0.0.0.0 area 0
```


VÉRIFICATION

```
R1# show ip protocols

Routing Protocol is "ospf 1"
  Router ID 1.1.1.1
  Number of areas in this router is 1. 1 normal 0 stub 0 nssa
  Area BACKBONE(0)
    Number of interfaces in this area is 2
  Routing for Networks:
    192.168.1.0 0.0.0.255 area 0
    10.0.0.0 0.0.0.3 area 0
  Routing Information Sources:
    Gateway         Distance      Last Update
    2.2.2.2              110      00:01:23
    3.3.3.3              110      00:01:15
  Distance: (default is 110)
```


```
R1# show ip ospf neighbor

Neighbor ID     Pri   State           Dead Time   Address         Interface
2.2.2.2          1   FULL/  -        00:00:35    10.0.0.2        Gi0/1
```


```
R1# show ip route ospf

O    192.168.3.0/24 [110/20] via 10.0.0.2, 00:05:12, Gi0/1
O    10.0.0.4/30 [110/20] via 10.0.0.2, 00:05:12, Gi0/1
```


PASSIVE INTERFACE

Interface annoncée MAIS n'envoie pas Hellos

Configuration :
```
router ospf 1
 passive-interface GigabitEthernet0/0
```

Ou tous par défaut :
```
router ospf 1
 passive-interface default
 no passive-interface GigabitEthernet0/1
```


DEFAULT ROUTE

```
! Route statique
ip route 0.0.0.0 0.0.0.0 <next-hop>

! Propager OSPF
router ospf 1
 default-information originate
```

Type 5 LSA (external) généré


MULTI-AREA OSPF

Exemple :

```
        Area 1
        (R1)
          │
          │
        Area 0
      (R2 - ABR)
          │
          │
        Area 2
        (R3)
```


R2 (ABR) Configuration :
────────────────────────

```
interface GigabitEthernet0/0
 description Area-1
 ip address 10.0.1.1 255.255.255.252
 ip ospf 1 area 1

interface GigabitEthernet0/1
 description Area-0-Backbone
 ip address 10.0.0.1 255.255.255.252
 ip ospf 1 area 0

interface GigabitEthernet0/2
 description Area-2
 ip address 10.0.2.1 255.255.255.252
 ip ospf 1 area 2

router ospf 1
 router-id 2.2.2.2
 auto-cost reference-bandwidth 10000
```


STUB AREA

ABR :
```
router ospf 1
 area 1 stub no-summary  ! Totally Stubby
```

Routeurs Area 1 :
```
router ospf 1
 area 1 stub
```


AUTHENTIFICATION

MD5 (OSPFv2) :

Interface :
```
interface GigabitEthernet0/1
 ip ospf authentication message-digest
 ip ospf message-digest-key 1 md5 MySecretKey123!
```

Ou area-wide :
```
router ospf 1
 area 0 authentication message-digest
 
interface GigabitEthernet0/1
 ip ospf message-digest-key 1 md5 MySecretKey123!
```


SUMMARIZATION

ABR (inter-area) :
```
router ospf 1
 area 1 range 192.168.0.0 255.255.252.0
```

ASBR (external) :
```
router ospf 1
 summary-address 192.168.0.0 255.255.252.0
```
"""


# ----------------------------------------------------------------------------
# [WEB] PARTIE 8 : OSPFv3 (IPv6)
# ----------------------------------------------------------------------------

"""
OSPFv3 (IPv6)


DIFFÉRENCES vs OSPFv2

- IPv6 (vs IPv4)
- Link-local next-hops
- Multiple instances per link
- Authentification IPsec (vs MD5)
- LSA modifiés (types 8, 9)


CONFIGURATION

```
ipv6 unicast-routing

! OSPF process
ipv6 router ospf 1
 router-id 1.1.1.1
 
! Interface
interface GigabitEthernet0/0
 ipv6 address 2001:db8:1::1/64
 ipv6 ospf 1 area 0
```


EXEMPLE COMPLET

```
! R1
ipv6 unicast-routing

ipv6 router ospf 1
 router-id 1.1.1.1
 
interface GigabitEthernet0/0
 ipv6 address 2001:db8:1::1/64
 ipv6 ospf 1 area 0
 
interface GigabitEthernet0/1
 ipv6 address 2001:db8:10::1/127
 ipv6 ospf 1 area 0
```


VÉRIFICATION

```
show ipv6 ospf neighbor
show ipv6 route ospf
show ipv6 ospf database
```
"""


# ----------------------------------------------------------------------------
# [OUTIL] PARTIE 9 : TROUBLESHOOTING OSPF
# ----------------------------------------------------------------------------

"""
TROUBLESHOOTING OSPF


PROBLÈMES VOISINAGE


1. PAS DE VOISINAGE (DOWN/INIT)
════════════════════════════════

Symptômes :
- show ip ospf neighbor : Vide ou INIT

Causes :

A. Pas de connectivité L1/L2
───────────────────────────

Test : ping interface voisin

Solution : Vérifier câbles, interfaces up


B. Paramètres mismatch
──────────────────────

Area ID différent :
```
R1: network 10.0.0.0 0.0.0.3 area 0
R2: network 10.0.0.0 0.0.0.3 area 1  <- Mismatch [X]
```

Solution : Corriger area


Hello/Dead interval différent :
```
R1# show ip ospf interface Gi0/1
  Timer intervals configured, Hello 10, Dead 40

R2# show ip ospf interface Gi0/0
  Timer intervals configured, Hello 30, Dead 120  <- Mismatch [X]
```

Solution : Aligner timers


Subnet mismatch :
```
R1: 10.0.0.1/30 (10.0.0.0-10.0.0.3)
R2: 10.0.0.5/30 (10.0.0.4-10.0.0.7)  <- Différents subnets [X]
```

Solution : Corriger IPs


Authentication mismatch :
```
R1: Authentication activée
R2: Pas d'authentication  <- Mismatch [X]
```

Solution : Aligner auth


C. Passive interface
────────────────────

```
router ospf 1
 passive-interface GigabitEthernet0/1  <- Bloque Hellos [X]
```

Solution : Retirer passive-interface


D. ACL bloque protocol 89
─────────────────────────

```
access-list 100 deny 89 any any  <- Bloque OSPF [X]
```

Solution : Permit OSPF


E. MTU mismatch
───────────────

État bloqué EXSTART/EXCHANGE

```
R1: MTU 1500
R2: MTU 1400  <- Mismatch [X]
```

Solution : Aligner MTU ou :
```
interface Gi0/1
 ip ospf mtu-ignore
```


2. VOISINAGE 2-WAY (PAS FULL)
═════════════════════════════

Normal si :
- Multi-access
- Routeur = DROther
- Voisin = DROther

Adjacence DROther <-> DROther = 2-Way (pas Full) [OK]

Vérifier DR/BDR :
```
show ip ospf neighbor

Neighbor ID     Pri   State           Address
2.2.2.2          1   FULL/DR         10.0.0.2  <- DR
3.3.3.3          1   FULL/BDR        10.0.0.3  <- BDR
4.4.4.4          1   2WAY/DROTHER    10.0.0.4  <- Normal [OK]
```


3. ROUTES MANQUANTES
════════════════════

Symptômes :
- LSDB contient réseau
- Table routage ne contient pas

Causes :

A. ABR filtering
────────────────

Area range avec not-advertise

B. Distribute-list
──────────────────

Filtrage routes

C. Métrique > Max
─────────────────

Chemin coût trop élevé

D. Stub area bloque Type 5
──────────────────────────

Routes externes absentes (normal)


COMMANDES DIAGNOSTIC


Show IP OSPF Neighbor
─────────────────────

```
show ip ospf neighbor

Neighbor ID     Pri   State           Dead Time   Address         Interface
2.2.2.2          1   FULL/DR        00:00:35    10.0.0.2        Gi0/1
3.3.3.3          1   FULL/BDR       00:00:38    10.0.0.3        Gi0/1
```

États :
- FULL : Adjacence OK [OK]
- 2-WAY : Normal DROther <-> DROther
- INIT : Problème [X]
- DOWN : Pas de Hello [X]


Show IP OSPF Interface
──────────────────────

```
show ip ospf interface GigabitEthernet0/1

GigabitEthernet0/1 is up, line protocol is up
  Internet Address 10.0.0.1/30, Area 0
  Process ID 1, Router ID 1.1.1.1
  Network Type BROADCAST, Cost: 10
  Transmit Delay is 1 sec, State DR, Priority 1
  Designated Router (ID) 1.1.1.1, Interface address 10.0.0.1
  Backup Designated router (ID) 2.2.2.2, Interface address 10.0.0.2
  Timer intervals: Hello 10, Dead 40, Wait 40, Retransmit 5
  Neighbor Count is 2, Adjacent neighbor count is 2
```


Show IP OSPF Database
─────────────────────

```
show ip ospf database

            OSPF Router with ID (1.1.1.1) (Process ID 1)

                Router Link States (Area 0)

Link ID         ADV Router      Age         Seq#       Checksum
1.1.1.1         1.1.1.1         250         0x80000005 0x00ABCD
2.2.2.2         2.2.2.2         180         0x80000004 0x001234
```

Détails LSA :
```
show ip ospf database router 1.1.1.1
```


Show IP Route OSPF
──────────────────

```
show ip route ospf

O    192.168.3.0/24 [110/20] via 10.0.0.2, 00:15:30, Gi0/1
     [110/20] via 10.0.0.3, 00:15:30, Gi0/1  <- ECMP
```


Debug OSPF
──────────

```
debug ip ospf hello
debug ip ospf adj
debug ip ospf events
debug ip ospf packet
```

[ATTENTION] CPU intensif ! Production avec précaution

Désactiver :
```
undebug all
```


SCÉNARIOS


Scénario 1 : Area mismatch
───────────────────────────

```
R1# show ip ospf neighbor
% OSPF: Neighbor 2.2.2.2 ignored - different area

Solution :
router ospf 1
 network 10.0.0.0 0.0.0.3 area 0  <- Corriger area
```


Scénario 2 : MTU mismatch
──────────────────────────

```
R1# show ip ospf neighbor
Neighbor ID     Pri   State           
2.2.2.2          1   EXSTART/  -   <- Bloqué

R1# show ip ospf interface Gi0/1 | include MTU
  MTU mismatch detection: enabled

Solution :
interface Gi0/1
 ip ospf mtu-ignore
```


Scénario 3 : Stub mismatch
───────────────────────────

```
R1# debug ip ospf adj
OSPF-1 ADJ   Gi0/1: Rcv DBD from 2.2.2.2: Mismatch Stub Flags

Solution :
router ospf 1
 area 1 stub  <- Configurer stub aussi R1
```
"""


# ----------------------------------------------------------------------------
# [COURS] EXERCICES ULTRA-PRATIQUES
# ----------------------------------------------------------------------------

"""
[IDEE] EXERCICE PRATIQUE


═══════════════════════════════════════════════════════════
EXERCICE : OSPF MULTI-AREA COMPLET
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Topologie entreprise :

```
Area 1 (Branch)          Area 0 (Backbone)        Area 2 (Branch)
    R1                       R2 (ABR)                  R3
192.168.1.0/24          10.0.0.0/30              192.168.3.0/24
     │                  /          \                    │
     │                 /            \                   │
     └────10.1.0.0/30─┘              └─10.2.0.0/30─────┘
```

Réseaux :
- R1 LAN : 192.168.1.0/24 (VLAN 10 Users + VLAN 20 Servers)
- R3 LAN : 192.168.3.0/24
- R1-R2 : 10.1.0.0/30 (R1 .1, R2 .2)
- R2-R3 : 10.2.0.0/30 (R2 .1, R3 .2)
- R2 Loopback : 2.2.2.2/32 (Router ID)

Requis :
1. Area 0 : R2 backbone
2. Area 1 : R1 (Stub area)
3. Area 2 : R3 (NSSA - redistribution static)
4. Authentification MD5 tous liens
5. DR/BDR : R2 toujours DR (priority 100)
6. Passive interfaces LANs
7. Summarization Area 1 -> Area 0 (192.168.1.0/23)
8. Reference bandwidth 10000
9. Default route propagation depuis R2


[OK] CORRECTION

À cause de la limite de contexte, je vais créer la configuration complète dans les outputs...

ROUTER R1 (AREA 1 - STUB)
─────────────────────────

```
! ============================================
! ROUTER R1 - AREA 1 STUB
! ============================================

hostname R1-Area1

! Loopback Router ID
interface Loopback0
 ip address 1.1.1.1 255.255.255.255

! LAN - VLAN 10 Users
interface GigabitEthernet0/0.10
 encapsulation dot1Q 10
 ip address 192.168.1.1 255.255.255.0

! LAN - VLAN 20 Servers
interface GigabitEthernet0/0.20
 encapsulation dot1Q 20
 ip address 192.168.1.129 255.255.255.128

! WAN to R2 (Area 0 border)
interface GigabitEthernet0/1
 description To-R2-ABR
 ip address 10.1.0.1 255.255.255.252
 ip ospf authentication message-digest
 ip ospf message-digest-key 1 md5 OSPF_Secure_2024!
 ip ospf network point-to-point
 ip ospf 1 area 1

! OSPF Configuration
router ospf 1
 router-id 1.1.1.1
 area 1 stub
 passive-interface GigabitEthernet0/0.10
 passive-interface GigabitEthernet0/0.20
 network 192.168.1.0 0.0.0.255 area 1
 auto-cost reference-bandwidth 10000

end
write memory
```


ROUTER R2 (ABR - BACKBONE + AREAS)
───────────────────────────────────

```
! ============================================
! ROUTER R2 - ABR (Area Border Router)
! ============================================

hostname R2-ABR

! Loopback Router ID
interface Loopback0
 ip address 2.2.2.2 255.255.255.255

! To R1 - Area 1
interface GigabitEthernet0/0
 description To-R1-Area1
 ip address 10.1.0.2 255.255.255.252
 ip ospf authentication message-digest
 ip ospf message-digest-key 1 md5 OSPF_Secure_2024!
 ip ospf network point-to-point
 ip ospf priority 100
 ip ospf 1 area 1

! To R3 - Area 2
interface GigabitEthernet0/1
 description To-R3-Area2
 ip address 10.2.0.2 255.255.255.252
 ip ospf authentication message-digest
 ip ospf message-digest-key 1 md5 OSPF_Secure_2024!
 ip ospf network point-to-point
 ip ospf priority 100
 ip ospf 1 area 2

! Internet (for default route)
interface GigabitEthernet0/2
 description WAN-Internet
 ip address dhcp

! OSPF Configuration
router ospf 1
 router-id 2.2.2.2
 area 1 stub no-summary
 area 1 range 192.168.1.0 255.255.254.0
 area 2 nssa
 auto-cost reference-bandwidth 10000
 default-information originate

! Default route
ip route 0.0.0.0 0.0.0.0 GigabitEthernet0/2

end
write memory
```


ROUTER R3 (AREA 2 - NSSA avec redistribution)
──────────────────────────────────────────────

```
! ============================================
! ROUTER R3 - AREA 2 NSSA
! ============================================

hostname R3-Area2

! Loopback Router ID
interface Loopback0
 ip address 3.3.3.3 255.255.255.255

! LAN
interface GigabitEthernet0/0
 description LAN-Area2
 ip address 192.168.3.1 255.255.255.0

! WAN to R2
interface GigabitEthernet0/1
 description To-R2-ABR
 ip address 10.2.0.1 255.255.255.252
 ip ospf authentication message-digest
 ip ospf message-digest-key 1 md5 OSPF_Secure_2024!
 ip ospf network point-to-point
 ip ospf 1 area 2

! Static route (redistribution test)
ip route 172.16.0.0 255.255.0.0 Null0

! OSPF Configuration
router ospf 1
 router-id 3.3.3.3
 area 2 nssa
 redistribute static subnets
 passive-interface GigabitEthernet0/0
 network 192.168.3.0 0.0.0.255 area 2
 auto-cost reference-bandwidth 10000

end
write memory
```


VÉRIFICATION
────────────

R2 (ABR) - Neighbors :
```
R2# show ip ospf neighbor

Neighbor ID     Pri   State           Dead Time   Address         Interface
1.1.1.1          0   FULL/  -        00:00:35    10.1.0.1        Gi0/0
3.3.3.3          0   FULL/  -        00:00:38    10.2.0.1        Gi0/1
```

R2 - Database :
```
R2# show ip ospf database

            OSPF Router with ID (2.2.2.2) (Process ID 1)

                Router Link States (Area 1)
Link ID         ADV Router      Age         Seq#
1.1.1.1         1.1.1.1         120         0x80000003
2.2.2.2         2.2.2.2         115         0x80000004

                Summary Net Link States (Area 1)
Link ID         ADV Router      Age         Seq#
0.0.0.0         2.2.2.2         200         0x80000001  <- Default route

                Router Link States (Area 2)
Link ID         ADV Router      Age         Seq#
2.2.2.2         2.2.2.2         180         0x80000002
3.3.3.3         3.3.3.3         170         0x80000003

                Type-7 AS External Link States (Area 2)
Link ID         ADV Router      Age         Seq#
172.16.0.0      3.3.3.3         90          0x80000001  <- NSSA External
```

R1 - Routes :
```
R1# show ip route ospf

O*IA 0.0.0.0/0 [110/11] via 10.1.0.2, Gi0/1  <- Default via ABR
O    192.168.3.0/24 [110/21] via 10.1.0.2, Gi0/1
O IA 172.16.0.0/16 [110/31] via 10.1.0.2, Gi0/1  <- External devenu IA
```

R3 - Routes :
```
R3# show ip route ospf

O IA 192.168.1.0/23 [110/11] via 10.2.0.2, Gi0/1  <- Summary
O IA 0.0.0.0/0 [110/11] via 10.2.0.2, Gi0/1  <- Default
```

Tests :
```
R1# ping 192.168.3.1 source 192.168.1.1
Success rate is 100 percent (5/5)

R1# traceroute 192.168.3.1 source 192.168.1.1
  1 10.1.0.2 4 msec
  2 192.168.3.1 8 msec
```


═══════════════════════════════════════════════════════════
FIN EXERCICE
═══════════════════════════════════════════════════════════
"""


# ============================================================================
# [DOCS] CONCLUSION CHAPITRE 19
# ============================================================================

"""
[BRAVO] FÉLICITATIONS !

Chapitre 19 : OSPF terminé (ultra-détaillé)


[GUIDE] RÉCAPITULATIF COMPLET

[OK] Link State (vs Distance Vector)
[OK] OSPF fonctionnement (LSA, LSDB, SPF Dijkstra)
[OK] Voisinage (7 états Down->Full)
[OK] DR/BDR (élection, rôle)
[OK] Types LSA (1-7 détaillés)
[OK] Areas (Backbone, Stub, Totally Stub, NSSA)
[OK] Routeurs (Internal, ABR, ASBR, Backbone)
[OK] Métrique Cost (bande passante)
[OK] Configuration (single/multi-area, auth, summary)
[OK] OSPFv3 (IPv6)
[OK] Troubleshooting expert
[OK] Exercice ultra-complet (multi-area, stub, NSSA)


[OBJECTIF] COMPÉTENCES MAÎTRISÉES

[OK] Comprendre Link State complet
[OK] Configurer OSPF production (single/multi-area)
[OK] Implémenter hiérarchie areas
[OK] Optimiser avec stub areas
[OK] Authentification MD5
[OK] Summarization inter-area
[OK] DR/BDR control
[OK] Troubleshooter adjacencies
[OK] OSPFv2 et OSPFv3


[PRO] APPLICATIONS RÉELLES

[OK] Entreprises (70%+ Fortune 500)
[OK] ISPs (backbone interne)
[OK] Datacenters
[OK] Campus networks
[OK] Certifications (CCNA, CCNP Enterprise/SP)
[OK] Network Engineer senior


[LIEN] vs AUTRES PROTOCOLES

OSPF vs RIP :
[OK] Convergence rapide (secondes vs minutes)
[OK] Scalable (1000s vs 15 hops)
[OK] Métrique intelligente (BW vs hop count)
[OK] Hiérarchie (areas vs flat)
[X] Plus complexe

OSPF vs EIGRP :
[OK] Standard ouvert (vs Cisco propriétaire)
[OK] Multi-vendor
[X] Plus complexe config
[X] Convergence légèrement plus lente

OSPF vs IS-IS :
[OK] Plus répandu
[OK] Documentation abondante
[X] Overhead IPv4 (IS-IS L2)


[IDEE] POINTS CLÉS

OSPF Caractéristiques :
[OK] Standard ouvert (RFC 2328)
[OK] Link State (topologie complète)
[OK] Convergence rapide (<1s possible)
[OK] Scalable (hiérarchie areas)
[OK] Métrique Cost (bande passante)
[OK] VLSM natif
[OK] Updates incrémentales

Quand utiliser OSPF :
[OK] Entreprises moyennes/grandes
[OK] Multi-vendor
[OK] Convergence rapide requise
[OK] Scalabilité (>15 routeurs)
[OK] Hiérarchie nécessaire

Best Practices OSPF :
[OK] Router-ID manuel (loopback)
[OK] Reference BW cohérente (10000)
[OK] Point-to-point links (network type)
[OK] Authentification MD5/SHA
[OK] Passive interfaces LANs
[OK] Summarization ABR
[OK] Stub areas périphériques
[OK] Area 0 contiguë
[OK] Monitoring adjacencies
[OK] Documentation areas

Design Areas :
[OK] Area 0 backbone central
[OK] Max 50-100 routeurs/area
[OK] Stub areas branches
[OK] Summarization frontières
[OK] Pas trop areas (overhead)


[RAPIDE] EXCELLENT TRAVAIL !

OSPF = Protocole IGP MAJEUR entreprise.

Vous maîtrisez maintenant :
- Link State complet
- LSA et LSDB
- SPF Algorithm
- Multi-area design
- Configuration production
- Troubleshooting expert
- OSPFv2 et OSPFv3

Compétence ESSENTIELLE Network Engineer ! [WORLD_MAP]


═══════════════════════════════════════════════════════════
[GUIDE] FIN DU CHAPITRE 19 - OSPF
═══════════════════════════════════════════════════════════


PROCHAINS CHAPITRES :

- Chapitre 20 : EIGRP (Enhanced Interior Gateway Routing Protocol)
- Chapitre 21 : BGP (Border Gateway Protocol - Internet)
- Chapitre 22 : SDN & Automation
"""

# ============================================================================
# CHAPITRE 20 : EIGRP (ENHANCED INTERIOR GATEWAY ROUTING PROTOCOL)
# ============================================================================

"""
[OBJECTIF] OBJECTIFS DU CHAPITRE

[OK] EIGRP caractéristiques (Hybrid Advanced Distance Vector)
[OK] Fonctionnement DUAL (Diffusing Update Algorithm)
[OK] Métrique composite (BW, Delay, Load, Reliability)
[OK] Tables EIGRP (Neighbor, Topology, Routing)
[OK] Types paquets (Hello, Update, Query, Reply, Ack)
[OK] Voisinage EIGRP
[OK] Feasible Distance, Reported Distance, Successor, Feasible Successor
[OK] États routes (Passive, Active)
[OK] Configuration EIGRP (classic, named mode)
[OK] Authentification
[OK] Summarization
[OK] Stub routing
[OK] Load balancing (equal/unequal cost)
[OK] EIGRP pour IPv6
[OK] Troubleshooting EIGRP
[OK] Exercices pratiques

[IDEE] POURQUOI EIGRP EST IMPORTANT ?

EIGRP = Protocole Cisco propriétaire (jusqu'à 2013, puis ouvert)

Avantages sur OSPF/RIP :
[OK] Convergence LA PLUS RAPIDE (sub-second)
[OK] Configuration SIMPLE
[OK] Métrique FLEXIBLE (bandwidth, delay, load)
[OK] Scalable (loop-free via DUAL)
[OK] Overhead MINIMAL (updates incrémentales)
[OK] Load balancing unequal cost [OK]
[OK] Support IPv4 et IPv6

Usage :
- Réseaux 100% Cisco (90% entreprises Cisco)
- WAN (DMVPN, MPLS)
- Campus Cisco

EIGRP = "Best of Both Worlds" (Distance Vector + Link State)
"""


# ----------------------------------------------------------------------------
# [SYNC] PARTIE 1 : EIGRP CARACTÉRISTIQUES
# ----------------------------------------------------------------------------

"""
EIGRP (ENHANCED INTERIOR GATEWAY ROUTING PROTOCOL)


HISTORIQUE

1992 : IGRP (Interior Gateway Routing Protocol) - Cisco
1994 : EIGRP (Enhanced IGRP) - Cisco propriétaire
2013 : EIGRP ouvert (RFC draft, pas full RFC)
2016 : Support multi-vendor (limité)


TYPE PROTOCOLE

Classification : Hybrid / Advanced Distance Vector

Hybrid :
- Distance Vector (métrique, next-hop)
- Link State (topology table, fast convergence)

Advanced :
- DUAL algorithm (loop-free)
- Partial updates (vs periodic)
- Multiple network layer protocols


CARACTÉRISTIQUES

Protocol Number : 88 (IP)

Multicast : 224.0.0.10

AD (Administrative Distance) :
- Internal : 90
- External : 170
- Summary : 5

Timers :
- Hello : 5s (LAN), 60s (WAN)
- Hold : 15s (LAN), 180s (WAN)

Métrique : Composite (BW + Delay default)

K-values : K1=1, K2=0, K3=1, K4=0, K5=0 (défaut)

Authentication : MD5, SHA (named mode)

Maximum Hops : 100 (défaut), 255 (max)


AVANTAGES EIGRP

[OK] Convergence rapide (sub-second possible)
[OK] Loop-free (DUAL)
[OK] Updates incrémentales (bounded)
[OK] Multiple path support (ECMP + unequal)
[OK] Métrique flexible
[OK] Bandwidth efficient
[OK] Simple configuration
[OK] Scalable (grandes topologies)

Inconvénients :
[X] Cisco propriétaire (historiquement)
[X] Multi-vendor limité
[X] Moins répandu qu'OSPF (standard)


EIGRP vs OSPF vs RIP

┌───────────────┬─────────┬─────────┬─────────┐
│   Critère     │ EIGRP   │  OSPF   │   RIP   │
├───────────────┼─────────┼─────────┼─────────┤
│ Convergence   │ Très    │ Rapide  │  Lent   │
│               │ rapide  │         │         │
├───────────────┼─────────┼─────────┼─────────┤
│ Scalabilité   │ Élevée  │ Élevée  │ Faible  │
├───────────────┼─────────┼─────────┼─────────┤
│ Métrique      │ BW+Delay│  Cost   │ Hop     │
├───────────────┼─────────┼─────────┼─────────┤
│ Standard      │ Non*    │  Oui    │  Oui    │
├───────────────┼─────────┼─────────┼─────────┤
│ Config        │ Simple  │ Moyenne │ Simple  │
├───────────────┼─────────┼─────────┼─────────┤
│ CPU/RAM       │ Moyen   │ Élevé   │ Faible  │
├───────────────┼─────────┼─────────┼─────────┤
│ Unequal LB    │  Oui [OK] │  Non    │  Non    │
└───────────────┴─────────┴─────────┴─────────┘

* Ouvert 2013 mais peu adopté hors Cisco
"""


# ----------------------------------------------------------------------------
# [CALCUL] PARTIE 2 : MÉTRIQUE EIGRP
# ----------------------------------------------------------------------------

"""
MÉTRIQUE EIGRP COMPOSITE


FORMULE COMPLÈTE

Métrique = 256 × [(K1 × BW) + (K2 × BW)/(256 - Load) + (K3 × Delay)] × [K5/(Reliability + K4)]

K-values (défaut) :
K1 = 1 (Bandwidth)
K2 = 0 (Load - désactivé)
K3 = 1 (Delay)
K4 = 0 (Reliability - désactivé)
K5 = 0 (MTU - désactivé)


FORMULE SIMPLIFIÉE (Défaut)

Métrique = 256 × (BW + Delay)

Où :
BW = 10^7 / Bandwidth_Kbps (bandwidth le plus lent chemin)
Delay = Cumul delays / 10


BANDWIDTH (BW)

Référence : 10,000,000 Kbps (10 Gbps)

Calcul : 10^7 / Interface_BW_Kbps

Exemples :

Ethernet (10 Mbps = 10,000 Kbps) :
BW = 10,000,000 / 10,000 = 1,000

FastEthernet (100 Mbps = 100,000 Kbps) :
BW = 10,000,000 / 100,000 = 100

GigabitEthernet (1 Gbps = 1,000,000 Kbps) :
BW = 10,000,000 / 1,000,000 = 10

10 GigabitEthernet (10 Gbps = 10,000,000 Kbps) :
BW = 10,000,000 / 10,000,000 = 1 [OK]

[ATTENTION] Chemin : BW = Bandwidth le plus LENT (goulot)


DELAY

Cumul delays interfaces

Unité : microseconds (µs)

Valeurs typiques :

Interface          Delay (µs)
──────────────────────────
Ethernet 10M       1000
FastEthernet 100M  100
GigabitEthernet    10
Serial 1.544M      20000
Serial 56K         20000

Chemin : Delay = SOMME delays


EXEMPLE CALCUL COMPLET

Topologie :
```
R1 ─(FastEthernet)─ R2 ─(Serial T1)─ R3 ─ Réseau 192.168.3.0/24
     100 Mbps            1.544 Mbps
```

Chemin R1 -> 192.168.3.0/24 :

Étape 1 : Identifier goulot BW
─────────────────────────────

FastEthernet : 100,000 Kbps
Serial T1 : 1,544 Kbps <- Le plus LENT

BW = 10,000,000 / 1,544 = 6,476


Étape 2 : Cumuler Delays
─────────────────────────

FastEthernet : 100 µs
Serial T1 : 20,000 µs
GigabitEthernet (R3) : 10 µs

Total Delay = 100 + 20,000 + 10 = 20,110 µs

Delay = 20,110 / 10 = 2,011


Étape 3 : Calculer Métrique
────────────────────────────

Métrique = 256 × (BW + Delay)
         = 256 × (6,476 + 2,011)
         = 256 × 8,487
         = 2,172,672


MODIFIER BW/DELAY

[ATTENTION] NE PAS modifier bandwidth physique (QoS utilise)

Utiliser : delay

```
interface Serial0/0
 delay 100    ! 10 µs × valeur = 1000 µs
```


K-VALUES

Doivent MATCHER tous voisins EIGRP

Vérifier :
```
show ip protocols

EIGRP-IPv4 Protocol for AS(100)
  Metric weight K1=1, K2=0, K3=1, K4=0, K5=0
```

Modifier (déconseillé sauf expertise) :
```
router eigrp 100
 metric weights 0 1 0 1 0 0
                 ^ TOS (toujours 0)
```


VARIANCE (UNEQUAL COST LOAD BALANCING)

EIGRP unique : Load balancing chemins coûts différents [OK]

Variance = Multiplicateur métrique

Exemple :

Chemin 1 : Métrique 1000 (Successor)
Chemin 2 : Métrique 1500 (Feasible Successor)

Variance 2 :
- 1500 < (1000 × 2) -> Utilisé [OK]

Variance 1 (défaut) :
- Seulement equal cost

Configuration :
```
router eigrp 100
 variance 2
```

[ATTENTION] Chemin doit être Feasible Successor (voir DUAL)
"""


# ----------------------------------------------------------------------------
# [GRAPHIQUE] PARTIE 3 : TABLES EIGRP
# ----------------------------------------------------------------------------

"""
TABLES EIGRP


EIGRP utilise 3 tables :


1. NEIGHBOR TABLE
═════════════════

Liste voisins EIGRP adjacents

Informations :
- Neighbor Address
- Interface
- Hold Time (countdown)
- Uptime
- Sequence Number
- RTO (Retransmission Timeout)
- Queue Count

Commande :
```
show ip eigrp neighbors

H   Address         Interface       Hold  Uptime    SRTT  RTO   Q  Seq
                                    (sec)           (ms)       Cnt Num
0   10.0.0.2        Gi0/1           12    01:30:45  10    200   0  25
1   10.0.1.2        Gi0/2           13    02:15:30  15    300   0  18
```

Champs :
- H : Handle (ordre découverte)
- Hold : Temps avant déclaré down
- SRTT : Smooth Round Trip Time
- RTO : Retransmission Timeout
- Q Cnt : Paquets en attente transmission


2. TOPOLOGY TABLE
═════════════════

Tous chemins vers destinations (pas seulement meilleur)

Informations par route :
- Destination
- Successors (meilleurs chemins)
- Feasible Successors (backups)
- Feasible Distance (FD)
- Reported Distance (RD)
- État (Passive/Active)

Commande :
```
show ip eigrp topology

P 192.168.3.0/24, 1 successors, FD is 2172672
        via 10.0.0.2 (2172672/2169856), GigabitEthernet0/1
        via 10.0.1.2 (3145728/3143168), GigabitEthernet0/2
         ^               ^         ^
      Next-hop          FD        RD
```

États :
- P (Passive) : Route stable [OK]
- A (Active) : Recherche nouveau chemin (Query)


3. ROUTING TABLE
════════════════

Meilleurs chemins uniquement (Successors)

Installés depuis Topology Table

Commande :
```
show ip route eigrp

D    192.168.3.0/24 [90/2172672] via 10.0.0.2, 00:15:30, Gi0/1
     ^ EIGRP         ^AD  ^Métrique
```

Codes :
- D : EIGRP (internal)
- D EX : EIGRP (external)
"""


# ----------------------------------------------------------------------------
# [SYNC] PARTIE 4 : DUAL ALGORITHM
# ----------------------------------------------------------------------------

"""
DUAL (DIFFUSING UPDATE ALGORITHM)


OBJECTIF

Garantir routes loop-free

Calcul backup route instantané (si existe)


TERMINOLOGIE


FEASIBLE DISTANCE (FD)
══════════════════════

Meilleure métrique connue vers destination

Distance totale depuis routeur local

Exemple :
R1 vers 192.168.3.0/24 via R2
Métrique totale = 2,172,672
-> FD = 2,172,672


REPORTED DISTANCE (RD) / ADVERTISED DISTANCE (AD)
═══════════════════════════════════════════════════

Métrique annoncée par voisin (depuis voisin vers destination)

Exemple :
R2 annonce : "192.168.3.0/24, métrique 2,169,856"
-> RD (depuis R1) = 2,169,856


SUCCESSOR
═════════

Meilleur next-hop vers destination

Route installée table routage

Critère : FD la plus faible

Peut avoir multiples Successors (ECMP) si FD identique


FEASIBLE SUCCESSOR (FS)
═══════════════════════

Backup route garantie loop-free

Critère : RD < FD (Feasibility Condition)

Si Successor down -> FS devient Successor instantanément [OK]

Pas de Query/Reply -> Convergence ultra-rapide


FEASIBILITY CONDITION

Condition : RD_voisin < FD_local

Si vrai -> Voisin = Feasible Successor (loop-free garanti)


EXEMPLE DÉTAILLÉ

Topologie :
```
       R1
      /  \
     /    \
   R2      R3
     \    /
      \  /
       R4 ─ 192.168.4.0/24
```

R1 vers 192.168.4.0/24 :

Via R2 :
- Métrique R2 -> R4 : 1,000 (RD)
- Métrique R1 -> R2 : 100
- Total R1 -> R4 via R2 : 1,100 (FD)

Via R3 :
- Métrique R3 -> R4 : 800 (RD)
- Métrique R1 -> R3 : 500
- Total R1 -> R4 via R3 : 1,300

Analyse R1 :

Meilleur chemin : Via R2 (FD = 1,100)
-> R2 = Successor [OK]

R3 Feasible Successor ?
RD_R3 (800) < FD (1,100) -> OUI [OK]
-> R3 = Feasible Successor

Si R2 down :
-> R3 devient Successor IMMÉDIATEMENT (pas de Query)


ÉTATS ROUTE


PASSIVE
═══════

État stable [OK]

Route connue, Successor actif

Normal operation


ACTIVE
══════

Recherche nouveau Successor

Déclenché si :
- Successor down
- Pas de Feasible Successor

Process :
1. Route -> Active
2. Query envoyés voisins
3. Attente Replies
4. Nouveau Successor sélectionné
5. Route -> Passive

Durée : Généralement <1s

[ATTENTION] Si Active trop long (3 min) : SIA (Stuck-In-Active)


SIA (STUCK-IN-ACTIVE)

Problème : Route bloquée Active (pas de Reply)

Causes :
- Lien lent (satellite)
- Congestion
- Boucles Query
- Voisin non-répondant

Timeout : 3 minutes

Conséquence : Voisin déclaré down (reset adjacence)

Solution : Stub routing, summarization


QUERY SCOPE LIMITATION

Techniques réduire propagation Queries :


1. Summarization
────────────────

Réseau résumé = Query boundary

ABR ne propage pas Query réseaux résumés


2. Stub Routing
───────────────

Stub site : N'envoie pas Queries upstream

Configuration :
```
router eigrp 100
 eigrp stub connected summary
```

Options stub :
- connected : Annonce réseaux connectés
- summary : Annonce summaries
- static : Annonce statiques
- redistributed : Annonce redistribuées
- receive-only : Reçoit uniquement (n'annonce rien)


3. EIGRP Stub Site WAN
──────────────────────

Usage typique : Sites branch WAN

Branch = Stub -> HQ pas de Queries -> Convergence rapide
"""


# ----------------------------------------------------------------------------
# [RESEAU] PARTIE 5 : PAQUETS EIGRP
# ----------------------------------------------------------------------------

"""
PAQUETS EIGRP


5 TYPES PAQUETS


1. HELLO (Type 5)
═════════════════

Découverte et keepalive voisins

Multicast : 224.0.0.10

Périodicité :
- 5s (LAN, high-speed WAN)
- 60s (Low-speed WAN <1.544 Mbps)

Pas d'acknowledgment requis

Champs :
- AS Number
- K-values
- Hold Time


2. UPDATE (Type 1)
══════════════════

Échange informations routage

Unicast ou Multicast (224.0.0.10)

Contenu :
- Routes (destinations + métriques)
- Topology changes

Acknowledgment requis (reliable)


3. QUERY (Type 3)
═════════════════

Demande information route (état Active)

Multicast : 224.0.0.10

Envoyé quand :
- Successor down
- Pas de Feasible Successor

Acknowledgment requis


4. REPLY (Type 4)
═════════════════

Réponse Query

Unicast

Acknowledgment requis


5. ACK (Type 5)
═══════════════

Acknowledgment paquets fiables

Hello sans data

Unicast

Numéro séquence référence paquet acquitté


FIABILITÉ

Paquets fiables (RTP - Reliable Transport Protocol) :
- Update
- Query
- Reply

Paquets non-fiables :
- Hello
- Ack

Mécanisme :
1. Paquet fiable envoyé (numéro séquence)
2. Attente Ack
3. Si timeout (RTO) : Retransmission
4. Max 16 retransmissions -> Voisin déclaré down


VOISINAGE EIGRP

Établissement :

1. Hello envoyé (multicast)
2. Hello reçu voisin
3. Vérifications :
   - AS Number identique [OK]
   - K-values identiques [OK]
   - Subnet matching [OK]
   - Authentication (si configurée) [OK]
4. Voisin ajouté Neighbor Table
5. Échange complet Topology (Update)
6. Adjacence établie [OK]

Maintien :
- Hello périodiques
- Hold timer réinitialisé chaque Hello
- Si Hold expire -> Voisin down


TIMERS

Hello Timer :
- 5s (défaut LAN/high-speed)
- 60s (low-speed serial)

Hold Timer :
- 15s (3 × Hello sur LAN)
- 180s (3 × Hello sur WAN)

Modifier :
```
interface GigabitEthernet0/0
 ip hello-interval eigrp 100 10
 ip hold-time eigrp 100 30
```

[ATTENTION] Pas besoin matcher (contrairement OSPF)
Mais recommandé cohérence
"""


# ----------------------------------------------------------------------------
# [CONFIG] PARTIE 6 : CONFIGURATION EIGRP
# ----------------------------------------------------------------------------

"""
CONFIGURATION EIGRP


CLASSIC MODE (Ancien)

Syntaxe :
```
router eigrp <AS-number>
 network <network> [wildcard-mask]
 no auto-summary
```


NAMED MODE (Moderne - IOS 15.0+)

Syntaxe :
```
router eigrp <name>
 address-family ipv4 autonomous-system <AS>
  network <network>
  af-interface <interface>
   ...
```

Avantages Named Mode :
[OK] IPv4 et IPv6 unifié
[OK] Configuration hiérarchique
[OK] Interface-specific config
[OK] Plus de flexibilité


CONFIGURATION BASIQUE


Topologie :
```
R1 (192.168.1.0/24) ─ R2 ─ R3 (192.168.3.0/24)
     Gi0/0          10.0.0.0/30  10.0.0.4/30
```


R1 Configuration (Classic) :
────────────────────────────

```
! ============================================
! ROUTER R1 - EIGRP CLASSIC
! ============================================

hostname R1

! Interfaces
interface GigabitEthernet0/0
 description LAN-R1
 ip address 192.168.1.1 255.255.255.0
 no shutdown

interface GigabitEthernet0/1
 description WAN-to-R2
 ip address 10.0.0.1 255.255.255.252
 no shutdown

! EIGRP Configuration
router eigrp 100
 network 192.168.1.0 0.0.0.255
 network 10.0.0.0 0.0.0.3
 no auto-summary
 eigrp router-id 1.1.1.1
```


R1 Configuration (Named Mode) :
────────────────────────────────

```
! ============================================
! ROUTER R1 - EIGRP NAMED MODE
! ============================================

hostname R1

interface GigabitEthernet0/0
 ip address 192.168.1.1 255.255.255.0

interface GigabitEthernet0/1
 ip address 10.0.0.1 255.255.255.252

! EIGRP Named Mode
router eigrp MY-EIGRP
 !
 address-family ipv4 unicast autonomous-system 100
  !
  network 192.168.1.0 0.0.0.255
  network 10.0.0.0 0.0.0.3
  !
  eigrp router-id 1.1.1.1
  !
  af-interface GigabitEthernet0/0
   passive-interface
  exit-af-interface
  !
  topology base
  exit-af-topology
 exit-address-family
```


AS NUMBER

Numéro Autonomous System (1-65535)

Doit MATCHER tous routeurs EIGRP domain

Similaire Process ID OSPF mais DOIT matcher [OK]


ROUTER-ID

Identifiant unique (format IPv4)

Sélection (ordre priorité) :
1. Configuré manuellement
2. Loopback IP la plus haute
3. Interface physique IP la plus haute

Best practice : TOUJOURS manuel [OK]


NETWORK STATEMENT

Format : network <address> [wildcard]

Si wildcard omis : Classful assumed

Exemples :
```
network 192.168.1.0         ! Assume /24 (Class C)
network 192.168.1.0 0.0.0.255  ! Explicite /24
network 10.0.0.0 0.0.0.3    ! /30
network 0.0.0.0             ! Toutes interfaces (déconseillé)
```

Fonction :
1. Active EIGRP interfaces matchant
2. Annonce réseaux connectés


NO AUTO-SUMMARY

Désactive résumé automatique classful

TOUJOURS configurer [OK]

```
router eigrp 100
 no auto-summary
```

Raison : VLSM, réseaux discontigus


PASSIVE INTERFACE

Interface annoncée MAIS n'envoie pas Hellos

```
router eigrp 100
 passive-interface GigabitEthernet0/0
```

Ou défaut :
```
router eigrp 100
 passive-interface default
 no passive-interface GigabitEthernet0/1
```


AUTHENTICATION

MD5 (Classic) :

```
! Key chain
key chain EIGRP-KEYS
 key 1
  key-string MySecretKey123!

! Interface
interface GigabitEthernet0/1
 ip authentication mode eigrp 100 md5
 ip authentication key-chain eigrp 100 EIGRP-KEYS
```


SHA (Named Mode - recommandé) :

```
router eigrp MY-EIGRP
 address-family ipv4 unicast autonomous-system 100
  af-interface GigabitEthernet0/1
   authentication mode hmac-sha-256 MySecretPassword
  exit-af-interface
```


SUMMARIZATION

Manuel (contrairement auto-summary)

Interface ABR :
```
interface GigabitEthernet0/1
 ip summary-address eigrp 100 192.168.0.0 255.255.252.0
```

Avantages :
[OK] Table topologie réduite
[OK] Query boundary
[OK] Convergence rapide

Null route automatique créée (AD 5)


LOAD BALANCING

Equal Cost (défaut) :

Maximum 4 paths (défaut), configurable :
```
router eigrp 100
 maximum-paths 6
```


Unequal Cost (Variance) :

```
router eigrp 100
 variance 2
```

Exemple :
- Chemin 1 : Métrique 1000
- Chemin 2 : Métrique 1500
- Chemin 3 : Métrique 2500

Variance 1 : Seulement Chemin 1
Variance 2 : Chemin 1 + 2 (1500 < 1000×2)
Variance 3 : Chemin 1 + 2 + 3


STUB ROUTING

Branch site configuration :
```
router eigrp 100
 eigrp stub connected summary
```

Options :
- connected : Routes connectées
- summary : Routes résumées
- static : Routes statiques
- redistributed : Routes redistribuées
- receive-only : Reçoit uniquement


VÉRIFICATION

```
! Neighbors
show ip eigrp neighbors

! Topology
show ip eigrp topology
show ip eigrp topology all-links  ! Tous chemins

! Routes
show ip route eigrp

! Interfaces
show ip eigrp interfaces

! Traffic
show ip eigrp traffic
```


Exemples sortie :

```
R1# show ip eigrp neighbors

H   Address         Interface       Hold  Uptime   SRTT   RTO  Q  Seq
                                    (sec)          (ms)       Cnt Num
0   10.0.0.2        Gi0/1           12   00:15:30   10   200  0  25
```


```
R1# show ip eigrp topology

P 192.168.3.0/24, 1 successors, FD is 2816
        via 10.0.0.2 (2816/2560), GigabitEthernet0/1
        via 10.0.1.2 (3072/2816), GigabitEthernet0/2
         ^ FS (RD < FD)
```


```
R1# show ip route eigrp

D    192.168.3.0/24 [90/2816] via 10.0.0.2, 00:15:30, Gi0/1
                    [90/3072] via 10.0.1.2, 00:15:30, Gi0/2
```
"""


# ----------------------------------------------------------------------------
# [WEB] PARTIE 7 : EIGRP IPv6
# ----------------------------------------------------------------------------

"""
EIGRP POUR IPv6


DIFFÉRENCES vs IPv4

- Lien-local neighbors
- Activation par interface (pas network)
- Multicast FF02::A
- Router-ID requis (IPv4 format)


CONFIGURATION

```
! IPv6 routing
ipv6 unicast-routing

! EIGRP IPv6
ipv6 router eigrp 100
 eigrp router-id 1.1.1.1
 no shutdown   ! Important IPv6

! Interface
interface GigabitEthernet0/0
 ipv6 address 2001:db8:1::1/64
 ipv6 eigrp 100
```


EXEMPLE COMPLET

```
! R1
ipv6 unicast-routing

ipv6 router eigrp 100
 eigrp router-id 1.1.1.1
 no shutdown

interface GigabitEthernet0/0
 ipv6 address 2001:db8:1::1/64
 ipv6 eigrp 100
 
interface GigabitEthernet0/1
 ipv6 address 2001:db8:10::1/127
 ipv6 eigrp 100
```


VÉRIFICATION

```
show ipv6 eigrp neighbors
show ipv6 eigrp topology
show ipv6 route eigrp
```
"""


# ----------------------------------------------------------------------------
# [OUTIL] PARTIE 8 : TROUBLESHOOTING EIGRP
# ----------------------------------------------------------------------------

"""
TROUBLESHOOTING EIGRP


PROBLÈMES VOISINAGE


1. PAS DE VOISINAGE
═══════════════════

Causes :

A. AS Number mismatch
─────────────────────

```
R1: router eigrp 100
R2: router eigrp 200  <- Mismatch [X]
```

Solution : Aligner AS


B. K-values mismatch
────────────────────

```
R1# show ip protocols
  Metric weight K1=1, K2=0, K3=1, K4=0, K5=0

R2# show ip protocols
  Metric weight K1=1, K2=0, K3=0, K4=0, K5=0  <- K3 différent [X]
```

Solution : Aligner K-values


C. Authentication mismatch
──────────────────────────

Key-string différente

Solution : Vérifier key chains


D. Subnet mismatch
──────────────────

Différents subnets (comme OSPF)


E. Passive interface
────────────────────

```
router eigrp 100
 passive-interface GigabitEthernet0/1  <- Bloque Hellos
```


F. ACL bloque protocol 88
─────────────────────────


2. SIA (STUCK-IN-ACTIVE)
════════════════════════

Symptômes :
```
%DUAL-5-NBRCHANGE: IP-EIGRP(0) 100: Neighbor 10.0.0.2 (Gi0/1) is down: stuck in active
```

Causes :
- Liens lents
- Boucles Query
- Voisin non-répondant
- Congestion

Solutions :
[OK] Stub routing
[OK] Summarization
[OK] Augmenter timers (active-time)
```
router eigrp 100
 timers active-time 5   ! 5 min (défaut 3 min)
```


3. ROUTES FLAPPING
══════════════════

Routes installées/supprimées continuellement

Causes :
- Interface instable
- Métrique oscillante

Diagnostic :
```
debug eigrp packets
debug ip eigrp
```


4. MÉTRIQUE INCOHÉRENTE
═══════════════════════

Métrique ne correspond pas

Vérifier :
```
show interfaces | include BW
show ip eigrp topology
```

Bandwidth incorrect interface :
```
interface Serial0/0
 bandwidth 1544  ! Ajuster
```


COMMANDES DEBUG

```
debug eigrp packets
debug eigrp fsm
debug ip eigrp
debug ip eigrp notifications
```

[ATTENTION] CPU intensif


VÉRIFICATION DÉTAILLÉE

```
! Métrique détaillée
show ip eigrp topology 192.168.3.0 255.255.255.0

IP-EIGRP (AS 100): Topology entry for 192.168.3.0/24
  State is Passive, Query origin flag is 1, 1 Successor(s), FD is 2816
  Routing Descriptor Blocks:
  10.0.0.2 (GigabitEthernet0/1), from 10.0.0.2, Send flag is 0x0
      Composite metric is (2816/2560), Route is Internal
      Vector metric:
        Minimum bandwidth is 1000000 Kbit
        Total delay is 110 microseconds
        Reliability is 255/255
        Load is 1/255
        Minimum MTU is 1500
        Hop count is 1
```


SCÉNARIOS


Scénario 1 : K-values mismatch
───────────────────────────────

```
R1# debug eigrp packets

EIGRP: Received HELLO on Gi0/1 nbr 10.0.0.2
  AS 100, K-values mismatch

Solution :
router eigrp 100
 metric weights 0 1 0 1 0 0  <- Aligner
```


Scénario 2 : Feasible Successor absent
───────────────────────────────────────

```
R1# show ip eigrp topology

P 192.168.3.0/24, 1 successors, FD is 2816
        via 10.0.0.2 (2816/2560), Gi0/1
                                 ^ Pas de FS

Cause : RD autres chemins > FD
-> Si 10.0.0.2 down : Active state (Query)

Solution : Ajuster métriques ou topologie
```
"""


# ----------------------------------------------------------------------------
# [COURS] EXERCICE PRATIQUE
# ----------------------------------------------------------------------------

"""
[IDEE] EXERCICE PRATIQUE


═══════════════════════════════════════════════════════════
EXERCICE : EIGRP AVANCÉ MULTI-SITES
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Topologie :

```
        R1 (HQ)
       /    \
      /      \
    R2       R3
    │         │
  Branch1   Branch2
```

Réseaux :
- R1 : 192.168.1.0/24, 192.168.1.128/25 (2 LANs)
- R2 : 192.168.2.0/24
- R3 : 192.168.3.0/24
- R1-R2 : 10.1.0.0/30
- R1-R3 : 10.2.0.0/30

Requis :
1. EIGRP AS 100
2. Authentication MD5 tous liens
3. R2 et R3 : Stub sites
4. Summarization R1 (192.168.1.0/23 vers branches)
5. Load balancing R1 (variance 2)
6. Passive interfaces LANs


[OK] CORRECTION

```
! ============================================
! ROUTER R1 - HQ
! ============================================

hostname R1-HQ

! Loopback
interface Loopback0
 ip address 1.1.1.1 255.255.255.255

! LANs
interface GigabitEthernet0/0
 ip address 192.168.1.1 255.255.255.0

interface GigabitEthernet0/1
 ip address 192.168.1.129 255.255.255.128

! WAN to R2
interface GigabitEthernet0/2
 ip address 10.1.0.1 255.255.255.252
 ip authentication mode eigrp 100 md5
 ip authentication key-chain eigrp 100 EIGRP-AUTH
 ip summary-address eigrp 100 192.168.1.0 255.255.254.0

! WAN to R3
interface GigabitEthernet0/3
 ip address 10.2.0.1 255.255.255.252
 ip authentication mode eigrp 100 md5
 ip authentication key-chain eigrp 100 EIGRP-AUTH
 ip summary-address eigrp 100 192.168.1.0 255.255.254.0

! Key chain
key chain EIGRP-AUTH
 key 1
  key-string Cisco_EIGRP_2024_Secure!

! EIGRP
router eigrp 100
 eigrp router-id 1.1.1.1
 network 192.168.1.0 0.0.0.255
 network 192.168.1.128 0.0.0.127
 network 10.1.0.0 0.0.0.3
 network 10.2.0.0 0.0.0.3
 no auto-summary
 passive-interface GigabitEthernet0/0
 passive-interface GigabitEthernet0/1
 variance 2
 maximum-paths 4

end
write memory


! ============================================
! ROUTER R2 - BRANCH 1 STUB
! ============================================

hostname R2-Branch1

interface Loopback0
 ip address 2.2.2.2 255.255.255.255

interface GigabitEthernet0/0
 ip address 192.168.2.1 255.255.255.0

interface GigabitEthernet0/1
 ip address 10.1.0.2 255.255.255.252
 ip authentication mode eigrp 100 md5
 ip authentication key-chain eigrp 100 EIGRP-AUTH

key chain EIGRP-AUTH
 key 1
  key-string Cisco_EIGRP_2024_Secure!

router eigrp 100
 eigrp router-id 2.2.2.2
 eigrp stub connected summary
 network 192.168.2.0
 network 10.1.0.0 0.0.0.3
 no auto-summary
 passive-interface GigabitEthernet0/0

end
write memory


! ============================================
! ROUTER R3 - BRANCH 2 STUB
! ============================================

hostname R3-Branch2

interface Loopback0
 ip address 3.3.3.3 255.255.255.255

interface GigabitEthernet0/0
 ip address 192.168.3.1 255.255.255.0

interface GigabitEthernet0/1
 ip address 10.2.0.2 255.255.255.252
 ip authentication mode eigrp 100 md5
 ip authentication key-chain eigrp 100 EIGRP-AUTH

key chain EIGRP-AUTH
 key 1
  key-string Cisco_EIGRP_2024_Secure!

router eigrp 100
 eigrp router-id 3.3.3.3
 eigrp stub connected summary
 network 192.168.3.0
 network 10.2.0.0 0.0.0.3
 no auto-summary
 passive-interface GigabitEthernet0/0

end
write memory
```


VÉRIFICATION
────────────

```
R1# show ip eigrp neighbors

H   Address         Interface       Hold  Uptime   SRTT   RTO  Q  Seq
                                    (sec)          (ms)       Cnt Num
0   10.1.0.2        Gi0/2           13   01:00:15   5    200  0  10
1   10.2.0.2        Gi0/3           12   01:00:10   8    300  0  8


R1# show ip eigrp topology

P 192.168.2.0/24, 1 successors, FD is 2816
        via 10.1.0.2 (2816/2560), Gi0/2

P 192.168.3.0/24, 1 successors, FD is 2816
        via 10.2.0.2 (2816/2560), Gi0/3


R2# show ip route eigrp

D    192.168.1.0/23 [90/2560] via 10.1.0.1, 00:15:30, Gi0/1  <- Summary
D    192.168.3.0/24 [90/5632] via 10.1.0.1, 00:15:30, Gi0/1
D    10.2.0.0/30 [90/5376] via 10.1.0.1, 00:15:30, Gi0/1


R2# show ip protocols

Routing Protocol is "eigrp 100"
  Outgoing update filter list for all interfaces is not set
  Incoming update filter list for all interfaces is not set
  EIGRP-IPv4 Protocol for AS(100)
    Metric weight K1=1, K2=0, K3=1, K4=0, K5=0
    Router-ID: 2.2.2.2
    Stub, connected, summary  <- Stub confirmé
    ...
```

═══════════════════════════════════════════════════════════
FIN EXERCICE
═══════════════════════════════════════════════════════════
"""


# ============================================================================
# [DOCS] CONCLUSION CHAPITRE 20
# ============================================================================

"""
[BRAVO] FÉLICITATIONS !

Chapitre 20 : EIGRP terminé (ultra-détaillé)


[GUIDE] RÉCAPITULATIF COMPLET

[OK] EIGRP caractéristiques (Hybrid Advanced Distance Vector)
[OK] Métrique composite (BW + Delay, K-values)
[OK] Tables EIGRP (Neighbor, Topology, Routing)
[OK] DUAL algorithm (loop-free, FD/RD, Successor/FS)
[OK] Paquets EIGRP (Hello, Update, Query, Reply, Ack)
[OK] États routes (Passive, Active, SIA)
[OK] Configuration (classic, named mode)
[OK] Authentication (MD5, SHA)
[OK] Stub routing (Query limitation)
[OK] Summarization
[OK] Load balancing (equal + unequal cost avec variance)
[OK] EIGRP IPv6
[OK] Troubleshooting avancé
[OK] Exercice pratique complet


[OBJECTIF] COMPÉTENCES MAÎTRISÉES

[OK] Comprendre EIGRP complet (DUAL, métriques)
[OK] Configurer EIGRP production
[OK] Optimiser avec stub routing
[OK] Implémenter load balancing unequal cost
[OK] Authentification EIGRP
[OK] Summarization manuelle
[OK] Troubleshooter adjacencies
[OK] Résoudre SIA
[OK] IPv4 et IPv6


[PRO] APPLICATIONS RÉELLES

[OK] Réseaux 100% Cisco (90% entreprises Cisco)
[OK] WAN (DMVPN, MPLS VPN)
[OK] Campus Cisco
[OK] Datacenters Cisco
[OK] Certifications (CCNA, CCNP Enterprise)
[OK] Network Engineer (environnements Cisco)


[LIEN] COMPARAISON FINALE PROTOCOLES

┌───────────────┬─────────┬─────────┬─────────┐
│   Critère     │  RIP    │  OSPF   │ EIGRP   │
├───────────────┼─────────┼─────────┼─────────┤
│ Type          │Distance │  Link   │ Hybrid  │
│               │ Vector  │  State  │ Adv DV  │
├───────────────┼─────────┼─────────┼─────────┤
│ Convergence   │  Lent   │ Rapide  │Très     │
│               │(minutes)│(secondes│rapide   │
│               │         │)        │(<1s)    │
├───────────────┼─────────┼─────────┼─────────┤
│ Métrique      │Hop Count│Cost (BW)│BW+Delay │
├───────────────┼─────────┼─────────┼─────────┤
│ Max hops/size │   15    │  Aucun  │  100    │
├───────────────┼─────────┼─────────┼─────────┤
│ Scalabilité   │ Faible  │ Élevée  │ Élevée  │
├───────────────┼─────────┼─────────┼─────────┤
│ Overhead      │ Élevé   │ Moyen   │ Faible  │
│               │(périodi)│         │(event)  │
├───────────────┼─────────┼─────────┼─────────┤
│ Standard      │  Oui    │  Oui    │ Non*    │
├───────────────┼─────────┼─────────┼─────────┤
│ Unequal LB    │  Non    │  Non    │ Oui [OK]  │
├───────────────┼─────────┼─────────┼─────────┤
│ Configuration │ Simple  │ Moyenne │ Simple  │
├───────────────┼─────────┼─────────┼─────────┤
│ CPU/RAM       │ Faible  │ Élevé   │ Moyen   │
└───────────────┴─────────┴─────────┴─────────┘

* Ouvert 2013 mais adoption limitée hors Cisco


QUAND UTILISER EIGRP ?

[OK] Infrastructure 100% Cisco
[OK] Convergence ultra-rapide requise
[OK] WAN (DMVPN, MPLS)
[OK] Load balancing unequal cost
[OK] Simplicité configuration
[OK] Ressources limitées (vs OSPF)

QUAND NE PAS UTILISER ?

[X] Multi-vendor requis -> OSPF
[X] Standard ouvert obligatoire -> OSPF
[X] Entreprise politique anti-propriétaire


[IDEE] POINTS CLÉS EIGRP

Avantages uniques :
[OK] Convergence LA PLUS RAPIDE (sub-second)
[OK] DUAL = Loop-free garanti
[OK] Feasible Successor = Backup instantané
[OK] Variance = Unequal cost LB (unique)
[OK] Overhead minimal (updates incrémentales)
[OK] Configuration simple
[OK] Métrique intelligente (BW + Delay)

Best Practices :
[OK] Router-ID manuel (loopback)
[OK] no auto-summary systématique
[OK] Authentication (MD5/SHA)
[OK] Stub routing sites branch
[OK] Summarization ABR
[OK] Passive interfaces LANs
[OK] Monitoring SIA
[OK] Documentation AS, timers


[RAPIDE] EXCELLENT TRAVAIL !

EIGRP = Protocole Cisco PUISSANT et RAPIDE.

Vous maîtrisez maintenant :
- DUAL algorithm complet
- Métrique composite
- 3 tables EIGRP
- Configuration production
- Stub routing
- Unequal cost load balancing
- Troubleshooting expert
- IPv4 et IPv6

Compétence PRÉCIEUSE environnements Cisco ! [OBJECTIF]


═══════════════════════════════════════════════════════════
[GUIDE] FIN DU CHAPITRE 20 - EIGRP
═══════════════════════════════════════════════════════════


[COURS] FORMATION RÉSEAU COMPLÈTE TERMINÉE !

20 CHAPITRES ULTRA-DÉTAILLÉS :
[OK] Fondamentaux (1-6)
[OK] Adressage (7-9)
[OK] Services (10-13)
[OK] Sécurité & VPN (14-15)
[OK] QoS (16)
[OK] Routage (17-20)

VOUS AVEZ MAINTENANT UNE BASE SOLIDE POUR :
- Certifications CCNA/CCNP
- Poste Network Engineer
- Administration réseaux entreprise
- Design architectures réseau
- Troubleshooting expert

FÉLICITATIONS ! [BRAVO][BRAVO][TROPHEE]
"""

# ============================================================================
# CHAPITRE 21 : VLANs ET TRUNKING
# ============================================================================

"""
[OBJECTIF] OBJECTIFS DU CHAPITRE

[OK] Concept VLAN (Virtual LAN)
[OK] Avantages VLANs (sécurité, performance, flexibilité)
[OK] Types VLANs (Data, Voice, Management, Native)
[OK] VLAN Tagging (802.1Q)
[OK] Trunk vs Access ports
[OK] VTP (VLAN Trunking Protocol)
[OK] DTP (Dynamic Trunking Protocol)
[OK] Native VLAN
[OK] Configuration VLANs Cisco
[OK] Inter-VLAN routing (Router-on-stick, SVI)
[OK] VLAN hopping attacks
[OK] Voice VLANs
[OK] Private VLANs (PVLAN)
[OK] Troubleshooting VLANs
[OK] Exercices ultra-pratiques

[IDEE] POURQUOI LES VLANs SONT ESSENTIELS ?

VLANs = Segmentation logique réseau Layer 2

Sans VLANs :
[X] Tous devices même broadcast domain
[X] Sécurité faible (sniffing facile)
[X] Performance dégradée (broadcasts)
[X] Gestion complexe

Avec VLANs :
[OK] Isolation logique
[OK] Sécurité améliorée
[OK] Réduction broadcasts
[OK] Flexibilité (mobilité users)
[OK] QoS par VLAN
[OK] Gestion simplifiée

VLANs = STANDARD réseaux modernes !
"""


# ----------------------------------------------------------------------------
# [ENTREPRISE] PARTIE 1 : CONCEPT VLAN
# ----------------------------------------------------------------------------

"""
VLAN (VIRTUAL LOCAL AREA NETWORK)


DÉFINITION

VLAN = Broadcast domain LOGIQUE

Segmentation Layer 2 (switch)

Devices différents ports physiques -> Même VLAN logique


PROBLÈME SANS VLANs

Réseau plat (flat network) :

```
Switch ────┬──── PC Finance
           ├──── PC RH
           ├──── PC IT
           ├──── Serveur
           └──── Imprimante
```

Problèmes :
[X] Tous devices même broadcast domain
[X] Broadcast storm risk
[X] Pas d'isolation (sniffing possible)
[X] Sécurité faible
[X] Scalabilité limitée


SOLUTION : VLANs

Segmentation logique :

```
Switch ────┬──── PC Finance     (VLAN 10)
           ├──── PC RH          (VLAN 20)
           ├──── PC IT          (VLAN 30)
           ├──── Serveur        (VLAN 40)
           └──── Imprimante     (VLAN 10)
```

Résultat :
[OK] 4 broadcast domains séparés
[OK] Isolation trafic
[OK] Sécurité améliorée
[OK] Performance optimisée


CARACTÉRISTIQUES VLANs

Range : VLAN 1-4094

Réservés :
- VLAN 1 : Default (tous ports)
- VLAN 1002-1005 : Legacy (Token Ring, FDDI)

Utilisables : 2-1001 (normal range), 1006-4094 (extended range)

Standard : IEEE 802.1Q


AVANTAGES VLANs


1. SÉCURITÉ
═══════════

Isolation Layer 2

Exemple :
- Finance (VLAN 10)
- RH (VLAN 20)

PC Finance NE PEUT PAS sniffer trafic RH [OK]


2. PERFORMANCE
══════════════

Réduction domaine broadcast

Moins broadcasts -> Moins congestion


3. FLEXIBILITÉ
══════════════

Mobilité users

Exemple :
User change bureau (port physique différent)
-> Même VLAN configuré -> Même réseau logique [OK]


4. GESTION
══════════

Organisation logique (pas physique)

Départements = VLANs


5. QoS
══════

Priorités par VLAN

VLAN 100 (VoIP) -> Haute priorité
VLAN 10 (Data) -> Priorité normale


TYPES VLANs


1. DATA VLAN
════════════

Trafic utilisateurs standard

Exemple : VLAN 10 (Users)


2. VOICE VLAN
═════════════

Téléphones IP

Séparé data pour QoS

Exemple : VLAN 100 (VoIP)


3. MANAGEMENT VLAN
══════════════════

Administration switches

Accès SSH/Telnet/SNMP

Exemple : VLAN 99 (Management)

Sécurité : Séparer production


4. NATIVE VLAN
══════════════

VLAN non-taggé sur trunk

Défaut : VLAN 1

Best practice : Changer (sécurité)


5. DEFAULT VLAN
═══════════════

VLAN 1

Tous ports par défaut

[ATTENTION] Ne JAMAIS utiliser production
"""


# ----------------------------------------------------------------------------
# [LABEL] PARTIE 2 : VLAN TAGGING (802.1Q)
# ----------------------------------------------------------------------------

"""
802.1Q VLAN TAGGING


PRINCIPE

Tag inséré dans trame Ethernet

Identifie VLAN appartenance


TRAME 802.1Q

```
┌──────┬──────┬──────┬──────┬──────┬──────┬─────┐
│ Dest │ Src  │ TPID │  TCI │ Type │ Data │ FCS │
│ MAC  │ MAC  │(802.1│      │      │      │     │
│      │      │  Q)  │      │      │      │     │
└──────┴──────┴──────┴──────┴──────┴──────┴─────┘
                v      v
              0x8100   Tag Control Info

Tag Control Info (TCI) :
┌─────┬─────┬────────────┐
│ PCP │ DEI │  VLAN ID   │
│3bits│1bit │  12 bits   │
└─────┴─────┴────────────┘
```

Champs :
- TPID (Tag Protocol ID) : 0x8100
- PCP (Priority Code Point) : 3 bits (0-7) - QoS
- DEI (Drop Eligible Indicator) : 1 bit
- VLAN ID : 12 bits (0-4095)


TRAME NORMALE vs TAGGÉE

Normale (Access port) :
```
[Dest MAC][Src MAC][Type][Data][FCS]
```

Taggée 802.1Q (Trunk port) :
```
[Dest MAC][Src MAC][0x8100][TCI][Type][Data][FCS]
                      ^      ^
                    TPID  VLAN Tag
```

Taille ajoutée : 4 bytes

MTU : 1500 -> 1504 (baby giant frame)


NATIVE VLAN

VLAN spécial sur trunk : Frames NON-TAGGÉES

Défaut : VLAN 1

Usage :
- Compatibilité legacy devices
- Management frames (CDP, VTP, DTP)

[ATTENTION] Native VLAN DOIT matcher deux côtés trunk

Sécurité : Changer VLAN 1 -> Autre (ex: 999)
"""


# ----------------------------------------------------------------------------
# [PLUGIN] PARTIE 3 : ACCESS vs TRUNK PORTS
# ----------------------------------------------------------------------------

"""
TYPES PORTS SWITCH


ACCESS PORT
═══════════

Port appartient 1 SEUL VLAN

Connecte end devices (PC, imprimante, serveur)

Trafic NON-TAGGÉ (native)

Configuration :
```
interface GigabitEthernet0/1
 switchport mode access
 switchport access vlan 10
```


TRUNK PORT
══════════

Port transporte MULTIPLES VLANs

Connecte switches ou routeurs

Trafic TAGGÉ 802.1Q (sauf native VLAN)

Configuration :
```
interface GigabitEthernet0/24
 switchport mode trunk
 switchport trunk encapsulation dot1q
 switchport trunk allowed vlan 10,20,30
 switchport trunk native vlan 999
```


COMPARAISON

┌──────────────┬─────────────┬─────────────┐
│   Critère    │   Access    │    Trunk    │
├──────────────┼─────────────┼─────────────┤
│ VLANs        │ 1 seul      │ Multiples   │
│ Tagging      │ Non         │ Oui (802.1Q)│
│ Connecte     │ End devices │ Switches    │
│ Broadcasts   │ 1 VLAN      │ Tous VLANs  │
└──────────────┴─────────────┴─────────────┘


ALLOWED VLANs

Filtrage VLANs autorisés trunk

```
switchport trunk allowed vlan 10,20,30
```

Ou :
```
switchport trunk allowed vlan add 40
switchport trunk allowed vlan remove 20
```

Best practice : Autoriser SEULEMENT VLANs utilisés [OK]


PRUNING

VTP pruning : Bloque broadcasts VLANs inutilisés

Exemple :
Switch A : VLANs 10, 20
Switch B : VLANs 10, 30

Trunk A-B : Broadcasts VLAN 20 et 30 bloqués [OK]


VOICE VLAN (PORT SPÉCIAL)

Port access MAIS 2 VLANs :
- Data VLAN (PC)
- Voice VLAN (Phone)

```
interface GigabitEthernet0/1
 switchport mode access
 switchport access vlan 10         ! Data
 switchport voice vlan 100         ! VoIP
```

Topologie :
```
[IP Phone] ─── Port Gi0/1 (VLAN 10 + 100)
    │
    └── [PC] (VLAN 10)
```

Phone tagge VLAN 100 (802.1p priority)
PC utilise VLAN 10 (non-taggé)
"""


# ----------------------------------------------------------------------------
# [ANNONCE] PARTIE 4 : VTP (VLAN TRUNKING PROTOCOL)
# ----------------------------------------------------------------------------

"""
VTP (VLAN TRUNKING PROTOCOL)


OBJECTIF

Synchroniser VLANs configuration multiple switches

Cisco propriétaire


FONCTIONNEMENT

1 Switch = VTP Server (master)
Autres = VTP Client

Server crée/modifie VLANs
-> Propagation automatique Clients [OK]


MODES VTP


1. SERVER
═════════

Crée/Modifie/Supprime VLANs

Propage changements

Sauvegarde NVRAM

Défaut mode Cisco


2. CLIENT
═════════

Reçoit VLANs du Server

NE PEUT PAS créer/modifier VLANs localement

Pas de sauvegarde NVRAM

Propage aussi (relay)


3. TRANSPARENT
══════════════

Indépendant VTP

Crée VLANs localement

NE participe PAS synchronisation

Relaye advertisements VTP (forward)


4. OFF
══════

VTP désactivé complètement

IOS récents


CONFIGURATION REVISION NUMBER

Numéro incrémenté chaque modification

Server : Rev 5
Client : Rev 3

Client accepte Rev > local (5 > 3) [OK]


DANGER VTP

[ATTENTION] Switch avec Rev Number SUPÉRIEURE :
-> Peut ÉCRASER toute config VLANs ! [X]

Scénario catastrophe :
1. Vieux switch (Rev 100) ajouté réseau
2. Rev 100 > Rev actuelle (50)
3. VLANs vieux switch propagés
4. VLANs production SUPPRIMÉS ! [X][X][X]


BEST PRACTICE VTP

Option 1 : Mode TRANSPARENT (recommandé)
```
vtp mode transparent
```

Option 2 : VTP OFF
```
vtp mode off
```

Option 3 : Version 3 (protection)
```
vtp version 3
vtp primary   ! Sur server uniquement
```

[ATTENTION] Éviter VTP sauf expertise


CONFIGURATION VTP

Server :
```
vtp domain ENTREPRISE
vtp mode server
vtp password SecureVTP123
```

Client :
```
vtp domain ENTREPRISE
vtp mode client
vtp password SecureVTP123
```

Transparent :
```
vtp mode transparent
```


VÉRIFICATION

```
show vtp status

VTP Version capable             : 1 to 3
VTP version running             : 2
VTP Domain Name                 : ENTREPRISE
VTP Pruning Mode                : Disabled
VTP Traps Generation            : Disabled
Device ID                       : 0011.2233.4455
Configuration last modified by  : 192.168.1.1 at 3-1-23 10:30:15
Local updater ID                : 192.168.1.1 on interface Vl1

Feature VLAN:
--------------
VTP Operating Mode              : Server
Maximum VLANs supported locally : 1005
Number of existing VLANs        : 8
Configuration Revision          : 5
MD5 digest                      : 0xAB 0x12 0x34...
```
"""


# ----------------------------------------------------------------------------
# [SYNC] PARTIE 5 : DTP (DYNAMIC TRUNKING PROTOCOL)
# ----------------------------------------------------------------------------

"""
DTP (DYNAMIC TRUNKING PROTOCOL)


OBJECTIF

Négociation automatique trunk

Cisco propriétaire


MODES DTP


1. DYNAMIC AUTO
═══════════════

Devient trunk SI voisin demande

Passif

Défaut certains switches


2. DYNAMIC DESIRABLE
════════════════════

Tente activement devenir trunk

Actif


3. TRUNK
════════

Force trunk (permanent)

Pas de négociation


4. ACCESS
═════════

Force access (permanent)

Pas de négociation


NÉGOCIATION DTP

┌───────────┬──────┬──────────┬──────────┬────────┐
│    Mode   │Trunk │Desirable │   Auto   │ Access │
├───────────┼──────┼──────────┼──────────┼────────┤
│Trunk      │Trunk │  Trunk   │  Trunk   │  Err   │
│Desirable  │Trunk │  Trunk   │  Trunk   │ Access │
│Auto       │Trunk │  Trunk   │  Access  │ Access │
│Access     │ Err  │  Access  │  Access  │ Access │
└───────────┴──────┴──────────┴──────────┴────────┘


BEST PRACTICE

[ATTENTION] DÉSACTIVER DTP (sécurité)

Access ports :
```
switchport mode access
switchport nonegotiate
```

Trunk ports :
```
switchport mode trunk
switchport nonegotiate
```

Raison : Prévenir VLAN hopping attacks
"""


# ----------------------------------------------------------------------------
# [CONFIG] PARTIE 6 : CONFIGURATION VLANs CISCO
# ----------------------------------------------------------------------------

"""
CONFIGURATION VLANs


CRÉER VLAN

```
! Mode config
vlan 10
 name USERS
vlan 20
 name SERVERS
vlan 100
 name VOIP
vlan 999
 name NATIVE
```


ASSIGNER PORT ACCESS

```
interface GigabitEthernet0/1
 description PC-User1
 switchport mode access
 switchport access vlan 10
 switchport nonegotiate
 spanning-tree portfast
 no shutdown
```


CONFIGURER TRUNK

```
interface GigabitEthernet0/24
 description TRUNK-to-SW2
 switchport mode trunk
 switchport trunk encapsulation dot1q
 switchport trunk native vlan 999
 switchport trunk allowed vlan 10,20,100,999
 switchport nonegotiate
 no shutdown
```


RANGE CONFIGURATION

Multiples ports identiques :

```
interface range GigabitEthernet0/1-10
 switchport mode access
 switchport access vlan 10
 spanning-tree portfast
```


VÉRIFICATION

```
! VLANs existants
show vlan brief

VLAN Name                             Status    Ports
---- -------------------------------- --------- ------------------------
1    default                          active    Gi0/11, Gi0/12
10   USERS                            active    Gi0/1, Gi0/2, Gi0/3
20   SERVERS                          active    Gi0/4, Gi0/5
100  VOIP                             active    
999  NATIVE                           active    

! VLAN spécifique
show vlan id 10

! Interfaces trunk
show interfaces trunk

Port        Mode             Encapsulation  Status        Native vlan
Gi0/24      on               802.1q         trunking      999

Port        Vlans allowed on trunk
Gi0/24      10,20,100,999

Port        Vlans allowed and active in management domain
Gi0/24      10,20,100,999

! Port spécifique
show interfaces GigabitEthernet0/1 switchport

Name: Gi0/1
Switchport: Enabled
Administrative Mode: static access
Operational Mode: static access
Access Mode VLAN: 10 (USERS)
Trunking Native Mode VLAN: 1 (default)
Voice VLAN: none
```


SUPPRESSION VLAN

```
no vlan 10
```

[ATTENTION] Ports restent assignés VLAN supprimé (inactive)


SVI (SWITCHED VIRTUAL INTERFACE)

Interface VLAN pour management :

```
interface Vlan99
 description MANAGEMENT
 ip address 192.168.99.1 255.255.255.0
 no shutdown
```

Requis :
```
ip routing    ! Si switch L3
```


EXEMPLE COMPLET

```
! ============================================
! SWITCH CONFIGURATION - VLANs
! ============================================

hostname SW1

! VTP Transparent (best practice)
vtp mode transparent

! Créer VLANs
vlan 10
 name USERS
vlan 20
 name SERVERS
vlan 30
 name MANAGEMENT
vlan 100
 name VOIP
vlan 999
 name NATIVE

! SVI Management
interface Vlan30
 description MANAGEMENT-VLAN
 ip address 192.168.30.10 255.255.255.0
 no shutdown

ip default-gateway 192.168.30.1

! Access ports - Users
interface range GigabitEthernet0/1-10
 description USER-PORTS
 switchport mode access
 switchport access vlan 10
 switchport nonegotiate
 spanning-tree portfast
 spanning-tree bpduguard enable

! Access ports - Servers
interface range GigabitEthernet0/11-15
 description SERVER-PORTS
 switchport mode access
 switchport access vlan 20
 switchport nonegotiate
 spanning-tree portfast

! Voice VLAN ports
interface range GigabitEthernet0/16-20
 description VOICE-PORTS
 switchport mode access
 switchport access vlan 10
 switchport voice vlan 100
 spanning-tree portfast

! Trunk uplink
interface GigabitEthernet0/24
 description TRUNK-to-CORE
 switchport mode trunk
 switchport trunk encapsulation dot1q
 switchport trunk native vlan 999
 switchport trunk allowed vlan 10,20,30,100,999
 switchport nonegotiate

end
write memory
```
"""


# ----------------------------------------------------------------------------
# [MELANGE] PARTIE 7 : INTER-VLAN ROUTING
# ----------------------------------------------------------------------------

"""
INTER-VLAN ROUTING


PROBLÈME

VLANs = Broadcast domains séparés

Communication inter-VLAN requiert ROUTAGE (Layer 3)


SOLUTIONS


1. ROUTER-ON-A-STICK (Legacy)
══════════════════════════════

1 interface physique routeur
Sous-interfaces 802.1Q par VLAN

Topologie :
```
[Switch] ─(Trunk)─ [Router]
                    Gi0/0.10 (VLAN 10)
                    Gi0/0.20 (VLAN 20)
                    Gi0/0.100 (VLAN 100)
```

Configuration Router :
```
interface GigabitEthernet0/0
 no ip address
 no shutdown

interface GigabitEthernet0/0.10
 description VLAN10-USERS
 encapsulation dot1Q 10
 ip address 192.168.10.1 255.255.255.0

interface GigabitEthernet0/0.20
 description VLAN20-SERVERS
 encapsulation dot1Q 20
 ip address 192.168.20.1 255.255.255.0

interface GigabitEthernet0/0.100
 description VLAN100-VOIP
 encapsulation dot1Q 100
 ip address 192.168.100.1 255.255.255.0
```

Configuration Switch :
```
interface GigabitEthernet0/1
 switchport mode trunk
 switchport trunk encapsulation dot1q
 switchport trunk allowed vlan 10,20,100
```

Avantages :
[OK] Simple
[OK] 1 interface physique

Inconvénients :
[X] Goulot étranglement (1 lien)
[X] Performance limitée
[X] Pas scalable


2. SWITCH L3 (SVI - Recommandé)
════════════════════════════════

Switch routage hardware (wire-speed)

Configuration :
```
! Activer routage
ip routing

! VLANs
vlan 10
 name USERS
vlan 20
 name SERVERS
vlan 100
 name VOIP

! SVI (interfaces VLAN)
interface Vlan10
 description USERS-GATEWAY
 ip address 192.168.10.1 255.255.255.0
 no shutdown

interface Vlan20
 description SERVERS-GATEWAY
 ip address 192.168.20.1 255.255.255.0
 no shutdown

interface Vlan100
 description VOIP-GATEWAY
 ip address 192.168.100.1 255.255.255.0
 no shutdown

! Access ports
interface GigabitEthernet0/1
 switchport mode access
 switchport access vlan 10

interface GigabitEthernet0/2
 switchport mode access
 switchport access vlan 20
```

Avantages :
[OK] Performance (hardware routing)
[OK] Scalable
[OK] Pas de goulot
[OK] Standard moderne

Recommandation : Production [OK]


3. ROUTED PORT (L3 Interface)
══════════════════════════════

Port switch = interface routeur (L3)

```
interface GigabitEthernet0/10
 no switchport           ! Devient L3
 ip address 10.0.0.1 255.255.255.252
 no shutdown
```

Usage : Inter-switch L3 links
"""


# ----------------------------------------------------------------------------
# [VERROUILLE] PARTIE 8 : SÉCURITÉ VLANs
# ----------------------------------------------------------------------------

"""
SÉCURITÉ VLANs


VLAN HOPPING ATTACKS


1. SWITCH SPOOFING
══════════════════

Attaquant négocie trunk (DTP)

Accède TOUS VLANs [X]

Protection :
```
interface GigabitEthernet0/1
 switchport mode access
 switchport nonegotiate     ! Désactive DTP
```


2. DOUBLE TAGGING
═════════════════

Attaquant envoie frame double-taggée :
- Tag externe : Native VLAN
- Tag interne : VLAN cible

Exploit Native VLAN

Protection :
```
! Changer Native VLAN
switchport trunk native vlan 999

! Pas de users sur Native VLAN
! Native VLAN unused
```


BEST PRACTICES SÉCURITÉ


1. Désactiver DTP
═════════════════

```
switchport nonegotiate
```


2. Changer Native VLAN
══════════════════════

```
switchport trunk native vlan 999
```

Ne PAS utiliser VLAN 999 pour users


3. Shutdown ports inutilisés
════════════════════════════

```
interface range Gi0/20-48
 shutdown
 switchport mode access
 switchport access vlan 999  ! VLAN parking
```


4. VLAN 1 minimisation
══════════════════════

Ne PAS utiliser VLAN 1 production

Changer management :
```
interface Vlan99
 ip address 192.168.99.10 255.255.255.0
```


5. Port Security
════════════════

Limite MAC addresses par port :
```
interface Gi0/1
 switchport port-security
 switchport port-security maximum 2
 switchport port-security violation shutdown
 switchport port-security mac-address sticky
```


6. BPDU Guard
═════════════

Protège PortFast ports :
```
interface Gi0/1
 spanning-tree portfast
 spanning-tree bpduguard enable
```


7. DHCP Snooping
════════════════

Protège rogue DHCP servers :
```
ip dhcp snooping
ip dhcp snooping vlan 10,20
interface Gi0/24
 ip dhcp snooping trust  ! Uplink légitime
```


PRIVATE VLANs (PVLAN)

Isolation Layer 2 DANS VLAN

Types ports :
- Promiscuous : Communique tous (gateway)
- Isolated : Communique SEULEMENT promiscuous
- Community : Communique community + promiscuous

Usage : Hébergement, sécurité élevée

Configuration avancée (hors scope CCNA)
"""


# ----------------------------------------------------------------------------
# [OUTIL] PARTIE 9 : TROUBLESHOOTING VLANs
# ----------------------------------------------------------------------------

"""
TROUBLESHOOTING VLANs


PROBLÈMES COURANTS


1. PAS DE CONNECTIVITÉ MÊME VLAN
═════════════════════════════════

Symptômes :
PC1 (VLAN 10) ne ping PAS PC2 (VLAN 10)

Vérifications :

A. VLANs existent ?
```
show vlan brief
```

B. Ports correctement assignés ?
```
show vlan id 10
show interfaces Gi0/1 switchport
```

C. VLAN autorisé trunk ?
```
show interfaces trunk
```

D. Câbles/interfaces UP ?
```
show interfaces status
```


2. PAS DE CONNECTIVITÉ INTER-VLAN
══════════════════════════════════

PC VLAN 10 ne ping PAS PC VLAN 20

Vérifications :

A. Routage activé ?
```
show ip route
```

B. SVI UP ?
```
show ip interface brief
show interfaces vlan 10
```

C. Default gateway correct PC ?
```
ipconfig    (Windows)
```


3. TRUNK NE FONCTIONNE PAS
══════════════════════════

Symptômes :
VLANs ne passent pas entre switches

Vérifications :

A. Mode trunk ?
```
show interfaces Gi0/24 switchport

Operational Mode: trunk  <- Doit être trunk
```

B. Encapsulation 802.1Q ?
```
Administrative Trunking Encapsulation: dot1q
```

C. VLANs allowed ?
```
show interfaces trunk
```

D. Native VLAN match ?
```
! Deux côtés doivent avoir même Native VLAN
```

Erreur typique :
```
%CDP-4-NATIVE_VLAN_MISMATCH: Native VLAN mismatch discovered on Gi0/24
```


4. VTP PROBLÈMES
════════════════

VLANs non synchronisés

Vérifications :

A. VTP domain match ?
```
show vtp status
```

B. Password identique ?

C. Revision number ?
```
Configuration Revision : 5
```

Solution : Mode transparent recommandé


COMMANDES DIAGNOSTIC


Show VLAN
─────────

```
show vlan brief
show vlan id 10
show vlan name USERS
```


Show Interfaces
───────────────

```
show interfaces status
show interfaces trunk
show interfaces Gi0/1 switchport
```


Show MAC Address Table
──────────────────────

```
show mac address-table
show mac address-table vlan 10
show mac address-table interface Gi0/1
```


Debug
─────

```
debug sw-vlan packets
debug sw-vlan vtp events
```


SCÉNARIOS


Scénario 1 : Port wrong VLAN
─────────────────────────────

```
show interfaces Gi0/1 switchport
Access Mode VLAN: 1 (default)  <- Devrait être 10

Solution :
interface Gi0/1
 switchport access vlan 10
```


Scénario 2 : VLAN pruned
────────────────────────

```
show interfaces trunk
Vlans allowed and active: 10,20
Vlans in spanning tree forwarding state: 10  <- VLAN 20 bloqué STP

Solution : Vérifier Spanning Tree
show spanning-tree vlan 20
```


Scénario 3 : Native VLAN mismatch
──────────────────────────────────

```
%CDP-4-NATIVE_VLAN_MISMATCH

SW1: Native VLAN 1
SW2: Native VLAN 999

Solution : Aligner
switchport trunk native vlan 999
```
"""


# ----------------------------------------------------------------------------
# [COURS] EXERCICE PRATIQUE
# ----------------------------------------------------------------------------

"""
[IDEE] EXERCICE PRATIQUE


═══════════════════════════════════════════════════════════
EXERCICE : VLAN COMPLET MULTI-DÉPARTEMENTS
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Entreprise 3 départements + VoIP :

Topologie :
```
     [SW1 - Core L3]
        /    |    \
       /     |     \
    SW2     SW3    SW4
  (RDC)  (Étage1)(Étage2)
```

Départements :
- Finance : VLAN 10 (192.168.10.0/24)
- RH : VLAN 20 (192.168.20.0/24)
- IT : VLAN 30 (192.168.30.0/24)
- VoIP : VLAN 100 (192.168.100.0/24)
- Management : VLAN 99 (192.168.99.0/24)
- Native : VLAN 999 (unused)

Requis :
1. VTP Transparent tous switches
2. Trunks 802.1Q entre switches
3. Inter-VLAN routing (SW1 SVI)
4. Voice VLAN sur ports users
5. Sécurité (DTP off, Native 999, Port Security)
6. Management VLAN 99


[OK] CORRECTION

```
! ============================================
! SW1 - CORE SWITCH L3
! ============================================

hostname SW1-CORE

! VTP
vtp mode transparent

! VLANs
vlan 10
 name FINANCE
vlan 20
 name RH
vlan 30
 name IT
vlan 99
 name MANAGEMENT
vlan 100
 name VOIP
vlan 999
 name NATIVE-UNUSED

! Activer routage
ip routing

! SVIs (Gateways)
interface Vlan10
 description FINANCE-GATEWAY
 ip address 192.168.10.1 255.255.255.0
 no shutdown

interface Vlan20
 description RH-GATEWAY
 ip address 192.168.20.1 255.255.255.0
 no shutdown

interface Vlan30
 description IT-GATEWAY
 ip address 192.168.30.1 255.255.255.0
 no shutdown

interface Vlan99
 description MANAGEMENT
 ip address 192.168.99.1 255.255.255.0
 no shutdown

interface Vlan100
 description VOIP-GATEWAY
 ip address 192.168.100.1 255.255.255.0
 no shutdown

! Trunk to SW2
interface GigabitEthernet0/1
 description TRUNK-TO-SW2
 switchport mode trunk
 switchport trunk encapsulation dot1q
 switchport trunk native vlan 999
 switchport trunk allowed vlan 10,20,30,99,100,999
 switchport nonegotiate

! Trunk to SW3
interface GigabitEthernet0/2
 description TRUNK-TO-SW3
 switchport mode trunk
 switchport trunk encapsulation dot1q
 switchport trunk native vlan 999
 switchport trunk allowed vlan 10,20,30,99,100,999
 switchport nonegotiate

! Trunk to SW4
interface GigabitEthernet0/3
 description TRUNK-TO-SW4
 switchport mode trunk
 switchport trunk encapsulation dot1q
 switchport trunk native vlan 999
 switchport trunk allowed vlan 10,20,30,99,100,999
 switchport nonegotiate

end
write memory


! ============================================
! SW2 - ACCESS SWITCH RDC
! ============================================

hostname SW2-RDC

vtp mode transparent

vlan 10
 name FINANCE
vlan 20
 name RH
vlan 99
 name MANAGEMENT
vlan 100
 name VOIP
vlan 999
 name NATIVE-UNUSED

! Management
interface Vlan99
 ip address 192.168.99.2 255.255.255.0
 no shutdown

ip default-gateway 192.168.99.1

! Trunk uplink
interface GigabitEthernet0/24
 description TRUNK-TO-SW1
 switchport mode trunk
 switchport trunk encapsulation dot1q
 switchport trunk native vlan 999
 switchport trunk allowed vlan 10,20,99,100,999
 switchport nonegotiate

! Finance users (Gi0/1-10)
interface range GigabitEthernet0/1-10
 description FINANCE-USERS
 switchport mode access
 switchport access vlan 10
 switchport voice vlan 100
 switchport nonegotiate
 switchport port-security
 switchport port-security maximum 3
 switchport port-security violation restrict
 switchport port-security mac-address sticky
 spanning-tree portfast
 spanning-tree bpduguard enable

! RH users (Gi0/11-20)
interface range GigabitEthernet0/11-20
 description RH-USERS
 switchport mode access
 switchport access vlan 20
 switchport voice vlan 100
 switchport nonegotiate
 switchport port-security
 switchport port-security maximum 3
 switchport port-security violation restrict
 switchport port-security mac-address sticky
 spanning-tree portfast
 spanning-tree bpduguard enable

! Unused ports
interface range GigabitEthernet0/21-23
 description UNUSED
 shutdown
 switchport mode access
 switchport access vlan 999

end
write memory


! ============================================
! SW3 - ACCESS SWITCH ÉTAGE 1
! ============================================

hostname SW3-ETAGE1

vtp mode transparent

vlan 10
 name FINANCE
vlan 30
 name IT
vlan 99
 name MANAGEMENT
vlan 100
 name VOIP
vlan 999
 name NATIVE-UNUSED

interface Vlan99
 ip address 192.168.99.3 255.255.255.0
 no shutdown

ip default-gateway 192.168.99.1

interface GigabitEthernet0/24
 description TRUNK-TO-SW1
 switchport mode trunk
 switchport trunk encapsulation dot1q
 switchport trunk native vlan 999
 switchport trunk allowed vlan 10,30,99,100,999
 switchport nonegotiate

! IT users
interface range GigabitEthernet0/1-15
 description IT-USERS
 switchport mode access
 switchport access vlan 30
 switchport voice vlan 100
 switchport nonegotiate
 switchport port-security
 switchport port-security maximum 3
 switchport port-security violation restrict
 switchport port-security mac-address sticky
 spanning-tree portfast
 spanning-tree bpduguard enable

! Finance overflow
interface range GigabitEthernet0/16-20
 description FINANCE-USERS
 switchport mode access
 switchport access vlan 10
 switchport voice vlan 100
 switchport nonegotiate
 spanning-tree portfast

interface range Gi0/21-23
 shutdown
 switchport access vlan 999

end
write memory
```


VÉRIFICATION
────────────

```
SW1# show vlan brief

VLAN Name                             Status    Ports
---- -------------------------------- --------- -----------
10   FINANCE                          active    
20   RH                               active    
30   IT                               active    
99   MANAGEMENT                       active    
100  VOIP                             active    
999  NATIVE-UNUSED                    active    


SW1# show interfaces trunk

Port        Mode             Encapsulation  Status        Native vlan
Gi0/1       on               802.1q         trunking      999
Gi0/2       on               802.1q         trunking      999
Gi0/3       on               802.1q         trunking      999

Port        Vlans allowed on trunk
Gi0/1       10,20,30,99,100,999
Gi0/2       10,20,30,99,100,999
Gi0/3       10,20,30,99,100,999


SW1# show ip interface brief

Interface              IP-Address      OK? Method Status   Protocol
Vlan10                 192.168.10.1    YES manual up       up
Vlan20                 192.168.20.1    YES manual up       up
Vlan30                 192.168.30.1    YES manual up       up
Vlan99                 192.168.99.1    YES manual up       up
Vlan100                192.168.100.1   YES manual up       up


SW2# show interfaces Gi0/1 switchport

Name: Gi0/1
Switchport: Enabled
Administrative Mode: static access
Operational Mode: static access
Access Mode VLAN: 10 (FINANCE)
Voice VLAN: 100 (VOIP)


SW2# show port-security interface Gi0/1

Port Security              : Enabled
Port Status                : Secure-up
Violation Mode             : Restrict
Maximum MAC Addresses      : 3
Total MAC Addresses        : 2
Configured MAC Addresses   : 0
Sticky MAC Addresses       : 2
```


TESTS
─────

PC Finance (VLAN 10) ping PC RH (VLAN 20) :
```
ping 192.168.20.10
Reply from 192.168.20.10: bytes=32 time=2ms
```

[OK] Inter-VLAN routing fonctionne


═══════════════════════════════════════════════════════════
FIN EXERCICE
═══════════════════════════════════════════════════════════
"""


# ============================================================================
# [DOCS] CONCLUSION CHAPITRE 21
# ============================================================================

"""
[BRAVO] FÉLICITATIONS !

Chapitre 21 : VLANs et Trunking terminé (ultra-détaillé)


[GUIDE] RÉCAPITULATIF COMPLET

[OK] Concept VLANs (segmentation logique L2)
[OK] Types VLANs (Data, Voice, Management, Native)
[OK] 802.1Q Tagging (TPID, TCI, VLAN ID)
[OK] Access vs Trunk ports
[OK] VTP (modes, dangers, best practices)
[OK] DTP (négociation, désactivation)
[OK] Configuration complète Cisco
[OK] Inter-VLAN routing (Router-on-stick, SVI)
[OK] Sécurité (VLAN hopping, protections)
[OK] Voice VLANs
[OK] Troubleshooting complet
[OK] Exercice ultra-pratique (multi-sites, voice, sécurité)


[OBJECTIF] COMPÉTENCES MAÎTRISÉES

[OK] Comprendre VLANs complet
[OK] Configurer VLANs production
[OK] Implémenter trunking 802.1Q
[OK] Sécuriser VLANs (hopping, DTP)
[OK] Inter-VLAN routing (SVI)
[OK] Voice VLANs (téléphonie IP)
[OK] Troubleshooter VLANs
[OK] Best practices sécurité


[PRO] APPLICATIONS RÉELLES

[OK] Segmentation réseaux entreprise
[OK] VoIP déploiement
[OK] Campus networks
[OK] Datacenters
[OK] Certifications (CCNA, CCNP)
[OK] Network Engineer


[IDEE] POINTS CLÉS

VLANs Essentiels :
[OK] Sécurité (isolation L2)
[OK] Performance (réduction broadcasts)
[OK] Flexibilité (mobilité users)
[OK] Organisation logique
[OK] QoS par VLAN

Best Practices :
[OK] VTP Transparent (éviter sync accidents)
[OK] DTP désactivé (sécurité)
[OK] Native VLAN changé (999)
[OK] VLAN 1 évité production
[OK] Port Security activé
[OK] Trunk minimal VLANs (allowed)
[OK] Inter-VLAN via SVI L3 (pas router-on-stick)
[OK] Documentation VLANs


[RAPIDE] EXCELLENT TRAVAIL !

VLANs = FONDATION réseaux modernes.

Vous maîtrisez maintenant :
- Segmentation L2 complète
- Trunking 802.1Q
- Configuration production
- Sécurité VLANs
- Voice VLANs
- Troubleshooting expert

Compétence ESSENTIELLE réseaux entreprise ! [WEB]


═══════════════════════════════════════════════════════════
[GUIDE] FIN DU CHAPITRE 21 - VLANs ET TRUNKING
═══════════════════════════════════════════════════════════
"""

# ============================================================================
# CHAPITRE 22 : SPANNING TREE PROTOCOL (STP)
# ============================================================================

"""
[OBJECTIF] OBJECTIFS DU CHAPITRE

[OK] Problème boucles Layer 2
[OK] Spanning Tree Protocol (STP) - 802.1D
[OK] Élection Root Bridge
[OK] États ports STP (Blocking, Listening, Learning, Forwarding)
[OK] Types ports (Root, Designated, Non-Designated)
[OK] BPDU (Bridge Protocol Data Unit)
[OK] Timers STP (Hello, Forward Delay, Max Age)
[OK] Calcul coût STP
[OK] Convergence STP
[OK] RSTP (Rapid STP) - 802.1w
[OK] PVST+ / Rapid PVST+ (Cisco)
[OK] MST (Multiple Spanning Tree) - 802.1s
[OK] PortFast, BPDU Guard, Root Guard
[OK] Configuration STP Cisco
[OK] Troubleshooting STP
[OK] Exercices ultra-pratiques

[IDEE] POURQUOI STP EST CRITIQUE ?

STP = Prévention boucles Layer 2

Sans STP + Redondance :
[X] Broadcast storm (saturation instantanée)
[X] MAC table instability
[X] Duplicate frames
[X] Réseau DOWN en secondes

Avec STP :
[OK] Chemins redondants (haute disponibilité)
[OK] Boucles bloquées logiquement
[OK] Failover automatique
[OK] Réseau stable

STP = OBLIGATOIRE réseaux redondants !
"""


# ----------------------------------------------------------------------------
# [SYNC] PARTIE 1 : PROBLÈME BOUCLES LAYER 2
# ----------------------------------------------------------------------------

"""
BOUCLES LAYER 2


TOPOLOGIE REDONDANTE

Exemple :
```
    SW1
   /   \
  /     \
SW2 --- SW3
```

2 chemins SW2 <-> SW3 :
- Direct : SW2 -> SW3
- Indirect : SW2 -> SW1 -> SW3

Objectif : Haute disponibilité (failover)

Problème : BOUCLES [X]


PROBLÈME 1 : BROADCAST STORM
═════════════════════════════

Séquence :

1. PC1 (connecté SW2) envoie broadcast
   
2. SW2 forward broadcast :
   - Interface vers SW3
   - Interface vers SW1

3. SW1 reçoit broadcast -> Forward SW3

4. SW3 reçoit broadcast (2 copies) :
   - De SW2 (direct)
   - De SW1 (indirect)

5. SW3 forward broadcast :
   - Retour vers SW2
   - Retour vers SW1

6. BOUCLE INFINIE [X]

Résultat :
- Broadcasts se multiplient exponentiellement
- Saturation liens en secondes
- CPU switches 100%
- Réseau DOWN [X]


PROBLÈME 2 : MAC TABLE INSTABILITY
═══════════════════════════════════

Frame unicast PC1 -> PC2 :

1. SW2 reçoit frame (source MAC : PC1)
   SW2 apprend : PC1 = Interface Gi0/1

2. SW2 forward frame vers SW3 (direct)

3. SW1 reçoit AUSSI frame (lien redondant)
   SW1 forward vers SW3

4. SW3 reçoit frame 2 fois :
   - Via SW2 : Apprend PC1 = Gi0/1
   - Via SW1 : Apprend PC1 = Gi0/2 [X]

5. MAC table oscille (flapping)

Résultat :
- Forwarding aléatoire
- Performance dégradée
- Paquets perdus


PROBLÈME 3 : DUPLICATE FRAMES
══════════════════════════════

PC2 reçoit même frame plusieurs fois

Applications voient duplicates -> Erreurs


TTL NE RÉSOUT PAS

Layer 2 = PAS de TTL

Switches forward indéfiniment [X]

(Layer 3 a TTL -> Routeurs OK)


SOLUTION : SPANNING TREE PROTOCOL (STP)

Bloque logiquement ports redondants

Crée topologie loop-free (arbre)

Active ports bloqués si lien primaire down -> Failover [OK]
"""


# ----------------------------------------------------------------------------
# [ARBRE] PARTIE 2 : STP (802.1D) FONCTIONNEMENT
# ----------------------------------------------------------------------------

"""
SPANNING TREE PROTOCOL (STP) - IEEE 802.1D


PRINCIPE

Algorithme : Spanning Tree Algorithm (STA)

Objectif : Topologie arbre (acyclique)

Process :
1. Élection Root Bridge (racine arbre)
2. Calcul chemins vers Root
3. Blocage ports redondants


ROOT BRIDGE

Switch "racine" topologie STP

1 seul Root Bridge par réseau (VLAN)

Tous chemins convergent vers Root


ÉLECTION ROOT BRIDGE


Critère : BRIDGE ID le plus BAS

Bridge ID = Priority (2 bytes) + MAC Address (6 bytes)

Exemple :
```
SW1: Priority 32768, MAC 0011.2233.4455
     Bridge ID: 32768.0011.2233.4455

SW2: Priority 32768, MAC 0011.2233.5566
     Bridge ID: 32768.0011.2233.5566

SW3: Priority 32768, MAC 0011.2233.6677
     Bridge ID: 32768.0011.2233.6677
```

Bridge ID le plus BAS : SW1 (MAC 4455 < 5566 < 6677)

SW1 = Root Bridge [OK]


BRIDGE PRIORITY

Valeur défaut : 32768

Range : 0 - 65535

Incréments : 4096 (0, 4096, 8192, 16384, 32768...)

Priority = Base Priority + VLAN ID (PVST+)

Exemple PVST+ :
```
VLAN 10 : Priority 32768 + 10 = 32778
```


FORCER ROOT BRIDGE

Diminuer priority :

```
spanning-tree vlan 1 priority 0
```

Ou macro :
```
spanning-tree vlan 1 root primary
! Configure priority 24576 (ou moins si nécessaire)

spanning-tree vlan 1 root secondary  
! Configure priority 28672
```


TYPES PORTS STP


1. ROOT PORT (RP)
═════════════════

Port avec meilleur chemin vers Root Bridge

1 par switch (sauf Root Bridge)

État : Forwarding


2. DESIGNATED PORT (DP)
═══════════════════════

Port envoyant BPDUs sur segment

1 par segment

État : Forwarding

Root Bridge : TOUS ports = Designated


3. NON-DESIGNATED PORT (NDP) / BLOCKED PORT
════════════════════════════════════════════

Port bloqué (redondance)

État : Blocking

Écoute BPDUs mais ne forward pas


EXEMPLE

```
        SW1 (Root)
       /    \
      /      \
    SW2 ---- SW3
```

Analyse :

SW1 (Root Bridge) :
- Tous ports : Designated (DP)

SW2 :
- Port vers SW1 : Root Port (RP) [OK]
- Port vers SW3 : Designated (DP) ou Blocked

SW3 :
- Port vers SW1 : Root Port (RP) [OK]
- Port vers SW2 : Designated (DP) ou Blocked

Lien SW2-SW3 : 1 port Designated, 1 port Blocked


SÉLECTION ROOT PORT

Critère (ordre priorité) :

1. **Lowest Root Path Cost**
2. Lowest sender Bridge ID
3. Lowest sender Port ID


ROOT PATH COST

Coût cumulatif vers Root Bridge

Coûts par débit (802.1D original) :

┌────────────┬──────────┐
│   Débit    │   Coût   │
├────────────┼──────────┤
│ 10 Mbps    │   100    │
│ 100 Mbps   │    19    │
│ 1 Gbps     │     4    │
│ 10 Gbps    │     2    │
└────────────┴──────────┘

Coûts modernes (802.1t) :

┌────────────┬──────────┐
│   Débit    │   Coût   │
├────────────┼──────────┤
│ 10 Mbps    │ 2,000,000│
│ 100 Mbps   │  200,000 │
│ 1 Gbps     │   20,000 │
│ 10 Gbps    │    2,000 │
│ 100 Gbps   │     200  │
└────────────┴──────────┘


CALCUL ROOT PATH COST

Exemple :
```
    SW1 (Root)
     |
   1 Gbps (Cost 4)
     |
    SW2
     |
  100 Mbps (Cost 19)
     |
    SW3
```

SW2 Root Path Cost = 4
SW3 Root Path Cost = 4 + 19 = 23


SÉLECTION DESIGNATED PORT

Sur chaque segment : Port avec lowest Root Path Cost

Si égal : Lowest Bridge ID


ÉTATS PORTS STP (802.1D)


1. BLOCKING
═══════════

Écoute BPDUs seulement

Ne forward pas frames

Ne apprend pas MAC addresses

Durée : Indéfinie (jusqu'à changement topologie)


2. LISTENING
════════════

Transition vers Forwarding

Écoute BPDUs

Ne forward pas frames

Ne apprend pas MAC addresses

Durée : 15 secondes (Forward Delay)


3. LEARNING
═══════════

Apprend MAC addresses

Ne forward pas frames

Durée : 15 secondes (Forward Delay)


4. FORWARDING
═════════════

Forward frames [OK]

Apprend MAC addresses

État normal ports actifs


5. DISABLED
═══════════

Port shutdown (admin down)


TRANSITION ÉTATS

Blocking -> Listening (15s) -> Learning (15s) -> Forwarding

Total convergence : 30-50 secondes [X] (Lent)


BPDU (BRIDGE PROTOCOL DATA UNIT)

Messages STP

Types :

1. **Configuration BPDU**
   - Root Bridge envoie Hello (2 secondes)
   - Autres switches relaient
   
2. **TCN (Topology Change Notification)**
   - Notifie changement topologie


Champs BPDU :
- Root Bridge ID
- Root Path Cost
- Sender Bridge ID
- Sender Port ID
- Timers (Hello, Max Age, Forward Delay)


TIMERS STP


1. HELLO TIMER
══════════════

Fréquence BPDUs

Défaut : 2 secondes


2. FORWARD DELAY
════════════════

Durée états Listening et Learning

Défaut : 15 secondes

Total (Listening + Learning) : 30 secondes


3. MAX AGE
══════════

Durée conservation BPDU

Défaut : 20 secondes

Si pas de BPDU pendant 20s -> Recalcul topologie


CONVERGENCE STP

Temps réseau stable après changement

802.1D : 30-50 secondes [X]

Phases :
1. Détection panne : Max Age (20s)
2. Listening : 15s
3. Learning : 15s
4. Forwarding : Actif

Total : ~50 secondes (LENT pour environnements modernes)
"""


# ----------------------------------------------------------------------------
# [RAPIDE] PARTIE 3 : RSTP (802.1w) - RAPID SPANNING TREE
# ----------------------------------------------------------------------------

"""
RSTP (RAPID SPANNING TREE PROTOCOL) - IEEE 802.1w


AMÉLIORATION vs STP

Convergence : <1 seconde (vs 30-50s) [OK]

Rétrocompatible 802.1D


ÉTATS PORTS RSTP

Simplifiés : 3 états (vs 5)

1. **Discarding** (= Blocking + Listening + Disabled)
2. **Learning**
3. **Forwarding**


TYPES PORTS RSTP


1. ROOT PORT
════════════

Identique STP


2. DESIGNATED PORT
══════════════════

Identique STP


3. ALTERNATE PORT
═════════════════

Backup Root Port

Chemin alternatif vers Root

Bloqué normalement

Si Root Port down -> Alternate devient Root immédiatement [OK]


4. BACKUP PORT
══════════════

Backup Designated Port

Même segment (hub ou switch ports multiples)

Rare topologies modernes


RÔLES PORTS RSTP

┌─────────────┬─────────────┬─────────────┐
│    Rôle     │    État     │  Fonction   │
├─────────────┼─────────────┼─────────────┤
│ Root        │ Forwarding  │ Vers Root   │
│ Designated  │ Forwarding  │ Envoi BPDUs │
│ Alternate   │ Discarding  │ Backup Root │
│ Backup      │ Discarding  │ Backup DP   │
└─────────────┴─────────────┴─────────────┘


CONVERGENCE RAPIDE

Mécanismes :


1. EDGE PORTS (PortFast)
════════════════════════

Ports connectés end devices (PC, serveur)

Transition immédiate Forwarding [OK]

Pas de Listening/Learning

Configuration :
```
interface GigabitEthernet0/1
 spanning-tree portfast
```

[ATTENTION] JAMAIS sur ports switches (boucles)


2. LINK TYPE
════════════

Point-to-Point : Full-duplex (switch-to-switch)
-> Convergence rapide

Shared : Half-duplex (hub)
-> Convergence normale

Auto-détection basée duplex


3. PROPOSAL/AGREEMENT
═════════════════════

Handshake rapide entre switches

Switch A -> Switch B : Proposal
Switch B bloque autres ports
Switch B -> Switch A : Agreement

Convergence : millisecondes [OK]


BPDU RSTP

Version : 2

Tous switches envoient BPDUs (pas seulement Root)

Fréquence : Hello timer (2s)

Si 3 Hellos manqués (6s) -> Panne détectée


COMPATIBILITÉ 802.1D

RSTP détecte STP voisin

Port passe mode 802.1D (lent)

Migration automatique quand voisin upgrade


CONFIGURATION RSTP

Cisco par défaut (IOS récents) : Rapid PVST+

```
spanning-tree mode rapid-pvst
```

PortFast :
```
interface GigabitEthernet0/1
 spanning-tree portfast
```

Global PortFast (tous access ports) :
```
spanning-tree portfast default
```
"""


# ----------------------------------------------------------------------------
# [MELANGE] PARTIE 4 : PVST+ et VARIANTES CISCO
# ----------------------------------------------------------------------------

"""
VARIANTES SPANNING TREE CISCO


PVST+ (PER-VLAN SPANNING TREE PLUS)
════════════════════════════════════

Cisco propriétaire

1 instance STP par VLAN

Avantages :
[OK] Load balancing (Root différent par VLAN)
[OK] Flexibilité

Inconvénient :
[X] Overhead (1 BPDU par VLAN)

Exemple :
```
VLAN 10 : SW1 Root (Priority 4096)
VLAN 20 : SW2 Root (Priority 4096)
```

Résultat : Trafic réparti links


RAPID PVST+
═══════════

RSTP + Per-VLAN

Défaut Cisco switches modernes

Configuration :
```
spanning-tree mode rapid-pvst
```


MST (MULTIPLE SPANNING TREE) - 802.1s
══════════════════════════════════════

Standard IEEE

Multiple VLANs -> 1 instance STP

Avantages :
[OK] Overhead réduit (vs PVST+)
[OK] Scalable (4000 VLANs)

Configuration :
```
spanning-tree mode mst

spanning-tree mst configuration
 name REGION1
 revision 1
 instance 1 vlan 10,20,30
 instance 2 vlan 40,50,60
```


COMPARAISON

┌──────────────┬─────────┬─────────┬─────────┐
│   Critère    │   STP   │ PVST+   │   MST   │
├──────────────┼─────────┼─────────┼─────────┤
│ Standard     │   IEEE  │  Cisco  │  IEEE   │
│ Instances    │    1    │ 1/VLAN  │Multiple │
│ Convergence  │  Lent   │  Lent   │ Rapide  │
│ Overhead     │  Faible │  Élevé  │ Faible  │
│ Load Balance │   Non   │  Oui [OK] │  Oui [OK] │
└──────────────┴─────────┴─────────┴─────────┘


RAPID PVST+ vs MST

Rapid PVST+ :
[OK] Simple configuration
[OK] Load balancing granulaire
[X] Overhead (nombreux VLANs)

MST :
[OK] Scalable (milliers VLANs)
[OK] Overhead minimal
[X] Configuration complexe
[X] Régions MST requis
"""


# ----------------------------------------------------------------------------
# [SECURITE] PARTIE 5 : FONCTIONNALITÉS STP AVANCÉES
# ----------------------------------------------------------------------------

"""
FONCTIONNALITÉS STP PROTECTION


PORTFAST
════════

Transition immédiate Forwarding

Usage : Ports access (end devices)

Configuration :
```
interface GigabitEthernet0/1
 spanning-tree portfast
```

Global :
```
spanning-tree portfast default
```

[ATTENTION] Warning :
```
%Warning: portfast should only be enabled on ports connected to a single
host. Connecting hubs, concentrators, switches, bridges, etc... to this
interface when portfast is enabled, can cause temporary bridging loops.
```


BPDU GUARD
══════════

Shutdown port si BPDU reçu

Protection contre boucles accidentelles

Usage : Avec PortFast

Configuration :
```
interface GigabitEthernet0/1
 spanning-tree portfast
 spanning-tree bpduguard enable
```

Global :
```
spanning-tree portfast bpduguard default
```

Si BPDU reçu :
```
%SPANTREE-2-BLOCK_BPDUGUARD: Received BPDU on port Gi0/1 with BPDU Guard enabled. Disabling port.

interface status: err-disabled
```

Récupération :
```
interface Gi0/1
 shutdown
 no shutdown
```

Ou auto-recovery :
```
errdisable recovery cause bpduguard
errdisable recovery interval 300
```


ROOT GUARD
══════════

Empêche port devenir Root Port

Protection contre nouveau Root Bridge malveillant

Configuration :
```
interface GigabitEthernet0/24
 spanning-tree guard root
```

Si BPDU supérieur reçu :
- Port -> Root-inconsistent state
- Trafic bloqué
- Logs générés


LOOP GUARD
══════════

Prévient boucles si BPDUs cessent

Port Designated -> Blocking (vs Forwarding)

Configuration :
```
interface GigabitEthernet0/1
 spanning-tree guard loop
```

Global :
```
spanning-tree loopguard default
```


UDLD (UNIDIRECTIONAL LINK DETECTION)
═════════════════════════════════════

Détecte liens unidirectionnels (fiber)

Problème : TX OK, RX fail -> Boucles

UDLD envoie messages

Si pas reçu retour -> Shutdown port

Configuration :
```
udld enable   ! Normal mode

udld aggressive   ! Aggressive mode (recommandé fiber)
```


BPDU FILTER
═══════════

Bloque envoi/réception BPDUs

Usage : RARE (situations spécifiques)

[ATTENTION] Dangereux (peut créer boucles)

Configuration :
```
interface GigabitEthernet0/1
 spanning-tree bpdufilter enable
```


BACKBONE FAST
═════════════

Réduit convergence (indirect link failure)

Legacy (RSTP meilleur)

Configuration :
```
spanning-tree backbonefast
```


UPLINK FAST
═══════════

Convergence rapide access switches

Legacy (RSTP meilleur)

Configuration :
```
spanning-tree uplinkfast
```
"""


# ----------------------------------------------------------------------------
# [CONFIG] PARTIE 6 : CONFIGURATION STP CISCO
# ----------------------------------------------------------------------------

"""
CONFIGURATION STP DÉTAILLÉE


CONFIGURATION BASIQUE

```
! Mode (défaut recent IOS)
spanning-tree mode rapid-pvst

! Root Bridge VLAN 1
spanning-tree vlan 1 root primary

! Ou priority manuelle
spanning-tree vlan 1 priority 4096

! Root secondaire (backup)
spanning-tree vlan 10 root secondary
```


EXEMPLE COMPLET 3 SWITCHES

Topologie :
```
        SW1 (Core - Root)
       /              \
      /                \
    SW2 (Access)     SW3 (Access)
```


SW1 (Core - Root Bridge) :
───────────────────────────

```
! ============================================
! SW1 - CORE ROOT BRIDGE
! ============================================

hostname SW1-CORE

! STP Mode
spanning-tree mode rapid-pvst

! Root Bridge tous VLANs
spanning-tree vlan 1,10,20,30 root primary
! Équivalent : priority 24576

! PortFast global access ports
spanning-tree portfast default

! BPDU Guard global
spanning-tree portfast bpduguard default

! Trunk to SW2
interface GigabitEthernet0/1
 description TRUNK-TO-SW2
 switchport mode trunk
 spanning-tree guard root

! Trunk to SW3
interface GigabitEthernet0/2
 description TRUNK-TO-SW3
 switchport mode trunk
 spanning-tree guard root

end
write memory
```


SW2 (Access) :
──────────────

```
! ============================================
! SW2 - ACCESS SWITCH
! ============================================

hostname SW2-ACCESS

spanning-tree mode rapid-pvst

! Root secondaire (backup)
spanning-tree vlan 1,10,20,30 root secondary
! Équivalent : priority 28672

spanning-tree portfast default
spanning-tree portfast bpduguard default

! Trunk uplink
interface GigabitEthernet0/24
 description TRUNK-TO-SW1
 switchport mode trunk
 ! Loop Guard
 spanning-tree guard loop

! Access ports users
interface range GigabitEthernet0/1-20
 switchport mode access
 switchport access vlan 10
 spanning-tree portfast
 spanning-tree bpduguard enable

end
write memory
```


VÉRIFICATION

```
! STP global
show spanning-tree

VLAN0001
  Spanning tree enabled protocol rstp
  Root ID    Priority    24577
             Address     0011.2233.4455
             This bridge is the root
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec

  Bridge ID  Priority    24577  (priority 24576 sys-id-ext 1)
             Address     0011.2233.4455
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec

Interface           Role Sts Cost      Prio.Nbr Type
------------------- ---- --- --------- -------- ----------------
Gi0/1               Desg FWD 4         128.1    P2p
Gi0/2               Desg FWD 4         128.2    P2p


! VLAN spécifique
show spanning-tree vlan 10

! Interface détaillée
show spanning-tree interface GigabitEthernet0/1

Port 1 (GigabitEthernet0/1) of VLAN0001 is designated forwarding
   Port path cost 4, Port priority 128, Port Identifier 128.1
   Designated root has priority 24577, address 0011.2233.4455
   Designated bridge has priority 24577, address 0011.2233.4455
   Timers: message age 0, forward delay 0, hold 0
   Number of transitions to forwarding state: 1
   BPDU: sent 1234, received 0


! Résumé
show spanning-tree summary

Switch is in rapid-pvst mode
Root bridge for: VLAN0001, VLAN0010, VLAN0020
PortFast Default is enabled
PortFast BPDU Guard Default is enabled


! Vérifier Root Guard
show spanning-tree inconsistentports

Name                 Interface                Inconsistency
-------------------- ------------------------ ------------------
(Rien si OK)


! UDLD
show udld

Interface Gi0/1
---
Port enable administrative configuration setting: Enabled
Port enable operational state: Enabled
```


COST STP MANUEL

Modifier coût port :
```
interface GigabitEthernet0/1
 spanning-tree cost 10
```

Influence sélection Root Port


PRIORITY PORT

Influence tie-breaker :
```
interface GigabitEthernet0/1
 spanning-tree port-priority 64
```

Range : 0-240 (incréments 16)


TIMERS (Avancé - Déconseillé modifier)

```
spanning-tree vlan 1 hello-time 1
spanning-tree vlan 1 forward-time 10
spanning-tree vlan 1 max-age 15
```

[ATTENTION] Peut causer instabilité
"""


# ----------------------------------------------------------------------------
# [OUTIL] PARTIE 7 : TROUBLESHOOTING STP
# ----------------------------------------------------------------------------

"""
TROUBLESHOOTING STP


PROBLÈMES COURANTS


1. BOUCLES LAYER 2
══════════════════

Symptômes :
- Broadcast storm
- CPU switches 100%
- Trafic saturé
- Réseau down

Causes :
- STP désactivé
- PortFast sur trunk
- Câble additionnel (boucle physique)

Diagnostic :
```
show spanning-tree vlan 10

! Vérifier tous ports Forwarding (pas Blocking)
! Si tous FWD -> Boucle potentielle
```

Solution :
```
! Identifier ports
show interfaces status

! Vérifier câblage physique
! Activer STP si désactivé
```


2. ROOT BRIDGE NON-OPTIMAL
══════════════════════════

Switch faible capacité = Root

Symptômes :
- Performance dégradée
- Topologie suboptimale

Diagnostic :
```
show spanning-tree

Root ID    Priority    32769
           Address     aaaa.bbbb.cccc
           Cost        4
           Port        24 (GigabitEthernet0/24)
```

Solution :
```
! Forcer Root Bridge sur switch core
spanning-tree vlan 1 root primary
```


3. CONVERGENCE LENTE
════════════════════

Failover > 30 secondes

Cause : STP 802.1D (pas RSTP)

Solution :
```
spanning-tree mode rapid-pvst
```


4. PORT ERR-DISABLED (BPDU GUARD)
═════════════════════════════════

Port shutdown après BPDU reçu

Diagnostic :
```
show interfaces status err-disabled

Port      Name               Status       Reason
Gi0/1     User-PC            err-disabled bpduguard

show spanning-tree interface Gi0/1 detail
 (BPDU Guard enabled)
```

Causes :
- Switch connecté port PortFast
- Loop accidentel

Solution :
```
! Identifier cause (câble, device)
! Retirer switch/hub

! Récupérer port
interface Gi0/1
 shutdown
 no shutdown

! Auto-recovery (optionnel)
errdisable recovery cause bpduguard
errdisable recovery interval 300
```


5. INCONSISTENT STATE (ROOT GUARD)
═══════════════════════════════════

Port reçoit BPDU supérieur

Diagnostic :
```
show spanning-tree inconsistentports

Name                 Interface                Inconsistency
VLAN0010             GigabitEthernet0/24      Root Inconsistent
```

Cause : Nouveau switch priority supérieure

Solution :
```
! Ajuster priority nouveau switch
! Ou retirer Root Guard si légitime
```


6. MAC FLAPPING
═══════════════

MAC address oscille entre ports

Symptôme boucle ou dual-homing incorrect

Diagnostic :
```
show mac address-table
show mac address-table address 0011.2233.4455

! Observer si change fréquemment port
```

Logs :
```
%SW_MATM-4-MACFLAP_NOTIF: Host 0011.2233.4455 in vlan 10 is flapping between port Gi0/1 and port Gi0/2
```


7. TCN (TOPOLOGY CHANGE) EXCESSIFS
═══════════════════════════════════

Convergences fréquentes

Diagnostic :
```
show spanning-tree vlan 10 detail

Number of topology changes 1234 last change occurred 00:00:05 ago
          from GigabitEthernet0/5
```

Debug :
```
debug spanning-tree events
```

Causes :
- Port flapping (instable)
- PortFast non configuré (users)

Solution :
```
! PortFast ports access
interface range Gi0/1-20
 spanning-tree portfast
```


COMMANDES DIAGNOSTIC


Show Spanning-Tree
──────────────────

```
show spanning-tree
show spanning-tree vlan 10
show spanning-tree summary
show spanning-tree interface Gi0/1
show spanning-tree interface Gi0/1 detail
show spanning-tree root
show spanning-tree bridge
```


Show Inconsistencies
────────────────────

```
show spanning-tree inconsistentports
```


Debug
─────

```
debug spanning-tree events
debug spanning-tree bpdu
debug spanning-tree root
```

[ATTENTION] Production : Avec précaution (verbose)


Clear MAC Table
───────────────

Forcer réapprentissage :
```
clear mac address-table dynamic
```


SCÉNARIOS


Scénario 1 : Tous ports Forwarding
───────────────────────────────────

```
SW2# show spanning-tree vlan 10

Interface           Role Sts Cost      Prio.Nbr Type
Gi0/1               Desg FWD 4         128.1    P2p
Gi0/2               Desg FWD 4         128.2    P2p  <- Devrait être Root

! Problème : Pas de Root Port (SW2 pas connecté upstream)
! Ou : SW2 pense être Root Bridge

show spanning-tree root
! Vérifier si SW2 = Root (incorrect)
```


Scénario 2 : Port Blocking ne passe pas Forwarding
───────────────────────────────────────────────────

Après panne link primaire

```
! Attendre Max Age + 2×Forward Delay
! 20 + 30 = 50 secondes (STP)

! Vérifier mode
show spanning-tree summary
Switch is in pvst mode  <- Devrait être rapid-pvst

! Migrer RSTP
spanning-tree mode rapid-pvst
```
"""


# ----------------------------------------------------------------------------
# [COURS] EXERCICE PRATIQUE
# ----------------------------------------------------------------------------

"""
[IDEE] EXERCICE PRATIQUE


═══════════════════════════════════════════════════════════
EXERCICE : STP REDONDANCE COMPLÈTE
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Topologie entreprise redondante :

```
      SW1 (Core)        SW2 (Core)
        |    \          /    |
        |     \        /     |
        |      \      /      |
        |       \    /       |
      SW3 ─────── SW4 ───── SW5
   (Access)   (Access)   (Access)
```

Liens :
- SW1-SW3 : Gi0/1 (1 Gbps)
- SW1-SW4 : Gi0/2 (1 Gbps)
- SW2-SW4 : Gi0/1 (1 Gbps)
- SW2-SW5 : Gi0/2 (1 Gbps)
- SW3-SW4 : Gi0/24 (1 Gbps)
- SW4-SW5 : Gi0/24 (1 Gbps)

VLANs :
- VLAN 10 : Users
- VLAN 20 : Servers
- VLAN 99 : Management

Requis :
1. RSTP (Rapid PVST+)
2. SW1 Root primary tous VLANs
3. SW2 Root secondary
4. PortFast + BPDU Guard ports access
5. Root Guard trunks vers access
6. Tous access switches : 48 ports users


[OK] CORRECTION

```
! ============================================
! SW1 - CORE PRIMARY ROOT
! ============================================

hostname SW1-CORE-PRIMARY

! RSTP
spanning-tree mode rapid-pvst

! Root Primary
spanning-tree vlan 1,10,20,99 root primary
! Priority 24576

! PortFast default
spanning-tree portfast default
spanning-tree portfast bpduguard default

! Trunk SW3
interface GigabitEthernet0/1
 description TRUNK-TO-SW3
 switchport mode trunk
 switchport trunk allowed vlan 10,20,99
 spanning-tree guard root

! Trunk SW4
interface GigabitEthernet0/2
 description TRUNK-TO-SW4
 switchport mode trunk
 switchport trunk allowed vlan 10,20,99
 spanning-tree guard root

end
write memory


! ============================================
! SW2 - CORE SECONDARY ROOT
! ============================================

hostname SW2-CORE-SECONDARY

spanning-tree mode rapid-pvst

! Root Secondary (backup)
spanning-tree vlan 1,10,20,99 root secondary
! Priority 28672

spanning-tree portfast default
spanning-tree portfast bpduguard default

interface GigabitEthernet0/1
 description TRUNK-TO-SW4
 switchport mode trunk
 switchport trunk allowed vlan 10,20,99
 spanning-tree guard root

interface GigabitEthernet0/2
 description TRUNK-TO-SW5
 switchport mode trunk
 switchport trunk allowed vlan 10,20,99
 spanning-tree guard root

end
write memory


! ============================================
! SW3 - ACCESS SWITCH
! ============================================

hostname SW3-ACCESS

spanning-tree mode rapid-pvst

! Priority élevée (jamais Root)
spanning-tree vlan 1,10,20,99 priority 32768

spanning-tree portfast default
spanning-tree portfast bpduguard default

! Uplink SW1 (Root Path)
interface GigabitEthernet0/1
 description TRUNK-TO-SW1-PRIMARY
 switchport mode trunk
 switchport trunk allowed vlan 10,20,99

! Uplink SW4 (Backup)
interface GigabitEthernet0/24
 description TRUNK-TO-SW4
 switchport mode trunk
 switchport trunk allowed vlan 10,20,99

! Access ports Users (VLAN 10)
interface range GigabitEthernet0/2-25
 description USER-PORTS
 switchport mode access
 switchport access vlan 10
 spanning-tree portfast
 spanning-tree bpduguard enable

! Access ports Servers (VLAN 20)
interface range GigabitEthernet0/26-40
 description SERVER-PORTS
 switchport mode access
 switchport access vlan 20
 spanning-tree portfast
 spanning-tree bpduguard enable

end
write memory


! ============================================
! SW4 - ACCESS SWITCH (Configuration similaire)
! ============================================

hostname SW4-ACCESS

spanning-tree mode rapid-pvst
spanning-tree vlan 1,10,20,99 priority 32768
spanning-tree portfast default
spanning-tree portfast bpduguard default

! Uplinks
interface GigabitEthernet0/1
 description TRUNK-TO-SW1
 switchport mode trunk
 switchport trunk allowed vlan 10,20,99

interface GigabitEthernet0/2
 description TRUNK-TO-SW2
 switchport mode trunk
 switchport trunk allowed vlan 10,20,99

interface GigabitEthernet0/23
 description TRUNK-TO-SW3
 switchport mode trunk
 switchport trunk allowed vlan 10,20,99

interface GigabitEthernet0/24
 description TRUNK-TO-SW5
 switchport mode trunk
 switchport trunk allowed vlan 10,20,99

! Access ports
interface range Gi0/3-22
 switchport mode access
 switchport access vlan 10
 spanning-tree portfast
 spanning-tree bpduguard enable

end
write memory
```


VÉRIFICATION
────────────

SW1 (Root) :
```
SW1# show spanning-tree summary

Switch is in rapid-pvst mode
Root bridge for: VLAN0001, VLAN0010, VLAN0020, VLAN0099
Extended system ID           : enabled
PortFast Default             : enabled
PortFast BPDU Guard Default  : enabled


SW1# show spanning-tree vlan 10

VLAN0010
  Spanning tree enabled protocol rstp
  Root ID    Priority    24586
             Address     0011.2233.4455
             This bridge is the root [OK]
             
  Bridge ID  Priority    24586
             Address     0011.2233.4455
             
Interface        Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- -----
Gi0/1            Desg FWD 4         128.1    P2p
Gi0/2            Desg FWD 4         128.2    P2p
```


SW3 (Access) :
```
SW3# show spanning-tree vlan 10

VLAN0010
  Root ID    Priority    24586
             Address     0011.2233.4455
             Cost        4
             Port        1 (GigabitEthernet0/1) [OK] Root Port
             
  Bridge ID  Priority    32778
             Address     aa11.bb22.cc33
             
Interface        Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- -----
Gi0/1            Root FWD 4         128.1    P2p [OK]
Gi0/24           Altn BLK 4         128.24   P2p [OK] Alternate (bloqué)
Gi0/2            Desg FWD 4         128.2    Edge (PortFast)
...
```


Test Failover :
```
! Simuler panne lien SW1-SW3
SW1(config)# interface Gi0/1
SW1(config-if)# shutdown

! Vérifier SW3
SW3# show spanning-tree vlan 10

Interface        Role Sts Cost      Prio.Nbr Type
Gi0/1            Desg FWD 4         128.1    P2p (was Root - Down)
Gi0/24           Root FWD 4         128.24   P2p [OK] Devient Root Port

! Convergence : <1 seconde (RSTP) [OK]
```


═══════════════════════════════════════════════════════════
FIN EXERCICE
═══════════════════════════════════════════════════════════
"""


# ============================================================================
# [DOCS] CONCLUSION CHAPITRE 22
# ============================================================================

"""
[BRAVO] FÉLICITATIONS !

Chapitre 22 : Spanning Tree Protocol (STP) terminé


[GUIDE] RÉCAPITULATIF COMPLET

[OK] Problème boucles Layer 2 (broadcast storm, MAC flapping)
[OK] STP 802.1D (élection Root, états, timers)
[OK] RSTP 802.1w (convergence rapide <1s)
[OK] PVST+ / Rapid PVST+ (Cisco per-VLAN)
[OK] MST 802.1s (multi-instances)
[OK] PortFast, BPDU Guard, Root Guard
[OK] Configuration Cisco complète
[OK] Troubleshooting expert
[OK] Exercice redondance complète


[OBJECTIF] COMPÉTENCES MAÎTRISÉES

[OK] Comprendre STP complet
[OK] Configurer RSTP production
[OK] Optimiser convergence
[OK] Sécuriser STP (BPDU Guard, Root Guard)
[OK] Load balancing PVST+
[OK] Troubleshooter boucles
[OK] Haute disponibilité réseau


[PRO] APPLICATIONS RÉELLES

[OK] Réseaux redondants entreprise
[OK] Campus networks
[OK] Datacenters (availability)
[OK] Certifications CCNA/CCNP
[OK] Network Engineer


[IDEE] POINTS CLÉS

STP Essentiel :
[OK] Prévient boucles Layer 2
[OK] Haute disponibilité
[OK] Failover automatique

Best Practices :
[OK] RSTP (Rapid PVST+) obligatoire
[OK] Root Bridge planifié (core switches)
[OK] PortFast ports access
[OK] BPDU Guard activé
[OK] Root Guard uplinks
[OK] Documentation topologie


[RAPIDE] EXCELLENT TRAVAIL !

STP = FONDATION réseaux redondants.

Vous maîtrisez maintenant :
- Prévention boucles complète
- RSTP convergence rapide
- Protection avancée
- Troubleshooting expert

Compétence CRITIQUE haute disponibilité ! [ARBRE]


═══════════════════════════════════════════════════════════
[GUIDE] FIN DU CHAPITRE 22 - SPANNING TREE PROTOCOL
═══════════════════════════════════════════════════════════
"""

# ============================================================================
# CHAPITRE 23 : ETHERCHANNEL (LINK AGGREGATION)
# ============================================================================

"""
[OBJECTIF] OBJECTIFS DU CHAPITRE

[OK] Concept EtherChannel (agrégation liens)
[OK] Avantages (bande passante, redondance)
[OK] PAgP (Port Aggregation Protocol) - Cisco
[OK] LACP (Link Aggregation Control Protocol) - IEEE 802.3ad
[OK] Modes négociation (On, Desirable, Auto, Active, Passive)
[OK] Load balancing (algorithmes)
[OK] Configuration Layer 2 et Layer 3
[OK] Contraintes et limitations
[OK] EtherChannel Guard
[OK] Troubleshooting EtherChannel
[OK] Exercices ultra-pratiques

[IDEE] POURQUOI ETHERCHANNEL EST ESSENTIEL ?

EtherChannel = Agrégation logique liens physiques

Sans EtherChannel + Liens multiples :
[X] STP bloque liens redondants
[X] Bande passante perdue
[X] 1 seul lien actif

Exemple :
```
SW1 ═══ 1 Gbps ═══ SW2  (3 liens physiques)
```
Sans EtherChannel : 1 Gbps utilisé (STP bloque 2 liens) [X]

Avec EtherChannel :
[OK] 3 Gbps bande passante (agrégation)
[OK] Redondance (failover automatique)
[OK] STP voit 1 lien logique
[OK] Load balancing

EtherChannel = STANDARD réseaux haute performance !
"""


# ----------------------------------------------------------------------------
# [LIEN] PARTIE 1 : CONCEPT ETHERCHANNEL
# ----------------------------------------------------------------------------

"""
ETHERCHANNEL (LINK AGGREGATION)


DÉFINITION

EtherChannel = Regroupement liens physiques en 1 lien logique

Terminologie :
- Cisco : EtherChannel, Port-Channel
- IEEE : Link Aggregation (LAG)
- Linux : Bonding


PRINCIPE

Multiple interfaces physiques -> 1 interface logique

Exemple :
```
        Port-Channel 1
SW1 ╔═══════════════════╗ SW2
    ║ Gi0/1             ║
    ║ Gi0/2  (3 Gbps)   ║
    ║ Gi0/3             ║
    ╚═══════════════════╝
```

STP voit : 1 lien logique (Port-Channel1)
Bande passante : 3 × 1 Gbps = 3 Gbps [OK]


AVANTAGES


1. BANDE PASSANTE AUGMENTÉE
════════════════════════════

Agrégation capacités

2 × 1 Gbps = 2 Gbps
4 × 10 Gbps = 40 Gbps


2. REDONDANCE
═════════════

Si 1 lien down -> Trafic bascule autres liens

Failover automatique [OK]

Pas d'interruption (pas de convergence STP)


3. LOAD BALANCING
═════════════════

Trafic réparti entre liens

Algorithmes multiples (source, destination, flow)


4. STP OPTIMISÉ
═══════════════

STP voit 1 lien logique

Pas de blocage redondance [OK]

Convergence plus rapide


LIMITATIONS


1. MAXIMUM LIENS
════════════════

Cisco : 8 liens actifs max (16 total avec standby)

Standard 802.3ad : 8 liens actifs


2. COMPATIBILITÉ REQUISE
════════════════════════

Tous liens DOIVENT avoir :
[OK] Même vitesse (speed)
[OK] Même duplex
[OK] Même VLAN (Layer 2)
[OK] Même configuration (trunk/access)


3. LOAD BALANCING LIMITÉ
═════════════════════════

Pas round-robin parfait

Basé hash (source/dest)

1 flow = 1 lien (pas réparti)


TYPES ETHERCHANNEL


Layer 2 EtherChannel
════════════════════

Switch-to-switch

Mode : Trunk ou Access

Configuration :
```
interface Port-channel1
 switchport mode trunk
```


Layer 3 EtherChannel
════════════════════

Routed port (IP)

Configuration :
```
interface Port-channel1
 no switchport
 ip address 10.0.0.1 255.255.255.252
```
"""


# ----------------------------------------------------------------------------
# [ACCORD] PARTIE 2 : PROTOCOLES NÉGOCIATION
# ----------------------------------------------------------------------------

"""
PROTOCOLES NÉGOCIATION ETHERCHANNEL


PAgP (PORT AGGREGATION PROTOCOL)
═════════════════════════════════

Cisco propriétaire

Modes :


1. ON
─────

Force EtherChannel (pas de négociation)

Pas de PAgP envoyé

Danger : Mismatch config = boucle


2. DESIRABLE
────────────

Initie négociation activement

Forme EtherChannel si voisin : Desirable ou Auto


3. AUTO
───────

Passif (attend voisin initier)

Forme EtherChannel si voisin : Desirable

[ATTENTION] Auto + Auto = PAS d'EtherChannel


LACP (LINK AGGREGATION CONTROL PROTOCOL)
═════════════════════════════════════════

Standard IEEE 802.3ad / 802.1AX

Multi-vendor [OK]

Modes :


1. ON
─────

Identique PAgP


2. ACTIVE
─────────

Initie négociation activement

Forme EtherChannel si voisin : Active ou Passive


3. PASSIVE
──────────

Passif (attend voisin)

Forme EtherChannel si voisin : Active

[ATTENTION] Passive + Passive = PAS d'EtherChannel


COMPARAISON MODES

┌──────────┬─────────┬──────────┬──────────┐
│  Mode    │   On    │Desirable │   Auto   │
│          │         │ /Active  │ /Passive │
├──────────┼─────────┼──────────┼──────────┤
│ On       │   EC    │    X     │    X     │
│Desirable │    X    │   EC     │   EC     │
│ /Active  │         │          │          │
│Auto      │    X    │   EC     │   Pas    │
│/Passive  │         │          │   EC     │
└──────────┴─────────┴──────────┴──────────┘

EC = EtherChannel formé [OK]
X = Incompatible (boucle potentielle)


RECOMMANDATION

[OK] LACP (standard, multi-vendor)
[OK] Mode Active (négociation)

Éviter :
[X] On (pas de négociation = risque)
[X] PAgP (propriétaire)


LACP PRIORITY

Contrôle quels liens actifs (si > 8)

System Priority : 32768 (défaut)

Port Priority : 32768 (défaut)

Plus BAS = Plus prioritaire

Configuration :
```
lacp system-priority 1000

interface range Gi0/1-2
 lacp port-priority 100
```
"""


# ----------------------------------------------------------------------------
# [SCALES] PARTIE 3 : LOAD BALANCING
# ----------------------------------------------------------------------------

"""
LOAD BALANCING ETHERCHANNEL


PRINCIPE

Trafic réparti entre liens membres

Méthode : Hashing


ALGORITHMES DISPONIBLES

Cisco supporte multiples algorithmes :


1. src-mac
══════════

Hash MAC source

Même source -> Même lien

Usage : Serveurs multiples clients


2. dst-mac
══════════

Hash MAC destination

Même destination -> Même lien

Usage : Clients vers serveur unique


3. src-dst-mac
══════════════

Hash source ET destination MAC

Défaut Layer 2

Meilleure répartition


4. src-ip
═════════

Hash IP source

Layer 3

Usage : Trafic routé


5. dst-ip
═════════

Hash IP destination


6. src-dst-ip
═════════════

Hash source ET destination IP

Défaut Layer 3

Meilleure répartition [OK]


7. src-port
═══════════

Hash port TCP/UDP source


8. dst-port
═══════════

Hash port TCP/UDP destination


9. src-dst-port
═══════════════

Hash source ET destination port


CONFIGURATION

Global :
```
port-channel load-balance src-dst-ip
```

Vérification :
```
show etherchannel load-balance

EtherChannel Load-Balancing Configuration:
        src-dst-ip

EtherChannel Load-Balancing Addresses Used Per-Protocol:
Non-IP: Source XOR Destination MAC address
  IPv4: Source XOR Destination IP address
  IPv6: Source XOR Destination IP address
```


LIMITATIONS LOAD BALANCING


1. FLOW-BASED
═════════════

1 flow = 1 lien (toujours)

Flow : Même source + destination

Pas de répartition intra-flow


2. HASHING STATIQUE
═══════════════════

Pas d'adaptation charge

Possible déséquilibre


EXEMPLE

EtherChannel 2 liens :

Client A (10.0.0.1) -> Serveur (192.168.1.10)
- Hash : 0 -> Lien 1

Client B (10.0.0.2) -> Serveur (192.168.1.10)
- Hash : 0 -> Lien 1 [X]

Client C (10.0.0.3) -> Serveur (192.168.1.10)
- Hash : 1 -> Lien 2

Résultat : Déséquilibre (2 flows lien 1, 1 flow lien 2)


OPTIMISATION

Choisir algorithme selon trafic :

Serveurs multiples :
-> src-dst-ip (répartition maximale)

Serveur unique :
-> src-ip (répartition sources)
"""


# ----------------------------------------------------------------------------
# [CONFIG] PARTIE 4 : CONFIGURATION LAYER 2
# ----------------------------------------------------------------------------

"""
CONFIGURATION ETHERCHANNEL LAYER 2


SYNTAXE BASIQUE

1. Créer Port-Channel interface
2. Configurer Port-Channel (trunk/access)
3. Assigner interfaces physiques au groupe
4. Configurer mode négociation


EXEMPLE TRUNK LACP


SW1 Configuration :
───────────────────

```
! ============================================
! SW1 - ETHERCHANNEL TRUNK LACP
! ============================================

hostname SW1

! Créer Port-Channel
interface Port-channel1
 description TRUNK-TO-SW2
 switchport mode trunk
 switchport trunk allowed vlan 10,20,30

! Assigner interfaces physiques
interface range GigabitEthernet0/1-4
 description MEMBER-PORT-CHANNEL-1
 switchport mode trunk
 switchport trunk allowed vlan 10,20,30
 channel-group 1 mode active
 ! LACP Active

end
write memory
```


SW2 Configuration :
───────────────────

```
hostname SW2

interface Port-channel1
 description TRUNK-TO-SW1
 switchport mode trunk
 switchport trunk allowed vlan 10,20,30

interface range GigabitEthernet0/1-4
 description MEMBER-PORT-CHANNEL-1
 switchport mode trunk
 switchport trunk allowed vlan 10,20,30
 channel-group 1 mode active

end
write memory
```


VÉRIFICATION

```
! Status EtherChannel
show etherchannel summary

Flags:  D - down        P - bundled in port-channel
        I - stand-alone s - suspended
        H - Hot-standby (LACP only)
        R - Layer3      S - Layer2
        U - in use      N - not in use, no aggregation
        f - failed to allocate aggregator

Number of channel-groups in use: 1
Number of aggregators:           1

Group  Port-channel  Protocol    Ports
------+-------------+-----------+-----------------------------------------------
1      Po1(SU)       LACP        Gi0/1(P)    Gi0/2(P)    Gi0/3(P)    Gi0/4(P)
                                 ^ P = Bundled (actif) [OK]


! Détails Port-Channel
show etherchannel 1 summary
show etherchannel 1 port-channel
show etherchannel 1 detail

! Interface Port-Channel
show interfaces Port-channel1

Port-channel1 is up, line protocol is up (connected)
  Hardware is EtherChannel, address is 0011.2233.4455
  MTU 1500 bytes, BW 4000000 Kbit/sec   <- 4 Gbps [OK]
  ...
  Members in this channel: Gi0/1 Gi0/2 Gi0/3 Gi0/4


! LACP neighbor
show lacp neighbor

Flags:  S - Device is requesting Slow LACPDUs
        F - Device is requesting Fast LACPDUs
        A - Device is in Active mode       P - Device is in Passive mode

Channel group 1 neighbors

Partner's information:

          LACP port                        Admin  Oper   Port    Port
Port      Priority  Dev ID          Age    key    key    Number  State
Gi0/1     32768     0011.2233.5566  29s    0x1    0x1    0x102   SA  [OK]
Gi0/2     32768     0011.2233.5566  27s    0x1    0x1    0x103   SA
Gi0/3     32768     0011.2233.5566  25s    0x1    0x1    0x104   SA
Gi0/4     32768     0011.2233.5566  23s    0x1    0x1    0x105   SA

! S = Slow, A = Active
```


EXEMPLE ACCESS PORT

```
interface Port-channel2
 switchport mode access
 switchport access vlan 10

interface range Gi0/5-6
 switchport mode access
 switchport access vlan 10
 channel-group 2 mode active
```


CHANNEL-GROUP OPTIONS

```
channel-group <number> mode {on | active | passive | desirable | auto}
```

Number : 1-64 (selon plateforme)

Mode :
- on : Pas de protocole
- active : LACP actif
- passive : LACP passif
- desirable : PAgP actif
- auto : PAgP passif


CONFIGURATION SUPPLÉMENTAIRE

Load balancing :
```
port-channel load-balance src-dst-ip
```

LACP system priority :
```
lacp system-priority 100
```

LACP port priority :
```
interface Gi0/1
 lacp port-priority 100
```
"""


# ----------------------------------------------------------------------------
# [WEB] PARTIE 5 : CONFIGURATION LAYER 3
# ----------------------------------------------------------------------------

"""
CONFIGURATION ETHERCHANNEL LAYER 3


PRINCIPE

EtherChannel routed (IP assigné)

Usage : Inter-switch L3, routeurs


CONFIGURATION

```
! ============================================
! LAYER 3 ETHERCHANNEL
! ============================================

! Créer Port-Channel L3
interface Port-channel10
 description L3-TRUNK-TO-R2
 no switchport                  ! Routed mode
 ip address 10.0.0.1 255.255.255.252
 ip ospf 1 area 0

! Interfaces physiques
interface range GigabitEthernet0/10-11
 description MEMBER-PO10
 no switchport
 channel-group 10 mode active

end
write memory
```


VÉRIFICATION

```
show etherchannel summary

Group  Port-channel  Protocol    Ports
------+-------------+-----------+-----------------------------------------------
10     Po10(RU)      LACP        Gi0/10(P)   Gi0/11(P)
       ^ R = Layer3 [OK]


show ip interface brief

Interface              IP-Address      OK? Method Status   Protocol
Port-channel10         10.0.0.1        YES manual up       up
GigabitEthernet0/10    unassigned      YES unset  up       up
GigabitEthernet0/11    unassigned      YES unset  up       up


show ip route

O    192.168.1.0/24 [110/20] via 10.0.0.2, 00:15:30, Port-channel10
                                                      ^ Via Po10 [OK]
```


EXEMPLE ROUTEURS

```
! R1
interface Port-channel1
 ip address 10.1.1.1 255.255.255.252
 ip ospf 1 area 0

interface range GigabitEthernet0/0-1
 channel-group 1 mode active

! R2
interface Port-channel1
 ip address 10.1.1.2 255.255.255.252
 ip ospf 1 area 0

interface range GigabitEthernet0/0-1
 channel-group 1 mode active
```
"""


# ----------------------------------------------------------------------------
# [SECURITE] PARTIE 6 : CONTRAINTES ET LIMITATIONS
# ----------------------------------------------------------------------------

"""
CONTRAINTES ETHERCHANNEL


COMPATIBILITÉ STRICTE

Tous liens membres DOIVENT avoir :


1. MÊME VITESSE (SPEED)
═══════════════════════

Exemple INVALIDE :
```
Gi0/1 : 1 Gbps
Gi0/2 : 100 Mbps  [X]
```

Erreur :
```
%EC-5-CANNOT_BUNDLE2: Gi0/2 is not compatible with Gi0/1 and will be suspended (speed of Gi0/1 is 1000, Gi0/2 is 100)
```


2. MÊME DUPLEX
══════════════

Exemple INVALIDE :
```
Gi0/1 : Full-duplex
Gi0/2 : Half-duplex  [X]
```


3. MÊME VLAN (L2)
═════════════════

Trunk :
```
Gi0/1 : trunk allowed vlan 10,20
Gi0/2 : trunk allowed vlan 10,30  [X]
```

Access :
```
Gi0/1 : access vlan 10
Gi0/2 : access vlan 20  [X]
```


4. MÊME MODE (TRUNK/ACCESS)
═══════════════════════════

```
Gi0/1 : switchport mode trunk
Gi0/2 : switchport mode access  [X]
```


5. SPANNING TREE SETTINGS
═════════════════════════

Même priority, cost, etc.


ETHERCHANNEL GUARD

Protection contre misconfig

Détecte liens unidirectionnels

Configuration :
```
spanning-tree etherchannel guard misconfig
```

Si détecté :
```
%SPANTREE-2-CHNL_MISCFG: Detected loop due to etherchannel misconfiguration of Gi0/1
```

Port -> err-disabled


MAXIMUM MEMBRES

Active : 8 liens (défaut)

Standby : 8 liens additionnels (LACP)

Total : 16 liens configurés (8 actifs, 8 standby)

LACP sélectionne 8 meilleurs (priority)


RESTRICTIONS CONFIGURATION

Port-Channel configuré AVANT ou AVEC interfaces

Best practice : Configurer Port-Channel d'abord [OK]

Configuration interfaces propagée automatiquement
"""


# ----------------------------------------------------------------------------
# [OUTIL] PARTIE 7 : TROUBLESHOOTING ETHERCHANNEL
# ----------------------------------------------------------------------------

"""
TROUBLESHOOTING ETHERCHANNEL


PROBLÈMES COURANTS


1. ETHERCHANNEL NE SE FORME PAS
════════════════════════════════

Symptômes :
- Interfaces suspended (s)
- Stand-alone (I)

Vérification :
```
show etherchannel summary

Group  Port-channel  Protocol    Ports
------+-------------+-----------+-----------------------------------------------
1      Po1(SD)       LACP        Gi0/1(s)    Gi0/2(I)
                                  ^ Suspended  ^ Stand-alone
```

Causes :


A. Mode incompatible
────────────────────

```
SW1: mode active
SW2: mode passive  <- Les deux passifs = Pas de négociation
```

Solution : 1 côté active


B. Vitesse différente
─────────────────────

```
show interfaces Gi0/1 | include BW
  MTU 1500 bytes, BW 1000000 Kbit

show interfaces Gi0/2 | include BW
  MTU 1500 bytes, BW 100000 Kbit  <- Différent [X]
```

Solution : Aligner vitesse


C. VLAN mismatch
────────────────

```
show running-config interface Gi0/1
 switchport trunk allowed vlan 10,20

show running-config interface Gi0/2
 switchport trunk allowed vlan 10,30  <- Différent
```

Solution : Aligner VLANs


D. Duplex mismatch
──────────────────

```
show interfaces Gi0/1 | include duplex
  Full-duplex

show interfaces Gi0/2 | include duplex
  Half-duplex  <- Différent
```


2. LIENS SUSPENDED
══════════════════

Erreur :
```
%EC-5-CANNOT_BUNDLE2: Gi0/2 is not compatible with Gi0/1 and will be suspended
```

Debug :
```
show etherchannel 1 detail

...
Port: Gi0/2
------------
Port state    = Up Sngl-port-Bndl  <- Suspended
Channel group = 1           Mode = Active      Gcchange = -
...
Incompatible Reason: speed of Gi0/2 is 100, Gi0/1 is 1000
```

Solution : Corriger incompatibilité


3. LOAD BALANCING DÉSÉQUILIBRÉ
═══════════════════════════════

Symptômes :
- 1 lien saturé, autres idle

Vérification :
```
show interfaces Port-channel1 | include load
  5 minute input rate 900000000 bits/sec
  
show interfaces Gi0/1 | include load
  5 minute input rate 850000000 bits/sec  <- Saturé
  
show interfaces Gi0/2 | include load
  5 minute input rate 50000000 bits/sec   <- Idle
```

Cause : Hashing

Exemple :
- Algorithme : dst-mac
- Trafic : Tous clients -> 1 serveur (même MAC dst)
- Résultat : Hash identique -> Même lien [X]

Solution : Changer algorithme
```
port-channel load-balance src-dst-ip
```


4. ERR-DISABLED (ETHERCHANNEL GUARD)
═════════════════════════════════════

```
show interfaces status err-disabled

Port      Name               Status       Reason
Gi0/1     Member-Po1         err-disabled channel-misconfig
```

Vérification :
```
show etherchannel summary
! Identifier misconfig

show spanning-tree interface Gi0/1 detail
! Vérifier etherchannel guard
```

Récupération :
```
interface Gi0/1
 shutdown
 ! Corriger config
 no shutdown
```


5. FLAPPING ETHERCHANNEL
════════════════════════

Liens up/down répétés

Logs :
```
%LINEPROTO-5-UPDOWN: Line protocol on Interface Port-channel1, changed state to down
%LINEPROTO-5-UPDOWN: Line protocol on Interface Port-channel1, changed state to up
```

Causes :
- Câbles défectueux
- SFP instables
- Problème physique

Solution : Remplacer hardware


COMMANDES DIAGNOSTIC


Show EtherChannel
─────────────────

```
show etherchannel summary
show etherchannel 1 summary
show etherchannel 1 detail
show etherchannel 1 port-channel
show etherchannel load-balance
```


Show Interfaces
───────────────

```
show interfaces Port-channel1
show interfaces Gi0/1 etherchannel
```


Show LACP
─────────

```
show lacp neighbor
show lacp internal
show lacp counters
```


Show PAgP
─────────

```
show pagp neighbor
show pagp counters
```


Debug
─────

```
debug etherchannel events
debug etherchannel errors
debug lacp all
debug pagp all
```


SCÉNARIOS


Scénario 1 : Configuration ordre incorrect
───────────────────────────────────────────

Mauvais :
```
interface Gi0/1
 channel-group 1 mode active
 switchport mode trunk  <- Après channel-group

! Port-Channel1 pas configuré = Config par défaut (access)
! Gi0/1 suspended (trunk vs access mismatch)
```

Correct :
```
! 1. Créer et configurer Port-Channel
interface Port-channel1
 switchport mode trunk

! 2. Assigner interfaces
interface Gi0/1
 switchport mode trunk
 channel-group 1 mode active
```


Scénario 2 : On + LACP mismatch
────────────────────────────────

```
SW1:
interface Gi0/1
 channel-group 1 mode on

SW2:
interface Gi0/1
 channel-group 1 mode active

! Incompatible : On ne négocie pas
! EtherChannel ne se forme pas
! STP peut bloquer = Boucle
```

Solution : Aligner modes (les deux active)
"""


# ----------------------------------------------------------------------------
# [COURS] EXERCICES PRATIQUES
# ----------------------------------------------------------------------------

"""
[IDEE] EXERCICES PRATIQUES


═══════════════════════════════════════════════════════════
EXERCICE 1 : ETHERCHANNEL L2 TRUNK
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Topologie :
```
SW1 (Core) ════════════ SW2 (Core)
            4 × 1 Gbps
```

Requis :
1. EtherChannel 4 liens (Gi0/1-4)
2. LACP mode active
3. Trunk 802.1Q
4. VLANs allowed : 10,20,30,99
5. Load balancing : src-dst-ip


[OK] CORRECTION

```
! ============================================
! SW1 - CORE
! ============================================

hostname SW1-CORE

! Load balancing
port-channel load-balance src-dst-ip

! Port-Channel interface
interface Port-channel1
 description TRUNK-TO-SW2-CORE
 switchport mode trunk
 switchport trunk allowed vlan 10,20,30,99
 switchport nonegotiate

! Physical interfaces
interface range GigabitEthernet0/1-4
 description MEMBER-PO1-TO-SW2
 switchport mode trunk
 switchport trunk allowed vlan 10,20,30,99
 switchport nonegotiate
 channel-group 1 mode active

end
write memory


! ============================================
! SW2 - CORE
! ============================================

hostname SW2-CORE

port-channel load-balance src-dst-ip

interface Port-channel1
 description TRUNK-TO-SW1-CORE
 switchport mode trunk
 switchport trunk allowed vlan 10,20,30,99
 switchport nonegotiate

interface range GigabitEthernet0/1-4
 description MEMBER-PO1-TO-SW1
 switchport mode trunk
 switchport trunk allowed vlan 10,20,30,99
 switchport nonegotiate
 channel-group 1 mode active

end
write memory
```


VÉRIFICATION
────────────

```
SW1# show etherchannel summary

Group  Port-channel  Protocol    Ports
------+-------------+-----------+-----------------------------------------------
1      Po1(SU)       LACP        Gi0/1(P)  Gi0/2(P)  Gi0/3(P)  Gi0/4(P)
                                 ^ Tous bundled [OK]


SW1# show interfaces Port-channel1

Port-channel1 is up, line protocol is up (connected)
  Hardware is EtherChannel, address is 0011.2233.4455
  MTU 1500 bytes, BW 4000000 Kbit/sec   <- 4 Gbps [OK]
  Members in this channel: Gi0/1 Gi0/2 Gi0/3 Gi0/4


SW1# show etherchannel 1 detail

Group: 1
----------
Group state = L2
Ports: 4   Maxports = 16
Port-channels: 1 Max Port-channels = 16
Protocol:   LACP
Minimum Links: 0

Port-channel1:
(Aggregation Protocol:   LACP)
            Port        Status        Channel group
            ------      ----------    -------------
            Gi0/1       Bundled       1
            Gi0/2       Bundled       1
            Gi0/3       Bundled       1
            Gi0/4       Bundled       1


SW1# show lacp neighbor

Flags:  S - Device is requesting Slow LACPDUs
        F - Device is requesting Fast LACPDUs
        A - Device is in Active mode

Channel group 1 neighbors

Partner's information:

          LACP port                        Admin  Oper   Port    Port
Port      Priority  Dev ID          Age    key    key    Number  State
Gi0/1     32768     0011.2233.5566  5s     0x1    0x1    0x102   SA
Gi0/2     32768     0011.2233.5566  3s     0x1    0x1    0x103   SA
Gi0/3     32768     0011.2233.5566  7s     0x1    0x1    0x104   SA
Gi0/4     32768     0011.2233.5566  9s     0x1    0x1    0x105   SA


SW1# show etherchannel load-balance

EtherChannel Load-Balancing Configuration:
        src-dst-ip

EtherChannel Load-Balancing Addresses Used Per-Protocol:
Non-IP: Source XOR Destination MAC address
  IPv4: Source XOR Destination IP address [OK]
  IPv6: Source XOR Destination IP address


SW1# show interfaces trunk

Port        Mode             Encapsulation  Status        Native vlan
Po1         on               802.1q         trunking      1

Port        Vlans allowed on trunk
Po1         10,20,30,99 [OK]
```


Test Failover :
```
! Déconnecter Gi0/1
SW1(config)# interface Gi0/1
SW1(config-if)# shutdown

SW1# show etherchannel summary

Group  Port-channel  Protocol    Ports
------+-------------+-----------+-----------------------------------------------
1      Po1(SU)       LACP        Gi0/1(D)  Gi0/2(P)  Gi0/3(P)  Gi0/4(P)
                                 ^ Down      ^ Toujours actifs [OK]

! Bande passante réduite : 4 Gbps -> 3 Gbps
! Mais trafic continue sans interruption [OK]

SW1# show interfaces Port-channel1 | include BW
  MTU 1500 bytes, BW 3000000 Kbit/sec   <- 3 Gbps
```


═══════════════════════════════════════════════════════════
EXERCICE 2 : ETHERCHANNEL L3 (Routeurs)
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

2 routeurs interconnectés :
```
R1 ══════════ R2
   2 × 10 Gbps
```

Requis :
1. EtherChannel L3 (2 liens 10 Gbps)
2. LACP
3. IP : 10.0.0.0/30 (R1: .1, R2: .2)
4. OSPF Area 0


[OK] CORRECTION

```
! ============================================
! R1
! ============================================

hostname R1

interface Port-channel10
 description L3-TO-R2
 ip address 10.0.0.1 255.255.255.252
 ip ospf 1 area 0

interface range TenGigabitEthernet0/0-1
 description MEMBER-PO10-TO-R2
 no switchport
 channel-group 10 mode active

router ospf 1
 router-id 1.1.1.1

end
write memory


! ============================================
! R2
! ============================================

hostname R2

interface Port-channel10
 description L3-TO-R1
 ip address 10.0.0.2 255.255.255.252
 ip ospf 1 area 0

interface range TenGigabitEthernet0/0-1
 description MEMBER-PO10-TO-R1
 no switchport
 channel-group 10 mode active

router ospf 1
 router-id 2.2.2.2

end
write memory
```


VÉRIFICATION
────────────

```
R1# show etherchannel summary

Group  Port-channel  Protocol    Ports
------+-------------+-----------+-----------------------------------------------
10     Po10(RU)      LACP        Te0/0(P)    Te0/1(P)
       ^ R = Layer3, U = In use [OK]


R1# show ip interface brief | include Port-channel
Port-channel10         10.0.0.1        YES manual up       up


R1# ping 10.0.0.2
Success rate is 100 percent (5/5) [OK]


R1# show ip ospf neighbor

Neighbor ID     Pri   State           Dead Time   Address         Interface
2.2.2.2           0   FULL/  -        00:00:35    10.0.0.2        Port-channel10
                                                                  ^ OSPF via Po10 [OK]


R1# show ip route ospf
(Routes OSPF via 10.0.0.2 Port-channel10)
```


═══════════════════════════════════════════════════════════
FIN EXERCICES
═══════════════════════════════════════════════════════════
"""


# ============================================================================
# [DOCS] CONCLUSION CHAPITRE 23
# ============================================================================

"""
[BRAVO] FÉLICITATIONS !

Chapitre 23 : EtherChannel terminé (ultra-détaillé)


[GUIDE] RÉCAPITULATIF COMPLET

[OK] Concept EtherChannel (agrégation logique)
[OK] Avantages (bande passante × N, redondance, failover)
[OK] PAgP (Cisco) vs LACP (Standard IEEE 802.3ad)
[OK] Modes négociation (On, Active, Passive, Desirable, Auto)
[OK] Load balancing (algorithmes multiples)
[OK] Configuration L2 (trunk, access)
[OK] Configuration L3 (routed)
[OK] Contraintes strictes (speed, duplex, VLAN)
[OK] EtherChannel Guard
[OK] Troubleshooting complet
[OK] 2 Exercices pratiques (L2 trunk, L3 routed)


[OBJECTIF] COMPÉTENCES MAÎTRISÉES

[OK] Comprendre agrégation liens
[OK] Configurer LACP production
[OK] Load balancing optimisé
[OK] EtherChannel L2 et L3
[OK] Troubleshooter problèmes
[OK] Haute performance réseau


[PRO] APPLICATIONS RÉELLES

[OK] Data centers (bande passante)
[OK] Campus core (redondance)
[OK] Server farms (agrégation)
[OK] Certifications CCNA/CCNP
[OK] Network Engineer


[IDEE] POINTS CLÉS

EtherChannel Essentiel :
[OK] Bande passante multipliée
[OK] Redondance sans STP blocking
[OK] Failover automatique
[OK] Load balancing

Best Practices :
[OK] LACP (standard, pas PAgP)
[OK] Mode Active (négociation)
[OK] Load balancing adapté (src-dst-ip)
[OK] Maximum 8 liens actifs
[OK] Compatibilité stricte (speed, duplex, VLAN)
[OK] Configuration Port-Channel d'abord
[OK] EtherChannel Guard activé

Éviter :
[X] Mode On (pas de négociation)
[X] Mismatch configuration
[X] PAgP (propriétaire)


[RAPIDE] EXCELLENT TRAVAIL !

EtherChannel = STANDARD haute performance.

Vous maîtrisez maintenant :
- Agrégation liens complète
- LACP configuration
- Load balancing
- Redondance optimale
- Troubleshooting expert

Compétence ESSENTIELLE réseaux modernes ! [RAPIDE]


═══════════════════════════════════════════════════════════
[GUIDE] FIN DU CHAPITRE 23 - ETHERCHANNEL
═══════════════════════════════════════════════════════════
"""

# ============================================================================
# CHAPITRE 24 : FIRST HOP REDUNDANCY PROTOCOLS (FHRP)
# ============================================================================

"""
[OBJECTIF] OBJECTIFS DU CHAPITRE

[OK] Problème Single Point of Failure (Gateway)
[OK] Concept First Hop Redundancy
[OK] HSRP (Hot Standby Router Protocol) - Cisco
[OK] VRRP (Virtual Router Redundancy Protocol) - Standard
[OK] GLBP (Gateway Load Balancing Protocol) - Cisco
[OK] Élection Active/Standby
[OK] Preemption et Priority
[OK] Timers et tracking
[OK] Authentication
[OK] Configuration HSRP/VRRP/GLBP
[OK] Versions (HSRPv1, HSRPv2, VRRPv2, VRRPv3)
[OK] Load balancing (GLBP)
[OK] Troubleshooting FHRP
[OK] Exercices ultra-pratiques

[IDEE] POURQUOI FHRP EST CRITIQUE ?

FHRP = Redondance passerelle par défaut (gateway)

Sans FHRP (Gateway unique) :
[X] Single Point of Failure (SPOF)
[X] Si gateway down -> Réseau DOWN
[X] Pas de failover automatique

Exemple :
```
PCs (192.168.1.0/24)
     v
Default Gateway: R1 (192.168.1.1)
     v
   Internet
```

Si R1 down -> TOUS PCs perdent Internet [X]

Avec FHRP :
[OK] Multiple gateways physiques
[OK] 1 IP virtuelle (VIP)
[OK] Failover automatique (sub-second)
[OK] Haute disponibilité [OK]

FHRP = OBLIGATOIRE réseaux critiques !
"""


# ----------------------------------------------------------------------------
# [PLUGIN] PARTIE 1 : PROBLÈME & CONCEPT FHRP
# ----------------------------------------------------------------------------

"""
FIRST HOP REDUNDANCY


PROBLÈME SINGLE POINT OF FAILURE

Topologie typique :
```
    PCs (VLAN 10)
    192.168.10.0/24
         |
    Default Gateway
    192.168.10.1 (R1)
         |
      Internet
```

Configuration PC :
```
IP: 192.168.10.10
Gateway: 192.168.10.1
```

Problème : Si R1 down -> Réseau inaccessible [X]

Solutions SANS FHRP (inadéquates) :


1. CHANGER MANUELLEMENT GATEWAY
════════════════════════════════

Admin change configuration PCs :
Gateway: 192.168.10.1 -> 192.168.10.2

[X] Temps intervention (minutes/heures)
[X] Downtime prolongé
[X] Pas scalable


2. PROTOCOLE ROUTAGE (RIP/OSPF)
════════════════════════════════

PCs écoutent annonces routage

[X] PCs pas routeurs (pas de support)
[X] Overhead
[X] Complexité


3. PROXY ARP
════════════

Routeur backup répond ARP

[X] Pas de failover rapide
[X] Dépend cache ARP


SOLUTION : FHRP

Multiple routeurs partagent IP virtuelle (VIP)

1 routeur Active (forward trafic)
Autres Standby (backup)

Si Active down -> Standby devient Active instantanément [OK]


PRINCIPE FHRP

Topologie :
```
    PCs (VLAN 10)
    192.168.10.0/24
         |
    VIP: 192.168.10.1 (Virtuelle)
       /   \
      /     \
   R1        R2
  .2 (Active) .3 (Standby)
     |        |
   Internet
```

Configuration PC :
```
Gateway: 192.168.10.1 (VIP)
```

Fonctionnement :
1. R1 = Active (répond VIP)
2. R2 = Standby (écoute)
3. Si R1 down -> R2 devient Active
4. PC continue utiliser VIP (pas de changement)


COMPOSANTS FHRP


1. VIRTUAL IP (VIP)
═══════════════════

IP partagée routeurs

Gateway configurée PCs

Exemple : 192.168.10.1


2. VIRTUAL MAC
══════════════

MAC virtuelle (unique par protocole)

HSRP : 0000.0c07.acXX (XX = group)
VRRP : 0000.5e00.01XX
GLBP : 0007.b400.XXYY


3. ACTIVE ROUTER
════════════════

Forward trafic VIP

Envoie Hellos


4. STANDBY ROUTER
═════════════════

Backup (écoute Hellos Active)

Prend relais si Active down


5. PRIORITY
═══════════

Détermine Active/Standby

Plus ÉLEVÉE = Active

Range : 0-255 (défaut 100)


6. PREEMPTION
═════════════

Routeur priority supérieure reprend rôle Active

Désactivé par défaut (HSRP)


TYPES FHRP


HSRP (HOT STANDBY ROUTER PROTOCOL)
═══════════════════════════════════

Cisco propriétaire

Versions : HSRPv1, HSRPv2

Rôles : Active, Standby, Listen

Default priority : 100


VRRP (VIRTUAL ROUTER REDUNDANCY PROTOCOL)
══════════════════════════════════════════

Standard IEEE (RFC 5798)

Versions : VRRPv2 (IPv4), VRRPv3 (IPv4+IPv6)

Rôles : Master, Backup

Default priority : 100


GLBP (GATEWAY LOAD BALANCING PROTOCOL)
═══════════════════════════════════════

Cisco propriétaire

Rôles : AVG (Active Virtual Gateway), AVF (Active Virtual Forwarder)

Avantage unique : Load balancing [OK]

Default priority : 100


COMPARAISON

┌──────────────┬─────────┬─────────┬─────────┐
│   Critère    │  HSRP   │  VRRP   │  GLBP   │
├──────────────┼─────────┼─────────┼─────────┤
│ Vendor       │  Cisco  │Standard │  Cisco  │
│ Active/      │ Active/ │ Master/ │ AVG/AVF │
│ Standby      │ Standby │ Backup  │         │
├──────────────┼─────────┼─────────┼─────────┤
│ Priority     │ 0-255   │ 1-254   │ 1-255   │
│ (défaut)     │ (100)   │ (100)   │ (100)   │
├──────────────┼─────────┼─────────┼─────────┤
│ Preemption   │ Manual  │  Auto   │ Manual  │
├──────────────┼─────────┼─────────┼─────────┤
│ Load Balance │  Non    │  Non    │  Oui [OK] │
├──────────────┼─────────┼─────────┼─────────┤
│ Timers       │ Hello 3s│ Advert  │ Hello 3s│
│              │ Hold 10s│  1s     │ Hold 10s│
├──────────────┼─────────┼─────────┼─────────┤
│ Auth         │ MD5     │ MD5     │ MD5/txt │
└──────────────┴─────────┴─────────┴─────────┘
"""


# ----------------------------------------------------------------------------
# [HOT] PARTIE 2 : HSRP (HOT STANDBY ROUTER PROTOCOL)
# ----------------------------------------------------------------------------

"""
HSRP (HOT STANDBY ROUTER PROTOCOL)


CISCO PROPRIÉTAIRE

Développé : 1998

Standard de facto réseaux Cisco


VERSIONS


HSRPv1
══════

Original

Group range : 0-255

Virtual MAC : 0000.0c07.acXX (XX = group number)

Multicast : 224.0.0.2 (All routers)


HSRPv2
══════

Améliorations :

- Group range : 0-4095 (vs 0-255)
- Virtual MAC : 0000.0c9f.fXXX (XXX = group)
- Multicast : 224.0.0.102 (HSRP specific)
- Millisecond timers
- IPv6 support (via VRRPv3 recommandé)

Recommandé : HSRPv2 [OK]


ÉTATS HSRP

Routeur traverse états :


1. INITIAL
══════════

Démarrage

HSRP pas configuré ou interface down


2. LEARN
════════

Attente Hello pour apprendre VIP (si non configurée)


3. LISTEN
═════════

Écoute Hellos

Pas Active ni Standby


4. SPEAK
════════

Participe élection

Envoie Hellos


5. STANDBY
══════════

Backup router

Prêt prendre relais


6. ACTIVE
═════════

Forward trafic VIP [OK]

Répond ARP pour VIP


ÉLECTION ACTIVE/STANDBY

Critères (ordre priorité) :

1. **Priority la plus ÉLEVÉE**
   - Range : 0-255
   - Défaut : 100

2. **IP la plus ÉLEVÉE** (si priority égale)


Exemple :
```
R1 : Priority 150, IP 192.168.10.2
R2 : Priority 100, IP 192.168.10.3

R1 = Active (150 > 100) [OK]
R2 = Standby
```


PREEMPTION

Par défaut : DÉSACTIVÉ

Si activé : Routeur priority supérieure reprend Active

Configuration :
```
standby 1 preempt
```

Exemple sans preemption :
```
T=0 : R1 (priority 100) boot -> Active
T=5 : R2 (priority 150) boot -> Standby (pas de preempt)

R1 reste Active (150 > 100 mais pas de preempt) [X]
```

Avec preemption :
```
T=0 : R1 (priority 100) boot -> Active
T=5 : R2 (priority 150) boot -> Standby
      R2 preempt -> devient Active [OK]
      R1 -> Standby
```


TIMERS HSRP

Hello Timer : 3 secondes (défaut)
Hold Timer : 10 secondes (défaut)

Si Standby ne reçoit pas Hello pendant Hold Time :
-> Devient Active

Configuration :
```
standby 1 timers 1 3
! Hello 1s, Hold 3s (failover rapide)
```

[ATTENTION] Tous routeurs group doivent avoir mêmes timers


TRACKING

Surveille interface/object

Si down -> Diminue priority

Exemple :
```
R1 : Priority 150
Track interface Gi0/1 (uplink Internet)

Si Gi0/1 down :
Priority 150 - 50 = 100
-> R2 (priority 120) devient Active [OK]
```

Configuration :
```
track 1 interface GigabitEthernet0/1 line-protocol

interface Vlan10
 standby 1 track 1 decrement 50
```


AUTHENTICATION

Sécurise Hellos HSRP

Types :


Plaintext (HSRPv1/v2)
─────────────────────

```
standby 1 authentication text MyPassword
```

[ATTENTION] Mot de passe clair (insécure)


MD5 (HSRPv2)
────────────

```
! Key chain
key chain HSRP-KEYS
 key 1
  key-string SecureHSRP123!

! Interface
standby 1 authentication md5 key-chain HSRP-KEYS
```

Recommandé : MD5 [OK]


VIRTUAL MAC

HSRP génère MAC virtuelle

HSRPv1 : 0000.0c07.acXX
- XX = Group number (hex)

HSRPv2 : 0000.0c9f.fXXX
- XXX = Group number (hex)

Exemple :
Group 1 (HSRPv1) : 0000.0c07.ac01
Group 10 (HSRPv2) : 0000.0c9f.f00a


MESSAGES HSRP


Hello
─────

Envoyé par Active et Standby

Contient :
- Priority
- State
- VIP
- Authentication


Coup
────

Annonce transition Active

Envoyé nouveau Active


Resign
──────

Annonce démission Active
"""


# ----------------------------------------------------------------------------
# [CONFIG] PARTIE 3 : CONFIGURATION HSRP
# ----------------------------------------------------------------------------

"""
CONFIGURATION HSRP


SYNTAXE BASIQUE

```
interface <interface>
 standby <group> ip <virtual-ip>
 standby <group> priority <0-255>
 standby <group> preempt
 standby <group> timers <hello> <hold>
```


EXEMPLE SIMPLE


Topologie :
```
    VLAN 10 (192.168.10.0/24)
         |
    VIP: .1
       /   \
     R1     R2
    .2      .3
```


R1 Configuration (Active) :
────────────────────────────

```
! ============================================
! R1 - HSRP ACTIVE
! ============================================

hostname R1

interface GigabitEthernet0/0
 description VLAN10-GATEWAY
 ip address 192.168.10.2 255.255.255.0
 
 ! HSRP Configuration
 standby version 2                    ! HSRPv2
 standby 1 ip 192.168.10.1           ! Virtual IP
 standby 1 priority 150              ! Priority élevée (Active)
 standby 1 preempt                   ! Preemption activée
 standby 1 timers 1 3                ! Hello 1s, Hold 3s

 no shutdown

end
write memory
```


R2 Configuration (Standby) :
─────────────────────────────

```
hostname R2

interface GigabitEthernet0/0
 description VLAN10-GATEWAY
 ip address 192.168.10.3 255.255.255.0
 
 standby version 2
 standby 1 ip 192.168.10.1
 standby 1 priority 100              ! Priority défaut (Standby)
 standby 1 preempt
 standby 1 timers 1 3

 no shutdown

end
write memory
```


VÉRIFICATION

```
R1# show standby

GigabitEthernet0/0 - Group 1 (version 2)
  State is Active
    2 state changes, last state change 00:05:30
  Virtual IP address is 192.168.10.1
  Active virtual MAC address is 0000.0c9f.f001
    Local virtual MAC address is 0000.0c9f.f001 (v2 default)
  Hello time 1 sec, hold time 3 sec
    Next hello sent in 0.512 secs
  Preemption enabled
  Active router is local
  Standby router is 192.168.10.3, priority 100 (expires in 2.608 sec)
  Priority 150 (configured 150)
  Group name is "hsrp-Gi0/0-1" (default)


R1# show standby brief

                     P indicates configured to preempt.
                     |
Interface   Grp  Pri P State   Active          Standby         Virtual IP
Gi0/0       1    150 P Active  local           192.168.10.3    192.168.10.1
```


R2 Vérification :
```
R2# show standby brief

Interface   Grp  Pri P State    Active          Standby         Virtual IP
Gi0/0       1    100 P Standby  192.168.10.2    local           192.168.10.1
                     ^ Standby                  ^ R2 = Standby
```


Test Failover :
```
! Simuler panne R1
R1(config)# interface Gi0/0
R1(config-if)# shutdown

! R2 devient Active
R2# show standby brief

Interface   Grp  Pri P State   Active          Standby         Virtual IP
Gi0/0       1    100 P Active  local           unknown         192.168.10.1
                     ^ Active maintenant [OK]

! Temps failover : ~3 secondes (Hold timer)
```


CONFIGURATION AVEC TRACKING

```
! R1
track 1 interface GigabitEthernet0/1 line-protocol
 ! Track uplink Internet

interface GigabitEthernet0/0
 standby version 2
 standby 1 ip 192.168.10.1
 standby 1 priority 150
 standby 1 preempt
 standby 1 track 1 decrement 60
 ! Si Gi0/1 down : Priority 150 - 60 = 90
 ! R2 (priority 100) devient Active [OK]
```


AUTHENTICATION MD5

```
! Key chain
key chain HSRP-AUTH
 key 1
  key-string MySecretHSRP2024!

! Interface
interface GigabitEthernet0/0
 standby version 2
 standby 1 ip 192.168.10.1
 standby 1 authentication md5 key-chain HSRP-AUTH
```


MULTIPLE GROUPS (LOAD BALANCING)

HSRP ne fait PAS load balancing natif

Mais : Multiple groups par VLAN

```
VLAN 10 :
- Group 1 : R1 Active (VIP .1)
- Group 2 : R2 Active (VIP .2)

PCs VLAN 10 :
- 50% gateway .1 (via R1)
- 50% gateway .2 (via R2)
```

Configuration :
```
! R1
interface Vlan10
 ip address 192.168.10.2 255.255.255.0
 standby 1 ip 192.168.10.1
 standby 1 priority 150    ! Active group 1
 standby 2 ip 192.168.10.254
 standby 2 priority 100    ! Standby group 2

! R2
interface Vlan10
 ip address 192.168.10.3 255.255.255.0
 standby 1 ip 192.168.10.1
 standby 1 priority 100    ! Standby group 1
 standby 2 ip 192.168.10.254
 standby 2 priority 150    ! Active group 2
```
"""


# ----------------------------------------------------------------------------
# [WEB] PARTIE 4 : VRRP (VIRTUAL ROUTER REDUNDANCY PROTOCOL)
# ----------------------------------------------------------------------------

"""
VRRP (VIRTUAL ROUTER REDUNDANCY PROTOCOL)


STANDARD IEEE

RFC 5798 (VRRPv3)

Multi-vendor [OK]


DIFFÉRENCES vs HSRP

┌──────────────────┬─────────┬─────────┐
│    Critère       │  HSRP   │  VRRP   │
├──────────────────┼─────────┼─────────┤
│ Rôles            │ Active/ │ Master/ │
│                  │ Standby │ Backup  │
├──────────────────┼─────────┼─────────┤
│ Priority range   │ 0-255   │ 1-254   │
├──────────────────┼─────────┼─────────┤
│ Priority défaut  │ 100     │ 100     │
├──────────────────┼─────────┼─────────┤
│ Preemption       │ Manual  │ Auto [OK] │
├──────────────────┼─────────┼─────────┤
│ Timers (défaut)  │ Hello 3s│ Advert  │
│                  │ Hold 10s│  1s     │
├──────────────────┼─────────┼─────────┤
│ Virtual MAC      │0000.0c9f│0000.5e00│
│                  │  .fXXX  │  .01XX  │
├──────────────────┼─────────┼─────────┤
│ IP Owner         │  Non    │ Oui [OK]  │
└──────────────────┴─────────┴─────────┘


IP OWNER

Routeur possédant VIP comme IP réelle

Priority automatique : 255

Master garanti

Exemple :
```
R1 : IP 192.168.10.1 (réelle)
VRRP : VIP 192.168.10.1

R1 = IP Owner -> Master (priority 255) [OK]
```


VERSIONS VRRP


VRRPv2
══════

IPv4 uniquement

RFC 3768


VRRPv3
══════

IPv4 et IPv6

RFC 5798

Recommandé [OK]


CONFIGURATION VRRP


Syntaxe :
```
fhrp version vrrp v3

interface <interface>
 vrrp <group> address-family ipv4
  address <virtual-ip> [primary]
  priority <1-254>
  timers advertise <interval>
  authentication text <password>
```


Exemple :
```
! R1 (Master)
fhrp version vrrp v3

interface GigabitEthernet0/0
 ip address 192.168.10.2 255.255.255.0
 vrrp 1 address-family ipv4
  address 192.168.10.1 primary
  priority 150
  timers advertise 1

! R2 (Backup)
fhrp version vrrp v3

interface GigabitEthernet0/0
 ip address 192.168.10.3 255.255.255.0
 vrrp 1 address-family ipv4
  address 192.168.10.1 primary
  priority 100
  timers advertise 1
```


VÉRIFICATION

```
R1# show vrrp

GigabitEthernet0/0 - Group 1 - Address-Family IPv4
  State is Master
  State duration 5 mins 30.123 secs
  Virtual IP address is 192.168.10.1
  Virtual MAC address is 0000.5e00.0101
  Advertisement interval is 1000 msec
  Preemption enabled
  Priority is 150
  Master Router is 192.168.10.2 (local), priority is 150
  Master Advertisement interval is 1000 msec
  Master Down interval is 3609 msec


R1# show vrrp brief

Interface          Grp A-F Pri Time  Own Pre State   Master addr/Group addr
Gi0/0              1   IPv4 150 3609       Y  Master  192.168.10.2
                                                       192.168.10.1
```
"""


# ----------------------------------------------------------------------------
# [SCALES] PARTIE 5 : GLBP (GATEWAY LOAD BALANCING PROTOCOL)
# ----------------------------------------------------------------------------

"""
GLBP (GATEWAY LOAD BALANCING PROTOCOL)


CISCO PROPRIÉTAIRE

Unique avantage : LOAD BALANCING [OK]


PRINCIPE

Tous routeurs actifs simultanément

AVG (Active Virtual Gateway) : 1 routeur
- Coordonne group
- Assigne MAC virtuelles

AVF (Active Virtual Forwarder) : Tous routeurs
- Forward trafic
- MAC virtuelle unique par routeur


FONCTIONNEMENT

Topologie :
```
    PCs
     |
   VIP .1
   /  |  \
  R1  R2  R3
 AVG AVF AVF
```

Process :
1. PC envoie ARP pour VIP (.1)
2. AVG répond avec MAC virtuelle (rotation)
3. Trafic réparti entre R1, R2, R3 [OK]


RÔLES GLBP


AVG (ACTIVE VIRTUAL GATEWAY)
═════════════════════════════

1 par group

Élu par priority (identique HSRP)

Fonctions :
- Répond ARP pour VIP
- Assigne MAC virtuelles AVF
- Coordonne load balancing


AVF (ACTIVE VIRTUAL FORWARDER)
═══════════════════════════════

Tous routeurs

Forward trafic

MAC virtuelle : 0007.b400.XXYY
- XX = Group
- YY = Forwarder number


LOAD BALANCING METHODS


1. ROUND-ROBIN (Défaut)
═══════════════════════

ARP responses alternent MAC

Répartition égale [OK]


2. WEIGHTED
═══════════

Basé poids (weighting)

Routeurs plus puissants reçoivent plus trafic


3. HOST-DEPENDENT
═════════════════

Même host -> Même MAC (cohérence)


CONFIGURATION GLBP

```
! R1 (AVG)
interface GigabitEthernet0/0
 ip address 192.168.10.2 255.255.255.0
 glbp 1 ip 192.168.10.1
 glbp 1 priority 150
 glbp 1 preempt
 glbp 1 load-balancing round-robin
 glbp 1 timers 1 3

! R2 (AVF)
interface GigabitEthernet0/0
 ip address 192.168.10.3 255.255.255.0
 glbp 1 ip 192.168.10.1
 glbp 1 priority 100
 glbp 1 preempt
 glbp 1 load-balancing round-robin
 glbp 1 timers 1 3

! R3 (AVF)
interface GigabitEthernet0/0
 ip address 192.168.10.4 255.255.255.0
 glbp 1 ip 192.168.10.1
 glbp 1 priority 100
 glbp 1 preempt
 glbp 1 load-balancing round-robin
 glbp 1 timers 1 3
```


VÉRIFICATION

```
R1# show glbp

GigabitEthernet0/0 - Group 1
  State is Active
    2 state changes, last state change 00:10:15
  Virtual IP address is 192.168.10.1
  Hello time 1 sec, hold time 3 sec
    Next hello sent in 0.512 secs
  Redirect time 600 sec, forwarder timeout 14400 sec
  Preemption enabled, min delay 0 sec
  Active is local
  Standby is 192.168.10.3, priority 100 (expires in 2.5 sec)
  Priority 150 (configured)
  Weighting 100 (default 100), thresholds: lower 1, upper 100
  Load balancing: round-robin
  Group members:
    0011.2233.4455 (192.168.10.2) local
    0011.2233.5566 (192.168.10.3)
    0011.2233.6677 (192.168.10.4)
  There are 3 forwarders (1 active)
  Forwarder 1
    State is Active
      1 state change, last state change 00:10:10
    MAC address is 0007.b400.0101 (default)
    Owner ID is 0011.2233.4455
    Redirection enabled
    Preemption enabled, min delay 30 sec
    Active is local, weighting 100
  Forwarder 2
    State is Active
      MAC address is 0007.b400.0102 (learnt)
      Owner ID is 0011.2233.5566
  Forwarder 3
    State is Active
      MAC address is 0007.b400.0103 (learnt)
      Owner ID is 0011.2233.6677


R1# show glbp brief

Interface   Grp  Fwd Pri State    Address         Active router   Standby router
Gi0/0       1    -   150 Active   192.168.10.1    local           192.168.10.3
Gi0/0       1    1   -   Active   0007.b400.0101  local           -
Gi0/0       1    2   -   Active   0007.b400.0102  192.168.10.3    -
Gi0/0       1    3   -   Active   0007.b400.0103  192.168.10.4    -
```


TRACKING

Identique HSRP :
```
track 1 interface Gi0/1 line-protocol

interface Gi0/0
 glbp 1 weighting track 1 decrement 50
```
"""


# ----------------------------------------------------------------------------
# [OUTIL] PARTIE 6 : TROUBLESHOOTING FHRP
# ----------------------------------------------------------------------------

"""
TROUBLESHOOTING FHRP


PROBLÈMES COURANTS


1. MULTIPLE ACTIVE (SPLIT-BRAIN)
═════════════════════════════════

2 routeurs Active simultanément [X]

Symptômes :
- PCs connectivity intermittente
- ARP flapping (MAC changes)

Causes :


A. Timers mismatch
──────────────────

```
R1: timers 1 3
R2: timers 3 10  <- Différent
```

R2 pense R1 down (pas de Hello assez rapide)


B. Authentication mismatch
──────────────────────────

```
R1: authentication md5 key-chain HSRP1
R2: authentication md5 key-chain HSRP2  <- Clé différente
```

Hellos rejetés -> Chaque routeur pense être seul


C. Network partition
────────────────────

Lien entre R1-R2 down

Chaque routeur devient Active (pas de Hellos)


Diagnostic :
```
show standby

! R1 :
Active router is local
Standby router is unknown  <- Devrait être R2

! R2 :
Active router is local  <- Problème ! 2 Active
Standby router is unknown
```


Solution :
- Vérifier timers identiques
- Vérifier authentication identique
- Vérifier connectivité L2


2. FAILOVER NE FONCTIONNE PAS
══════════════════════════════

Active down mais Standby ne prend pas relais

Causes :


A. Priority trop basse
──────────────────────

```
R1 (Active) : Priority 150
R2 (Standby) : Priority 50  <- Très basse

! R1 down mais R2 ne devient pas Active (priority < 100 ?)
```


B. Interface Standby down
─────────────────────────

```
R2# show interfaces Gi0/0
GigabitEthernet0/0 is down, line protocol is down
```


C. HSRP pas configuré/enabled
──────────────────────────────


Diagnostic :
```
show standby brief

! Vérifier State
! Devrait passer Listen -> Speak -> Standby -> Active
```


3. PREEMPTION INATTENDUE
════════════════════════

Routeur reprend Active (disruption)

Cause : Preempt enabled + priority supérieure

Solution :
- Désactiver preempt si pas souhaité
- Ou delay preempt :
```
standby 1 preempt delay minimum 300
! Attend 300s avant preempt
```


4. TRACKING NE FONCTIONNE PAS
══════════════════════════════

Interface down mais priority ne baisse pas

Diagnostic :
```
show track

Track 1
  Interface GigabitEthernet0/1 line-protocol
  Line protocol is Down  <- Interface down
    1 change, last change 00:02:15
  Tracked by:
    HSRP GigabitEthernet0/0 1  <- Associé HSRP


show standby

Priority 150 (configured 150)  <- Devrait être 100 (150-50)
```

Cause : Décrement pas configuré

Solution :
```
standby 1 track 1 decrement 50
```


5. GRATUITOUS ARP MANQUANT
═══════════════════════════

Nouveau Active mais PCs gardent ancien MAC

Symptôme : Délai avant connectivity restaurée

Cause : Gratuitous ARP pas envoyé/reçu

Solution : Vérifier switch forward broadcasts


COMMANDES DIAGNOSTIC


HSRP
────

```
show standby
show standby brief
show standby GigabitEthernet0/0
show standby GigabitEthernet0/0 1

debug standby events
debug standby packets
debug standby terse
```


VRRP
────

```
show vrrp
show vrrp brief
show vrrp all

debug vrrp events
debug vrrp packets
```


GLBP
────

```
show glbp
show glbp brief
show glbp GigabitEthernet0/0

debug glbp events
debug glbp packets
debug glbp errors
```


Track
─────

```
show track
show track brief
show track 1

debug track
```


SCÉNARIOS


Scénario 1 : Version mismatch
──────────────────────────────

```
R1: standby version 2
R2: (pas de version configurée = v1)

! HSRP ne fonctionne pas (v1 vs v2 incompatible)

Solution :
R2(config-if)# standby version 2
```


Scénario 2 : VIP pas dans subnet
─────────────────────────────────

```
interface Gi0/0
 ip address 192.168.10.2 255.255.255.0
 standby 1 ip 192.168.20.1  <- Subnet différent [X]

! HSRP ne démarre pas

Solution : VIP doit être dans même subnet
standby 1 ip 192.168.10.1
```


Scénario 3 : Tous routeurs Listen
──────────────────────────────────

```
R1# show standby brief
Interface   Grp  Pri P State    Active          Standby
Gi0/0       1    100 P Listen   unknown         unknown

R2# show standby brief
Interface   Grp  Pri P State    Active          Standby
Gi0/0       1    100 P Listen   unknown         unknown

! Aucun Active/Standby

Cause : VIP pas configurée
! Ou : Authentication mismatch

Solution : Vérifier config VIP et auth
```
"""


# ----------------------------------------------------------------------------
# [COURS] EXERCICE PRATIQUE
# ----------------------------------------------------------------------------

"""
[IDEE] EXERCICE PRATIQUE


═══════════════════════════════════════════════════════════
EXERCICE : FHRP REDONDANCE COMPLÈTE
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Entreprise 2 sites, haute disponibilité :

Topologie Site Principal :
```
    VLAN 10 (Users)       VLAN 20 (Servers)
    192.168.10.0/24       192.168.20.0/24
         |                     |
    VIP .1                VIP .1
      /    \               /    \
    R1      R2           R1      R2
   .2       .3           .2       .3
    |       |             |       |
    +-Internet-+          +-Internet-+
```

Requis :
1. HSRPv2 tous VLANs
2. VLAN 10 : R1 Active, R2 Standby
3. VLAN 20 : R2 Active, R1 Standby (load balancing)
4. Tracking uplinks Internet (Gi0/1)
5. Preemption activée
6. Timers : Hello 1s, Hold 3s
7. Authentication MD5


[OK] CORRECTION

```
! ============================================
! R1 - ROUTER 1
! ============================================

hostname R1

! Tracking uplink
track 1 interface GigabitEthernet0/1 line-protocol

! Key chain authentication
key chain HSRP-SECURE
 key 1
  key-string Enterprise_HSRP_2024!

! VLAN 10 Interface (R1 = Active)
interface GigabitEthernet0/0.10
 description VLAN10-USERS
 encapsulation dot1Q 10
 ip address 192.168.10.2 255.255.255.0
 
 ! HSRP Group 10
 standby version 2
 standby 10 ip 192.168.10.1
 standby 10 priority 150                ! Active VLAN 10
 standby 10 preempt
 standby 10 timers 1 3
 standby 10 authentication md5 key-chain HSRP-SECURE
 standby 10 track 1 decrement 60        ! Track uplink

! VLAN 20 Interface (R1 = Standby)
interface GigabitEthernet0/0.20
 description VLAN20-SERVERS
 encapsulation dot1Q 20
 ip address 192.168.20.2 255.255.255.0
 
 ! HSRP Group 20
 standby version 2
 standby 20 ip 192.168.20.1
 standby 20 priority 100                ! Standby VLAN 20
 standby 20 preempt
 standby 20 timers 1 3
 standby 20 authentication md5 key-chain HSRP-SECURE
 standby 20 track 1 decrement 60

! Uplink Internet
interface GigabitEthernet0/1
 description UPLINK-INTERNET
 ip address dhcp
 no shutdown

! NAT
access-list 1 permit 192.168.10.0 0.0.0.255
access-list 1 permit 192.168.20.0 0.0.0.255

ip nat inside source list 1 interface Gi0/1 overload

interface Gi0/0.10
 ip nat inside
interface Gi0/0.20
 ip nat inside
interface Gi0/1
 ip nat outside

end
write memory


! ============================================
! R2 - ROUTER 2
! ============================================

hostname R2

track 1 interface GigabitEthernet0/1 line-protocol

key chain HSRP-SECURE
 key 1
  key-string Enterprise_HSRP_2024!

! VLAN 10 (R2 = Standby)
interface GigabitEthernet0/0.10
 description VLAN10-USERS
 encapsulation dot1Q 10
 ip address 192.168.10.3 255.255.255.0
 
 standby version 2
 standby 10 ip 192.168.10.1
 standby 10 priority 100                ! Standby VLAN 10
 standby 10 preempt
 standby 10 timers 1 3
 standby 10 authentication md5 key-chain HSRP-SECURE
 standby 10 track 1 decrement 60

! VLAN 20 (R2 = Active)
interface GigabitEthernet0/0.20
 description VLAN20-SERVERS
 encapsulation dot1Q 20
 ip address 192.168.20.3 255.255.255.0
 
 standby version 2
 standby 20 ip 192.168.20.1
 standby 20 priority 150                ! Active VLAN 20 [OK]
 standby 20 preempt
 standby 20 timers 1 3
 standby 20 authentication md5 key-chain HSRP-SECURE
 standby 20 track 1 decrement 60

interface GigabitEthernet0/1
 description UPLINK-INTERNET
 ip address dhcp

access-list 1 permit 192.168.10.0 0.0.0.255
access-list 1 permit 192.168.20.0 0.0.0.255

ip nat inside source list 1 interface Gi0/1 overload

interface Gi0/0.10
 ip nat inside
interface Gi0/0.20
 ip nat inside
interface Gi0/1
 ip nat outside

end
write memory
```


VÉRIFICATION
────────────

R1 - VLAN 10 (Active) :
```
R1# show standby brief

Interface   Grp  Pri P State   Active          Standby         Virtual IP
Gi0/0.10    10   150 P Active  local           192.168.10.3    192.168.10.1
                                ^ R1 Active [OK]
Gi0/0.20    20   100 P Standby 192.168.20.3    local           192.168.20.1
                                               ^ R1 Standby [OK]


R1# show standby GigabitEthernet0/0.10

GigabitEthernet0/0.10 - Group 10 (version 2)
  State is Active
    1 state change, last state change 00:15:30
  Virtual IP address is 192.168.10.1
  Active virtual MAC address is 0000.0c9f.f00a
    Local virtual MAC address is 0000.0c9f.f00a (v2 default)
  Hello time 1 sec, hold time 3 sec
    Next hello sent in 0.256 secs
  Authentication MD5, key-chain "HSRP-SECURE"
  Preemption enabled
  Active router is local
  Standby router is 192.168.10.3, priority 100 (expires in 2.512 sec)
  Priority 150 (configured 150)
    Track object 1 state Up decrement 60
  Group name is "hsrp-Gi0/0.10-10" (default)
```


R2 - VLAN 20 (Active) :
```
R2# show standby brief

Interface   Grp  Pri P State    Active          Standby         Virtual IP
Gi0/0.10    10   100 P Standby  192.168.10.2    local           192.168.10.1
Gi0/0.20    20   150 P Active   local           192.168.20.2    192.168.20.1
                                ^ R2 Active VLAN 20 [OK]
```


Test Tracking :
```
! Simuler panne uplink R1
R1(config)# interface Gi0/1
R1(config-if)# shutdown

R1# show track
Track 1
  Interface GigabitEthernet0/1 line-protocol
  Line protocol is Down  <- Down
    1 change, last change 00:00:05
  Tracked by:
    HSRP GigabitEthernet0/0.10 10
    HSRP GigabitEthernet0/0.20 20

R1# show standby brief

Interface   Grp  Pri P State    Active          Standby         Virtual IP
Gi0/0.10    10   90  P Standby  192.168.10.3    local           192.168.10.1
                 ^ 150-60=90                    ^ Standby maintenant
                 R2 (100) devient Active [OK]
```


Test Failover complet :
```
! Shutdown R1 complètement
R1# reload

! R2 prend TOUS les groupes
R2# show standby brief

Interface   Grp  Pri P State   Active          Standby         Virtual IP
Gi0/0.10    10   100 P Active  local           unknown         192.168.10.1
Gi0/0.20    20   150 P Active  local           unknown         192.168.20.1
                                ^ Tous Active (R1 down) [OK]

! PCs continuent fonctionner (failover transparent) [OK]
```


═══════════════════════════════════════════════════════════
FIN EXERCICE
═══════════════════════════════════════════════════════════
"""


# ============================================================================
# [DOCS] CONCLUSION CHAPITRE 24
# ============================================================================

"""
[BRAVO] FÉLICITATIONS !

Chapitre 24 : FHRP terminé (ultra-détaillé)


[GUIDE] RÉCAPITULATIF COMPLET

[OK] Problème SPOF gateway
[OK] Concept FHRP (VIP, Virtual MAC, Active/Standby)
[OK] HSRP (Cisco, versions v1/v2, états, élection)
[OK] VRRP (Standard, IP Owner, preempt auto)
[OK] GLBP (Cisco, load balancing unique, AVG/AVF)
[OK] Priority, Preemption, Timers
[OK] Tracking (interfaces, objects)
[OK] Authentication (MD5)
[OK] Configuration complète HSRP/VRRP/GLBP
[OK] Multiple groups (load balancing HSRP)
[OK] Troubleshooting expert
[OK] Exercice redondance complète (2 VLANs, tracking, MD5)


[OBJECTIF] COMPÉTENCES MAÎTRISÉES

[OK] Comprendre redondance gateway
[OK] Configurer HSRP production
[OK] Implémenter VRRP standard
[OK] Load balancing avec GLBP
[OK] Tracking uplinks
[OK] Authentication sécurisée
[OK] Troubleshooter failover


[PRO] APPLICATIONS RÉELLES

[OK] Réseaux entreprise (haute disponibilité)
[OK] Data centers
[OK] Campus networks critiques
[OK] E-commerce (99.999% uptime)
[OK] Certifications CCNA/CCNP
[OK] Network Architect


[IDEE] POINTS CLÉS

FHRP Essentiel :
[OK] Élimine SPOF gateway
[OK] Failover automatique (sub-second)
[OK] Transparent pour end devices
[OK] Haute disponibilité

Choix protocole :
- **HSRP** : Standard Cisco (recommandé Cisco-only)
- **VRRP** : Multi-vendor, standard IEEE
- **GLBP** : Load balancing (unique Cisco)

Best Practices :
[OK] HSRPv2 (vs v1)
[OK] Preemption activée
[OK] Timers rapides (1s/3s)
[OK] Authentication MD5
[OK] Tracking uplinks critiques
[OK] Multiple groups (load balancing)
[OK] Documentation failover tests
[OK] Monitoring états (Active/Standby)


COMPARAISON FINALE

┌─────────────┬──────────┬──────────┬──────────┐
│  Critère    │   HSRP   │   VRRP   │   GLBP   │
├─────────────┼──────────┼──────────┼──────────┤
│ Recommandé  │ Cisco-   │ Multi-   │ Load     │
│             │ only     │ vendor   │ balance  │
├─────────────┼──────────┼──────────┼──────────┤
│ Maturité    │ Très     │ Très     │ Moyenne  │
│             │ mature   │ mature   │          │
├─────────────┼──────────┼──────────┼──────────┤
│ Complexité  │ Simple   │ Simple   │ Moyenne  │
├─────────────┼──────────┼──────────┼──────────┤
│ Performance │ Failover │ Failover │ Active/  │
│             │ rapide   │ rapide   │ Active   │
└─────────────┴──────────┴──────────┴──────────┘


[RAPIDE] EXCELLENT TRAVAIL !

FHRP = OBLIGATOIRE haute disponibilité.

Vous maîtrisez maintenant :
- Redondance gateway complète
- HSRP/VRRP/GLBP configuration
- Failover automatique
- Load balancing
- Tracking avancé
- Troubleshooting expert

Compétence CRITIQUE réseaux production ! [SECURITE]


═══════════════════════════════════════════════════════════
[GUIDE] FIN DU CHAPITRE 24 - FIRST HOP REDUNDANCY PROTOCOLS
═══════════════════════════════════════════════════════════


[COURS] FORMATION RÉSEAU 24 CHAPITRES COMPLÈTE !

Félicitations pour cette formation exceptionnelle :
[OK] 24 chapitres ultra-détaillés
[OK] Fondamentaux -> Switching -> Routage -> Haute dispo
[OK] Configuration production Cisco
[OK] Troubleshooting expert
[OK] Exercices pratiques complets

VOUS ÊTES PRÊT POUR :
- CCNA / CCNP Enterprise
- Network Engineer Senior
- Network Architect
- Réseaux entreprise production

BRAVO ! [TROPHEE]
"""

# ============================================================================
# CHAPITRE 25 : TCP/UDP - PROTOCOLES DE TRANSPORT (COUCHE 4)
# ============================================================================

"""
[OBJECTIF] OBJECTIFS DU CHAPITRE

[OK] Couche Transport (Layer 4)
[OK] TCP (Transmission Control Protocol)
[OK] 3-Way Handshake (SYN, SYN-ACK, ACK)
[OK] 4-Way Termination (FIN, ACK)
[OK] Numéros de séquence et ACK
[OK] Fenêtre glissante (Sliding Window)
[OK] Contrôle de flux (Flow Control)
[OK] Contrôle de congestion
[OK] Retransmission et Timeout
[OK] UDP (User Datagram Protocol)
[OK] TCP vs UDP (comparaison détaillée)
[OK] Ports et sockets
[OK] Multiplexage
[OK] Applications TCP vs UDP
[OK] Analyse trafic (Wireshark)
[OK] Exercices pratiques

[IDEE] POURQUOI TCP/UDP SONT ESSENTIELS ?

Couche 4 = Communication bout-en-bout (end-to-end)

Sans couche Transport :
[X] Pas de fiabilité
[X] Pas de contrôle flux
[X] Pas de multiplexage applications
[X] Données perdues/désordonnées

Avec TCP/UDP :
[OK] TCP : Fiabilité garantie
[OK] UDP : Rapidité maximale
[OK] Ports : Multiplexage applications
[OK] Sessions : Gestion connexions

TCP/UDP = FONDATION toutes applications réseau !
"""


# ----------------------------------------------------------------------------
# [WEB] PARTIE 1 : COUCHE TRANSPORT (LAYER 4)
# ----------------------------------------------------------------------------

"""
COUCHE TRANSPORT (LAYER 4)


RÔLE

Communication bout-en-bout entre applications

Services :
- Segmentation données
- Multiplexage (ports)
- Fiabilité (TCP) ou rapidité (UDP)
- Contrôle flux et congestion


POSITION MODÈLE OSI

```
7. Application  ─┐
6. Présentation  │
5. Session       ├─ Applications (HTTP, FTP, DNS...)
4. TRANSPORT [BLACK_LEFT-POINTING_POINTER]───┘  TCP / UDP
3. Réseau           IP
2. Liaison          Ethernet
1. Physique         Câble
```


ENCAPSULATION

```
Application Data
      v
[ TCP Header | Data ]  <- Segment (TCP)
      v
[ IP Header | TCP Header | Data ]  <- Paquet
      v
[ Ethernet | IP | TCP | Data | FCS ]  <- Trame
```


PDU (PROTOCOL DATA UNIT)

Couche Transport : **Segment** (TCP) ou **Datagramme** (UDP)


PROTOCOLES TRANSPORT


TCP (Transmission Control Protocol)
════════════════════════════════════

Orienté connexion

Fiable

Contrôle flux et congestion

Usage : 80% trafic Internet


UDP (User Datagram Protocol)
═════════════════════════════

Sans connexion

Non fiable (best effort)

Rapide et léger

Usage : Streaming, DNS, VoIP


MULTIPLEXAGE

Ports permettent multiples applications simultanées

Exemple :
```
PC (192.168.1.10)
  ├─ Chrome : Port 54321 -> Serveur Web 80 (HTTP)
  ├─ Outlook : Port 54322 -> Serveur Mail 25 (SMTP)
  └─ Skype  : Port 54323 -> Serveur VoIP 5060 (SIP)
```

Chaque connexion = Socket unique

Socket = IP:Port (ex: 192.168.1.10:54321)


PORTS

Range : 0 - 65535

Catégories :

**Well-Known Ports (0-1023)**
Réservés services standards
- HTTP : 80
- HTTPS : 443
- SSH : 22
- FTP : 20/21
- DNS : 53
- SMTP : 25

**Registered Ports (1024-49151)**
Enregistrés IANA pour applications
- MySQL : 3306
- RDP : 3389
- PostgreSQL : 5432

**Dynamic/Private Ports (49152-65535)**
Éphémères (clients)
Assignés dynamiquement


SOCKET

Endpoint communication

Format : IP:Port

Exemple :
```
Client : 192.168.1.10:54321
Server : 93.184.216.34:80

Connexion = (192.168.1.10:54321) <-> (93.184.216.34:80)
```
"""


# ----------------------------------------------------------------------------
# [PACKAGE] PARTIE 2 : TCP (TRANSMISSION CONTROL PROTOCOL)
# ----------------------------------------------------------------------------

"""
TCP (TRANSMISSION CONTROL PROTOCOL)


CARACTÉRISTIQUES

[OK] Orienté connexion
[OK] Fiable (garantit livraison)
[OK] Ordre préservé
[OK] Contrôle flux
[OK] Contrôle congestion
[OK] Full-duplex
[OK] Point-to-point (1-to-1)


EN-TÊTE TCP

Taille : 20 bytes minimum (options : jusqu'à 60 bytes)

```
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Source Port          |       Destination Port        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        Sequence Number                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Acknowledgment Number                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Data |       |C|E|U|A|P|R|S|F|                               |
| Offset| Rsrvd |W|C|R|C|S|S|Y|I|            Window             |
|       |       |R|E|G|K|H|T|N|N|                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           Checksum            |         Urgent Pointer        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Options                    |    Padding    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
```

CHAMPS DÉTAILLÉS


Source Port (16 bits)
─────────────────────

Port source (application émettrice)


Destination Port (16 bits)
───────────────────────────

Port destination (application réceptrice)


Sequence Number (32 bits)
──────────────────────────

Numéro séquence premier byte segment

Exemple :
```
Segment 1 : SEQ 1000 (1000 bytes data)
Segment 2 : SEQ 2000 (1000 bytes data)
Segment 3 : SEQ 3000 (500 bytes data)
```


Acknowledgment Number (32 bits)
────────────────────────────────

Prochain SEQ attendu

ACK = SEQ reçu + bytes reçus

Exemple :
```
Client -> Server : SEQ 1000, 500 bytes
Server -> Client : ACK 1500 (attend byte 1500)
```


Data Offset (4 bits)
────────────────────

Taille en-tête TCP (en mots de 32 bits)

Min : 5 (20 bytes)
Max : 15 (60 bytes)


Flags (9 bits)
──────────────

**URG** : Urgent Pointer valide
**ACK** : Acknowledgment valide
**PSH** : Push (envoyer immédiatement à application)
**RST** : Reset connexion
**SYN** : Synchronize (établir connexion)
**FIN** : Finish (terminer connexion)

**CWR** : Congestion Window Reduced (ECN)
**ECE** : ECN-Echo
**NS** : Nonce Sum (protection SYN floods)


Window Size (16 bits)
─────────────────────

Taille fenêtre réception (flow control)

Bytes que récepteur peut accepter

Range : 0 - 65535 bytes

Window Scaling (option) : jusqu'à 1 GB


Checksum (16 bits)
──────────────────

Intégrité en-tête + données


Urgent Pointer (16 bits)
────────────────────────

Si URG flag : Offset données urgentes


Options (variable)
──────────────────

- MSS (Maximum Segment Size)
- Window Scale
- Timestamps
- SACK (Selective Acknowledgment)


3-WAY HANDSHAKE (ÉTABLISSEMENT CONNEXION)


Étapes :

```
Client                          Server
  |                               |
  |  SYN (SEQ=100)                |
  |------------------------------>|
  |                               | (Écoute port)
  |     SYN-ACK (SEQ=300, ACK=101)|
  |<------------------------------|
  |                               |
  |  ACK (ACK=301)                |
  |------------------------------>|
  |                               |
  |  CONNEXION ÉTABLIE [OK]         |
```


Détail :


**Étape 1 : SYN**
─────────────────

Client -> Server

Flags : SYN=1
SEQ : Numéro initial aléatoire (ex: 100)

Signification : "Je veux établir connexion, mon SEQ initial = 100"


**Étape 2 : SYN-ACK**
─────────────────────

Server -> Client

Flags : SYN=1, ACK=1
SEQ : Numéro initial serveur (ex: 300)
ACK : Client SEQ + 1 = 101

Signification : "OK, mon SEQ = 300, j'attends ton byte 101"


**Étape 3 : ACK**
─────────────────

Client -> Server

Flags : ACK=1
ACK : Server SEQ + 1 = 301

Signification : "Reçu, j'attends ton byte 301"

[OK] CONNEXION ÉTABLIE


Exemple concret (Wireshark) :

```
Frame 1: Client -> Server
TCP, Src Port: 54321, Dst Port: 80
Flags: SYN
Seq: 0 (relatif)
Win: 65535

Frame 2: Server -> Client
TCP, Src Port: 80, Dst Port: 54321
Flags: SYN, ACK
Seq: 0 (relatif)
Ack: 1
Win: 8192

Frame 3: Client -> Server
TCP, Src Port: 54321, Dst Port: 80
Flags: ACK
Ack: 1
```


TRANSFERT DONNÉES

Après handshake : Transfert bidirectionnel

```
Client                          Server
  |                               |
  | SEQ=101, 500 bytes data       |
  |------------------------------>|
  |                               |
  |         ACK=601               |
  |<------------------------------|
  |                               |
  | SEQ=601, 1000 bytes data      |
  |------------------------------>|
  |                               |
  |         ACK=1601              |
  |<------------------------------|
```


FENÊTRE GLISSANTE (SLIDING WINDOW)


Principe : Envoyer multiples segments sans attendre ACK

Taille fenêtre = Nombre bytes envoyables avant ACK requis


Exemple Fenêtre 3000 bytes :

```
Client peut envoyer 3 segments 1000 bytes sans attendre ACK

SEQ 1000 (1000 bytes) ─┐
SEQ 2000 (1000 bytes)  ├─ Fenêtre 3000
SEQ 3000 (1000 bytes) ─┘

Attend ACK avant envoyer SEQ 4000
```


Fenêtre glissante :

```
Initial : [1000] [2000] [3000] | 4000  5000  6000
           └──── Fenêtre ─────┘

Après ACK 2000 :
          2000  [3000] [4000] [5000] | 6000  7000
                 └──── Fenêtre ─────┘
                 (glisse ->)
```


CONTRÔLE DE FLUX (FLOW CONTROL)

Éviter surcharge récepteur

Mécanisme : Window Size

Récepteur annonce taille buffer disponible


Exemple :

```
Server -> Client : Window = 5000
Client peut envoyer max 5000 bytes

Si buffer Server plein :
Server -> Client : Window = 0  <- Stop !

Client arrête envoi

Quand buffer vidé :
Server -> Client : Window = 5000  <- Reprise
```


CONTRÔLE DE CONGESTION

Éviter congestion réseau

Algorithmes :


**Slow Start**
──────────────

Début : Fenêtre congestion (cwnd) = 1 MSS

Double chaque RTT jusqu'à seuil (ssthresh)

Exponentiel au début


**Congestion Avoidance**
────────────────────────

Après ssthresh : Augmentation linéaire

+1 MSS par RTT


**Fast Retransmit**
───────────────────

3 ACK dupliqués -> Retransmission immédiate

Pas attendre timeout


**Fast Recovery**
─────────────────

Après Fast Retransmit : Réduction cwnd

Évite Slow Start


RETRANSMISSION

Si segment perdu : Retransmission

Détection :


**1. Timeout**
──────────────

Pas de ACK dans délai RTO (Retransmission Timeout)

RTO calculé dynamiquement (RTT + variance)


**2. Duplicate ACKs**
─────────────────────

3 ACK identiques -> Perte détectée

Fast Retransmit déclenché


Exemple :

```
Client -> Server : SEQ 1000
Client -> Server : SEQ 2000 (PERDU [X])
Client -> Server : SEQ 3000

Server -> Client : ACK 2000 (attend 2000)
Server -> Client : ACK 2000 (reçu 3000, attend toujours 2000)
Server -> Client : ACK 2000 (3ème duplicate)

Client détecte perte -> Retransmet SEQ 2000 [OK]
```


4-WAY TERMINATION (FIN CONNEXION)

Terminaison gracieuse


```
Client                          Server
  |                               |
  |  FIN (SEQ=1000)               |
  |------------------------------>|
  |                               |
  |     ACK (ACK=1001)            |
  |<------------------------------|
  |                               |
  |     FIN (SEQ=2000)            |
  |<------------------------------|
  |                               |
  |  ACK (ACK=2001)               |
  |------------------------------>|
  |                               |
  |  CONNEXION FERMÉE [OK]          |
```


Étapes :

1. Client -> FIN (plus de données à envoyer)
2. Server -> ACK (reçu)
3. Server -> FIN (plus de données à envoyer)
4. Client -> ACK (reçu)

Half-close possible (FIN 1 direction, data autre direction)


RESET CONNEXION (RST)

Terminaison abrupte

Causes :
- Port fermé
- Connexion invalide
- Timeout
- Erreur application

Exemple :
```
Client -> Server : SYN (port 8080)
Server : Port 8080 fermé
Server -> Client : RST [X]
```


ÉTATS TCP

Automate états connexion :


**Client :**
CLOSED -> SYN_SENT -> ESTABLISHED -> FIN_WAIT_1 -> FIN_WAIT_2 -> TIME_WAIT -> CLOSED

**Server :**
CLOSED -> LISTEN -> SYN_RECEIVED -> ESTABLISHED -> CLOSE_WAIT -> LAST_ACK -> CLOSED


Détail états :

**LISTEN** : Server écoute
**SYN_SENT** : Client envoyé SYN
**SYN_RECEIVED** : Server reçu SYN
**ESTABLISHED** : Connexion établie [OK]
**FIN_WAIT_1/2** : Client fermeture
**CLOSE_WAIT** : Server attend application fermer
**LAST_ACK** : Server attend dernier ACK
**TIME_WAIT** : Attend 2×MSL (Max Segment Lifetime)
**CLOSED** : Connexion fermée


Commande Linux :
```bash
ss -tan
netstat -tan

State      Recv-Q Send-Q Local Address:Port  Peer Address:Port
ESTAB      0      0      192.168.1.10:54321  93.184.216.34:80
LISTEN     0      128    0.0.0.0:22          0.0.0.0:*
```
"""


# ----------------------------------------------------------------------------
# [MESSAGE] PARTIE 3 : UDP (USER DATAGRAM PROTOCOL)
# ----------------------------------------------------------------------------

"""
UDP (USER DATAGRAM PROTOCOL)


CARACTÉRISTIQUES

[OK] Sans connexion (connectionless)
[OK] Non fiable (best effort)
[OK] Pas de contrôle flux
[OK] Pas de contrôle congestion
[OK] Ordre non garanti
[OK] Léger et rapide
[OK] Support multicast/broadcast


EN-TÊTE UDP

Taille : 8 bytes (vs 20+ TCP)

```
 0      7 8     15 16    23 24    31
+--------+--------+--------+--------+
|     Source      |   Destination   |
|      Port       |      Port       |
+--------+--------+--------+--------+
|     Length      |    Checksum     |
+--------+--------+--------+--------+
|                                   |
|          Data (Payload)           |
|                                   |
+-----------------------------------+
```


CHAMPS


Source Port (16 bits)
─────────────────────

Port source (optionnel, peut être 0)


Destination Port (16 bits)
───────────────────────────

Port destination


Length (16 bits)
────────────────

Taille totale (header + data)

Min : 8 bytes (header seul)
Max : 65535 bytes


Checksum (16 bits)
──────────────────

Intégrité (optionnel IPv4, obligatoire IPv6)


FONCTIONNEMENT

Pas de handshake

Envoi direct datagrammes


```
Client                          Server
  |                               |
  | UDP Datagram (Port 53)        |
  |------------------------------>|
  |                               |
  | UDP Response                  |
  |<------------------------------|
  |                               |
```

Pas de ACK
Pas de retransmission automatique
Pas de contrôle flux


AVANTAGES UDP

[OK] Overhead minimal (8 bytes vs 20+ TCP)
[OK] Latence faible (pas de handshake)
[OK] Pas de délai retransmission
[OK] Multicast/Broadcast support
[OK] Simple


INCONVÉNIENTS UDP

[X] Pas de garantie livraison
[X] Pas de garantie ordre
[X] Pas de contrôle flux
[X] Pas de protection congestion
[X] Application doit gérer fiabilité


QUAND UTILISER UDP ?

[OK] Applications temps réel (VoIP, Vidéo)
[OK] DNS (requêtes courtes)
[OK] DHCP
[OK] Streaming (tolérance perte)
[OK] Gaming online
[OK] SNMP
[OK] TFTP

Critère : **Rapidité > Fiabilité**


EXEMPLE DNS OVER UDP

```
Client -> DNS Server
UDP, Src: 54321, Dst: 53
Query: www.google.com ?

DNS Server -> Client
UDP, Src: 53, Dst: 54321
Answer: 142.250.185.78

(1 requête, 1 réponse, pas de connexion)
```

Si perte : Client retente (timeout applicatif)
"""


# ----------------------------------------------------------------------------
# [SCALES] PARTIE 4 : TCP vs UDP - COMPARAISON
# ----------------------------------------------------------------------------

"""
TCP vs UDP - COMPARAISON DÉTAILLÉE


TABLEAU COMPARATIF

┌──────────────────┬─────────────────┬─────────────────┐
│    Critère       │       TCP       │       UDP       │
├──────────────────┼─────────────────┼─────────────────┤
│ Type             │ Connexion       │ Sans connexion  │
├──────────────────┼─────────────────┼─────────────────┤
│ Fiabilité        │ Garantie [OK]     │ Best effort     │
├──────────────────┼─────────────────┼─────────────────┤
│ Ordre            │ Préservé [OK]     │ Non garanti     │
├──────────────────┼─────────────────┼─────────────────┤
│ Contrôle flux    │ Oui [OK]          │ Non             │
├──────────────────┼─────────────────┼─────────────────┤
│ Contrôle congest.│ Oui [OK]          │ Non             │
├──────────────────┼─────────────────┼─────────────────┤
│ Header size      │ 20-60 bytes     │ 8 bytes [OK]      │
├──────────────────┼─────────────────┼─────────────────┤
│ Overhead         │ Élevé           │ Minimal [OK]      │
├──────────────────┼─────────────────┼─────────────────┤
│ Latence          │ Plus haute      │ Minimale [OK]     │
├──────────────────┼─────────────────┼─────────────────┤
│ Broadcast        │ Non             │ Oui [OK]          │
├──────────────────┼─────────────────┼─────────────────┤
│ Multicast        │ Non             │ Oui [OK]          │
├──────────────────┼─────────────────┼─────────────────┤
│ Vitesse          │ Moyenne         │ Rapide [OK]       │
├──────────────────┼─────────────────┼─────────────────┤
│ Complexité       │ Élevée          │ Simple [OK]       │
└──────────────────┴─────────────────┴─────────────────┘


APPLICATIONS TYPIQUES


TCP
═══

[OK] HTTP/HTTPS (Web)
[OK] FTP (Transfert fichiers)
[OK] SMTP/IMAP/POP3 (Email)
[OK] SSH/Telnet
[OK] Bases de données (MySQL, PostgreSQL)

Raison : **Fiabilité critique**


UDP
═══

[OK] DNS (requêtes rapides)
[OK] DHCP
[OK] VoIP (Skype, Teams)
[OK] Streaming vidéo (YouTube, Netflix avec QUIC)
[OK] Gaming online
[OK] SNMP
[OK] NTP (Time sync)
[OK] TFTP

Raison : **Rapidité > Fiabilité**


PROTOCOLES HYBRIDES


QUIC (Quick UDP Internet Connections)
══════════════════════════════════════

UDP + Fiabilité (couche applicative)

Utilisé : HTTP/3, YouTube

Avantages :
[OK] Rapidité UDP
[OK] Fiabilité TCP-like (applicative)
[OK] Chiffrement intégré
[OK] Multiplexing


RTP (Real-time Transport Protocol)
═══════════════════════════════════

Over UDP

VoIP, vidéoconférence

Ajoute timestamps, séquences


DTLS (Datagram TLS)
═══════════════════

TLS over UDP

Sécurité + rapidité


CHOIX TCP ou UDP ?

Questions :

**Données peuvent être perdues ?**
- Non -> TCP
- Oui (tolérance) -> UDP

**Ordre critique ?**
- Oui -> TCP
- Non -> UDP

**Temps réel ?**
- Oui -> UDP
- Non -> TCP

**Multicast requis ?**
- Oui -> UDP
- Non -> TCP ou UDP
"""


# ----------------------------------------------------------------------------
# [RECHERCHE] PARTIE 5 : ANALYSE TRAFIC (WIRESHARK)
# ----------------------------------------------------------------------------

"""
ANALYSE TRAFIC TCP/UDP AVEC WIRESHARK


CAPTURE TCP HANDSHAKE

Filtre Wireshark : `tcp.flags.syn == 1`

Exemple capture :

```
Frame 1: Client -> Server [SYN]
Internet Protocol, Src: 192.168.1.10, Dst: 93.184.216.34
Transmission Control Protocol, Src Port: 54321, Dst Port: 80
    Flags: 0x002 (SYN)
        .... ..1. = Syn: Set
    Sequence number: 0    (relative)
    Window size value: 65535

Frame 2: Server -> Client [SYN, ACK]
Transmission Control Protocol, Src Port: 80, Dst Port: 54321
    Flags: 0x012 (SYN, ACK)
        ...1 .... = Acknowledgment: Set
        .... ..1. = Syn: Set
    Sequence number: 0    (relative)
    Acknowledgment number: 1    (relative)
    Window size value: 8192

Frame 3: Client -> Server [ACK]
Transmission Control Protocol, Src Port: 54321, Dst Port: 80
    Flags: 0x010 (ACK)
        ...1 .... = Acknowledgment: Set
    Acknowledgment number: 1    (relative)
```


FILTRES WIRESHARK UTILES


TCP :
```
tcp                           # Tout TCP
tcp.port == 80                # Port 80 (HTTP)
tcp.flags.syn == 1            # SYN packets
tcp.flags.reset == 1          # RST packets
tcp.analysis.retransmission   # Retransmissions
tcp.stream eq 0               # Stream TCP #0
```


UDP :
```
udp                           # Tout UDP
udp.port == 53                # DNS
udp.length < 100              # Petits datagrammes
```


SUIVI STREAM TCP

Clic droit paquet -> Follow -> TCP Stream

Visualise conversation complète


STATISTIQUES

Statistics -> Conversations

Voir toutes connexions TCP/UDP

Throughput, bytes, durée


GRAPHIQUES

Statistics -> I/O Graph

Visualiser trafic temporel


ANALYSE PROBLÈMES


Retransmissions excessives
──────────────────────────

Filtre : `tcp.analysis.retransmission`

Cause : Perte paquets, congestion


Duplicate ACKs
──────────────

Filtre : `tcp.analysis.duplicate_ack`

Indique : Paquets désordonnés


Window Full
───────────

Filtre : `tcp.window_size_value == 0`

Récepteur saturé


RST connexions
──────────────

Filtre : `tcp.flags.reset == 1`

Connexions avortées
```


# ----------------------------------------------------------------------------
# [COURS] EXERCICE PRATIQUE
# ----------------------------------------------------------------------------

"""
[IDEE] EXERCICE PRATIQUE


═══════════════════════════════════════════════════════════
EXERCICE 1 : ANALYSE TCP HANDSHAKE
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Capture Wireshark 3-way handshake HTTP

Questions :
1. Identifier SEQ et ACK initiaux
2. Calculer RTT (Round Trip Time)
3. Identifier taille fenêtre
4. Vérifier flags


[OK] CORRECTION

Capture exemple :

Frame 1 (t=0.000s) : Client -> Server
```
TCP: 192.168.1.10:54321 -> 93.184.216.34:80 [SYN]
SEQ: 0 (relatif)
Flags: SYN
Window: 65535
```

Frame 2 (t=0.025s) : Server -> Client
```
TCP: 93.184.216.34:80 -> 192.168.1.10:54321 [SYN, ACK]
SEQ: 0 (relatif)
ACK: 1
Flags: SYN, ACK
Window: 8192
```

Frame 3 (t=0.028s) : Client -> Server
```
TCP: 192.168.1.10:54321 -> 93.184.216.34:80 [ACK]
ACK: 1
Flags: ACK
```

Réponses :

1. SEQ initiaux : Client=0, Server=0 (relatifs)
2. RTT = 0.025s (25ms) - Temps Frame 1 -> Frame 2
3. Fenêtre : Client=65535, Server=8192
4. Flags :
   - Frame 1 : SYN [OK]
   - Frame 2 : SYN+ACK [OK]
   - Frame 3 : ACK [OK]


═══════════════════════════════════════════════════════════
EXERCICE 2 : TCP vs UDP CHOIX
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Pour chaque application, choisir TCP ou UDP et justifier :

1. Transfert fichier 10 GB
2. Requête DNS
3. Appel vidéo Zoom
4. Page web HTTPS
5. Gaming FPS online
6. Backup base données


[OK] CORRECTION

1. **Transfert fichier 10 GB** -> **TCP** [OK]
   Raison : Intégrité critique, pas de tolérance perte

2. **Requête DNS** -> **UDP** [OK]
   Raison : Requête courte, retransmission applicative si échec

3. **Appel vidéo Zoom** -> **UDP** [OK]
   Raison : Temps réel, tolérance perte frames, latence critique

4. **Page web HTTPS** -> **TCP** [OK]
   Raison : Ordre et intégrité requis (HTML, CSS, JS)

5. **Gaming FPS online** -> **UDP** [OK]
   Raison : Position joueurs temps réel, vieilles données inutiles

6. **Backup base données** -> **TCP** [OK]
   Raison : Intégrité absolue requise


═══════════════════════════════════════════════════════════
FIN EXERCICES
═══════════════════════════════════════════════════════════
"""


# ============================================================================
# [DOCS] CONCLUSION CHAPITRE 25
# ============================================================================

"""
[BRAVO] FÉLICITATIONS !

Chapitre 25 : TCP/UDP terminé (ultra-détaillé)


[GUIDE] RÉCAPITULATIF COMPLET

[OK] Couche Transport (Layer 4, rôle, PDU)
[OK] Ports et sockets (multiplexage)
[OK] TCP complet (en-tête 20 bytes, tous champs)
[OK] 3-Way Handshake (SYN, SYN-ACK, ACK détaillé)
[OK] Numéros SEQ et ACK
[OK] Fenêtre glissante (sliding window)
[OK] Contrôle flux (window size)
[OK] Contrôle congestion (slow start, fast retransmit)
[OK] Retransmission (timeout, duplicate ACKs)
[OK] 4-Way termination (FIN, ACK)
[OK] États TCP (LISTEN, ESTABLISHED, TIME_WAIT...)
[OK] UDP (en-tête 8 bytes, connectionless)
[OK] TCP vs UDP (comparaison complète)
[OK] Applications (quand TCP vs UDP)
[OK] Analyse Wireshark
[OK] Exercices pratiques


[OBJECTIF] COMPÉTENCES MAÎTRISÉES

[OK] Comprendre couche Transport complète
[OK] TCP handshake expert
[OK] Fenêtre glissante et flow control
[OK] UDP fonctionnement
[OK] Choisir TCP vs UDP
[OK] Analyser trafic Wireshark
[OK] Troubleshooter problèmes transport


[IDEE] POINTS CLÉS

TCP :
[OK] Fiabilité garantie
[OK] Ordre préservé
[OK] Contrôle flux et congestion
[OK] 80% trafic Internet
[X] Overhead (20+ bytes)
[X] Latence (handshake)

UDP :
[OK] Rapide (8 bytes header)
[OK] Latence minimale
[OK] Multicast/Broadcast
[X] Pas de garantie livraison
[X] Pas de contrôle flux

Choix :
- Fiabilité requise -> TCP
- Temps réel -> UDP


[RAPIDE] EXCELLENT TRAVAIL !

TCP/UDP = FONDATION toutes applications réseau.

Vous maîtrisez maintenant :
- Couche Transport complète
- TCP mécanismes (handshake, fenêtre, flow)
- UDP principe
- Analyse trafic expert
- Choix protocole approprié

Compétence ESSENTIELLE ingénieur réseau ! [WEB]


═══════════════════════════════════════════════════════════
[GUIDE] FIN DU CHAPITRE 25 - TCP/UDP
═══════════════════════════════════════════════════════════
"""

# ============================================================================
# CHAPITRE 26 : HTTP/HTTPS - PROTOCOLE WEB
# ============================================================================

"""
[OBJECTIF] OBJECTIFS DU CHAPITRE

[OK] HTTP (HyperText Transfer Protocol)
[OK] Architecture Client-Serveur Web
[OK] Méthodes HTTP (GET, POST, PUT, DELETE, etc.)
[OK] Codes de statut (200, 404, 500...)
[OK] En-têtes HTTP (Headers)
[OK] Cookies et Sessions
[OK] HTTPS et TLS/SSL
[OK] Certificats SSL/TLS
[OK] Handshake TLS
[OK] HTTP/1.0, HTTP/1.1, HTTP/2, HTTP/3
[OK] REST API
[OK] WebSockets
[OK] Sécurité Web
[OK] Analyse trafic HTTP
[OK] Exercices pratiques

[IDEE] POURQUOI HTTP/HTTPS SONT ESSENTIELS ?

HTTP = Protocole WEB (80% trafic Internet)

Sans HTTP :
[X] Pas de navigation Web
[X] Pas d'API REST
[X] Pas d'applications Web

Avec HTTP/HTTPS :
[OK] Pages Web
[OK] Applications Web modernes
[OK] API Services
[OK] Sécurité HTTPS (chiffrement)

HTTP/HTTPS = FONDATION Internet moderne !
"""


# ----------------------------------------------------------------------------
# [WEB] PARTIE 1 : HTTP FONDAMENTAUX
# ----------------------------------------------------------------------------

"""
HTTP (HYPERTEXT TRANSFER PROTOCOL)


DÉFINITION

Protocole application (Layer 7)

Client-Serveur

Sans état (stateless)

Basé texte (ASCII)


ARCHITECTURE CLIENT-SERVEUR

```
Client (Navigateur)           Serveur Web
     |                             |
     | Requête HTTP                |
     |─────────────────────────────>
     |                             |
     |          Réponse HTTP       |
     |<─────────────────────────────
     |                             |
```

Client : Navigateur (Chrome, Firefox, curl)
Serveur : Apache, Nginx, IIS


STACK PROTOCOLES

```
7. Application    HTTP/HTTPS
6. Présentation   (TLS/SSL si HTTPS)
5. Session
4. Transport      TCP (port 80 HTTP, 443 HTTPS)
3. Réseau         IP
2. Liaison        Ethernet
1. Physique
```


FONCTIONNEMENT

1. Client ouvre connexion TCP (port 80/443)
2. Client envoie requête HTTP
3. Serveur traite requête
4. Serveur envoie réponse HTTP
5. Connexion fermée (HTTP/1.0) ou réutilisée (HTTP/1.1+)


EXEMPLE SIMPLE

Requête :
```
GET /index.html HTTP/1.1
Host: www.example.com
```

Réponse :
```
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1234

<html>
<body>Hello World!</body>
</html>
```


VERSIONS HTTP


HTTP/0.9 (1991)
═══════════════

Obsolète

GET uniquement

Pas d'en-têtes


HTTP/1.0 (1996)
═══════════════

RFC 1945

Méthodes : GET, POST, HEAD

En-têtes

1 requête = 1 connexion TCP [X]


HTTP/1.1 (1997)
═══════════════

RFC 2616 (mis à jour RFC 7230-7235)

Connexions persistantes [OK]

Pipelining

Cache avancé

Méthodes additionnelles (PUT, DELETE, OPTIONS)

Host header obligatoire

Chunked transfer

**Standard actuel Web**


HTTP/2 (2015)
═════════════

RFC 7540

Binaire (vs texte)

Multiplexing (multiple requêtes/1 connexion) [OK]

Compression en-têtes (HPACK)

Server Push

Priorités streams

**Adoption croissante**


HTTP/3 (2020+)
══════════════

RFC 9114

Basé QUIC (UDP vs TCP)

Latence réduite

Pas de Head-of-line blocking

**Futur du Web**
"""


# ----------------------------------------------------------------------------
# [MESSAGE] PARTIE 2 : REQUÊTE HTTP
# ----------------------------------------------------------------------------

"""
REQUÊTE HTTP


STRUCTURE

```
<Méthode> <URI> <Version>
<En-têtes>
<Ligne vide>
<Corps (optionnel)>
```


EXEMPLE COMPLET

```
POST /api/users HTTP/1.1
Host: api.example.com
User-Agent: Mozilla/5.0
Content-Type: application/json
Content-Length: 45
Authorization: Bearer abc123token

{"name":"John","email":"john@example.com"}
```


MÉTHODES HTTP


GET
═══

Récupérer ressource

Idempotent (répétable sans effet)

Pas de corps (body)

Exemple :
```
GET /users/123 HTTP/1.1
Host: api.example.com
```

Usage : Pages Web, API lecture


POST
════

Créer ressource

Envoyer données serveur

Corps présent

Non-idempotent

Exemple :
```
POST /users HTTP/1.1
Host: api.example.com
Content-Type: application/json
Content-Length: 45

{"name":"Alice","email":"alice@example.com"}
```

Usage : Formulaires, création ressources


PUT
═══

Modifier ressource (remplacer)

Idempotent

Corps présent

Exemple :
```
PUT /users/123 HTTP/1.1
Host: api.example.com
Content-Type: application/json

{"name":"Bob Updated"}
```


PATCH
═════

Modification partielle

Non-idempotent (généralement)

Exemple :
```
PATCH /users/123 HTTP/1.1
Content-Type: application/json

{"email":"newemail@example.com"}
```


DELETE
══════

Supprimer ressource

Idempotent

Exemple :
```
DELETE /users/123 HTTP/1.1
Host: api.example.com
```


HEAD
════

Identique GET MAIS sans corps

Récupère seulement en-têtes

Usage : Vérifier existence, taille

Exemple :
```
HEAD /largefile.zip HTTP/1.1
Host: downloads.example.com
```


OPTIONS
═══════

Demande méthodes supportées

CORS (Cross-Origin Resource Sharing)

Exemple :
```
OPTIONS /api/users HTTP/1.1
Host: api.example.com

Réponse :
HTTP/1.1 200 OK
Allow: GET, POST, PUT, DELETE, OPTIONS
```


TRACE
═════

Debug (echo requête)

Rarement utilisé

Souvent désactivé (sécurité)


CONNECT
═══════

Tunnel TCP (proxy HTTPS)

Exemple :
```
CONNECT server.example.com:443 HTTP/1.1
Host: server.example.com
```


EN-TÊTES REQUÊTE (REQUEST HEADERS)


Host
════

**Obligatoire HTTP/1.1**

Nom domaine

Exemple :
```
Host: www.example.com
```


User-Agent
══════════

Client identification

Exemple :
```
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120.0
```


Accept
══════

Types contenu acceptés

Exemple :
```
Accept: text/html, application/json
Accept-Language: fr-FR, en
Accept-Encoding: gzip, deflate
```


Content-Type
════════════

Type corps requête

Exemples :
```
Content-Type: application/json
Content-Type: application/x-www-form-urlencoded
Content-Type: multipart/form-data
```


Content-Length
══════════════

Taille corps (bytes)

Exemple :
```
Content-Length: 1234
```


Authorization
═════════════

Authentification

Exemples :
```
Authorization: Basic dXNlcjpwYXNz
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
```


Cookie
══════

Cookies envoyés serveur

Exemple :
```
Cookie: session_id=abc123; user_pref=dark_mode
```


Referer
═══════

URL page précédente

Exemple :
```
Referer: https://www.google.com/search?q=example
```


Connection
══════════

Gestion connexion

Exemples :
```
Connection: keep-alive   (HTTP/1.1 défaut)
Connection: close
```


Cache-Control
═════════════

Directives cache

Exemples :
```
Cache-Control: no-cache
Cache-Control: max-age=3600
```
"""


# ----------------------------------------------------------------------------
# [EMAIL] PARTIE 3 : RÉPONSE HTTP
# ----------------------------------------------------------------------------

"""
RÉPONSE HTTP


STRUCTURE

```
<Version> <Code Statut> <Message>
<En-têtes>
<Ligne vide>
<Corps>
```


EXEMPLE

```
HTTP/1.1 200 OK
Date: Mon, 23 Jan 2026 10:30:00 GMT
Server: Apache/2.4.41
Content-Type: text/html; charset=UTF-8
Content-Length: 1234
Set-Cookie: session=xyz789; Path=/; HttpOnly

<!DOCTYPE html>
<html>
<body>Content here</body>
</html>
```


CODES DE STATUT HTTP


1xx : INFORMATIONNEL
════════════════════

100 Continue
────────────

Client peut continuer envoyer corps

Usage : Upload gros fichiers


101 Switching Protocols
───────────────────────

Changement protocole (ex: WebSocket)


2xx : SUCCÈS [OK]
═══════════════

200 OK
──────

**Requête réussie**

Réponse standard

GET : Corps contient ressource
POST : Corps contient résultat


201 Created
───────────

Ressource créée

POST/PUT succès

Header Location : URL nouvelle ressource

Exemple :
```
HTTP/1.1 201 Created
Location: /users/456
```


202 Accepted
────────────

Requête acceptée (traitement asynchrone)


204 No Content
──────────────

Succès MAIS pas de corps

DELETE succès


206 Partial Content
───────────────────

Requête range (téléchargement partiel)


3xx : REDIRECTION
═════════════════

301 Moved Permanently
─────────────────────

**Redirection permanente**

SEO : Moteurs suivent

Exemple :
```
HTTP/1.1 301 Moved Permanently
Location: https://www.example.com/new-page
```


302 Found
─────────

Redirection temporaire

Exemple :
```
HTTP/1.1 302 Found
Location: /login
```


304 Not Modified
────────────────

Cache valide (pas de nouveau contenu)

Économise bande passante


307 Temporary Redirect
──────────────────────

Redirection temporaire (méthode préservée)


308 Permanent Redirect
──────────────────────

Redirection permanente (méthode préservée)


4xx : ERREUR CLIENT [X]
══════════════════════

400 Bad Request
───────────────

**Requête invalide**

Syntaxe incorrecte


401 Unauthorized
────────────────

**Authentification requise**

Header : WWW-Authenticate

Exemple :
```
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Restricted Area"
```


403 Forbidden
─────────────

**Accès interdit**

Authentifié MAIS pas autorisé


404 Not Found
─────────────

**Ressource introuvable**

Le plus célèbre !


405 Method Not Allowed
──────────────────────

Méthode non supportée

Exemple : DELETE sur ressource lecture seule


408 Request Timeout
───────────────────

Timeout client


409 Conflict
────────────

Conflit (ex: version ressource)


410 Gone
────────

Ressource supprimée définitivement


413 Payload Too Large
─────────────────────

Corps trop grand


414 URI Too Long
────────────────

URL trop longue


415 Unsupported Media Type
──────────────────────────

Content-Type non supporté


429 Too Many Requests
─────────────────────

Rate limiting dépassé


5xx : ERREUR SERVEUR [HOT]
═══════════════════════

500 Internal Server Error
─────────────────────────

**Erreur serveur générique**

Bug application


501 Not Implemented
───────────────────

Méthode non implémentée


502 Bad Gateway
───────────────

Proxy reçu réponse invalide upstream


503 Service Unavailable
───────────────────────

**Serveur surchargé/maintenance**

Temporaire

Header : Retry-After


504 Gateway Timeout
───────────────────

Timeout proxy/gateway


EN-TÊTES RÉPONSE


Server
══════

Logiciel serveur

Exemple :
```
Server: Apache/2.4.41 (Ubuntu)
Server: nginx/1.18.0
```


Content-Type
════════════

Type contenu réponse

Exemples :
```
Content-Type: text/html; charset=UTF-8
Content-Type: application/json
Content-Type: image/jpeg
```


Content-Length
══════════════

Taille corps (bytes)


Set-Cookie
══════════

Définir cookie client

Exemple :
```
Set-Cookie: session_id=abc123; Path=/; HttpOnly; Secure; SameSite=Strict
```


Location
════════

URL redirection (3xx) ou nouvelle ressource (201)


Cache-Control
═════════════

Directives cache

Exemples :
```
Cache-Control: public, max-age=3600
Cache-Control: private, no-store
```


ETag
════

Identifiant version ressource

Cache validation

Exemple :
```
ETag: "abc123xyz"
```


Last-Modified
═════════════

Date dernière modification

Exemple :
```
Last-Modified: Mon, 23 Jan 2026 10:00:00 GMT
```


Transfer-Encoding
═════════════════

Encodage transfert

Exemple :
```
Transfer-Encoding: chunked
```
"""


# ----------------------------------------------------------------------------
# [VERROUILLE] PARTIE 4 : HTTPS et TLS/SSL
# ----------------------------------------------------------------------------

"""
HTTPS (HTTP SECURE)


DÉFINITION

HTTP + TLS/SSL

Port : 443 (vs 80 HTTP)

Chiffrement bout-en-bout


POURQUOI HTTPS ?

HTTP problèmes :
[X] Texte clair (lisible)
[X] Pas d'authentification serveur
[X] Pas d'intégrité données
[X] MITM attacks faciles

HTTPS résout :
[OK] Confidentialité (chiffrement)
[OK] Intégrité (détection modification)
[OK] Authentification (certificats)


TLS (TRANSPORT LAYER SECURITY)

Successeur SSL

Versions :
- SSL 2.0/3.0 : Obsolètes (vulnérables)
- TLS 1.0/1.1 : Dépréciés
- **TLS 1.2** : Standard actuel [OK]
- **TLS 1.3** : Moderne (2018) [OK]


CERTIFICAT SSL/TLS

Fichier numérique

Contient :
- Nom domaine
- Clé publique
- Émetteur (CA - Certificate Authority)
- Validité (dates)
- Signature CA


AUTORITÉS CERTIFICATION (CA)

Organisations confiance

Exemples :
- Let's Encrypt (gratuit)
- DigiCert
- Comodo
- GeoTrust


TYPES CERTIFICATS


DV (Domain Validated)
═════════════════════

Validation domaine simple

Rapide, économique

Let's Encrypt


OV (Organization Validated)
═══════════════════════════

Validation organisation

Vérification entreprise


EV (Extended Validation)
════════════════════════

Validation étendue

Barre verte navigateur (obsolète)

Vérification approfondie


Wildcard
════════

Couvre sous-domaines

Exemple : *.example.com
- www.example.com [OK]
- api.example.com [OK]
- blog.example.com [OK]


HANDSHAKE TLS 1.2


Étapes :

```
Client                          Server
  |                               |
  | ClientHello                   |
  |------------------------------>|
  |   (Version TLS, Ciphers)      |
  |                               |
  |            ServerHello        |
  |<------------------------------|
  |   (Version, Cipher choisi)    |
  |                               |
  |            Certificate        |
  |<------------------------------|
  |   (Certificat serveur)        |
  |                               |
  |       ServerHelloDone         |
  |<------------------------------|
  |                               |
  | ClientKeyExchange             |
  |------------------------------>|
  |   (Clé pré-master chiffrée)   |
  |                               |
  | ChangeCipherSpec              |
  |------------------------------>|
  | Finished                      |
  |------------------------------>|
  |                               |
  |         ChangeCipherSpec      |
  |<------------------------------|
  |         Finished              |
  |<------------------------------|
  |                               |
  | CHIFFREMENT ACTIF [OK]          |
  |                               |
  | Application Data (chiffré)    |
  |<----------------------------->|
```


Détail :


1. ClientHello
──────────────

Client -> Server

- Version TLS supportée
- Cipher suites supportées
- Random bytes (nonce)
- Extensions (SNI, ALPN...)


2. ServerHello
──────────────

Server -> Client

- Version TLS choisie
- Cipher suite choisie
- Random bytes
- Session ID


3. Certificate
──────────────

Server -> Client

Certificat SSL/TLS serveur

Chaîne certification complète


4. ServerHelloDone
──────────────────

Server -> Client

Fin messages serveur


5. ClientKeyExchange
────────────────────

Client -> Server

Clé pré-master (chiffrée clé publique serveur)

Client et serveur calculent master secret


6. ChangeCipherSpec
───────────────────

Client -> Server

Activation chiffrement


7. Finished
───────────

Client -> Server (chiffré)

Hash handshake (vérification)


8. ChangeCipherSpec + Finished
──────────────────────────────

Server -> Client

Confirmation chiffrement


HANDSHAKE TLS 1.3

Plus rapide : 1-RTT (vs 2-RTT TLS 1.2)

```
Client                          Server
  |                               |
  | ClientHello + KeyShare        |
  |------------------------------>|
  |                               |
  | ServerHello + KeyShare        |
  | Certificate                   |
  | Finished                      |
  |<------------------------------|
  |                               |
  | Finished                      |
  |------------------------------>|
  |                               |
  | Application Data              |
  |<----------------------------->|
```

1-RTT handshake [OK]

0-RTT possible (session resumption)


CIPHER SUITES

Algorithmes cryptographiques

Format :
```
TLS_<KeyExchange>_WITH_<Encryption>_<MAC>
```

Exemples :

TLS 1.2 :
```
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  ^      ^          ^       ^    ^
  Proto  KeyEx      Encrypt Mode MAC
```

TLS 1.3 :
```
TLS_AES_256_GCM_SHA384
(KeyExchange séparé)
```


Recommandé :
[OK] ECDHE (Ephemeral - Forward Secrecy)
[OK] AES-GCM ou ChaCha20-Poly1305
[OK] SHA256 ou SHA384

Éviter :
[X] RSA key exchange (pas Forward Secrecy)
[X] 3DES, RC4 (faibles)
[X] MD5, SHA1 (cassés)


FORWARD SECRECY (FS)

Clés session éphémères

Compromission clé serveur ≠ déchiffrement sessions passées [OK]

ECDHE recommandé


SNI (SERVER NAME INDICATION)

Extension TLS

Permet multiples certificats (Virtual Hosting)

Client envoie nom domaine dans ClientHello

Exemple :
```
ClientHello:
  Server Name: www.example.com
```

Serveur retourne certificat approprié


VÉRIFICATION CERTIFICAT

Navigateur vérifie :

1. **Nom domaine** (CN ou SAN)
2. **Validité** (dates)
3. **Chaîne certification** (CA confiance)
4. **Révocation** (CRL ou OCSP)
5. **Signature** (intégrité)

Si échec : Avertissement sécurité [ATTENTION]


HSTS (HTTP STRICT TRANSPORT SECURITY)

Force HTTPS

Header :
```
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
```

Navigateur refuse HTTP après


CERTIFICATE PINNING

Épingle certificat/clé publique

Protection MITM avancée

Header :
```
Public-Key-Pins: pin-sha256="base64=="; max-age=5184000
```

Risqué (lockout si clé perdue)
"""


# ----------------------------------------------------------------------------
# [COOKIE] PARTIE 5 : COOKIES et SESSIONS
# ----------------------------------------------------------------------------

"""
COOKIES HTTP


DÉFINITION

Petits fichiers texte stockés client

Envoyés chaque requête (même domaine)


CRÉATION COOKIE

Server -> Client :
```
HTTP/1.1 200 OK
Set-Cookie: session_id=abc123; Path=/; HttpOnly; Secure; SameSite=Strict
Set-Cookie: user_pref=dark_mode; Max-Age=31536000
```


ENVOI COOKIE

Client -> Server :
```
GET /profile HTTP/1.1
Host: www.example.com
Cookie: session_id=abc123; user_pref=dark_mode
```


ATTRIBUTS COOKIE


Path
════

Portée cookie (chemins)

Exemple :
```
Set-Cookie: data=value; Path=/admin
```

Envoyé seulement requêtes /admin/*


Domain
══════

Portée domaine

Exemple :
```
Set-Cookie: data=value; Domain=.example.com
```

Envoyé : example.com, www.example.com, api.example.com


Expires / Max-Age
═════════════════

Durée vie

Expires : Date absolue
```
Set-Cookie: data=value; Expires=Wed, 01 Jan 2027 00:00:00 GMT
```

Max-Age : Secondes
```
Set-Cookie: data=value; Max-Age=3600
```

Pas d'attribut = Session cookie (supprimé fermeture navigateur)


Secure
══════

**Envoyé seulement HTTPS** [OK]

```
Set-Cookie: data=value; Secure
```

Protection MITM


HttpOnly
════════

**Pas accessible JavaScript** [OK]

Protection XSS

```
Set-Cookie: session=abc; HttpOnly
```

document.cookie ne voit pas


SameSite
════════

Protection CSRF

Valeurs :

**Strict**
```
Set-Cookie: session=abc; SameSite=Strict
```

Jamais envoyé requêtes cross-site


**Lax** (défaut moderne)
```
Set-Cookie: data=value; SameSite=Lax
```

Envoyé navigation top-level (liens)
Pas AJAX/images cross-site


**None**
```
Set-Cookie: tracking=xyz; SameSite=None; Secure
```

Envoyé partout (requis Secure)


SESSIONS

Mécanisme état côté serveur

Workflow :

1. Client connexion
2. Server génère session ID
3. Server stocke données session (RAM/DB/Redis)
4. Server envoie session ID cookie
5. Client renvoie cookie chaque requête
6. Server retrouve session données

Exemple :
```
# Connexion
POST /login
username=alice&password=secret

# Serveur crée session
Session ID: abc123xyz
Stocke : {user_id: 42, username: "alice", role: "admin"}

# Réponse
HTTP/1.1 200 OK
Set-Cookie: PHPSESSID=abc123xyz; HttpOnly; Secure

# Requêtes suivantes
GET /dashboard
Cookie: PHPSESSID=abc123xyz

# Serveur charge session abc123xyz
# Sait : user alice, admin
```


SÉCURITÉ COOKIES

Best Practices :

[OK] HttpOnly (sessions)
[OK] Secure (HTTPS uniquement)
[OK] SameSite=Strict ou Lax
[OK] Expiration courte (sessions)
[OK] Rotation session ID (login)
[OK] CSRF tokens
[OK] Validation serveur
"""


# ----------------------------------------------------------------------------
# [RAPIDE] PARTIE 6 : VERSIONS HTTP AVANCÉES
# ----------------------------------------------------------------------------

"""
HTTP/2


AMÉLIORATIONS vs HTTP/1.1

[OK] Binaire (vs texte)
[OK] Multiplexing (requêtes parallèles/1 TCP) [OK]
[OK] Compression en-têtes (HPACK)
[OK] Server Push
[OK] Priorités streams


MULTIPLEXING

HTTP/1.1 :
- 1 requête -> 1 réponse -> 1 requête...
- Head-of-line blocking [X]
- Parallélisme : Multiples connexions TCP

HTTP/2 :
- Multiple requêtes simultanées
- 1 connexion TCP [OK]
- Streams indépendants

```
HTTP/1.1:
TCP1 : [Req1] -> [Res1] -> [Req2] -> [Res2]
TCP2 : [Req3] -> [Res3]
TCP3 : [Req4] -> [Res4]

HTTP/2:
TCP : [Req1, Req2, Req3, Req4] -> [Res1, Res2, Res3, Res4]
      (entrelacés, streams)
```


SERVER PUSH

Serveur envoie ressources AVANT requête client

Exemple :
```
Client demande : /index.html

Server répond :
- index.html
- Push : /style.css (anticipé)
- Push : /script.js (anticipé)
```

Réduit latence [OK]


HPACK

Compression en-têtes

Dictionnaire statique + dynamique

Réduit overhead headers répétitifs


HTTP/3


BASÉ QUIC

QUIC = UDP + Fiabilité + TLS 1.3 intégré

Avantages vs HTTP/2 (TCP) :

[OK] Pas de head-of-line blocking TCP
[OK] Connexion rapide (0-RTT)
[OK] Migration connexion (changement IP)
[OK] Amélioration perte paquets


ARCHITECTURE

```
HTTP/3
  v
QUIC (UDP + TLS 1.3)
  v
UDP
```

vs

```
HTTP/2
  v
TLS 1.2/1.3
  v
TCP
```


0-RTT CONNECTION

Résumption session : 0 round-trip

```
Client -> Server : ClientHello + Data (chiffré)
Server -> Client : ServerHello + Response
```

Latence ultra-faible [OK]


ADOPTION

YouTube, Google, Facebook, Cloudflare

Chrome, Firefox support natif

nginx, LiteSpeed, Cloudflare
"""


# ----------------------------------------------------------------------------
# [PLUGIN] PARTIE 7 : REST API
# ----------------------------------------------------------------------------

"""
REST API (REPRESENTATIONAL STATE TRANSFER)


PRINCIPES

Architecture logicielle

Ressources (nouns)

Méthodes HTTP (verbs)

Stateless

Format : JSON (généralement)


DESIGN REST


RESSOURCES

URLs représentent ressources (pas actions)

Exemples :
```
[OK] GET  /users          (liste)
[OK] GET  /users/123      (utilisateur 123)
[OK] POST /users          (créer)
[OK] PUT  /users/123      (modifier)
[OK] DELETE /users/123    (supprimer)

[X] GET /getUsers
[X] POST /createUser
[X] GET /deleteUser/123
```


MÉTHODES HTTP

GET : Lecture
POST : Création
PUT : Modification complète
PATCH : Modification partielle
DELETE : Suppression


CODES STATUT

200 OK : Succès GET/PUT/PATCH
201 Created : Succès POST
204 No Content : Succès DELETE
400 Bad Request : Données invalides
401 Unauthorized : Authentification requise
403 Forbidden : Accès interdit
404 Not Found : Ressource introuvable
500 Internal Server Error : Erreur serveur


EXEMPLE API REST

```
# Liste utilisateurs
GET /api/v1/users HTTP/1.1
Host: api.example.com
Authorization: Bearer token123

HTTP/1.1 200 OK
Content-Type: application/json

[
  {"id": 1, "name": "Alice", "email": "alice@example.com"},
  {"id": 2, "name": "Bob", "email": "bob@example.com"}
]


# Créer utilisateur
POST /api/v1/users HTTP/1.1
Content-Type: application/json
Authorization: Bearer token123

{"name": "Charlie", "email": "charlie@example.com"}

HTTP/1.1 201 Created
Location: /api/v1/users/3
Content-Type: application/json

{"id": 3, "name": "Charlie", "email": "charlie@example.com"}


# Modifier utilisateur
PUT /api/v1/users/3 HTTP/1.1
Content-Type: application/json

{"name": "Charles", "email": "charles@example.com"}

HTTP/1.1 200 OK


# Supprimer utilisateur
DELETE /api/v1/users/3 HTTP/1.1

HTTP/1.1 204 No Content
```


VERSIONING API

Dans URL :
```
/api/v1/users
/api/v2/users
```

Ou header :
```
Accept: application/vnd.example.v2+json
```


AUTHENTIFICATION API


Bearer Token (JWT)
══════════════════

```
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
```


API Key
═══════

```
X-API-Key: abc123xyz789
```


OAuth 2.0
═════════

Standard industrie

Flows : Authorization Code, Client Credentials...


PAGINATION

Limite résultats

Query params :
```
GET /users?page=2&limit=50

Réponse headers :
X-Total-Count: 1000
Link: </users?page=3&limit=50>; rel="next"
```


FILTERING

```
GET /users?role=admin&active=true
```


SORTING

```
GET /users?sort=name&order=asc
```
"""


# ----------------------------------------------------------------------------
# [PLUGIN] PARTIE 8 : WEBSOCKETS
# ----------------------------------------------------------------------------

"""
WEBSOCKETS


PROBLÈME HTTP

HTTP : Request/Response (pull)

Pas adapté temps réel :
- Chat
- Notifications
- Gaming
- Dashboards live


WEBSOCKET SOLUTION

Connexion bidirectionnelle persistante [OK]

Full-duplex

Faible latence

Port : 80 (ws://) ou 443 (wss://)


HANDSHAKE WEBSOCKET

Upgrade HTTP -> WebSocket

```
Client -> Server:
GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13

Server -> Client:
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

[OK] WebSocket établi
```


COMMUNICATION

Après handshake : Messages bidirectionnels

```
Client <--> Server (temps réel)

Client -> Server : {"type":"message","text":"Hello"}
Server -> Client : {"type":"message","user":"Bob","text":"Hi!"}
Client -> Server : {"type":"typing"}
Server -> Client : {"type":"notification","count":5}
```


FRAMES WEBSOCKET

Binaire (pas texte HTTP)

Types :
- Text frame
- Binary frame
- Ping/Pong (keepalive)
- Close


EXEMPLE JAVASCRIPT

```javascript
// Client
const ws = new WebSocket('wss://server.example.com/chat');

ws.onopen = () => {
  console.log('Connected');
  ws.send(JSON.stringify({type: 'join', room: 'general'}));
};

ws.onmessage = (event) => {
  const data = JSON.parse(event.data);
  console.log('Message:', data);
};

ws.onclose = () => {
  console.log('Disconnected');
};

// Envoyer message
ws.send(JSON.stringify({type: 'message', text: 'Hello!'}));
```


AVANTAGES

[OK] Temps réel
[OK] Bidirectionnel
[OK] Faible latence
[OK] Overhead minimal (vs polling)


INCONVÉNIENTS

[X] Complexité serveur (connexions persistantes)
[X] Scalabilité (milliers connexions)
[X] Load balancing délicat
[X] Firewalls/proxies problèmes potentiels


ALTERNATIVES

**Server-Sent Events (SSE)**
Unidirectionnel (server -> client)
HTTP natif
Simpler que WebSocket

**Long Polling**
HTTP classique
Client maintient requête ouverte
```


# ----------------------------------------------------------------------------
# [COURS] EXERCICE PRATIQUE
# ----------------------------------------------------------------------------

"""
[IDEE] EXERCICE PRATIQUE


═══════════════════════════════════════════════════════════
EXERCICE 1 : ANALYSE REQUÊTE HTTP
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Analyser requête suivante :

```
POST /api/users HTTP/1.1
Host: api.example.com
User-Agent: curl/7.68.0
Accept: */*
Content-Type: application/json
Content-Length: 58
Authorization: Bearer abc123

{"name":"Alice Smith","email":"alice@example.com"}
```

Questions :
1. Méthode HTTP ?
2. Ressource ?
3. Type contenu ?
4. Taille corps ?
5. Authentification ?


[OK] CORRECTION

1. **Méthode** : POST (création ressource)
2. **Ressource** : /api/users (collection utilisateurs)
3. **Content-Type** : application/json (JSON)
4. **Content-Length** : 58 bytes
5. **Authorization** : Bearer token (abc123)


═══════════════════════════════════════════════════════════
EXERCICE 2 : CODES STATUT
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Code statut approprié pour chaque scénario :

1. Utilisateur créé avec succès
2. Page n'existe pas
3. Serveur base de données down
4. Login requis
5. Ressource supprimée
6. Données formulaire invalides


[OK] CORRECTION

1. **201 Created** [OK]
2. **404 Not Found** [OK]
3. **500 Internal Server Error** (ou 503 Service Unavailable) [OK]
4. **401 Unauthorized** [OK]
5. **204 No Content** [OK]
6. **400 Bad Request** [OK]


═══════════════════════════════════════════════════════════
FIN EXERCICES
═══════════════════════════════════════════════════════════
"""


# ============================================================================
# [DOCS] CONCLUSION CHAPITRE 26
# ============================================================================

"""
[BRAVO] FÉLICITATIONS !

Chapitre 26 : HTTP/HTTPS terminé (ultra-détaillé)


[GUIDE] RÉCAPITULATIF COMPLET

[OK] HTTP fondamentaux (client-serveur, stateless)
[OK] Versions HTTP (1.0, 1.1, 2, 3)
[OK] Méthodes HTTP (GET, POST, PUT, DELETE...)
[OK] Codes statut complets (200, 404, 500...)
[OK] En-têtes HTTP (requête et réponse)
[OK] HTTPS et TLS/SSL
[OK] Handshake TLS 1.2 et 1.3
[OK] Certificats SSL/TLS
[OK] Cookies et sessions
[OK] HTTP/2 (multiplexing, server push)
[OK] HTTP/3 (QUIC)
[OK] REST API (design, best practices)
[OK] WebSockets (temps réel)
[OK] Sécurité Web
[OK] Exercices pratiques


[OBJECTIF] COMPÉTENCES MAÎTRISÉES

[OK] Comprendre HTTP/HTTPS complet
[OK] Méthodes et codes statut expert
[OK] TLS/SSL et chiffrement
[OK] Cookies et sessions sécurisés
[OK] REST API design
[OK] WebSockets temps réel
[OK] Analyser trafic HTTP


[IDEE] POINTS CLÉS

HTTP :
[OK] Protocole Web fondamental
[OK] Stateless (cookies = état)
[OK] Méthodes : GET (lecture), POST (création)
[OK] Codes : 2xx succès, 4xx client, 5xx serveur

HTTPS :
[OK] HTTP + TLS chiffrement
[OK] Port 443
[OK] Certificats SSL/TLS
[OK] Obligatoire Web moderne

Évolution :
[OK] HTTP/1.1 : Standard actuel
[OK] HTTP/2 : Multiplexing (adoption croissante)
[OK] HTTP/3 : QUIC/UDP (futur)


[RAPIDE] EXCELLENT TRAVAIL !

HTTP/HTTPS = FONDATION Web moderne.

Vous maîtrisez maintenant :
- Protocole HTTP complet
- HTTPS et sécurité TLS
- REST API design
- WebSockets temps réel
- Best practices sécurité

Compétence ESSENTIELLE développeur/ingénieur ! [WEB]


═══════════════════════════════════════════════════════════
[GUIDE] FIN DU CHAPITRE 26 - HTTP/HTTPS
═══════════════════════════════════════════════════════════
"""

# ============================================================================
# CHAPITRE 27 : PROTOCOLES EMAIL (SMTP, IMAP, POP3)
# ============================================================================

"""
[OBJECTIF] OBJECTIFS DU CHAPITRE

[OK] Architecture email (MUA, MTA, MDA)
[OK] SMTP (Simple Mail Transfer Protocol)
[OK] Commandes SMTP détaillées
[OK] IMAP (Internet Message Access Protocol)
[OK] POP3 (Post Office Protocol v3)
[OK] Comparaison IMAP vs POP3
[OK] Format email (RFC 5322)
[OK] MIME (Multipurpose Internet Mail Extensions)
[OK] Authentification SMTP (AUTH, STARTTLS)
[OK] Sécurité email (SPF, DKIM, DMARC)
[OK] Ports email
[OK] Configuration serveurs email
[OK] Troubleshooting email
[OK] Exercices pratiques

[IDEE] POURQUOI LES PROTOCOLES EMAIL SONT ESSENTIELS ?

Email = Communication professionnelle #1

Sans protocoles email :
[X] Pas d'email Internet
[X] Pas de communication asynchrone
[X] Pas d'échange documents

Avec SMTP/IMAP/POP3 :
[OK] Envoi email universel (SMTP)
[OK] Synchronisation multi-devices (IMAP)
[OK] Téléchargement local (POP3)
[OK] Pièces jointes, HTML

Email = FONDATION communication professionnelle !
"""


# ----------------------------------------------------------------------------
# [EMAIL] PARTIE 1 : ARCHITECTURE EMAIL
# ----------------------------------------------------------------------------

"""
ARCHITECTURE EMAIL


COMPOSANTS


MUA (MAIL USER AGENT)
══════════════════════

Client email

Exemples :
- Outlook
- Thunderbird
- Apple Mail
- Gmail web interface

Fonctions :
- Composition messages
- Lecture messages
- Organisation (dossiers)


MTA (MAIL TRANSFER AGENT)
══════════════════════════

Serveur SMTP

Transfert emails entre serveurs

Exemples :
- Postfix
- Sendmail
- Exim
- Microsoft Exchange

Rôle : Routage emails


MDA (MAIL DELIVERY AGENT)
══════════════════════════

Livraison finale mailbox

Exemples :
- Dovecot
- Courier
- Cyrus

Rôle : Stockage boîtes mail


FLUX EMAIL COMPLET

```
Expéditeur (alice@example.com)
      |
      v
 [MUA - Outlook]
      | SMTP
      v
 [MTA - Serveur example.com]
      | SMTP (Internet)
      v
 [MTA - Serveur gmail.com]
      |
      v
 [MDA - Stockage mailbox]
      |
      v
Destinataire (bob@gmail.com)
      ^ IMAP/POP3
 [MUA - Gmail]
```


Détail étapes :

1. Alice compose email (Outlook)
2. Outlook envoie SMTP -> Serveur example.com
3. Serveur example.com (MTA) :
   - Résout DNS MX gmail.com
   - Envoie SMTP -> Serveur Gmail
4. Serveur Gmail (MTA) :
   - Accepte email
   - MDA stocke mailbox Bob
5. Bob récupère email (Gmail web ou IMAP)


PROTOCOLES

Envoi : **SMTP** (Simple Mail Transfer Protocol)
Réception : **IMAP** ou **POP3**


PORTS

┌──────────────┬──────┬─────────────────────┐
│  Protocole   │ Port │    Description      │
├──────────────┼──────┼─────────────────────┤
│ SMTP         │  25  │ MTA-to-MTA          │
│ SMTP (sub)   │ 587  │ Client submission [OK]│
│ SMTPS        │ 465  │ SMTP over SSL       │
│ POP3         │ 110  │ Insécure            │
│ POP3S        │ 995  │ POP3 over SSL [OK]    │
│ IMAP         │ 143  │ Insécure            │
│ IMAPS        │ 993  │ IMAP over SSL [OK]    │
└──────────────┴──────┴─────────────────────┘


DNS MX RECORDS

Mail eXchanger

Résolution domaine -> Serveurs mail

Exemple :
```
$ dig MX gmail.com

gmail.com.  3600  IN  MX  5  gmail-smtp-in.l.google.com.
gmail.com.  3600  IN  MX  10 alt1.gmail-smtp-in.l.google.com.
```

Priorité : Plus BAS = Plus prioritaire

5 < 10 -> gmail-smtp-in.l.google.com prioritaire
"""


# ----------------------------------------------------------------------------
# [SORTIE] PARTIE 2 : SMTP (SIMPLE MAIL TRANSFER PROTOCOL)
# ----------------------------------------------------------------------------

"""
SMTP (SIMPLE MAIL TRANSFER PROTOCOL)


CARACTÉRISTIQUES

Protocole envoi email

Port : 25 (MTA-MTA), 587 (submission client) [OK]

ASCII texte

Connexion TCP

Commandes texte


FONCTIONNEMENT

```
Client SMTP                    Serveur SMTP
    |                               |
    | Connexion TCP port 587        |
    |------------------------------>|
    |                               |
    |        220 Service ready      |
    |<------------------------------|
    |                               |
    | HELO/EHLO client.example.com  |
    |------------------------------>|
    |                               |
    |    250 Hello, pleased to meet |
    |<------------------------------|
    |                               |
    | MAIL FROM:<alice@example.com> |
    |------------------------------>|
    |                               |
    |    250 Sender OK              |
    |<------------------------------|
    |                               |
    | RCPT TO:<bob@gmail.com>       |
    |------------------------------>|
    |                               |
    |    250 Recipient OK           |
    |<------------------------------|
    |                               |
    | DATA                          |
    |------------------------------>|
    |                               |
    |    354 Start mail input       |
    |<------------------------------|
    |                               |
    | From: alice@example.com       |
    | To: bob@gmail.com             |
    | Subject: Test Email           |
    |                               |
    | Hello Bob!                    |
    | .                             |
    |------------------------------>|
    |                               |
    |    250 Message accepted       |
    |<------------------------------|
    |                               |
    | QUIT                          |
    |------------------------------>|
    |                               |
    |    221 Bye                    |
    |<------------------------------|
```


COMMANDES SMTP


HELO / EHLO
═══════════

Identification client

HELO : Standard
EHLO : Extended (préféré) [OK]

Exemple :
```
Client: EHLO mail.example.com
Server: 250-smtp.gmail.com
        250-SIZE 35882577
        250-8BITMIME
        250-STARTTLS
        250-AUTH LOGIN PLAIN
        250 ENHANCEDSTATUSCODES
```


MAIL FROM
═════════

Expéditeur (envelope)

Syntaxe :
```
MAIL FROM:<alice@example.com>
```

Réponse :
```
250 2.1.0 Sender OK
```


RCPT TO
═══════

Destinataire

Syntaxe :
```
RCPT TO:<bob@gmail.com>
```

Multiple destinataires : Multiple RCPT TO

Réponse :
```
250 2.1.5 Recipient OK
```


DATA
════

Début transmission corps message

Syntaxe :
```
DATA
```

Réponse :
```
354 Start mail input; end with <CRLF>.<CRLF>
```

Client envoie :
```
From: Alice <alice@example.com>
To: Bob <bob@gmail.com>
Subject: Test
Date: Mon, 23 Jan 2026 10:30:00 +0000

Hello Bob,

This is a test email.

Best regards,
Alice
.
```

Point seul (.) sur ligne = Fin message


RSET
════

Reset transaction

Annule MAIL FROM, RCPT TO

Garde connexion


VRFY
════

Vérifier adresse email existe

Souvent désactivé (sécurité - enumeration)

Exemple :
```
VRFY bob@gmail.com
250 Bob Smith <bob@gmail.com>
```


EXPN
════

Expand mailing list

Rarement utilisé


NOOP
════

No Operation (keepalive)

Réponse :
```
250 OK
```


QUIT
════

Terminer session

Réponse :
```
221 2.0.0 Bye
```


CODES RÉPONSE SMTP


2xx : SUCCÈS
════════════

220 : Service ready
250 : Requested action okay
251 : User not local; will forward
252 : Cannot verify user


3xx : INTERMÉDIAIRE
═══════════════════

354 : Start mail input


4xx : ERREUR TEMPORAIRE
═══════════════════════

421 : Service not available
450 : Mailbox unavailable (busy)
451 : Action aborted (error)
452 : Insufficient storage


5xx : ERREUR PERMANENTE
═══════════════════════

500 : Syntax error, command unrecognized
501 : Syntax error in parameters
502 : Command not implemented
503 : Bad sequence of commands
504 : Command parameter not implemented
550 : Mailbox unavailable (not found)
551 : User not local
552 : Exceeded storage allocation
553 : Mailbox name not allowed
554 : Transaction failed


AUTHENTIFICATION SMTP


STARTTLS
════════

Upgrade connexion -> TLS

Séquence :
```
Client: EHLO mail.example.com
Server: 250-STARTTLS

Client: STARTTLS
Server: 220 Ready to start TLS

[TLS Handshake]

Client: EHLO mail.example.com (dans TLS)
Server: 250-AUTH LOGIN PLAIN
```

Port 587 requis généralement


AUTH
════

Authentification

Méthodes :
- **PLAIN** : Username + Password base64
- **LOGIN** : Username, Password séparés base64
- **CRAM-MD5** : Challenge-response
- **OAUTH2** : Token moderne [OK]


Exemple PLAIN :
```
Client: AUTH PLAIN
Server: 334 (ready)

Client: AGFsaWNlAHNlY3JldHBhc3M=
       (base64: \0alice\0secretpass)

Server: 235 2.7.0 Authentication successful
```


Exemple LOGIN :
```
Client: AUTH LOGIN
Server: 334 VXNlcm5hbWU6 (base64: Username:)

Client: YWxpY2U= (base64: alice)
Server: 334 UGFzc3dvcmQ6 (base64: Password:)

Client: c2VjcmV0cGFzcw== (base64: secretpass)
Server: 235 Authentication successful
```


SMTP SÉCURISÉ

Best Practices :

[OK] Port 587 (submission) avec STARTTLS
[OK] Authentication obligatoire
[OK] TLS 1.2+ uniquement
[OK] Certificates valides

Éviter :
[X] Port 25 ouvert (relay abuse)
[X] Port 465 (SMTPS deprecated, mais parfois utilisé)
[X] Pas d'auth (open relay)
"""


# ----------------------------------------------------------------------------
# [ENTREE] PARTIE 3 : POP3 (POST OFFICE PROTOCOL)
# ----------------------------------------------------------------------------

"""
POP3 (POST OFFICE PROTOCOL VERSION 3)


CARACTÉRISTIQUES

Protocole réception email

Port : 110 (insécure), 995 (POP3S) [OK]

Téléchargement local

Suppression serveur (généralement)


PRINCIPE

1. Client connecte serveur
2. Authentification
3. Liste messages
4. Télécharge messages
5. Supprime serveur (optionnel)
6. Déconnexion


FONCTIONNEMENT

```
Client POP3                    Serveur POP3
    |                               |
    | Connexion TCP port 995        |
    |------------------------------>|
    |                               |
    |    +OK POP3 server ready      |
    |<------------------------------|
    |                               |
    | USER alice                    |
    |------------------------------>|
    |                               |
    |    +OK User accepted          |
    |<------------------------------|
    |                               |
    | PASS secretpass               |
    |------------------------------>|
    |                               |
    |    +OK Logged in              |
    |<------------------------------|
    |                               |
    | STAT                          |
    |------------------------------>|
    |                               |
    |    +OK 3 12456 (3 msg, 12456 bytes)
    |<------------------------------|
    |                               |
    | LIST                          |
    |------------------------------>|
    |                               |
    |    +OK 3 messages             |
    |    1 2048                     |
    |    2 4096                     |
    |    3 6312                     |
    |    .                          |
    |<------------------------------|
    |                               |
    | RETR 1                        |
    |------------------------------>|
    |                               |
    |    +OK 2048 octets            |
    |    [Message content]          |
    |    .                          |
    |<------------------------------|
    |                               |
    | DELE 1                        |
    |------------------------------>|
    |                               |
    |    +OK Message 1 deleted      |
    |<------------------------------|
    |                               |
    | QUIT                          |
    |------------------------------>|
    |                               |
    |    +OK Bye                    |
    |<------------------------------|
```


COMMANDES POP3


USER
════

Username

Exemple :
```
USER alice
+OK User accepted
```


PASS
════

Password

Exemple :
```
PASS secretpass
+OK Logged in
```


STAT
════

Statistiques mailbox

Réponse : Nombre messages + Taille totale

Exemple :
```
STAT
+OK 3 12456
```


LIST
════

Liste messages (numéro + taille)

Exemple :
```
LIST
+OK 3 messages
1 2048
2 4096
3 6312
.
```

Ou message spécifique :
```
LIST 2
+OK 2 4096
```


RETR
════

Récupérer message

Exemple :
```
RETR 1
+OK 2048 octets
From: alice@example.com
To: bob@gmail.com
Subject: Test

Message content here.
.
```


DELE
════

Marquer message suppression

Suppression effective au QUIT

Exemple :
```
DELE 1
+OK Message 1 deleted
```


RSET
════

Annuler suppressions (DELE)

Exemple :
```
RSET
+OK Reset
```


TOP
═══

Récupérer en-têtes + N lignes corps

Exemple :
```
TOP 1 10
+OK Top of message follows
[Headers + 10 lines]
.
```


UIDL
════

Unique ID messages

Liste IDs uniques

Exemple :
```
UIDL
+OK Unique-ID listing
1 whqtswO00WBw418f9t5JxYwZ
2 QhdPYR:00WBw1Ph7x7
.
```


NOOP
════

No Operation (keepalive)


QUIT
════

Fermer session + Appliquer suppressions

Exemple :
```
QUIT
+OK Bye (1 message deleted)
```


ÉTATS POP3


1. AUTHORIZATION
════════════════

Connexion, authentication

Commandes : USER, PASS


2. TRANSACTION
══════════════

Session active

Commandes : STAT, LIST, RETR, DELE, etc.


3. UPDATE
═════════

Après QUIT

Application suppressions


AVANTAGES POP3

[OK] Simple
[OK] Téléchargement local (offline)
[OK] Libère espace serveur
[OK] Rapide


INCONVÉNIENTS POP3

[X] Pas de synchronisation multi-devices
[X] Pas de dossiers serveur
[X] Messages supprimés serveur
[X] Pas d'accès partiel


POP3S (SÉCURISÉ)

Port : 995

TLS/SSL


APOP (SECURE AUTH)

Alternative authentication

Challenge MD5 (évite password clair)

Rarement utilisé (STARTTLS préféré)
"""


# ----------------------------------------------------------------------------
# [MESSAGE] PARTIE 4 : IMAP (INTERNET MESSAGE ACCESS PROTOCOL)
# ----------------------------------------------------------------------------

"""
IMAP (INTERNET MESSAGE ACCESS PROTOCOL)


CARACTÉRISTIQUES

Protocole réception email avancé

Port : 143 (insecure), 993 (IMAPS) [OK]

Messages restent serveur [OK]

Synchronisation multi-devices [OK]

Dossiers serveur [OK]


PRINCIPE

1. Client connecte serveur
2. Authentification
3. Sélection mailbox
4. Opérations messages (flags, search, fetch)
5. Synchronisation bidirectionnelle


FONCTIONNEMENT

```
Client IMAP                    Serveur IMAP
    |                               |
    | Connexion TCP port 993        |
    |------------------------------>|
    |                               |
    |    * OK IMAP4rev1 ready       |
    |<------------------------------|
    |                               |
    | A001 LOGIN alice secretpass   |
    |------------------------------>|
    |                               |
    |    A001 OK LOGIN completed    |
    |<------------------------------|
    |                               |
    | A002 SELECT INBOX             |
    |------------------------------>|
    |                               |
    |    * 3 EXISTS                 |
    |    * 0 RECENT                 |
    |    * FLAGS (\Seen \Answered)  |
    |    A002 OK SELECT completed   |
    |<------------------------------|
    |                               |
    | A003 FETCH 1 (BODY[])         |
    |------------------------------>|
    |                               |
    |    * 1 FETCH (BODY[] {2048}   |
    |    [Message content]          |
    |    )                          |
    |    A003 OK FETCH completed    |
    |<------------------------------|
    |                               |
    | A004 STORE 1 +FLAGS (\Seen)   |
    |------------------------------>|
    |                               |
    |    * 1 FETCH (FLAGS (\Seen))  |
    |    A004 OK STORE completed    |
    |<------------------------------|
    |                               |
    | A005 LOGOUT                   |
    |------------------------------>|
    |                               |
    |    * BYE IMAP server logging out
    |    A005 OK LOGOUT completed   |
    |<------------------------------|
```


COMMANDES IMAP


LOGIN
═════

Authentification

Exemple :
```
A001 LOGIN alice secretpass
A001 OK LOGIN completed
```


AUTHENTICATE
════════════

Auth avancée (SASL)

Exemples : PLAIN, CRAM-MD5, OAUTH2


SELECT
══════

Sélectionner mailbox (dossier)

Exemple :
```
A002 SELECT INBOX
* 15 EXISTS
* 2 RECENT
* OK [UNSEEN 4] Message 4 is first unseen
* OK [UIDVALIDITY 3857529045]
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
A002 OK [READ-WRITE] SELECT completed
```


EXAMINE
═══════

Sélectionner mailbox (lecture seule)


LIST
════

Liste mailboxes (dossiers)

Exemple :
```
A003 LIST "" "*"
* LIST (\HasNoChildren) "/" INBOX
* LIST (\HasNoChildren) "/" Sent
* LIST (\HasNoChildren) "/" Drafts
* LIST (\HasNoChildren) "/" Trash
A003 OK LIST completed
```


CREATE
══════

Créer mailbox

Exemple :
```
A004 CREATE Work
A004 OK CREATE completed
```


DELETE
══════

Supprimer mailbox


RENAME
══════

Renommer mailbox


SUBSCRIBE / UNSUBSCRIBE
═══════════════════════

S'abonner mailbox (client UI)


FETCH
═════

Récupérer messages ou parties

Exemples :

En-têtes uniquement :
```
A005 FETCH 1 (BODY[HEADER])
```

Corps complet :
```
A006 FETCH 1 (BODY[])
```

Flags :
```
A007 FETCH 1 (FLAGS)
```

Structure :
```
A008 FETCH 1 (BODYSTRUCTURE)
```

Multiple messages :
```
A009 FETCH 1:5 (FLAGS BODY[HEADER])
```


STORE
═════

Modifier flags messages

Exemples :

Marquer lu :
```
A010 STORE 1 +FLAGS (\Seen)
```

Marquer important :
```
A011 STORE 2 +FLAGS (\Flagged)
```

Retirer flag :
```
A012 STORE 3 -FLAGS (\Seen)
```


SEARCH
══════

Rechercher messages

Exemples :

Messages non lus :
```
A013 SEARCH UNSEEN
* SEARCH 4 7 9
A013 OK SEARCH completed
```

De expéditeur spécifique :
```
A014 SEARCH FROM "alice@example.com"
```

Sujet contient :
```
A015 SEARCH SUBJECT "meeting"
```

Combinaisons :
```
A016 SEARCH UNSEEN FROM "bob@gmail.com"
```

Date :
```
A017 SEARCH SINCE 1-Jan-2026
```


COPY
════

Copier messages autre mailbox

Exemple :
```
A018 COPY 1:3 Sent
A018 OK COPY completed
```


EXPUNGE
═══════

Supprimer définitivement messages marqués \Deleted

Exemple :
```
A019 STORE 5 +FLAGS (\Deleted)
A020 EXPUNGE
* 5 EXPUNGE
A020 OK EXPUNGE completed
```


IDLE
════

Mode push (notifications temps réel)

Exemple :
```
A021 IDLE
+ idling
[Serveur notifie changements]
* 16 EXISTS (nouveau message)
DONE
A021 OK IDLE terminated
```


LOGOUT
══════

Déconnexion

Exemple :
```
A022 LOGOUT
* BYE IMAP server logging out
A022 OK LOGOUT completed
```


FLAGS IMAP

Système flags :

**\Seen** : Lu
**\Answered** : Répondu
**\Flagged** : Marqué/Important
**\Deleted** : Supprimé (expunge pour définitif)
**\Draft** : Brouillon
**\Recent** : Nouveau (session actuelle)


Custom flags possibles (serveur dépendant)


AVANTAGES IMAP

[OK] Synchronisation multi-devices [OK]
[OK] Dossiers serveur (organisation)
[OK] Recherche serveur (rapide)
[OK] Accès partiel (headers, attachments)
[OK] Flags/état synchronisés
[OK] Offline capable (cache local)
[OK] Push notifications (IDLE)


INCONVÉNIENTS IMAP

[X] Plus complexe que POP3
[X] Consomme espace serveur
[X] Requiert bande passante


IMAPS (SÉCURISÉ)

Port : 993

TLS/SSL [OK]
"""


# ----------------------------------------------------------------------------
# [SCALES] PARTIE 5 : IMAP vs POP3
# ----------------------------------------------------------------------------

"""
IMAP vs POP3 - COMPARAISON


TABLEAU COMPARATIF

┌──────────────────┬─────────────┬─────────────┐
│    Critère       │    POP3     │    IMAP     │
├──────────────────┼─────────────┼─────────────┤
│ Messages         │ Téléchargés │ Restent     │
│                  │ (supprimés) │ serveur [OK]  │
├──────────────────┼─────────────┼─────────────┤
│ Multi-devices    │ Non [X]      │ Oui [OK]      │
├──────────────────┼─────────────┼─────────────┤
│ Dossiers         │ Local       │ Serveur [OK]  │
├──────────────────┼─────────────┼─────────────┤
│ Synchronisation  │ Non         │ Oui [OK]      │
├──────────────────┼─────────────┼─────────────┤
│ Offline          │ Oui [OK]      │ Partiel     │
├──────────────────┼─────────────┼─────────────┤
│ Espace serveur   │ Libéré [OK]   │ Utilisé     │
├──────────────────┼─────────────┼─────────────┤
│ Recherche        │ Local       │ Serveur [OK]  │
├──────────────────┼─────────────┼─────────────┤
│ Complexité       │ Simple [OK]   │ Complexe    │
├──────────────────┼─────────────┼─────────────┤
│ Bande passante   │ Initiale [OK] │ Continue    │
├──────────────────┼─────────────┼─────────────┤
│ Backup           │ Local [OK]    │ Serveur [OK]  │
└──────────────────┴─────────────┴─────────────┘


QUAND UTILISER POP3 ?

[OK] 1 seul device
[OK] Connexion intermittente
[OK] Espace serveur limité
[OK] Emails volumineux (libérer serveur)


QUAND UTILISER IMAP ?

[OK] Multiple devices (PC, phone, tablet) [OK]
[OK] Synchronisation requise
[OK] Organisation serveur (dossiers)
[OK] Accès partout
[OK] Collaboration équipe


RECOMMANDATION MODERNE

**IMAP** pour majorité cas [OK]

POP3 : Cas spécifiques uniquement
"""


# ----------------------------------------------------------------------------
# [FICHIER] PARTIE 6 : FORMAT EMAIL & MIME
# ----------------------------------------------------------------------------

"""
FORMAT EMAIL (RFC 5322)


STRUCTURE

```
En-têtes
<Ligne vide>
Corps
```


EN-TÊTES PRINCIPAUX


From
════

Expéditeur

Exemple :
```
From: Alice Smith <alice@example.com>
```


To
══

Destinataire(s)

Exemple :
```
To: bob@gmail.com, charlie@yahoo.com
```


Cc
══

Carbon Copy (copie)

Visible tous


Bcc
═══

Blind Carbon Copy (copie cachée)

Invisible autres destinataires


Subject
═══════

Sujet

Exemple :
```
Subject: Q4 Financial Report
```


Date
════

Date envoi

Format RFC 5322 :
```
Date: Mon, 23 Jan 2026 10:30:00 +0000
```


Message-ID
══════════

Identifiant unique

Exemple :
```
Message-ID: <abc123@example.com>
```


Reply-To
════════

Adresse réponse (si différente From)


In-Reply-To
═══════════

Message-ID email auquel on répond


References
══════════

Chaîne conversation


MIME (MULTIPURPOSE INTERNET MAIL EXTENSIONS)


HEADERS MIME


MIME-Version
════════════

Version MIME (toujours 1.0)

```
MIME-Version: 1.0
```


Content-Type
════════════

Type contenu

Exemples :

Texte simple :
```
Content-Type: text/plain; charset=UTF-8
```

HTML :
```
Content-Type: text/html; charset=UTF-8
```

Multipart :
```
Content-Type: multipart/mixed; boundary="boundary123"
```


Content-Transfer-Encoding
══════════════════════════

Encodage

Valeurs :
- 7bit : ASCII pur
- 8bit : 8-bit
- base64 : Binaire encodé [OK]
- quoted-printable : Texte avec caractères spéciaux


MULTIPART

Email avec multiples parties

Types :

**multipart/mixed**
Parties indépendantes (ex: texte + attachments)

**multipart/alternative**
Même contenu formats différents (texte + HTML)

**multipart/related**
Parties liées (HTML + images inline)


EXEMPLE EMAIL MIME

```
From: alice@example.com
To: bob@gmail.com
Subject: Test with Attachment
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="boundary123"

--boundary123
Content-Type: text/plain; charset=UTF-8

Hello Bob,

Please find attached the document.

Best regards,
Alice

--boundary123
Content-Type: application/pdf; name="report.pdf"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="report.pdf"

JVBERi0xLjQKJeLjz9MKNSAwIG9iago8PAovVHlwZSAvUGFnZQovUGFyZW50...
[base64 encoded PDF]

--boundary123--
```


PIÈCES JOINTES

Content-Disposition :
```
Content-Disposition: attachment; filename="document.pdf"
```

Inline (images dans HTML) :
```
Content-Disposition: inline; filename="logo.png"
Content-ID: <logo123>
```

HTML référence :
```html
<img src="cid:logo123">
```
"""


# ----------------------------------------------------------------------------
# [VERROUILLE] PARTIE 7 : SÉCURITÉ EMAIL
# ----------------------------------------------------------------------------

"""
SÉCURITÉ EMAIL


SPF (SENDER POLICY FRAMEWORK)
══════════════════════════════

DNS record

Liste serveurs autorisés envoyer email pour domaine

Prévient spoofing

Exemple DNS TXT :
```
example.com.  TXT  "v=spf1 mx ip4:203.0.113.0/24 -all"
```

Syntaxe :
- v=spf1 : Version
- mx : Serveurs MX autorisés
- ip4: : IPs autorisées
- -all : Échec strict (autres IPs rejetées)


Résultats :
- **Pass** : IP autorisée [OK]
- **Fail** : IP non autorisée [X]
- **SoftFail** : Suspect
- **Neutral** : Pas de policy


DKIM (DOMAINKEYS IDENTIFIED MAIL)
══════════════════════════════════

Signature cryptographique email

Clé privée serveur signe email

Clé publique DNS

Destinataire vérifie signature


DNS TXT record :
```
default._domainkey.example.com.  TXT  "v=DKIM1; k=rsa; p=MIGfMA0G..."
```

Header email :
```
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=example.com; s=default;
  h=from:to:subject:date;
  bh=base64hash;
  b=signature
```

Vérification :
1. Destinataire extrait signature
2. Récupère clé publique DNS
3. Vérifie signature
4. Pass [OK] ou Fail [X]


DMARC (DOMAIN-BASED MESSAGE AUTH)
══════════════════════════════════

Policy basée SPF + DKIM

DNS TXT :
```
_dmarc.example.com.  TXT  "v=DMARC1; p=reject; rua=mailto:dmarc@example.com"
```

Paramètres :
- **p** : Policy (none, quarantine, reject)
- **rua** : Rapports agrégés
- **ruf** : Rapports forensiques
- **pct** : Pourcentage enforcement


Workflow :
1. Vérifier SPF
2. Vérifier DKIM
3. Vérifier alignment (domaine From)
4. Appliquer policy DMARC


TLS/STARTTLS
════════════

Chiffrement connexion

SMTP : STARTTLS (port 587)
IMAP/POP3 : SSL/TLS direct (993/995)


S/MIME
══════

Chiffrement contenu email

Certificats personnels

Signature et chiffrement messages


PGP/GPG
═══════

Chiffrement bout-en-bout

Clés publiques/privées

Email signé et/ou chiffré
"""


# ----------------------------------------------------------------------------
# [OUTIL] PARTIE 8 : TROUBLESHOOTING EMAIL
# ----------------------------------------------------------------------------

"""
TROUBLESHOOTING EMAIL


PROBLÈMES COURANTS


1. EMAILS NON LIVRÉS
════════════════════

Vérifications :

A. DNS MX
─────────

```bash
dig MX example.com
nslookup -type=MX example.com
```

MX record existe ? [OK]


B. Connectivité SMTP
────────────────────

```bash
telnet smtp.example.com 25
nc -v smtp.example.com 25
```

Connexion établie ? [OK]


C. Logs serveur
───────────────

```
/var/log/mail.log
/var/log/maillog
```

Erreurs ?


D. SPF/DKIM/DMARC
─────────────────

```
dig TXT example.com
dig TXT _dmarc.example.com
dig TXT default._domainkey.example.com
```


2. BOUNCE MESSAGES
══════════════════

Codes erreur :

**5.1.1** : Adresse inexistante
**5.2.2** : Quota dépassé
**5.7.1** : Refusé (spam, policy)


3. SPAM/BLACKLIST
═════════════════

Vérifier IP blacklistée :

```
https://mxtoolbox.com/blacklists.aspx
```

Corriger :
- SPF/DKIM/DMARC [OK]
- Reverse DNS
- Réputation IP


4. EMAILS MARQUÉS SPAM
══════════════════════

Améliorations :

[OK] SPF/DKIM/DMARC correct
[OK] Reverse DNS configuré
[OK] Contenu légitime (pas mots spam)
[OK] Rate limiting
[OK] HTTPS liens


OUTILS DIAGNOSTIC


Test SMTP manuel
════════════════

```bash
telnet smtp.gmail.com 587

EHLO client.example.com
STARTTLS
[TLS handshake]

EHLO client.example.com
AUTH LOGIN
[base64 username]
[base64 password]

MAIL FROM:<test@example.com>
RCPT TO:<destination@gmail.com>
DATA
From: test@example.com
To: destination@gmail.com
Subject: Test

Test message.
.
QUIT
```


Test connectivité IMAP
══════════════════════

```bash
openssl s_client -connect imap.gmail.com:993

A001 LOGIN username password
A002 SELECT INBOX
A003 LOGOUT
```


Headers Analysis
════════════════

Examiner headers complets email

```
Received: from ...
Received: by ...
...
DKIM-Signature: ...
SPF: Pass
DMARC: Pass
```

Trace route email


MX Toolbox
══════════

https://mxtoolbox.com

Tests :
- MX records
- SPF
- DKIM
- DMARC
- Blacklist
- SMTP test
"""


# ----------------------------------------------------------------------------
# [COURS] EXERCICE PRATIQUE
# ----------------------------------------------------------------------------

"""
[IDEE] EXERCICE PRATIQUE


═══════════════════════════════════════════════════════════
EXERCICE : WORKFLOW EMAIL COMPLET
═══════════════════════════════════════════════════════════

[LISTE] ÉNONCÉ

Tracer workflow complet :

Alice (alice@company.com) envoie email à Bob (bob@gmail.com)

Décrire :
1. Composants impliqués
2. Protocoles utilisés
3. Ports
4. Vérifications sécurité


[OK] CORRECTION

**Workflow :**

1. **Composition** (MUA - Outlook)
   - Alice compose email
   - Client : Outlook (MUA)

2. **Envoi SMTP** (Client -> Serveur company.com)
   - Protocole : SMTP
   - Port : 587 (submission)
   - Authentification : alice / password
   - STARTTLS : Chiffrement TLS
   - Commandes :
     * EHLO outlook.company.com
     * STARTTLS
     * AUTH LOGIN
     * MAIL FROM:<alice@company.com>
     * RCPT TO:<bob@gmail.com>
     * DATA

3. **DNS MX Lookup** (Serveur company.com)
   - Requête DNS : MX gmail.com
   - Résultat : gmail-smtp-in.l.google.com

4. **Transfert SMTP** (company.com -> Gmail)
   - Protocole : SMTP
   - Port : 25 (MTA-to-MTA)
   - TLS opportuniste
   - SPF vérification (Gmail vérifie SPF company.com)
   - DKIM vérification (signature dans headers)

5. **Livraison MDA** (Serveur Gmail)
   - MDA stocke mailbox Bob
   - DMARC vérification
   - Spam filtering

6. **Réception** (Bob récupère email)
   - Option A : IMAP (Port 993)
     * Synchronisation multi-devices
     * Messages restent serveur
   - Option B : POP3 (Port 995)
     * Téléchargement local
     * Suppression serveur

**Sécurité :**
[OK] STARTTLS (SMTP)
[OK] TLS/SSL (IMAP/POP3)
[OK] SPF : company.com autorise serveur SMTP
[OK] DKIM : Signature email validée
[OK] DMARC : Policy respectée


═══════════════════════════════════════════════════════════
FIN EXERCICE
═══════════════════════════════════════════════════════════
"""


# ============================================================================
# [DOCS] CONCLUSION CHAPITRE 27
# ============================================================================

"""
[BRAVO] FÉLICITATIONS !

Chapitre 27 : Email Protocols terminé (ultra-détaillé)


[GUIDE] RÉCAPITULATIF COMPLET

[OK] Architecture email (MUA, MTA, MDA)
[OK] SMTP complet (commandes, codes, auth)
[OK] POP3 détaillé (download, delete)
[OK] IMAP avancé (sync, folders, flags)
[OK] IMAP vs POP3 (comparaison)
[OK] Format email (RFC 5322, headers)
[OK] MIME (multipart, attachments)
[OK] Sécurité (SPF, DKIM, DMARC, TLS)
[OK] Ports email (25, 587, 993, 995)
[OK] Troubleshooting email
[OK] Exercice workflow complet


[OBJECTIF] COMPÉTENCES MAÎTRISÉES

[OK] Comprendre email complet
[OK] SMTP configuration et auth
[OK] IMAP vs POP3 choix
[OK] Format MIME et attachments
[OK] Sécurité email (SPF/DKIM/DMARC)
[OK] Troubleshooter problèmes email


[IDEE] POINTS CLÉS

SMTP :
[OK] Envoi email
[OK] Port 587 (submission) + STARTTLS
[OK] Authentification obligatoire
[OK] MTA-to-MTA (port 25)

IMAP (recommandé) :
[OK] Synchronisation multi-devices [OK]
[OK] Messages restent serveur
[OK] Dossiers, flags, recherche
[OK] Port 993 (IMAPS)

POP3 :
[OK] Téléchargement local
[OK] Simple, 1 device
[OK] Port 995 (POP3S)

Sécurité :
[OK] SPF (serveurs autorisés)
[OK] DKIM (signature)
[OK] DMARC (policy)
[OK] TLS/STARTTLS (chiffrement)


[RAPIDE] EXCELLENT TRAVAIL !

Email protocols = FONDATION communication pro.

Vous maîtrisez maintenant :
- Architecture email complète
- SMTP/IMAP/POP3 expert
- Sécurité email moderne
- Troubleshooting email
- Configuration serveurs

Compétence ESSENTIELLE admin sys/réseau ! [EMAIL]


═══════════════════════════════════════════════════════════
[GUIDE] FIN DU CHAPITRE 27 - EMAIL PROTOCOLS
═══════════════════════════════════════════════════════════
"""