Ce qui se passe quand tu entres une URL — DNS, HTTP et HTTPS

Cet article fait partie du cours Les bases de l'informatique, qui construit depuis zéro les connaissances informatiques pratiques indispensables pour programmer et faire du vibe coding.
Une URL se lit en quatre parties. Les schémas suivent le DNS, qui transforme un nom en numéro, le HTTP, qui rapporte le contenu, et le HTTPS, qui empêche de le lire en route.

Cet article traite de ce qui se passe entre le moment où tu entres une URL et l'apparition de l'écran.

Trois choses interviennent : le DNS, qui transforme un nom en numéro ; le HTTP, qui échange le contenu ; et le HTTPS, qui empêche que ces échanges soient lus.

La ligne que tu as tapée se découpe en quatre parties
http://localhost:3000/reserveDébuthttpMilieulocalhostNuméro:3000Fin/reserveSelon quellesrègles envoyerQuel ordinateurQuel programmeQuelle page
En haut, la ligne que tu as tapée. La rangée du milieu donne ses parties, celle du bas ce à quoi chacune répond. Il faut les quatre réunies pour savoir où envoyer quoi.

Il faut les trois réunies pour savoir où envoyer quoi.

L'URL est une chaîne qui désigne quelle page sur quel ordinateur

La chaîne que tu tapes en suivant la procédure est une URL (Uniform Resource Locator ; chaîne d'une ligne qui indique sur quel ordinateur se trouve la page voulue, et où elle s'y trouve).

Le contenu d'une URL d'une ligne
Une URL d'une ligne (http://localhost:3000/reserve)
Début — http
  • Cette partie va jusqu'au « :// »
  • Si c'est https, ce que tu envoies est chiffré
Milieu — le domaine (domain name)
  • Un nom lisible par un humain, donné à un ordinateur sur Internet
  • Un serveur public reçoit un nom comme example.com
  • localhost, utilisé en local, est un nom fixe qui désigne l'ordinateur où il est tapé
  • C'est ici que se décide à quel ordinateur la requête est remise
Numéro — le numéro de port (port number)
  • Le numéro qui indique à quel programme, dans un ordinateur, la requête est remise
  • Plusieurs programmes peuvent attendre des requêtes en même temps : ce numéro désigne lequel
  • http correspond à 80 et https à 443 : avec ces numéros, on ne l'écrit pas
Fin — /reserve
  • À partir du « / », la position d'une page dans le même serveur
  • Si tu l'omets, tu obtiens la page d'entrée de ce serveur
Le cadre extérieur est la ligne http://localhost:3000/reserve. De haut en bas : les règles d'envoi, quel ordinateur, quel programme à l'intérieur, quelle page.

C'est le navigateur lui-même qui découpe la ligne en ces quatre parties.

Lire une URL en quatre parties

Une URL est une ligne qui réunit quatre parties.

Le début donne les règles d'envoi, le milieu quel ordinateur, le numéro quel programme à l'intérieur, la fin quelle page ; une URL locale et une URL publique sont faites des quatre mêmes parties, seuls les caractères changent.

De la saisie de l'URL à l'apparition de l'écran — DNS et HTTP

L'adresse IP vue dans l'article précédent, c'est ce numéro.

Les règles qui permettent de trouver l'adresse IP à partir d'un domaine sont le DNS (Domain Name System), et les règles selon lesquelles un navigateur et un serveur échangent requêtes et réponses sont le HTTP (HyperText Transfer Protocol).

La machine qui détient les correspondances DNS et répond quand on l'interroge est le serveur DNS.

Ce que le navigateur envoie est la requête et ce qui revient est la réponse, et entre la saisie de l'URL et l'apparition de l'écran, le navigateur se connecte successivement à deux interlocuteurs.

Le navigateur se connecte successivement à deux interlocuteurs
Navigateur① Soumettre le nomau serveur DNSSeul le numéro203.0.113.5Pas de contenude page en retour② Se connecterà ce numéroLire /reserve,choisir la réponseLe contenu dela page revient
Depuis le navigateur, à gauche, deux lignes partent vers le haut et vers le bas. En haut le premier interlocuteur, le serveur DNS ; en bas le second, le serveur Web ; ce qui revient diffère.

L'ordre est : transformer d'abord le nom en numéro, puis aller chercher le contenu.

Le serveur DNS, contacté en premier, ne renvoie qu'un numéro : il ne renvoie pas le contenu de la page.

Le contenu est détenu par le serveur que tu atteins à ce numéro, qui regarde le /reserve à la fin de l'URL avant de choisir ce qu'il renvoie.

Sur le même serveur, le contenu choisi n'est pas le même pour /reserve et pour /login.

La réponse qui revient contient un numéro à trois chiffres et le contenu de la page, et seul le fichier de contenu s'affiche à l'écran.

Transformer le nom en numéro, puis obtenir le contenu

Le navigateur fait quatre choses : il lit, il demande, il reçoit et il affiche.

Il découpe en quatre l'URL que tu as tapée, demande le numéro au serveur DNS et réclame la page à ce numéro.

Le serveur regarde la fin de l'URL, choisit ce qu'il renvoie et le renvoie avec un numéro qui dit si cela s'est bien passé.

Le HTTPS, ce sont les règles qui empêchent de lire le contenu en cours de route

Dans un échange qui commence par http, les caractères que tu as tapés circulent tels quels, donc les équipements du trajet peuvent en lire le contenu.

Ce qui l'empêche, c'est le HTTPS (HyperText Transfer Protocol Secure), qui échange ce que tu envoies après chiffrement (encryption ; transformation en une forme que personne d'autre que le destinataire prévu ne peut rétablir).

Avec les mêmes caractères, http et https ne laissent pas voir la même chose en route
Tu as tapépassword123Envoyé en httpLisible tel quelsur le trajetLe serveur lit ceque tu as tapéEnvoyé en httpsSur le trajet :le nom du serveurLe serveur remeten clair et lit
À gauche, les mêmes caractères tapés. Le chemin du haut est http, celui du bas https. Les caractères que le serveur lit sont les mêmes dans les deux cas ; seul le trajet du milieu diffère.

Les caractères que le serveur lit sont les mêmes dans les deux cas ; seul change ce que voient les équipements du trajet.

Même en https, le serveur auquel l'échange est adressé reste visible en route.

Ce qui ne l'est pas, c'est la page que tu as ouverte et ce que tu as tapé.

Dans un échange https, ce que le trajet peut savoir et ce qu'il ne peut pas
Un échange envoyéen httpsCe que le trajetpeut savoirCe que le trajetne peut pas lireLe destinataireexample.comMot de passe tapé,contenu de la pageLe site visitéreste enregistréVu en route, maiscontenu illisible
L'échange unique du haut se divise à gauche et à droite. Seule la partie gauche est visible pour les équipements du trajet ; la droite ne l'est pas. La rangée du bas indique ce qui en découle.

Le HTTPS comprend aussi un mécanisme qui vérifie que l'interlocuteur est bien le propriétaire du domaine.

Le certificat n'est pas délivré par le serveur lui-même, mais par une autorité de certification (certificate authority ; tiers qui vérifie le propriétaire d'un domaine et délivre les certificats).

Le certificat contient la clé publique (public key ; clé que l'on peut confier à n'importe qui) qui sert à vérifier que l'interlocuteur est authentique.

La vérification vient d'abord, le chiffrement ensuite.

La clé n'est créée qu'une fois établi que l'interlocuteur est bien le propriétaire, donc même si un équipement s'interpose en route, il ne peut pas lire le contenu.

https empêche la lecture du contenu

La différence entre http et https tient seulement à la possibilité de lire le contenu en route.

En http les caractères circulent tels quels, donc les équipements du trajet peuvent lire le contenu ; en https les caractères sont transformés avant l'envoi, donc tout ce que le trajet peut savoir, c'est le nom du destinataire.

QUIZ

Vérification des connaissances

Répondez à chaque question une par une.

Question 1Dans le http://localhost:3000 de la procédure, quel ordinateur localhost désigne-t-il ?

Question 2Quel mécanisme prend un domaine comme example.com et trouve l'adresse IP utilisée pour communiquer ?

Question 3Quelle est la différence entre une URL qui commence par https et une URL qui commence par http ?