installer apache2
sudo apt update
sudo apt install apache2
dans /var/www/html/index.html
Page minimale
<!DOCTYPE html>
<html>
<head>
<title>Hello World</title>
</head>
<body>
<h1>Bonjour le monde !</h1>
</body>
</html>
Pour y accéder, il faut contourner le proxy si il y un proxy
Navigateur chromium, firefox, chrome , curl , nous allons utiliser ce dernier
curl --noproxy "127.0.0.1" 127.0.0.1
on obtient quelque chose comme cela :
bruno@elliott:~/Works/tcpdump$ curl --noproxy "127.0.0.1" 127.0.0.1
<!DOCTYPE html>
<html>
<head>
<title>Hello World</title>
</head>
<body>
<h1>Bonjour le monde !</h1>
</body>
</html>
bruno@elliott:~/Works/tcpdump$
Dans un autre terminal on va espionner la communication
sudo tcpdump -i lo -A port 80
on voit ainsi les trames tcp entre le client et le serveur
bruno@elliott:~/Works/tcpdump$ sudo tcpdump -i lo -A port 80
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on lo, link-type EN10MB (Ethernet), snapshot length 262144 bytes
12:22:50.086400 IP localhost.47884 > localhost.http: Flags [S], seq 1113395499, win 65495, options [mss 65495,sackOK,TS val 2273228112 ecr 0,nop,wscale 7], length 0
E..<.\@.@..^...........PB].+.........0.........
.~.P........
12:22:50.086424 IP localhost.http > localhost.47884: Flags [S.], seq 1637539294, ack 1113395500, win 65483, options [mss 65495,sackOK,TS val 2273228112 ecr 2273228112,nop,wscale 7], length 0
E..<..@.@.<..........P..a...B].,.....0.........
.~.P.~.P....
12:22:50.086445 IP localhost.47884 > localhost.http: Flags [.], ack 1, win 512, options [nop,nop,TS val 2273228112 ecr 2273228112], length 0
E..4.]@.@..e...........PB].,a........(.....
.~.P.~.P
12:22:50.086533 IP localhost.47884 > localhost.http: Flags [P.], seq 1:74, ack 1, win 512, options [nop,nop,TS val 2273228112 ecr 2273228112], length 73: HTTP: GET / HTTP/1.1
E..}.^@.@..............PB].,a........q.....
.~.P.~.PGET / HTTP/1.1
Host: 127.0.0.1
User-Agent: curl/7.88.1
Accept: */*
12:22:50.086556 IP localhost.http > localhost.47884: Flags [.], ack 74, win 512, options [nop,nop,TS val 2273228112 ecr 2273228112], length 0
E..4T,@.@............P..a...B].u.....(.....
.~.P.~.P
12:22:50.086832 IP localhost.http > localhost.47884: Flags [P.], seq 1:376, ack 74, win 512, options [nop,nop,TS val 2273228112 ecr 2273228112], length 375: HTTP: HTTP/1.1 200 OK
E...T-@.@............P..a...B].u...........
.~.P.~.PHTTP/1.1 200 OK
Date: Wed, 13 May 2026 10:22:50 GMT
Server: Apache/2.4.67 (Debian)
Last-Modified: Wed, 13 May 2026 09:22:58 GMT
ETag: "7c-651af8688df34"
Accept-Ranges: bytes
Content-Length: 124
Vary: Accept-Encoding
Content-Type: text/html
<!DOCTYPE html>
<html>
<head>
<title>Hello World</title>
</head>
<body>
<h1>Bonjour le monde !</h1>
</body>
</html>
12:22:50.086846 IP localhost.47884 > localhost.http: Flags [.], ack 376, win 510, options [nop,nop,TS val 2273228112 ecr 2273228112], length 0
E..4._@.@..c...........PB].ua..V.....(.....
.~.P.~.P
12:22:50.087099 IP localhost.47884 > localhost.http: Flags [F.], seq 74, ack 376, win 512, options [nop,nop,TS val 2273228113 ecr 2273228112], length 0
E..4.`@.@..b...........PB].ua..V.....(.....
.~.Q.~.P
12:22:50.087186 IP localhost.http > localhost.47884: Flags [F.], seq 376, ack 75, win 512, options [nop,nop,TS val 2273228113 ecr 2273228113], length 0
E..4T.@.@............P..a..VB].v.....(.....
.~.Q.~.Q
12:22:50.087207 IP localhost.47884 > localhost.http: Flags [.], ack 377, win 512, options [nop,nop,TS val 2273228113 ecr 2273228113], length 0
E..4.a@.@..a...........PB].va..W.....(.....
.~.Q.~.Q
^C
10 packets captured
20 packets received by filter
0 packets dropped by kernel
bruno@elliott:~/Works/tcpdump$
c’est un dialogue entre le client et le serveur ( curl et apache)
🎭 SCÈNE : localhost (votre PC joue les deux rôles)
📞 CLIENT (curl) 🖥️ SERVEUR (Apache)
port 47884 port 80
12:22:50.086400
[SYN] ─────────────────────────►
"Hé, je veux ouvrir une connexion"
12:22:50.086424
◄───────────────────────── [SYN-ACK]
"D'accord, je suis prêt à te parler"
12:22:50.086445
[ACK] ─────────────────────────►
"Reçu, la ligne est ouverte"
═══════════════════════════════════════════
💬 LA CONVERSATION (échange de données)
═══════════════════════════════════════════
12:22:50.086533
[PUSH] ────────────────────────►
"Voici ma question :"
┌─────────────────────────────────┐
│ GET / HTTP/1.1 │
│ Host: 127.0.0.1 │
│ User-Agent: curl/7.88.1 │
│ Accept: */* │
└─────────────────────────────────┘
12:22:50.086556
◄───────────────────────── [ACK]
"J'ai bien reçu ta question"
12:22:50.086832
◄───────────────────────── [PUSH]
"Voici ma réponse :"
┌─────────────────────────────────┐
│ HTTP/1.1 200 OK │
│ Date: Wed, 13 May 2026 ... │
│ Content-Type: text/html │
│ │
│ <!DOCTYPE html> │
│ <html>... │
│ <h1>Bonjour le monde !</h1> │
│ </html> │
└─────────────────────────────────┘
12:22:50.086846
[ACK] ─────────────────────────►
"J'ai bien reçu ta réponse"
═══════════════════════════════════════════
👋 LA FIN DE LA CONVERSATION
═══════════════════════════════════════════
12:22:50.087099
[FIN] ─────────────────────────►
"Moi, je te quitte"
12:22:50.087186
◄───────────────────────── [FIN]
"Moi aussi, au revoir"
12:22:50.087207
[ACK] ─────────────────────────►
"OK, conversation terminée"
Un paquet TCP:
Octet 0-1 : Port source (16 bits = 2 octets)
Octet 2-3 : Port destination (16 bits = 2 octets)
Octet 4-7 : Numéro de séquence (32 bits = 4 octets)
Octet 8-11 : Numéro d'acquittement (32 bits = 4 octets)
Octet 12 : Header length + réservé (8 bits)
Octet 13 : FLAGS (8 bits) ← C'EST ICI QUE VOUS DEVEZ REGARDER !
Octet 14-15: Fenêtre (16 bits)
Octet 16-17: Checksum (16 bits)
Octet 18-19: Urgent pointer (16 bits)
