Comment un navigateur affiche une page web
Une page web ne s'affiche pas telle quelle à l'instant où vous saisissez une URL dans le navigateur.
En réalité, plusieurs étapes se produisent dans l'ordre : interprétation de l'URL, obtention de l'adresse IP par DNS, connexion au serveur, établissement d'un canal sûr par HTTPS, envoi d'une requête HTTP, réception de la réponse du serveur, puis traitement d'affichage par le navigateur.
Toutefois, tous ces traitements ne sont pas toujours effectués depuis le début à chaque fois. Le résultat DNS peut être en cache, un canal de communication déjà connecté peut être réutilisé, ou des données peuvent être chargées depuis le cache du navigateur.
Cet article organise, sans entrer trop loin dans les détails de spécification, ce qui se passe jusqu'à l'affichage d'une page web, en suivant le flux réel de communication.
Que se passe-t-il après la saisie d'une URL ?
Supposons par exemple que vous saisissiez la chaîne « https[:]//example.com » dans la barre d'adresse du navigateur.
Le navigateur commence par vérifier la chaîne saisie.
Il détermine s'il s'agit d'un mot-clé de recherche ou d'une URL de site web, puis interprète la destination si c'est une URL.
Une URL contient principalement les informations suivantes.
| Élément | Exemple | Signification |
|---|---|---|
| Schéma | https | Indique par quelle méthode communiquer |
| Nom d'hôte | example.com | Indique le nom du site web auquel se connecter |
| Numéro de port | 443 | Indique à quelle entrée de communication se connecter. Il est souvent omis |
| Chemin | /about | Indique quel emplacement demander sur le serveur |
| Chaîne de requête | ?id=10 | Transmet des informations supplémentaires au serveur |
| Fragment | #section | Indique une position dans la page. Il n'est normalement pas envoyé au serveur |
L'URL est une forme pratique pour que les humains indiquent un site web.
Mais pour trouver l'interlocuteur sur le réseau, une adresse IP est finalement nécessaire.
Le navigateur passe donc au traitement qui recherche l'adresse IP à partir du nom d'hôte.
Rechercher l'adresse IP avec DNS
Le navigateur ne peut pas se connecter au serveur avec le seul nom « example.com ».
C'est là qu'intervient DNS.
DNS est le mécanisme qui associe les noms de domaine aux adresses IP.
Le navigateur ou l'OS vérifie d'abord si le résultat DNS est déjà présent localement. Si le même domaine a été consulté auparavant, l'adresse IP peut être obtenue depuis le cache DNS.
S'il n'y a pas d'information dans le cache, une requête est envoyée au résolveur DNS. Le résolveur DNS cherche l'adresse IP correspondant au nom de domaine cible en interrogeant, si nécessaire, plusieurs serveurs DNS.
| Étape | Ce qui se passe | Objectif |
|---|---|---|
| 1 | Le navigateur ou l'OS vérifie le cache | Vérifier si une adresse IP déjà recherchée peut être réutilisée |
| 2 | Interroger le résolveur DNS | Rechercher l'adresse IP correspondant au nom de domaine |
| 3 | Obtenir un enregistrement A ou AAAA | Obtenir une destination IPv4 ou IPv6 |
| 4 | Décider la destination avec l'adresse IP | Identifier l'interlocuteur réel de la communication |
L'adresse IP obtenue ici n'est pas forcément fixe.
Même pour le même nom de domaine, des adresses IP différentes peuvent être renvoyées selon la région, les réglages DNS, la répartition de charge, les CDN, etc.
Se connecter au serveur
Une fois l'adresse IP connue, le navigateur se connecte au serveur qui possède cette adresse IP.
Dans les communications web, le numéro de port est important en plus de l'adresse IP de destination.
Normalement, HTTP utilise le port 80 et HTTPS le port 443.
| Méthode de communication | Numéro de port principal | Signification |
|---|---|---|
| HTTP | 80 | Souvent utilisé pour les communications web non chiffrées |
| HTTPS | 443 | Souvent utilisé pour les communications web protégées par TLS |
HTTP/1.1 et HTTP/2 utilisent normalement TCP pour la connexion au serveur.
En revanche, HTTP/3 utilise un mécanisme appelé QUIC, qui fonctionne au-dessus de UDP.
Cet article n'entre pas dans les détails de HTTP/2 ou HTTP/3 ; le point important est que le navigateur crée un chemin de communication avec le serveur au moyen de l'adresse IP et du numéro de port.
De plus, une nouvelle connexion n'est pas forcément créée à chaque fois. Si une connexion vers le même serveur existe déjà, le navigateur peut la réutiliser.
Créer un canal sûr avec HTTPS
Si l'URL commence par « https », le navigateur communique avec le serveur en HTTPS.
HTTPS est une communication où HTTP est protégé par TLS.
TLS a principalement les rôles suivants.
| Rôle | Signification | Importance |
|---|---|---|
| Chiffrement | Rendre le contenu de la communication difficile à lire par des tiers | Protège les mots de passe et le contenu des pages |
| Détection de modification | Vérifier que le contenu n'a pas été changé pendant la communication | Aide à empêcher les modifications par un intermédiaire |
| Vérification de l'interlocuteur | Vérifier que la destination est le serveur du domaine prévu | Mesure contre les faux sites et les attaques de l'homme du milieu |
Le point important ici est que HTTPS n'est pas seulement un « mécanisme qui chiffre la communication ».
Le navigateur vérifie le certificat présenté par le serveur et examine si ce certificat est valide pour le nom de domaine consulté.
Grâce à cette vérification, le navigateur peut juger qu'il est très probable que l'interlocuteur auquel il se connecte soit celui prévu.
Cependant, même avec HTTPS, toutes les informations relatives à la communication ne sont pas cachées.
Par exemple, l'adresse IP de destination, le moment où la communication a lieu et le volume de communication ne peuvent pas être complètement cachés par HTTPS seul.
De plus, selon l'environnement, des informations relatives au nom de domaine de destination peuvent être visibles sur le trajet de communication.
Autrement dit, HTTPS est très important pour protéger le contenu de la communication et vérifier l'interlocuteur, mais ce n'est pas un mécanisme qui garantit complètement l'anonymat.
Demander la page avec HTTP/HTTPS
Une fois le canal sûr créé, le navigateur demande la page au serveur.
Cette demande s'appelle une requête HTTP.
Dans le cas de HTTPS, le contenu de la requête HTTP est envoyé protégé par TLS.
Par exemple, le navigateur peut envoyer au serveur les informations suivantes.
| Information | Signification | Complément |
|---|---|---|
| Méthode | Quelle opération effectuer | GET est souvent utilisé pour obtenir une page |
| Chemin | Quelle page ou donnée demander | / ou /about, etc. |
| Host | À quel domaine la requête est destinée | Utilisé aussi lorsqu'une même IP héberge plusieurs sites |
| User-Agent | Informations sur le navigateur, l'OS, etc. | Utilisé pour juger l'environnement ou ajuster l'affichage |
| Accept-Language | Langues préférées | Utilisé pour décider par exemple d'afficher une page en japonais |
| Referer | Depuis quelle page l'utilisateur est arrivé | Peut ne pas être envoyé selon les réglages ou les spécifications |
| Informations d'identification enregistrées par le site | Utilisé pour maintenir l'état de connexion ou les réglages |
Le serveur regarde cette requête pour décider quelles données renvoyer.
Même en accédant à la même URL, le contenu renvoyé peut changer selon l'état de connexion, les cookies, la langue, le type d'appareil, etc.
Le serveur renvoie des données
Le serveur qui reçoit la requête du navigateur renvoie une réponse HTTP.
Une réponse HTTP contient un code de statut, des en-têtes, un corps, etc.
| Élément | Exemple | Signification |
|---|---|---|
| Code de statut | 200 | Indique si la requête a réussi, s'il y a une erreur, etc. |
| En-tête | Content-Type | Indique le type de données, la politique de cache, etc. |
| Corps | HTML, etc. | Donnée principale que le navigateur utilise réellement |
Le centre d'une page web est le HTML, mais le HTML seul ne suffit pas toujours à compléter toute la page.
Beaucoup de pages web s'affichent en combinant plusieurs types de données.
| Donnée | Rôle |
|---|---|
| HTML | Représente la structure de la page |
| CSS | Définit l'apparence, comme les couleurs, marges, disposition et taille du texte |
| JavaScript | Effectue des traitements et modifications dynamiques dans la page |
| Images | Affiche des photos, icônes, figures, etc. |
| Polices | Ajuste l'apparence des caractères |
| Vidéo・audio | Lit des contenus multimédias |
Le navigateur reçoit d'abord le HTML, puis obtient en plus le CSS, JavaScript, les images, les polices et autres éléments indiqués dans ce HTML.
Ainsi, même pour ouvrir une seule page web, plusieurs requêtes HTTP sont souvent effectuées en réalité.
Le navigateur affiche à l'écran
Lorsque le navigateur reçoit les données du serveur, il les transforme dans une forme affichable à l'écran.
Globalement, les traitements suivants sont effectués.
| Étape | Ce qui se passe |
|---|---|
| Analyse du HTML | Lire la structure de la page |
| Application du CSS | Appliquer les règles d'apparence |
| Calcul de mise en page | Décider où placer chaque élément |
| Dessin | Afficher texte, images, arrière-plans, etc. à l'écran |
| Exécution de JavaScript | Modifier le contenu ou le comportement de la page si nécessaire |
Le point à retenir ici est que le navigateur ne reçoit pas du serveur un écran déjà terminé.
Le serveur renvoie des matériaux comme HTML, CSS, JavaScript et images.
Le navigateur les interprète et assemble la page selon sa propre taille d'écran, ses réglages et les fonctions qu'il prend en charge.
C'est pourquoi le même site web peut s'afficher différemment selon qu'il est consulté sur PC, smartphone, selon le navigateur, la largeur de l'écran ou les réglages.
Même une seule page peut entraîner plusieurs communications
Un point important dans l'affichage des pages web est qu'ouvrir une seule page ne signifie pas forcément communiquer avec une seule destination.
Même si le corps de la page est obtenu depuis « example.com », les images, publicités, mesures d'audience, polices externes, scripts externes, etc. peuvent être chargés depuis d'autres domaines.
| Destination de communication | Objectif | Exemple |
|---|---|---|
| Serveur du corps de page | Obtenir le HTML | Corps du texte et structure de page |
| Serveur de distribution d'images | Obtenir les images | Images d'article et icônes |
| Serveur publicitaire | Afficher de la publicité | Bannières et scripts publicitaires |
| Serveur d'analyse | Mesurer les accès | Balises d'analyse d'accès |
| Serveur de polices externes | Charger des polices | Polices web |
| Serveur de scripts externes | Ajouter des fonctions | Widgets intégrés et composants d'interface |
Du point de vue de l'utilisateur, il a simplement « ouvert une page », mais en arrière-plan, le navigateur peut communiquer avec plusieurs serveurs.
De plus, des communications supplémentaires peuvent se produire non seulement juste après l'ouverture de la page, mais aussi à la suite d'un défilement, d'un clic sur un bouton, d'une recherche, d'une saisie de formulaire, de la lecture d'une vidéo, etc.
Dans les pages web récentes, il est courant de charger d'abord seulement un minimum de données, puis d'obtenir des données supplémentaires selon les actions de l'utilisateur.
Le cache peut aussi éviter certaines communications
Lorsqu'une page web s'affiche, toutes les données ne sont pas forcément obtenues à chaque fois depuis le serveur.
Le navigateur peut conserver temporairement des images, CSS, JavaScript et autres données déjà obtenues.
Cela s'appelle le cache.
Si le cache est valide, le navigateur peut utiliser les données enregistrées dans l'appareil sans récupérer à nouveau les mêmes données depuis le serveur.
| Cible | Effet du cache |
|---|---|
| Résultat DNS | Réduit la nécessité de rechercher à nouveau l'adresse IP d'un nom de domaine |
| Images | Évite de télécharger plusieurs fois la même image |
| CSS | Permet de réutiliser les fichiers liés à l'apparence de la page |
| JavaScript | Permet d'utiliser le même script sans le récupérer de nouveau |
| Connexion | Peut réutiliser un canal de communication existant |
Le cache est important pour accélérer l'affichage et réduire le volume de communication.
Toutefois, lorsqu'on réfléchit à l'anonymat et à la vie privée, il faut aussi prêter attention aux informations qui restent dans le navigateur, comme le cache et les cookies.
Point important pour réfléchir à l'anonymat
Le point important pour réfléchir à l'anonymat est que l'ouverture d'une page web n'est pas une seule communication simple.
L'accès web implique plusieurs éléments : DNS, adresses IP, HTTPS, cookies, User-Agent, Referer, scripts externes, cache, etc.
Même si HTTPS protège le contenu de la communication, l'adresse IP de destination, le moment et le volume de communication, les en-têtes envoyés par le navigateur, l'identification par cookie et les communications supplémentaires vers des serveurs externes posent d'autres questions.
| Point de vue | Ce qu'il faut vérifier |
|---|---|
| DNS | Quel nom de domaine a été demandé |
| Adresse IP | À quel serveur la connexion a été faite |
| HTTPS | Le chiffrement, la détection de modification et la vérification de l'interlocuteur sont-ils effectués ? |
| Cookie | Existe-t-il une possibilité d'être identifié comme le même utilisateur ? |
| User-Agent | Des informations sur le navigateur, l'OS ou l'environnement sont-elles envoyées ? |
| Referer | La page d'où l'on vient est-elle transmise ? |
| Communication externe | Des communications ont-elles lieu vers d'autres serveurs que le corps de page ? |
| Cache | Des consultations passées ou des données obtenues restent-elles dans l'appareil ? |
Ce qui est particulièrement important, c'est que « le contenu de la communication est chiffré » et « personne ne sait qui a accédé à quoi » ne sont pas la même chose.
HTTPS est très important pour protéger le contenu de la communication et vérifier la légitimité de l'interlocuteur.
Mais pour réfléchir à l'anonymat, il faut regarder séparément non seulement HTTPS, mais aussi DNS, l'adresse IP, les informations envoyées par le navigateur, les cookies et les communications externes.
Résumé
Avant qu'un navigateur affiche une page web, plusieurs traitements se produisent par étapes.
D'abord, le navigateur interprète l'URL saisie et vérifie le nom d'hôte.
Ensuite, DNS recherche l'adresse IP correspondant au nom d'hôte.
Une fois l'adresse IP connue, le navigateur se connecte au serveur.
Dans le cas de HTTPS, TLS effectue le chiffrement, la détection de modification et la vérification de l'interlocuteur, et crée un canal sûr.
Ensuite, le navigateur envoie une requête HTTP, et le serveur renvoie des données comme HTML, CSS, JavaScript et images.
Le navigateur analyse les données reçues et les affiche à l'écran.
De plus, pendant l'affichage d'une seule page, des communications supplémentaires peuvent se produire à cause des images, publicités, balises d'analyse, polices externes, scripts externes, etc.
Ouvrir une page web repose sur plus de communications et de traitements qu'il n'y paraît.
Comprendre ce flux aide à organiser non seulement la structure de base du Web, mais aussi les points à regarder lorsque l'on réfléchit à l'anonymat et à la vie privée.
Outils liés
DNSLeakTest
Ressource externe liée à cet article. Ouvrez-la seulement si elle correspond à votre situation et à votre modèle de menace.
Pourquoi il est listé ici: Elle peut aider sur le sujet de l’article, mais elle se situe hors d’Anonymity Sense et doit être vérifiée avant usage.
BrowserLeaks WebRTC
Ressource externe liée à cet article. Ouvrez-la seulement si elle correspond à votre situation et à votre modèle de menace.
Pourquoi il est listé ici: Elle peut aider sur le sujet de l’article, mais elle se situe hors d’Anonymity Sense et doit être vérifiée avant usage.