TCP/IP & Routing

Protocoles fondamentaux et routage réseau.
Modèle OSI vs TCP/IP

TCP (Transmission Control Protocol)
Caractéristiques
| Aspect | Description |
|---|---|
| Type | Orienté connexion |
| Fiabilité | Garantie de livraison (ACK) |
| Ordre | Garantie d'ordre (numéros de séquence) |
| Contrôle de flux | Fenêtre glissante |
| Cas d'usage | HTTP, SSH, FTP, SMTP |
Three-Way Handshake

États TCP
# Voir les connexions TCP
ss -tan
# États courants
LISTEN # Serveur attend des connexions
ESTABLISHED # Connexion active
TIME_WAIT # Attente avant fermeture (2*MSL)
CLOSE_WAIT # Attente de fermeture côté application
FIN_WAIT_1 # Envoyé FIN, attend ACK
FIN_WAIT_2 # Reçu ACK de FIN, attend FIN distant
Fermeture de Connexion (4-Way)

UDP (User Datagram Protocol)
Caractéristiques
| Aspect | Description |
|---|---|
| Type | Sans connexion |
| Fiabilité | Aucune garantie |
| Ordre | Non garanti |
| Overhead | Minimal (8 bytes header) |
| Cas d'usage | DNS, VoIP, Gaming, Streaming |
Comparaison TCP vs UDP
| Critère | TCP | UDP |
|---|---|---|
| Connexion | Orienté connexion | Sans connexion |
| Fiabilité | Garantie | Best effort |
| Ordre | Garanti | Non garanti |
| Vitesse | Plus lent | Plus rapide |
| Header | 20-60 bytes | 8 bytes |
| Contrôle congestion | Oui | Non |
| Cas d'usage | Web, Email, Files | DNS, VoIP, Games |
Adressage IP
IPv4
IP Address: 192.168.1.100
Subnet Mask: 255.255.255.0 (/24)
──────────── ─────
Network Part: 192.168.1. (24 bits)
Host Part: .100 (8 bits)
Binary:
192.168.1.100 = 11000000.10101000.00000001.01100100
255.255.255.0 = 11111111.11111111.11111111.00000000
Network ID: 192.168.1.0 (host part = 0)
Broadcast: 192.168.1.255 (host part = all 1s)
Usable Hosts: 192.168.1.1 - 192.168.1.254 (254 hosts)
Classes d'Adresses (Historique)
| Classe | Plage | Masque par défaut | Usage |
|---|---|---|---|
| A | 1.0.0.0 - 126.255.255.255 | /8 | Grandes organisations |
| B | 128.0.0.0 - 191.255.255.255 | /16 | Moyennes organisations |
| C | 192.0.0.0 - 223.255.255.255 | /24 | Petits réseaux |
| D | 224.0.0.0 - 239.255.255.255 | - | Multicast |
| E | 240.0.0.0 - 255.255.255.255 | - | Réservé |
IPv6
IPv6 Address: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
Simplified: 2001:db8:85a3::8a2e:370:7334
Format: 8 groupes de 4 caractères hexadécimaux
Total: 128 bits (vs 32 bits pour IPv4)
Types d'adresses:
- ::1 → Loopback
- fe80::/10 → Link-local
- fc00::/7 → Unique local (privé)
- 2000::/3 → Global unicast (routable)
Routage
Table de Routage
# Linux
ip route show
route -n
# Exemple de table
default via 192.168.1.1 dev eth0 proto static metric 100
10.0.0.0/8 via 192.168.1.254 dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100
Lecture de la Table
| Destination | Gateway | Interface | Signification |
|---|---|---|---|
| default | 192.168.1.1 | eth0 | Route par défaut |
| 10.0.0.0/8 | 192.168.1.254 | eth0 | Via ce routeur |
| 192.168.1.0/24 | 0.0.0.0 | eth0 | Réseau local (direct) |
Gestion des Routes
# Ajouter une route statique
sudo ip route add 10.10.0.0/16 via 192.168.1.254
# Supprimer une route
sudo ip route del 10.10.0.0/16
# Changer la route par défaut
sudo ip route del default
sudo ip route add default via 192.168.1.1
# Route persistante (Debian/Ubuntu)
# /etc/netplan/01-netcfg.yaml
network:
ethernets:
eth0:
routes:
- to: 10.0.0.0/8
via: 192.168.1.254
Diagnostic de Routage
# Tracer la route vers une destination
traceroute 8.8.8.8
traceroute -n 8.8.8.8 # Sans résolution DNS
mtr 8.8.8.8 # Interactive (meilleur)
# Voir quelle route sera utilisée
ip route get 8.8.8.8
# Output:
# 8.8.8.8 via 192.168.1.1 dev eth0 src 192.168.1.100 uid 1000
NAT (Network Address Translation)
Types de NAT

Configuration iptables
# SNAT (Masquerade pour connexion dynamique)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# SNAT (IP publique fixe)
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 203.0.113.1
# DNAT (Port forwarding)
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 \
-j DNAT --to-destination 192.168.1.50:80
# Activer le forwarding IP
echo 1 > /proc/sys/net/ipv4/ip_forward
Ports et Services
Ports Well-Known (0-1023)
| Port | Service | Protocole |
|---|---|---|
| 20/21 | FTP | TCP |
| 22 | SSH | TCP |
| 23 | Telnet | TCP |
| 25 | SMTP | TCP |
| 53 | DNS | TCP/UDP |
| 67/68 | DHCP | UDP |
| 80 | HTTP | TCP |
| 110 | POP3 | TCP |
| 143 | IMAP | TCP |
| 443 | HTTPS | TCP |
| 445 | SMB | TCP |
| 3306 | MySQL | TCP |
| 5432 | PostgreSQL | TCP |
| 6379 | Redis | TCP |
Vérifier les Ports
# Ports en écoute
ss -tlnp # TCP
ss -ulnp # UDP
netstat -tlnp # Ancien
# Tester un port distant
nc -zv 192.168.1.1 22
telnet 192.168.1.1 80
# Scanner les ports
nmap -p 1-1000 192.168.1.1
nmap -sV 192.168.1.1 # Détection de version
ICMP (Internet Control Message Protocol)
Messages ICMP Courants
| Type | Code | Message |
|---|---|---|
| 0 | 0 | Echo Reply (réponse ping) |
| 3 | 0 | Destination Unreachable: Network |
| 3 | 1 | Destination Unreachable: Host |
| 3 | 3 | Destination Unreachable: Port |
| 8 | 0 | Echo Request (ping) |
| 11 | 0 | Time Exceeded (TTL) |
Utilisation
# Ping basique
ping -c 4 8.8.8.8
# Ping avec taille de paquet
ping -c 4 -s 1472 8.8.8.8 # MTU discovery
# Ping sans fragmentation
ping -c 4 -M do -s 1472 8.8.8.8
Dépannage Réseau
Workflow de Diagnostic
1. Interface UP?
└─ ip link show
└─ DOWN? → ip link set eth0 up
2. IP configurée?
└─ ip addr show
└─ Pas d'IP? → DHCP ou config statique
3. Gateway joignable?
└─ ping 192.168.1.1
└─ Échec? → Problème L2 ou câble
4. DNS fonctionne?
└─ nslookup google.com
└─ Échec? → Vérifier /etc/resolv.conf
5. Internet accessible?
└─ ping 8.8.8.8
└─ Échec? → Problème de routage ou firewall
6. Service accessible?
└─ curl https://example.com
└─ Échec? → Firewall, port fermé, ou service down
Commandes de Base
# Voir les interfaces
ip link show
ip addr show
# Voir la table de routage
ip route show
# Voir les connexions
ss -tan
ss -uan
# Capturer le trafic
tcpdump -i eth0
tcpdump -i eth0 port 80
tcpdump -i eth0 host 192.168.1.100
# Statistiques réseau
ip -s link show eth0
netstat -s
Référence Rapide
# === INTERFACES ===
ip link show # Lister interfaces
ip addr show # Voir IP
ip link set eth0 up/down # Activer/désactiver
# === ROUTAGE ===
ip route show # Table de routage
ip route get 8.8.8.8 # Route vers destination
ip route add 10.0.0.0/8 via GW # Ajouter route
traceroute 8.8.8.8 # Tracer la route
# === CONNEXIONS ===
ss -tan # Connexions TCP
ss -tlnp # Ports en écoute
nc -zv host port # Tester port
# === DIAGNOSTIC ===
ping -c 4 host # Test ICMP
mtr host # Traceroute interactif
tcpdump -i eth0 # Capture paquets
À lire aussi
- DNS Fundamentals - Résolution de noms
- Network Fundamentals - CIDR, DMZ
- Linux Network Management