Learn

266 articlesCatégorie : Tous
Réseau

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émentExempleSignification
SchémahttpsIndique par quelle méthode communiquer
Nom d'hôteexample.comIndique le nom du site web auquel se connecter
Numéro de port443Indique à quelle entrée de communication se connecter. Il est souvent omis
Chemin/aboutIndique quel emplacement demander sur le serveur
Chaîne de requête?id=10Transmet des informations supplémentaires au serveur
Fragment#sectionIndique 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.

ÉtapeCe qui se passeObjectif
1Le navigateur ou l'OS vérifie le cacheVérifier si une adresse IP déjà recherchée peut être réutilisée
2Interroger le résolveur DNSRechercher l'adresse IP correspondant au nom de domaine
3Obtenir un enregistrement A ou AAAAObtenir une destination IPv4 ou IPv6
4Décider la destination avec l'adresse IPIdentifier 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 communicationNuméro de port principalSignification
HTTP80Souvent utilisé pour les communications web non chiffrées
HTTPS443Souvent 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ôleSignificationImportance
ChiffrementRendre le contenu de la communication difficile à lire par des tiersProtège les mots de passe et le contenu des pages
Détection de modificationVérifier que le contenu n'a pas été changé pendant la communicationAide à empêcher les modifications par un intermédiaire
Vérification de l'interlocuteurVérifier que la destination est le serveur du domaine prévuMesure 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.

InformationSignificationComplément
MéthodeQuelle opération effectuerGET est souvent utilisé pour obtenir une page
CheminQuelle page ou donnée demander/ ou /about, etc.
HostÀ quel domaine la requête est destinéeUtilisé aussi lorsqu'une même IP héberge plusieurs sites
User-AgentInformations sur le navigateur, l'OS, etc.Utilisé pour juger l'environnement ou ajuster l'affichage
Accept-LanguageLangues préféréesUtilisé pour décider par exemple d'afficher une page en japonais
RefererDepuis 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 siteUtilisé 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émentExempleSignification
Code de statut200Indique si la requête a réussi, s'il y a une erreur, etc.
En-têteContent-TypeIndique le type de données, la politique de cache, etc.
CorpsHTML, 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éeRôle
HTMLReprésente la structure de la page
CSSDéfinit l'apparence, comme les couleurs, marges, disposition et taille du texte
JavaScriptEffectue des traitements et modifications dynamiques dans la page
ImagesAffiche des photos, icônes, figures, etc.
PolicesAjuste l'apparence des caractères
Vidéo・audioLit 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.

ÉtapeCe qui se passe
Analyse du HTMLLire la structure de la page
Application du CSSAppliquer les règles d'apparence
Calcul de mise en pageDécider où placer chaque élément
DessinAfficher texte, images, arrière-plans, etc. à l'écran
Exécution de JavaScriptModifier 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 communicationObjectifExemple
Serveur du corps de pageObtenir le HTMLCorps du texte et structure de page
Serveur de distribution d'imagesObtenir les imagesImages d'article et icônes
Serveur publicitaireAfficher de la publicitéBannières et scripts publicitaires
Serveur d'analyseMesurer les accèsBalises d'analyse d'accès
Serveur de polices externesCharger des policesPolices web
Serveur de scripts externesAjouter des fonctionsWidgets 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.

CibleEffet du cache
Résultat DNSRé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
CSSPermet de réutiliser les fichiers liés à l'apparence de la page
JavaScriptPermet d'utiliser le même script sans le récupérer de nouveau
ConnexionPeut 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 vueCe qu'il faut vérifier
DNSQuel nom de domaine a été demandé
Adresse IPÀ quel serveur la connexion a été faite
HTTPSLe chiffrement, la détection de modification et la vérification de l'interlocuteur sont-ils effectués ?
CookieExiste-t-il une possibilité d'être identifié comme le même utilisateur ?
User-AgentDes informations sur le navigateur, l'OS ou l'environnement sont-elles envoyées ?
RefererLa page d'où l'on vient est-elle transmise ?
Communication externeDes communications ont-elles lieu vers d'autres serveurs que le corps de page ?
CacheDes 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

DNS Leak Test

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.

URL : https://www.dnsleaktest.com/

Ouvrir le site externe
WebRTC Leak Test

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.

URL : https://browserleaks.com/webrtc

Ouvrir le site externe

Articles liés