đ TCP/IP â modĂšle, couches, protocoles, routage, sĂ©curitĂ© & troubleshooting
TCP/IP nâest pas âjuste TCP + IPâ : câest la pile rĂ©seau de lâInternet (modĂšle en couches), dĂ©finissant comment des machines adressent, routent, segmentent, transportent et sĂ©curisent des donnĂ©es. Le cĆur : IP (adressage + routage) + TCP/UDP (transport) + des protocoles applicatifs (HTTP, DNS, SSHâŠ).
ModĂšle TCP/IP & couches
Link â Internet â Transport â Application. Comparaison OSI, encapsulation, PDU, MTU.
LayersEncapsulationOSIIP (IPv4/IPv6) & adressage
CIDR, subnets, gateway, ARP/ND, routes, NAT, fragmentation, TTL/hop-limit.
IPv4IPv6CIDRRoutage (L3) & Internet
Tables de routage, métriques, BGP/OSPF, asymétrie, ICMP, traceroute, peering.
RoutingBGPICMPTransport : TCP vs UDP (et QUIC)
Handshake, fiabilité, congestion control, windowing, retransmissions, ports. UDP + QUIC/HTTP3.
TCPUDPQUICDNS (résolution de noms)
Records, recursion, caching, TTL, authoritative, split-horizon, DNSSEC, DoT/DoH.
ResolverCachingDNSSECHTTP(S) : de TCP Ă TLS
HTTP/1.1, keep-alive, HTTP/2, HTTP/3, TLS handshake, certs, ALPN, SNI.
TLSHTTP/2HTTP/3Ports, sockets & états
4-tuple, listen/accept, ephemeral ports, TIME_WAIT, SYN backlog, half-open connections.
SocketsTIME_WAITBacklogSécurité réseau
FW/ACL, stateful vs stateless, NAT, segmentation, DDoS, TLS, mTLS, zero trust, VPN.
FirewallTLSDDoSMTU, MSS & perf
PMTUD, fragmentation, jumbo frames, TCP MSS, latency vs throughput, bufferbloat.
MTUMSSPerfTroubleshooting (méthode)
Diagnostiquer par couche : link â IP â TCP â DNS â TLS â HTTP. Outils : ping, traceroute, tcpdump, ss, dig.
MethodtcpdumpdigPlaybook âincident rĂ©seauâ
Checklist rapide : résolution, connectivité, ports, TLS, routes, MTU, saturation, firewall. Runbook copy/paste.
RunbookIncidentsOpsCheat-sheet TCP/IP
Ports connus, Ă©tapes dâun handshake, flags TCP, commandes Linux, erreurs classiques et interprĂ©tation.
CheatCommandsFlagsMental model : encapsulation + chemin dâun paquet
App data
-> (Transport) TCP/UDP header (ports, seq/ack...)
-> (Internet) IP header (src/dst, TTL, routing)
-> (Link) Ethernet/WiFi frame (MAC, VLAN...)
-> medium (wire/air)
-> reverse on receiver
âQuand ça casseâ, diagnostic par couches
Le flux web moderne (résumé)
1) DNS resolve (A/AAAA)
2) TCP connect (SYN/SYN-ACK/ACK) OU QUIC (UDP)
3) TLS handshake (cert, SNI, ALPN)
4) HTTP request/response (keep-alive, multiplexing)
5) Observabilité : latency breakdown (DNS/TCP/TLS/TTFB)
Pour expliquer une lenteur, tu dois savoir si elle vient de DNS, TCP, TLS, HTTP ou du backend.
3 piÚges fréquents
- MTU/MSS : black-hole si ICMP bloqué (PMTUD cassé).
- DNS cache : TTL, resolver, split-horizon â âça marche ici pas lĂ â.
- Stateful firewall/NAT : timeouts, conntrack saturé, port exhaustion.
Les 4 couches TCP/IP (pratique)
| Couche | RÎle | Exemples | Unités |
|---|---|---|---|
| Application | protocoles applicatifs | HTTP, DNS, SSH, SMTP | message |
| Transport | ports, fiabilité, congestion | TCP, UDP, QUIC* | segment/datagram |
| Internet | adressage + routage | IPv4/IPv6, ICMP | packet |
| Link | livraison locale | Ethernet, Wi-Fi, VLAN | frame |
QUIC est un transport âau-dessusâ dâUDP, utilisĂ© notamment par HTTP/3.
OSI vs TCP/IP (mapping utile)
| OSI | TCP/IP | Exemples |
|---|---|---|
| 7/6/5 App/Pres/Session | Application | HTTP, TLS, DNS |
| 4 Transport | Transport | TCP/UDP |
| 3 Network | Internet | IP, ICMP |
| 2/1 DataLink/Physical | Link | Ethernet, Wi-Fi |
Encapsulation : âheaders empilĂ©sâ
[Ethernet][IP][TCP][HTTP]
L2 L3 L4 L7
Chaque couche ajoute un header (et parfois un trailer) :
- L2 : MAC src/dst, VLAN tag
- L3 : IP src/dst, TTL/hop-limit
- L4 : ports, flags, seq/ack
- L7 : protocole applicatif
âTracer un paquetâ = comprendre lâempilement des headers et oĂč se produit la perte/latence.
MTU : taille max au niveau Link
MTU Ethernet classique : 1500 bytes
Jumbo frames : 9000 bytes (selon infra)
Impact :
- fragmentation (IPv4) ou PMTUD (IPv6)
- MSS TCP = MTU - headers (souvent 1460 sur MTU 1500)
Subnetting (CIDR) â lâessentiel
IPv4 : a.b.c.d/24
- /24 => 256 adresses (souvent 254 utilisables)
- gateway = route par défaut vers l'extérieur
- table de routage : âoĂč envoyer un paquet ?â
| Notation | Taille | Usages typiques |
|---|---|---|
| /32 | 1 host | route host, VIP |
| /24 | 256 | LAN small/medium |
| /16 | 65k | grand réseau, mais rarement conseillé |
ARP (IPv4) / Neighbor Discovery (IPv6)
But : IP -> MAC (sur le LAN)
- ARP request : âwho has 192.168.1.10 ?â
- ARP reply : â192.168.1.10 is at aa:bb:cc:dd:ee:ffâ
Diagnostics :
- arp -n / ip neigh
- captures : tcpdump -n arp
ARP/ND cassĂ© = symptĂŽmes âL2 OK mais rien ne passeâ (ou intermitent).
NAT (Network Address Translation)
| Type | Idée | Effet | PiÚge |
|---|---|---|---|
| SNAT | source translate | sortie Internet | port exhaustion |
| DNAT | destination translate | publish service | stateful timeouts |
| PAT | ports multiplex | beaucoup hosts | conntrack saturation |
IPv6 (résumé pragmatique)
- adresse 128 bits (ex: 2001:db8::1/64)
- pas de NAT nécessaire (théoriquement)
- Neighbor Discovery remplace ARP
- ICMPv6 important (PMTUD, ND) => ne pas bloquer âaveuglĂ©mentâ
Beaucoup de pannes IPv6 viennent dâICMPv6 filtrĂ© Ă tort (MTU/ND).
Table de routage : âoĂč va le paquet ?â
RĂšgle : longest prefix match
Exemple :
- 10.0.0.0/8 via gwA
- 10.20.0.0/16 via gwB
=> 10.20.5.7 suit /16 (plus spécifique)
Asymétrie
Aller et retour peuvent prendre des chemins diffĂ©rents. Avec des firewalls stateful, lâasymĂ©trie peut casser des flux.
Default route
0.0.0.0/0 (ou ::/0) = âtout le resteâ. Erreur classique : route dĂ©faut absente/mauvaise.
ICMP : diagnostic & contrĂŽle
| ICMP | Usage | Exemple |
|---|---|---|
| Echo | ping | connectivité |
| Time exceeded | traceroute | chemin |
| Destination unreachable | erreur routage/port | diagnostic |
| Fragmentation needed | PMTUD (IPv4) | MTU path |
Bloquer ICMP âen blocâ est une mauvaise idĂ©e : PMTUD/diagnostic en dĂ©pendent.
BGP/OSPF (vue trĂšs âopsâ)
OSPF : routage interne (IGP) â convergence rapide, mĂ©triques intra-DC
BGP : routage inter-domaines (Internet) â politiques, peering, annonces
En cloud / grandes infra :
- eBGP souvent utilisé en spine/leaf
- BGP communities pour policy
Outils routage
Linux : - ip route - ip rule / ip route get- traceroute / tracepath - ping -M do -s (tester MTU)
TCP : pourquoi câest âstableâ
TCP fournit :
- connexion (state)
- ordre (sequence numbers)
- fiabilité (ACK + retransmission)
- contrĂŽle de flux (window)
- contrĂŽle congestion (cwnd)
Handshake :
SYN -> SYN-ACK -> ACK
| Concept | But | SymptĂŽme si mauvais |
|---|---|---|
| RTT | latence | handshake lent |
| Loss | perte | retransmissions, débit chute |
| Window | flow | throughput plafonné |
| Congestion | stabilité réseau | débit variable |
Flags TCP & états (niveau sysadmin)
Flags :
- SYN : ouverture
- ACK : acquittement
- FIN : fermeture propre
- RST : reset (refus/erreur)
- PSH : push (hint app)
- URG : urgent (rare)
Ătats (courants) :
- LISTEN, SYN-SENT, SYN-RECV, ESTABLISHED
- FIN-WAIT-1/2, CLOSE-WAIT, TIME-WAIT
Beaucoup de TIME_WAIT = pas forcĂ©ment un problĂšme (comportement normal), mais peut conduire Ă port exhaustion si extrĂȘme.
UDP : simple, rapide, mais pas fiable
UDP fournit :
- datagrammes (pas de connexion)
- faible overhead
Mais pas :
- d'ordre
- de retransmission
- de congestion control (au niveau UDP)
Usage :
- DNS, streaming, temps réel, QUIC
QUIC : transport moderne au-dessus dâUDP
QUIC :
- multiplexing (évite head-of-line blocking TCP)
- chiffrement intégré (souvent TLS 1.3)
- meilleur roaming (changement IP)
Utilisé par HTTP/3
Résolution : recursion vs authoritative
Client -> Resolver (récursif) -> serveurs autoritatifs
Le resolver cache (TTL) pour accélérer et réduire la charge.
| RĂŽle | Fait quoi | Exemples |
|---|---|---|
| Resolver | cherche + cache | Unbound, systemd-resolved |
| Authoritative | répond pour une zone | BIND, NSD, cloud DNS |
Records clés
| Record | But | Exemple |
|---|---|---|
| A | IPv4 | example.com -> 93.184.216.34 |
| AAAA | IPv6 | example.com -> 2606:... |
| CNAME | alias | www -> app |
| MX | mail routing | |
| TXT | metadata | SPF/DKIM/verify |
| NS | delegation | serveurs zone |
Cache & TTL : source de bugs âfantĂŽmesâ
SymptĂŽmes :
- "ça marche chez moi"
- propagation lente
- résolveurs différents (ISP vs corporate)
RĂšgles :
- TTL court avant migration, puis remonter
- vérifier cache local + resolver
Commandes :
- dig +trace / dig @resolver
- resolvectl query
DNSSEC, DoH, DoT
DNSSEC : signatures -> authenticité réponses
DoT : DNS over TLS (853)
DoH : DNS over HTTPS (443)
Attention :
- filtrage/monitoring plus complexe
- politique entreprise vs privacy
TLS : ce quâil faut comprendre
TLS handshake :
- négociation version/ciphers
- échange clés
- certificat serveur (CA chain)
- validation hostname (SNI)
ALPN :
- choix protocole applicatif (h2 vs http/1.1)
Un problĂšme HTTPS est souvent un problĂšme TLS (cert, chain, SNI, time) avant mĂȘme dâĂȘtre un problĂšme HTTP.
HTTP/1.1 vs HTTP/2 vs HTTP/3
| Version | Transport | Caractéristique | Note |
|---|---|---|---|
| HTTP/1.1 | TCP | keep-alive, 1 req/connexion (pipelining rare) | simple |
| HTTP/2 | TCP | multiplexing, compression headers | head-of-line au niveau TCP possible |
| HTTP/3 | QUIC/UDP | multiplexing sans HoL TCP | nécessite support infra |
Performance : decomposition de latence
TTFB â DNS + TCP handshake + TLS handshake + backend processing
Optimisations :
- keep-alive / pooling
- HTTP/2 multiplex
- TLS 1.3 / session resumption
- CDN
- réduire RTT (geo) + réduire payload
Outils TLS/HTTP
- curl -v https://host
- openssl s_client -connect host:443 -servername host
- ss -tnp / lsof -i
- tcpdump port 443
Le 4-tuple (identitĂ© dâun flux)
(src_ip, src_port, dst_ip, dst_port)
=> unique par connexion TCP
Les ports sources sont souvent "ephemeral"
Ephemeral ports & exhaustion
- Un client ouvre beaucoup de connexions â consomme ports sources.
- TIME_WAIT retient des ports â normal mais peut saturer si extrĂȘme.
- Solutions : pooling/keep-alive, limiter concurrency, tuning sysctl (avec prudence).
Backlog & SYN flood (niveau pratique)
Serveur :
- LISTEN socket + backlog
- connexions entrantes en SYN-RECV (half-open)
Si backlog saturé :
- refus/drops
Mitigations :
- SYN cookies
- rate limit
- protection DDoS / load balancer
Beaucoup de SYN-RECV peut indiquer : SYN flood, loss réseau, ou serveur surchargé.
Firewall / ACL : stateless vs stateful
| Type | Caractéristique | PiÚge |
|---|---|---|
| Stateless | filtre paquet par paquet | retour trafic doit ĂȘtre autorisĂ© |
| Stateful | conntrack (suit connexions) | conntrack saturé, asymétrie |
Une panne âalĂ©atoireâ est souvent un timeout conntrack/NAT ou une saturation state table.
TLS & mTLS
TLS :
- authentifie le serveur
- chiffre le trafic
mTLS :
- authentifie serveur ET client
- utile en microservices, zero trust
Impacts :
- gestion certs (rotation, CA interne)
DDoS (résumé)
Volumetric : saturer bande passante (L3/L4)
Protocol : SYN flood, amplification DNS/NTP
Application : HTTP floods, bots
Mitigations :
- CDN / scrubbing
- rate limiting, WAF
- anycast, autoscaling
Zero Trust (réseau + identité)
- Ne jamais âfaire confianceâ au rĂ©seau interne.
- Authentifier/autoriser chaque appel (identity-aware).
- Segmentation + mTLS + policy-as-code.
PMTUD (Path MTU Discovery)
But : trouver la MTU max sur le chemin
- IPv4 : ICMP "frag needed" (DF set)
- IPv6 : routers ne fragmentent pas (l'hĂŽte adapte)
Si ICMP bloqué => black-hole (gros paquets perdus)
SymptĂŽme PMTUD cassĂ© : petites requĂȘtes OK, gros uploads/downloads cassent.
Perf : latency vs throughput
Throughput TCP ~ (MSS / RTT) * (1 / sqrt(loss))
=> RTT et loss dominent
Optimiser :
- réduire RTT (geo/CDN)
- réduire pertes (réseau)
- ajuster windowing (sysctl)
- éviter bufferbloat (queues)
Checklist par couche (ordre recommandé)
- L2 : interface up ? VLAN ok ? ARP/ND ok ? MTU ?
- L3 : IP correcte ? route défaut ? route vers subnet ? ICMP/traceroute ?
- L4 : port ouvert ? handshake TCP ? resets ? timeouts ?
- DNS : résolution correcte ? cache ? split DNS ?
- TLS : cert/chain/SNI/time ? ALPN ?
- HTTP : status codes, headers, backend time, load balancer.
Commandes essentielles (Linux)
Interfaces / IP : - ip a - ip link - ethtoolRoutes : - ip route - ip route get DNS : - dig - dig @ - resolvectl status Connexions / ports : - ss -lntup - ss -tn state time-wait - nc -vz host port - curl -v https://host ICMP : - ping -c 3 host - traceroute host / tracepath host Capture : - tcpdump -ni host and port 443
SymptĂŽmes â hypothĂšses rapides
| SymptÎme | HypothÚses | Vérif |
|---|---|---|
| Timeout | firewall drop, route, MTU, congestion | traceroute, tcpdump |
| RST | port fermé, app down, LB reset | ss, logs, curl -v |
| DNS NXDOMAIN | zone/record absent, resolver | dig +trace |
| SSL error | cert/chain/SNI/time | openssl s_client |
| lent | RTT/loss, TLS, backend | timing DNS/TCP/TLS |
Captures : lire ce qui se passe
Cas classiques :
- SYN sans SYN-ACK => drop/route
- SYN-ACK mais pas ACK => retour cassé / firewall state
- Retransmissions => loss
- TLS handshake alert => cert/cipher/SNI
- HTTP 5xx => backend
Un tcpdump bien filtrĂ© est souvent le moyen le plus rapide de âprouverâ oĂč ça casse.
Runbook 10 minutes
- Scope : 1 host ? 1 subnet ? global ? (impact)
- DNS : dig name â IP (A/AAAA) + vĂ©rifier resolver.
- IP : ping IP + traceroute/tracepath.
- Port : nc -vz host port + ss -lntup cÎté serveur.
- TLS : openssl s_client (cert/SNI).
- HTTP : curl -v + vérifier status/headers.
- Capture : tcpdump (SYN? RST? retrans?)
- Mitigation : rollback LB rule, bypass WAF, scale, route fix.
- Validation : SLO/latency/errors.
- Postmortem : cause + action (owner/date).
Snippet copy/paste
# 1) DNS
dig +short example.com
dig @1.1.1.1 example.com
# 2) Routes
ip route
ip route get 8.8.8.8
# 3) Port
nc -vz example.com 443
ss -lntup | head
# 4) TLS
openssl s_client -connect example.com:443 -servername example.com and port 443
En prod : captures courtes, filtres stricts, et attention aux données sensibles.
Ports âclassiquesâ (Ă connaĂźtre)
| Service | Port | Proto | Note |
|---|---|---|---|
| SSH | 22 | TCP | admin |
| HTTP | 80 | TCP | web |
| HTTPS | 443 | TCP/UDP | HTTP/3 sur UDP |
| DNS | 53 | UDP/TCP | zones sur TCP |
| SMTP | 25 | TCP | |
| IMAP | 143/993 | TCP | |
| PostgreSQL | 5432 | TCP | DB |
| MySQL | 3306 | TCP | DB |
Flags TCP (mémo)
Commandes rapides
# IP / routes ip a ip route ip route get# DNS dig dig +trace # Connexions ss -lntup ss -tn # Test port nc -vz # HTTP/TLS curl -v https://host openssl s_client -connect host:443 -servername host host and port
Interpréter vite
Timeout = drop/route/MTU
RST = port fermé / app reset
TLS fail= cert/chain/SNI/time
HTTP 5xx= backend / upstream
