Les bases techniques · module en construction
Client et serveur : protocoles, ports, URL
Mis à jour le .
Quand tu ouvres une page, envoies un courriel ou déposes un fichier, deux programmes se parlent : un clientClient — Le programme qui demande : un navigateur, une appli, un logiciel de transfert de fichiers. Il ouvre la connexion et envoie une requête ; le serveur répond. qui demande, un serveurServeur — Programme qui attend des demandes et y répond (serveur web, serveur de courriel…), et par extension l'ordinateur qui le fait tourner, souvent dans un centre de données. N'importe quel ordinateur peut être serveur. qui répond. Pour se comprendre, ils suivent un protocole, se retrouvent sur un port, et désignent ce qu'ils veulent par une URLURL — Adresse d'une ressource, comme https://cours.example/reseau/ports.html : le protocole (https), le serveur (cours.example), éventuellement le port, puis le chemin de la ressource sur ce serveur.. Ce module montre tout cela en mouvement.
Choisis ton niveau et ta façon de lire : tu peux en changer à tout moment.
Étape 0 : Qui demande, qui répond
- Le serveur est un programme qui attend : il « écoute » sur un port (ici 443, celui de HTTPS). Tant que personne ne demande rien, il ne fait rien.
- Le téléphone, un client, envoie une demande (une requête) : « donne-moi la page /reseau/ ». C’est toujours le client qui commence.
- Le serveur cherche la page et renvoie une réponse : un code (200, « OK ») et le contenu. Puis il se remet à attendre.
- Deux autres clients demandent en même temps, chacun sa page. Le serveur ne sait rien d’eux à l’avance : il répond à qui le demande.
- Il répond à chacun séparément, des milliers de fois par seconde pour un gros site. Chaque client ne voit que ses propres réponses.
- Si le programme serveur est arrêté, plus rien n’écoute sur le port : le client reçoit « connexion refusée ». La machine peut être allumée, c’est le programme qui compte.
🟢 Découverte
Le client demande, le serveur répond. Le navigateur de ton téléphone est un client ; le programme qui envoie les pages d'un site est un serveur. C'est toujours le client qui commence la conversation, et le serveur répond à chacun séparément.
🟡 Curieux
Un serveur est d'abord un programme qui attend des demandes. Par extension, on appelle aussi « serveur » l'ordinateur qui le fait tourner. N'importe quel ordinateur peut être serveur : ton portable aussi, si tu y lances un programme serveur. Dans un centre de données, ce sont des machines faites pour ça, allumées en permanence.
🔴 Ingénieur
Un même gros site répond avec des centaines de serveurs derrière une seule adresse, grâce à des répartiteurs de charge ; à l'inverse, un seul serveur peut héberger des milliers de petits sites (on le verra avec HTTP). Il existe aussi des réseaux sans serveur central, dits « pair à pair », où chaque machine est à la fois client et serveur.
Un peu d'histoire
Le 16 avril 1971, Abhay Bhushan, du MIT, publie la RFC 114 : le premier protocole de transfert de fichiers de l'ARPANET. Il y distingue l'usage « direct » d'une machine distante (se connecter dessus) et l'usage « indirect », où un programme demande des fichiers à un autre : déjà l'idée du client et du serveur. Le premier serveur web, lui, tourne au CERN, sur l'ordinateur NeXT de Tim Berners-Lee : le premier site, info.cern.ch, est toujours en ligne.
Idées reçues
« Un serveur, c'est un ordinateur spécial. » C'est d'abord un programme ; l'ordinateur qui le fait tourner peut être n'importe lequel. Et « le serveur est en panne » veut souvent dire que le programme est arrêté, pas que la machine est éteinte.
Étape 1 : Une adresse, plusieurs portes : les ports
| Port | Protocole | Usage |
|---|---|---|
| 21 | FTP | transférer des fichiers (commandes) |
| 22 | SSH, SFTP | administrer une machine à distance, transférer des fichiers |
| 25 | SMTP | faire passer le courriel d’un serveur à l’autre |
| 53 | DNS | traduire un nom en adresse IP |
| 80 | HTTP | pages web, sans chiffrement |
| 443 | HTTPS | pages web chiffrées (HTTP dans TLS) |
| 587 | SMTP (envoi) | envoyer son courriel à son serveur |
| 990 | FTPS | FTP chiffré par TLS dès la connexion |
| 993 | IMAP sur TLS | lire son courriel |
Serveur cours.example — adresse IP 203.0.113.10
- 21FTP
- 22SSH, SFTP
- 25SMTP
- 53DNS
- 80HTTP
- 443HTTPS
- 587SMTP (envoi)
- 990FTPS
- 993IMAP sur TLS
🟢 Découverte
L'adresse IPAdresse IP — Numéro qui identifie une machine sur internet, comme une adresse postale. En IPv4 : quatre nombres (ex. 203.0.113.42) ; en IPv6 : une adresse beaucoup plus longue. désigne une machine, comme l'adresse d'un immeuble. Le portPort — Numéro qui indique à quel programme d'une machine un paquet est destiné, comme le numéro d'appartement après l'adresse de l'immeuble. Le web chiffré utilise le port 443. désigne le programme à qui l'on parle, comme le numéro de l'appartement. Un même serveur peut faire tourner un site web (port 443), un accès SSH (port 22) et un serveur de fichiers en même temps.
🟡 Curieux
Les numéros des services courants sont enregistrés par l'IANA : 80 pour HTTP, 443 pour HTTPS, 21 pour FTP, 22 pour SSH et SFTP, 25 pour le courriel entre serveurs, 53 pour le DNS. Ce sont des conventions : on peut faire tourner un site sur le port 8080, il faut alors l'écrire dans l'URL.
🔴 Ingénieur
Un port est un nombre sur 16 bits, de 0 à 65 535. L'IANA distingue trois plages : les ports « système » (0 à 1 023), les ports « utilisateur » (1 024 à 49 151), enregistrés pour des applications, et les ports « dynamiques » (49 152 à 65 535), jamais attribués, que ton ordinateur choisit au hasard pour son côté de chaque connexion. Une connexion est identifiée par quatre nombres : adresse et port du client, adresse et port du serveur.
Vérifie toi-même
Sous Linux ou macOS, la commande ss -tln (ou netstat -an sous Windows) affiche les
ports sur lesquels ta machine écoute. Le jeu Quêtes de Sysadmin fait
ouvrir et fermer des ports sur un pare-feu.
Étape 2 : Lire une URL
Dans https://cours.example:443/reseau/ports.html?vue=liste#ftp : https est le
schéma (le protocole), cours.example l'hôte (le serveur), 443 le port (souvent
sous-entendu), /reseau/ports.html le chemin, vue=liste la requête (des
paramètres), et ftp le fragment, un endroit dans la page, que le navigateur n'envoie pas au
serveur.
Le découpage se fait dans ton navigateur : rien n’est envoyé.
🟢 Découverte
Une URL dit au client trois choses : comment parler (le schéma : https, ftp, sftp…), à qui (le nom du serveur, et parfois le port), et quoi demander (le chemin).
🟡 Curieux
Le port est presque toujours sous-entendu : https:// veut dire port 443. Après le chemin, un
? introduit des paramètres (une recherche, un numéro de page), et un # un endroit
dans la page : cette dernière partie, le fragment, n'est jamais envoyée au serveur.
🔴 Ingénieur
La syntaxe est fixée par la RFC 3986 (2005), écrite par Tim Berners-Lee, Roy Fielding et Larry Masinter. Son
exemple : foo://example.com:8042/over/there?name=ferret#nose se découpe en schéma, autorité,
chemin, requête et fragment. Le nom du serveur est ensuite traduit en adresse IP par le
DNSDNS — Domain Name System : l'annuaire décentralisé d'internet, qui traduit les noms de domaine en adresses IP..
Idées reçues
« Une adresse web commence par www. » « www » n'est qu'un nom choisi par le propriétaire du
domaine pour son serveur web, comme « mail » ou « cours ». https://info.cern.ch/, le premier site
web, n'en a pas.
Étape 3 : De l'URL au fichier
Sur le serveur, le site est un dossier, /var/www/cours.example, qui contient :
index.htmlcss/style.cssimages/logo.pngreseau/index.htmlreseau/ports.htmldocs/tp-adresses-ip.pdf
L'URL https://cours.example/reseau/ports.html donne le fichier /var/www/cours.example/reseau/ports.html. L'URL https://cours.example/reseau/ désigne un dossier : le serveur envoie son fichier index.html. Sans la barre finale, il redirige (code 301) vers /reseau/. Un fichier absent donne le code 404, et un chemin qui essaie de remonter au-dessus de la racine avec « .. » est refusé.
/var/www/cours.example/
🟢 Découverte
Sur un serveur web simple, un site est un dossier. Le chemin de l'URL indique quel fichier prendre dans ce
dossier : /reseau/ports.html donne le fichier ports.html du sous-dossier
reseau. Ce site, rouages.net, fonctionne exactement comme ça.
🟡 Curieux
Quand l'URL désigne un dossier (elle finit par /), le serveur envoie le fichier
index.html de ce dossier. Sans la barre finale, il répond souvent « c'est ailleurs » (code 301)
vers l'adresse avec la barre. Et si rien ne correspond : 404.
🔴 Ingénieur
Ce n'est pas toujours un fichier : un chemin peut aussi déclencher un programme (PHP, Python, Node…) qui
fabrique la page à la demande, par exemple à partir d'une base de données. Le serveur doit aussi refuser les
chemins qui tentent de sortir du dossier du site avec .. : la RFC 3986 avertit qu'interpréter un
chemin d'URL dans un système de fichiers demande des précautions.
Un peu d'histoire
L'adresse https://info.cern.ch/hypertext/WWW/TheProject.html, l'une des toutes premières pages du web,
qui présentait le projet World Wide Web au CERN, garde la trace de cette correspondance : un dossier hypertext,
un sous-dossier WWW, un fichier TheProject.html.
Étape 4 : Un fichier, trois chemins
Sur le serveur, le compte eleve contient :
/home/eleve/public_html/index.html/home/eleve/public_html/reseau/ports.html/home/eleve/public_html/images/logo.png/home/eleve/notes-perso.txt/home/eleve/sauvegardes/site-2026-11.zip
Le dossier public_html (aussi appelé www) est la racine du site
cours.example. Le même fichier /home/eleve/public_html/reseau/ports.html s'atteint de trois
façons :
- par le web :
https://cours.example/reseau/ports.html(port 443) ; - par SFTP ou SSH :
sftp://[email protected]/home/eleve/public_html/reseau/ports.html(port 22) ; - par FTPS, avec un compte FTP limité au dossier du site :
ftps://[email protected]/reseau/ports.html.
Si on le modifie par SFTP, la page web change aussitôt : c'est le même fichier. Un fichier rangé hors de
public_html, comme notes-perso.txt, n'a pas d'adresse web ; on ne l'atteint que par
SFTP ou SSH.
Disque du serveur
🌐 Par le web HTTPS, port 443, navigateur
🔐 Par SFTP ou SSH port 22, tout le compte
📂 Par FTPS compte FTP limité à public_html
🟢 Découverte
Sur le serveur, le site est un dossier : sur un hébergement comme celui de ce site, il s'appelle
public_html (ou www). C'est la racine du site : tout fichier rangé
dedans a une adresse web, et tout fichier rangé ailleurs n'en a pas.
🟡 Curieux
HTTPS, FTPS et SFTP ne sont que trois façons d'atteindre les mêmes fichiers sur le même disque. Le navigateur passe par le serveur web (port 443) et ne voit que la racine du site ; FTPS et SFTP servent à déposer et modifier ces fichiers. Quand on corrige une page par SFTP, il suffit de recharger le navigateur pour voir la nouvelle version : il n'y a qu'un fichier.
🔴 Ingénieur
Le serveur web Apache appelle ce dossier la DocumentRoot : il « ajoute le chemin de l'URL demandée
à la racine des documents » pour trouver le fichier. Son nom change d'un serveur à l'autre :
public_html ou www chez cPanel, /var/www/html par défaut avec Apache sous
Ubuntu. Un compte FTP peut être limité à un dossier ; un accès SSH ou SFTP voit, lui, tout ce que le compte a le
droit de lire.
Idées reçues
« Ce qui n'a pas de lien n'est pas en ligne. » Un fichier rangé dans la racine du site est
accessible à quiconque devine son adresse, même si aucune page n'y mène. Ce qui doit rester privé (sauvegardes,
notes, mots de passe) se range hors de public_html.
Étape 5 : Transférer des fichiers : FTP, FTPS, SFTP
FTP (port 21 (commandes) + une seconde connexion pour les données)
- Le client ouvre une connexion de commandes vers le port 21. Ce que voit l'espion :
220 Service ready - Il envoie son identifiant et son mot de passe. Ce que voit l'espion :
USER eleve PASS MotDePasse123 - Il demande le fichier : une seconde connexion s’ouvre pour les données. Ce que voit l'espion :
RETR tp-adresses-ip.pdf (contenu du fichier, lisible)
Tout passe en clair : quiconque écoute le réseau lit le mot de passe et le fichier.
FTPS (port 990 (TLS dès le départ) ou 21 avec la commande AUTH TLS)
- Le client ouvre une connexion et établit d’abord un canal chiffré TLS, comme HTTPS. Ce que voit l'espion :
(poignée de main TLS : certificat du serveur visible) - Il envoie son identifiant et son mot de passe, dans le canal chiffré. Ce que voit l'espion :
17 03 03 00 41 8f 2a c4 … (illisible) - Le fichier passe sur une seconde connexion, chiffrée elle aussi. Ce que voit l'espion :
17 03 03 3f 2e 91 07 … (illisible)
C’est FTP, avec ses deux connexions, enveloppé dans TLS : le mot de passe et le fichier sont chiffrés.
SFTP (port 22 (SSH), une seule connexion)
- Le client ouvre une connexion SSH vers le port 22 et vérifie l’empreinte de la clé du serveur. Ce que voit l'espion :
SSH-2.0-OpenSSH (puis échange de clés) - Il s’authentifie, par mot de passe ou par clé, dans le canal chiffré. Ce que voit l'espion :
00 00 00 3c 0a 14 … (illisible) - Il demande le fichier, qui arrive dans la même connexion. Ce que voit l'espion :
00 00 01 0c 5e 71 … (illisible)
Ce n’est pas FTP : c’est un autre protocole, qui fonctionne à l’intérieur de SSH, sur une seule connexion chiffrée.
Ce que lit une personne qui écoute le réseau :
🟢 Découverte
Pour déposer les fichiers d'un site sur un serveur, on utilise un protocole de transfert. FTP, le plus ancien, envoie tout en clair, mot de passe compris. FTPS et SFTP chiffrent tout : ce sont eux qu'il faut utiliser.
🟡 Curieux
FTPS, c'est FTP enveloppé dans TLS, le même chiffrement que HTTPS : soit dès la connexion
(port 990), soit en le demandant sur le port 21 avec la commande AUTH TLS. SFTPSFTP — Protocole de transfert de fichiers qui fonctionne à l'intérieur d'une connexion SSH chiffrée (port 22). Malgré son nom, ce n'est pas une version de FTP ; FTP chiffré par TLS s'appelle FTPS., malgré son nom, n'est pas du FTP : c'est un autre protocole, qui fonctionne
à l'intérieur d'une connexion SSH (port 22).
🔴 Ingénieur
FTP utilise deux connexions : une pour les commandes (port 21), une autre pour chaque transfert de données. SFTP passe tout dans une seule connexion SSH, et le client vérifie l'empreinte de la clé du serveur pour être sûr de ne pas parler à un imposteur.
Un peu d'histoire
Le protocole FTP actuel est décrit dans la RFC 959, publiée en octobre 1985 par Jon Postel et Joyce K. Reynolds, de l'ISI. Il prolonge la RFC 114 d'Abhay Bhushan (1971). Sa version chiffrée par TLS est normalisée en 2005 (RFC 4217). SFTP, lui, n'est jamais devenu une norme officielle : il est resté un brouillon de l'IETF (le dernier date de 2006), tout en étant utilisé partout.
Vérifie toi-même
Ce site lui-même est envoyé sur son hébergement par FTPS, à chaque mise à jour, par un programme automatique : le mot de passe ne circule jamais en clair.
Étape 6 : Une conversation HTTP
Demander une page qui existe
GET /reseau/ports.html HTTP/1.1 Host: cours.example
HTTP/1.1 200 OK Content-Type: text/html; charset=utf-8 <!doctype html> <html lang="fr">…
200 OK : le serveur a trouvé le fichier et l’envoie, avec son type (une page HTML).
Demander une page qui n’existe pas
GET /notes.html HTTP/1.1 Host: cours.example
HTTP/1.1 404 Not Found Content-Type: text/html; charset=utf-8 <h1>Page introuvable</h1>
404 : le serveur fonctionne, mais rien ne correspond à ce chemin.
Oublier la barre finale d’un dossier
GET /reseau HTTP/1.1 Host: cours.example
HTTP/1.1 301 Moved Permanently Location: https://cours.example/reseau/
301 : « c’est ailleurs ». Le navigateur refait aussitôt la demande à la nouvelle adresse.
Un programme du serveur plante
GET /recherche?q=ports HTTP/1.1 Host: cours.example
HTTP/1.1 500 Internal Server Error
500 : la demande était correcte, mais le serveur a échoué. Les codes 4xx désignent une erreur du client, les 5xx une erreur du serveur.
Deux sites, une seule adresse IP
GET / HTTP/1.1 Host: club-photo.example
HTTP/1.1 200 OK Content-Type: text/html; charset=utf-8 <title>Club photo</title>…
Le même serveur, à la même adresse IP, héberge cours.example et club-photo.example. C’est la ligne « Host » qui lui dit quel site on veut : c’est ainsi que fonctionnent les hébergements mutualisés.
💻 Le client envoie
🗄️ Le serveur répond
En HTTPS, c’est exactement la même conversation, mais à l’intérieur d’un canal chiffré (TLS), sur le port 443 : sur le réseau, on ne lit plus ces lignes. HTTP/2 et HTTP/3 transportent les mêmes informations sous une forme binaire.
🟢 Découverte
Le web parle HTTPHTTP — HyperText Transfer Protocol : la langue dans laquelle le navigateur demande une page (« GET / ») et le serveur répond (« 200 OK »).. Le client envoie une requête de quelques lignes de texte (« donne-moi /reseau/ports.html »), le serveur répond par un code et le contenu. HTTPSHTTPS — HTTP protégé par TLS : la conversation entre ton navigateur et le serveur est chiffrée. C'est ce qu'indique le cadenas, qui ne garantit pas pour autant que le site est honnête., c'est la même conversation dans un canal chiffré, sur le port 443.
🟡 Curieux
Les codes de réponseCode HTTP — Nombre à trois chiffres dans la réponse du serveur : 200 (tout va bien), 404 (introuvable), 500 (erreur du serveur), 503 (service indisponible)… se lisent par famille : 2xx tout va bien (200), 3xx c'est
ailleurs (301), 4xx erreur du client (404, page introuvable), 5xx erreur du serveur (500). La ligne
Host dit quel site on veut : un seul serveur, à une seule adresse IP, peut ainsi héberger des
milliers de sites, comme sur un hébergement mutualisé.
🔴 Ingénieur
HTTP est décrit par la RFC 9110 (2022). La première ligne contient la méthode (GET pour lire, POST pour envoyer un formulaire…), le chemin et la version. HTTP/2 et HTTP/3 transportent les mêmes informations sous une forme binaire, plus rapide. Le module De l'Entrée à la page suit tout le voyage d'une requête, du DNS au chiffrement TLS.
Vérifie toi-même
Dans ton navigateur, ouvre les outils de développement (touche F12), onglet « Réseau », puis recharge la page : chaque ligne est une requête du client, avec son code de réponse.
Ce qu'il faut retenir
- Le client demande, le serveur répond ; un serveur est d'abord un programme qui écoute.
- L'adresse IP désigne la machine, le port le programme : 443 pour HTTPS, 22 pour SSH et SFTP, 21 pour FTP.
- Une URL dit comment, à qui et quoi : schéma, serveur (et port), chemin ; le fragment reste dans le navigateur.
- Sur un serveur simple, le chemin de l'URL est un chemin de fichier, sous la racine du site ; un dossier sert son index.html.
- La racine du site (public_html, www) est un dossier : web, FTPS et SFTP ne sont que trois chemins vers les mêmes fichiers.
- Pour transférer des fichiers, jamais FTP en clair : FTPS (FTP dans TLS) ou SFTP (dans SSH).
Pour aller plus loin : Adresses IP et masques, De l'Entrée à la page, et Se protéger pour le chiffrement.