🌐

Réseaux

OSI, TCP/IP, adressage, routage, chiffrement

TCP / IP Routage Chiffrement

🎯 Introduction

Un réseau informatique permet à des machines de communiquer et partager des ressources. Internet est un réseau mondial de réseaux interconnectés. Ce chapitre couvre les protocoles et mécanismes qui permettent cette communication.

✅ Ce qu'il faut savoir

  • Modèle en couches OSI et TCP/IP : rôle de chaque couche
  • Adresse IP (IPv4/IPv6), masque de sous-réseau, CIDR
  • Protocoles TCP vs UDP : différences et usages
  • DNS : traduction nom de domaine → adresse IP
  • DHCP : attribution automatique d'adresses IP
  • Routage : tables de routage, algorithmes (Dijkstra)
  • Chiffrement symétrique / asymétrique, HTTPS/TLS

🏛️ Modèles OSI et TCP/IP

Les communications réseau sont organisées en couches. Chaque couche fournit des services à la couche supérieure et utilise les services de la couche inférieure.

Couche OSICouche TCP/IPRôleProtocoles
7 – ApplicationApplicationInterface avec l'utilisateurHTTP, FTP, DNS, SMTP
6 – PrésentationEncodage, chiffrementTLS/SSL
5 – SessionGestion de sessions—
4 – TransportTransportFiabilité, segmentationTCP, UDP
3 – RéseauInternetRoutage entre réseauxIP, ICMP
2 – LiaisonAccès réseauTransmission sur lien localEthernet, Wi-Fi
1 – PhysiqueSignaux électriques/optiquesCâbles, fibres, radio
💡 Encapsulation : Quand on envoie un paquet, chaque couche encapsule les données en ajoutant un en-tête. À la réception, chaque couche retire son en-tête et passe les données à la couche supérieure.

TCP vs UDP

CritèreTCPUDP
ConnexionOrienté connexion (handshake 3 voies)Sans connexion
Fiabilité✅ Accusés de réception, retransmission❌ Pas de garantie
Ordre✅ Paquets reordonnés si besoin❌ Ordre non garanti
VitessePlus lent (overhead)Plus rapide
UsagesHTTP, FTP, email, SSHDNS, streaming, jeux, VoIP

Handshake TCP (3 voies)

Client ──── SYN ────────────────────► Serveur
Client ◄─── SYN-ACK ────────────────  Serveur
Client ──── ACK ────────────────────► Serveur
              (connexion établie)

SYN : demande de synchronisation
ACK : accusé de réception
SYN-ACK : accepte la connexion ET demande synchro en retour

📍 Adressage IP

IPv4

# Adresse IPv4 : 4 octets séparés par des points
# Exemple : 192.168.1.42
#            ↑       ↑  ↑
#         réseau  sous  hôte

# Masque de sous-réseau : indique la partie réseau
# 192.168.1.42 / 255.255.255.0
# En CIDR : 192.168.1.42/24  (24 bits pour le réseau)

# Adresse réseau = adresse & masque
# 192.168.1.42 & 255.255.255.0 = 192.168.1.0

# Calcul Python
import ipaddress
net = ipaddress.ip_network('192.168.1.0/24')
print(net.num_addresses)    # → 256 (dont réseau et broadcast)
print(net.network_address)  # → 192.168.1.0
print(net.broadcast_address)# → 192.168.1.255

Adresses spéciales

AdresseRôle
127.0.0.1Loopback (la machine elle-même)
192.168.x.xRéseau privé (LAN)
10.x.x.xRéseau privé (LAN)
172.16.x.x – 172.31.x.xRéseau privé (LAN)
255.255.255.255Broadcast limité
0.0.0.0Toutes les interfaces (écoute)

IPv6

# IPv6 : 128 bits, notation hexadécimale séparée par ':'
# Exemple : 2001:0db8:85a3:0000:0000:8a2e:0370:7334
# Forme abrégée : 2001:db8:85a3::8a2e:370:7334
# (:: remplace des groupes de zéros consécutifs)

🔌 Protocoles clés

Le DNS (Domain Name System) traduit les noms de domaine (www.google.com) en adresses IP (142.250.74.36).

# Fonctionnement d'une requête DNS :
1. L'utilisateur tape "www.example.com"
2. Le navigateur vérifie son cache local
3. Si absent → interroge le résolveur DNS du FAI
4. Le résolveur interroge les serveurs racine (.)
5. Puis les serveurs TLD (.com)
6. Puis les serveurs autoritaires (example.com)
7. Réponse : 93.184.216.34

# En Python
import socket
print(socket.gethostbyname('www.google.com'))
# → '142.250.74.36' (varie selon le réseau)

Le DHCP (Dynamic Host Configuration Protocol) attribue automatiquement des adresses IP aux machines sur un réseau local.

# Échange DHCP (DORA) :
Client ── DISCOVER ──────────────────► (broadcast)
Client ◄─ OFFER ─────────────────────  Serveur DHCP
         (propose IP 192.168.1.50)
Client ── REQUEST ───────────────────► Serveur DHCP
         (accepte l'offre)
Client ◄─ ACK ───────────────────────  Serveur DHCP
         (confirme, bail de 24h)

# Le serveur DHCP fournit aussi :
# - Masque de sous-réseau
# - Passerelle par défaut (gateway)
# - Adresses DNS

HTTP (HyperText Transfer Protocol) est le protocole du Web. HTTPS = HTTP + TLS (chiffré).

# Requête HTTP
GET /index.html HTTP/1.1
Host: www.example.com
Accept: text/html

# Réponse HTTP
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1234

<html>...</html>

# Codes de statut importants :
# 200 OK            → succès
# 301 Moved         → redirection permanente
# 404 Not Found     → ressource introuvable
# 500 Server Error  → erreur côté serveur

🗺️ Routage

Le routage consiste à déterminer le chemin qu'un paquet doit emprunter pour aller d'une source à une destination à travers plusieurs réseaux.

Table de routage

# Exemple de table de routage (commande 'route' ou 'ip route')
Destination    Masque          Passerelle      Interface
0.0.0.0        0.0.0.0         192.168.1.1     eth0       ← route par défaut
192.168.1.0    255.255.255.0   0.0.0.0         eth0       ← réseau local direct
10.0.0.0       255.0.0.0       192.168.1.254   eth0       ← via routeur

# Algorithme de sélection :
# 1. Chercher la route la plus spécifique (longest prefix match)
# 2. Si plusieurs routes, choisir par métrique (coût)
# 3. Sinon, utiliser la route par défaut (0.0.0.0/0)

Protocoles de routage

ProtocoleTypeAlgorithmeUsage
RIPVecteur de distanceBellman-FordPetits réseaux (max 15 sauts)
OSPFÉtat de liensDijkstraGrands réseaux d'entreprise
BGPVecteur de cheminPropriétaireInternet (entre FAI)
💡 Lien avec les graphes : Le réseau est modélisé par un graphe pondéré (les poids = coûts/délais des liaisons). OSPF utilise exactement l'algorithme de Dijkstra pour calculer les plus courts chemins.

🔐 Sécurité et chiffrement

Chiffrement symétrique

# Une seule clé pour chiffrer ET déchiffrer
# Exemples : AES, DES, ChaCha20

# Avantage : rapide
# Inconvénient : comment partager la clé de façon sécurisée ?

from cryptography.fernet import Fernet
cle = Fernet.generate_key()
f = Fernet(cle)
message_chiffre = f.encrypt(b"message secret")
message_clair = f.decrypt(message_chiffre)

Chiffrement asymétrique

# Deux clés : publique (partageable) et privée (secrète)
# Ce qui est chiffré avec la publique → déchiffré par la privée
# Exemples : RSA, ECDSA

# Principe RSA simplifié :
# 1. Alice génère (clé_publique, clé_privée)
# 2. Elle publie sa clé publique
# 3. Bob chiffre son message avec la clé publique d'Alice
# 4. Seule Alice peut déchiffrer avec sa clé privée

# Avantage : pas besoin d'échanger une clé secrète
# Inconvénient : lent (1000× plus lent que symétrique)

HTTPS et TLS

HTTPS = HTTP + TLS (Transport Layer Security)

Handshake TLS (simplifié) :
1. Client → Serveur : ClientHello (versions TLS, algos supportés)
2. Serveur → Client : ServerHello + Certificat (clé publique)
3. Client vérifie le certificat (signé par une CA de confiance)
4. Échange de clé de session (via RSA ou DH)
   → À partir de là, tout est chiffré avec AES (symétrique)

Pourquoi les deux ? RSA pour l'échange de clé (sécurité),
AES pour les données (performance).

Autres concepts sécurité

ConceptDescription
Hachage (hash)Fonction à sens unique : SHA-256, MD5. Pas de déchiffrement possible. Utilisé pour les mots de passe.
Signature numériqueChiffrement du hash avec clé privée. Prouve l'authenticité et l'intégrité.
Certificat SSL/TLSDocument signé par une Autorité de Certification (CA) qui lie une clé publique à un domaine.
Pare-feu (firewall)Filtre le trafic réseau selon des règles (ports, IP, protocoles).
VPNTunnel chiffré entre deux réseaux sur Internet.

🚨 Pièges classiques au bac

⛔ Confondre adresse IP et adresse MAC
L'adresse MAC (48 bits, ex: AA:BB:CC:DD:EE:FF) identifie une carte réseau physique (couche 2). L'adresse IP identifie un hôte sur le réseau logique (couche 3). ARP fait la correspondance entre les deux.
⛔ TCP ≠ IP
IP gère le routage des paquets (couche 3). TCP gère la fiabilité de la transmission (couche 4). On parle de la suite "TCP/IP" car ils sont souvent utilisés ensemble, mais ce sont des protocoles distincts.
⚠️ HTTPS ne rend pas un site "sûr"
HTTPS signifie que la communication est chiffrée, pas que le site est honnête. Un site de phishing peut très bien avoir HTTPS.
⚠️ DNS est en clair par défaut
Les requêtes DNS standard ne sont pas chiffrées (UDP port 53). DNS over HTTPS (DoH) ou DNS over TLS (DoT) sont des alternatives sécurisées.

📝 Exercices

Facile

Exo 1 — Adressage réseau

Un hôte a l'adresse 172.16.5.130/20.

  1. Quel est le masque de sous-réseau en notation décimale ?
  2. Quelle est l'adresse réseau ?
  3. Combien d'hôtes ce réseau peut-il accueillir ?
1. /20 = 20 bits à 1 puis 12 bits à 0
   11111111.11111111.11110000.00000000
   → 255.255.240.0

2. Adresse réseau = 172.16.5.130 AND 255.255.240.0
   172 = 10101100
    16 = 00010000   AND 11111111 = 00010000 → 16
     5 = 00000101   AND 11110000 = 00000000 → 0
   130 = 10000010   AND 00000000 = 00000000 → 0
   → Adresse réseau : 172.16.0.0

3. /20 laisse 32-20 = 12 bits pour les hôtes
   2^12 = 4096 adresses, dont réseau (172.16.0.0)
   et broadcast (172.16.15.255)
   → 4094 hôtes utilisables
Intermédiaire

Exo 2 — Protocoles et couches

Pour chaque scénario, indiquer le ou les protocoles mis en jeu et la couche OSI correspondante :

  1. Un navigateur charge la page https://monsite.fr
  2. Votre ordinateur rejoint un réseau Wi-Fi et obtient une IP automatiquement
  3. Un paquet est routé de Paris à Tokyo
  4. Vous vous connectez à un serveur en SSH
  1. HTTPS/TLS/HTTP (couche 7/6/4) + DNS pour résoudre le nom + TCP pour le transport fiable
  2. DHCP (couche Application) par-dessus UDP/IP pour attribuer l'adresse, puis Wi-Fi (couche Liaison) pour la connexion physique
  3. IP + protocoles de routage (OSPF, BGP) → couche 3 (Réseau). Les routeurs lisent les en-têtes IP et consultent leurs tables de routage
  4. SSH (couche 7) sur TCP (couche 4) sur IP (couche 3). SSH chiffre avec AES + échange de clés RSA/Ed25519
Niveau bac

Exo 3 — Routage par table

Un routeur R possède la table de routage suivante. Pour chaque destination, indiquer quelle règle s'applique :

Réseau dest.MasquePasserelle
10.0.0.0255.0.0.0eth1
10.1.0.0255.255.0.0eth2
0.0.0.00.0.0.0eth0

Destinations à router : a) 10.1.5.3 b) 10.2.0.1 c) 8.8.8.8

Principe : On applique la règle la plus spécifique (masque le plus long = longest prefix match).

a) 10.1.5.3 : Correspond à 10.0.0.0/8 (eth1) ET à 10.1.0.0/16 (eth2). Le /16 est plus spécifique → eth2

b) 10.2.0.1 : Correspond uniquement à 10.0.0.0/8 → eth1

c) 8.8.8.8 : Aucune règle spécifique → route par défaut 0.0.0.0/0 → eth0

📌 Fiche synthèse

Modèle TCP/IP

  • Application (HTTP, DNS, FTP…)
  • Transport (TCP fiable / UDP rapide)
  • Internet (IP + routage)
  • Accès réseau (Ethernet, Wi-Fi)

Adressage

  • IPv4 : 4 octets, ex: 192.168.1.1
  • CIDR : /24 = 256 adresses
  • Privé : 10.x, 172.16-31.x, 192.168.x
  • DHCP : attribution automatique

TCP vs UDP

  • TCP : fiable, ordonné, handshake 3 voies
  • UDP : rapide, pas de garantie
  • DNS = UDP ; HTTP = TCP

Chiffrement

  • Symétrique (AES) : rapide, une clé
  • Asymétrique (RSA) : deux clés, lent
  • TLS : asymétrique pour l'échange de clé, symétrique pour les données

🧠 QCM

Choisissez le nombre de questions et le niveau, puis lancez.