Adresses IP et Routage
Comment un paquet trouve-t-il son chemin parmi des milliards d'appareils connectés ? Découvrez le GPS d'Internet : les adresses IP et le routage !
Objectifs du cours
- Comprendre ce qu'est une adresse IP et son format
- Distinguer adresses IP privées et publiques
- Comprendre le fonctionnement du routage
- Savoir ce qu'est un masque de sous-réseau
- Découvrir les tables de routage et les routeurs
Erreurs courantes à éviter
- Confondre adresse IP et adresse MAC
- Penser qu'une adresse IP est fixe et permanente
- Ne pas comprendre la différence entre réseau local et Internet
- Confondre routeur et switch
**Qu'est-ce qu'une adresse IP ?**
Une **adresse IP** (Internet Protocol) est un identifiant unique qui permet de localiser un appareil sur un réseau, comme une adresse postale.
📍 **Format IPv4** (le plus courant) : • 4 nombres de 0 à 255 séparés par des points • Exemple : `192.168.1.10` • Chaque nombre s'appelle un **octet**
**Pourquoi 4 nombres de 0 à 255 ?**
Chaque nombre est codé sur **8 bits** (1 octet) : • 8 bits = 2⁸ = 256 valeurs possibles (0 à 255) • 4 octets = 32 bits au total • Soit 2³² = 4,3 milliards d'adresses possibles
**Analogie avec les adresses postales** :
🏠 **Adresse postale** : • 12 Rue de la Paix • 75002 Paris • France
🌐 **Adresse IP** : • `192.168.1.10` • Chaque partie a une signification • Permet de localiser l'appareil
**Structure d'une adresse IP**
Une adresse IP se décompose en deux parties :
1️⃣ **Partie réseau** (network) : • Identifie le réseau auquel appartient l'appareil • Comme le code postal et la ville
2️⃣ **Partie hôte** (host) : • Identifie l'appareil spécifique dans le réseau • Comme le numéro de rue
**Exemple** : `192.168.1.10` • `192.168.1` = réseau • `10` = appareil numéro 10 sur ce réseau
**Types d'appareils ayant une adresse IP** :
💻 Ordinateurs 📱 Smartphones et tablettes 🖨️ Imprimantes réseau 📡 Routeurs et box Internet 📷 Caméras de surveillance 🎮 Consoles de jeux 🌡️ Objets connectés (thermostats, ampoules...)
# Manipulation d'adresses IP en Python
def decomposer_ip(ip):
"""Décompose une adresse IP en ses 4 octets."""
octets = ip.split('.')
print(f"Adresse IP: {ip}")
print(f"Décomposition:")
for i, octet in enumerate(octets, 1):
print(f" Octet {i}: {octet:>3} (en binaire: {int(octet):08b})")
# Test
print("=== STRUCTURE D'UNE ADRESSE IP ===\n")
decomposer_ip("192.168.1.10")
# Conversion binaire complète
ip = "192.168.1.10"
octets = ip.split('.')
binaire = '.'.join([f"{int(o):08b}" for o in octets])
print(f"\nEn binaire: {binaire}")
print(f"Total: 32 bits (4 octets de 8 bits)\n")
# Calcul du nombre d'adresses IPv4
nb_bits = 32
nb_adresses = 2 ** nb_bits
print(f"=== CAPACITÉ D'ADRESSAGE IPv4 ===")
print(f"Nombre de bits: {nb_bits}")
print(f"Nombre d'adresses: {nb_adresses:,}")
print(f"Soit environ {nb_adresses / 1_000_000_000:.1f} milliards d'adresses")
# Population mondiale
population_mondiale = 8_000_000_000
print(f"\nPopulation mondiale: {population_mondiale:,}")
print(f"Adresses par personne: {nb_adresses / population_mondiale:.1f}")
print("\n⚠️ Problème: Pas assez d'adresses pour tout le monde !")
print(" Solution: IPv6 (340 sextillions d'adresses)")
# Vérifier si une adresse IP est valide
def est_ip_valide(ip):
"""Vérifie si une adresse IP est valide."""
try:
octets = ip.split('.')
if len(octets) != 4:
return False
for octet in octets:
num = int(octet)
if num < 0 or num > 255:
return False
return True
except:
return False
print("\n=== VALIDATION D'ADRESSES IP ===\n")
adresses_test = [
"192.168.1.1",
"256.100.50.25", # Invalide (256 > 255)
"10.0.0.1",
"192.168", # Invalide (pas 4 octets)
"8.8.8.8"
]
for addr in adresses_test:
valide = "✅ Valide" if est_ip_valide(addr) else "❌ Invalide"
print(f"{addr:20} → {valide}")Quiz de validation
1. Combien d'octets compose une adresse IPv4 ?
2. Quelle plage d'adresses est privée (non visible sur Internet) ?
3. Quel est le rôle principal d'un routeur ?
4. Que signifie /24 dans l'adresse 192.168.1.10/24 ?
5. Combien d'adresses IPv6 existe-t-il théoriquement ?
