IPv4 (Internet Protocol version 4) est le protocole d’adressage fondamental d’Internet depuis 1981. Il fournit un système d’adressage hiérarchique et de routage pour les paquets sur les réseaux interconnectés.

En-tête IPv4§

Un paquet IP est constitué d’un en-tête (20 à 60 octets) suivi des données.

 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  |    DSCP   |ECN|         Total Length          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Identification        |Flags|    Fragment Offset       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Time to Live |    Protocol   |        Header Checksum        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Source Address                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Destination Address                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
ChampTailleDescription
Version4 bits4 pour IPv4
IHL4 bitsLongueur de l’en-tête (en mots de 32 bits)
DSCP6 bitsQoS / priorité des paquets
Total Length16 bitsLongueur totale (max 65 535 octets)
Identification16 bitsID pour la fragmentation
Flags3 bitsDF (Don’t Fragment), MF (More Fragments)
TTL8 bitsDécrémenté à chaque routeur (max 255)
Protocol8 bits6=TCP, 17=UDP, 1=ICMP, 89=OSPF
Source/Dest32 bitsAdresses IP émetteur et destinataire

Espace d’adressage§

IPv4 utilise des adresses de 32 bits → 2³² = 4 294 967 296 adresses théoriques. En pratique, beaucoup sont réservées.

Épuisement : L’IANA a alloué le dernier bloc /8 en 2011. Le passage à IPv6 est la solution à long terme ; en attendant, NAT permet de conserver IPv4.

Fragmentation§

Si un paquet est trop grand pour le MTU (Maximum Transmission Unit) d’un lien intermédiaire, il est fragmenté.

MTU Ethernet standard : 1500 octets (payload IP)
Jumbo frames : jusqu'à 9000 octets (datacenter)

Paquet 3000 octets → fragmentation en :
Fragment 1 : 1500 octets (offset=0, MF=1)
Fragment 2 : 1500 octets (offset=185, MF=0)

DF bit (Don’t Fragment) : si activé et que le paquet est trop grand → le routeur envoie ICMP “Fragmentation Needed” → base du Path MTU Discovery.

Problèmes de sécurité :

ICMP — Internet Control Message Protocol§

Protocole de diagnostic et de contrôle associé à IP (protocole 1).

# Types ICMP courants
Type 0  : Echo Reply (réponse ping)
Type 3  : Destination Unreachable (codes 0-15)
  Code 0  : Net unreachable
  Code 1  : Host unreachable
  Code 3  : Port unreachable
  Code 4  : Fragmentation needed (DF set)
Type 8  : Echo Request (ping)
Type 11 : Time Exceeded (TTL expired traceroute)
Type 12 : Parameter Problem

# ping — test de connectivité
ping -c 4 8.8.8.8
ping -s 1400 192.168.1.1  # Taille personnalisée (test MTU)

# traceroute — chemin vers la destination
traceroute 8.8.8.8         # Linux (UDP)
tracert 8.8.8.8            # Windows (ICMP)
traceroute -T 8.8.8.8      # TCP SYN (passe mieux les firewalls)

Utilisations malveillantes d’ICMP :

ICMP tunneling : exfiltration de données dans les payloads ICMP
Ping flood : DDoS par saturation de requêtes Echo
Smurf attack : ICMP Echo broadcast avec source spoofée → amplification

Routage IP§

Tables de routage§

# Linux — afficher la table de routage
ip route show
# ou
route -n

# Exemple de table
Destination     Gateway         Interface
0.0.0.0/0       192.168.1.1     eth0 Route par défaut
192.168.1.0/24  0.0.0.0         eth0 Réseau local
10.0.0.0/8      192.168.1.254   eth0 Route statique

# Windows
route print

Algorithme de sélection de route§

1. Correspondance la plus longue (longest prefix match)
   Destination : 192.168.1.50
   Route A : 192.168.0.0/16 → via GW_A
   Route B : 192.168.1.0/24 → via GW_B  ← SÉLECTIONNÉE (plus spécifique)

2. En cas d'égalité de préfixe → choisir la métrique la plus faible
3. En cas d'égalité de métrique → ECMP (Equal-Cost Multi-Path)

Protocoles associés§

DHCP — Dynamic Host Configuration Protocol§

Attribue automatiquement les paramètres réseau (IP, masque, passerelle, DNS).

Client → Serveur : DISCOVER (broadcast)
Serveur → Client : OFFER (IP proposée)
Client → Serveur : REQUEST (je prends cette IP)
Serveur → Client : ACK (IP confirmée, bail de X secondes)

Sécurité DHCP :

# Wireshark — capturer les échanges DHCP
tshark -f "udp port 67 or udp port 68" -i eth0

ARP — Address Resolution Protocol§

Résout une adresse IP en adresse MAC sur un réseau local (voir note dédiée).

Qui a 192.168.1.1 ? (ARP Request — broadcast)
192.168.1.1 est à AA:BB:CC:DD:EE:FF (ARP Reply — unicast)

Problèmes de sécurité IPv4§

VulnérabilitéDescriptionContre-mesure
IP SpoofingFalsifier l’adresse sourceBCP38, uRPF (Unicast Reverse Path Forwarding)
ICMP tunnelingExfiltration via ICMPFiltrage et inspection ICMP
Fragmentation attacksContournement IDS via fragmentsRéassemblage au niveau pare-feu
Land attackSrc = Dst → boucleFiltrage d’adresses invalides
Smurf attackAmplification via broadcast ICMPDésactiver directed broadcasts
Route injectionInjection de routes malveillantesAuthentification des protocoles de routage (MD5/SHA)
# Activer l'anti-spoofing (uRPF strict)
# Cisco IOS
interface GigabitEthernet0/0
 ip verify unicast source reachable-via rx

# Linux — vérification RPF
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter

# Bloquer les paquets avec source dans les plages RFC 1918 (ingress depuis Internet)
iptables -A INPUT -i eth0 -s 10.0.0.0/8 -j DROP
iptables -A INPUT -i eth0 -s 172.16.0.0/12 -j DROP
iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j DROP