Read in English · Leer en español · Auf Deutsch lesen
Section 0.4 sur 0.8 · Débutant · 18 min de lecture
Réseaux, internet et web : IP, DNS, HTTP et le modèle client-serveur
Leçon vidéo
5 min · narré en anglais, avec sous-titresÉcouter seulement (audio)
Lire la transcription
Presque aucun logiciel moderne ne fonctionne seul. Une application de livraison de repas sur votre téléphone dialogue avec les serveurs de l’entreprise, qui dialoguent avec les restaurants et un prestataire de paiement. Envoyer des données sur internet ressemble beaucoup à envoyer du courrier. Dans cette leçon, nous suivons les colis.
Internet est un réseau de réseaux : des millions de réseaux appartenant à des propriétaires différents, qui acceptent de transporter le trafic les uns des autres selon des règles communes appelées protocoles. Les données ne circulent pas en un seul flux. Elles sont découpées en petits paquets, chacun étiqueté avec sa provenance et sa destination. Des appareils appelés routeurs font suivre les paquets, de saut en saut, comme des centres de tri. Les paquets d’un même message peuvent emprunter des routes différentes, et l’ordinateur destinataire les remet dans l’ordre.
Chaque appareil sur internet est joignable par une adresse IP, IP signifiant Internet Protocol. C’est comme l’adresse postale d’un immeuble de bureaux. Mais un ordinateur exécute de nombreux programmes à la fois, alors un numéro de port indique quel programme doit recevoir le paquet : c’est le numéro du bureau. TCP offre à deux programmes une connexion fiable : les paquets perdus sont renvoyés, et tout arrive dans l’ordre, comme un envoi recommandé. UDP se contente d’envoyer des paquets, sans aucune garantie, comme des cartes postales. Cela convient aux appels vidéo et aux jeux, où un fragment de son en retard est pire qu’un fragment manquant.
Les personnes retiennent des noms comme shop point example. Les réseaux, eux, acheminent selon des numéros. Le système de noms de domaine, ou DNS, est le carnet d’adresses d’internet qui traduit les uns en les autres. Votre appareil demande à un résolveur récursif, généralement exploité par votre fournisseur d’accès ou par un service public, de faire le travail. Le résolveur interroge un serveur racine, qui ne connaît pas la réponse, mais sait qui s’occupe du domaine de premier niveau. Le serveur du domaine de premier niveau l’oriente vers le serveur faisant autorité du domaine lui-même. Et le serveur faisant autorité répond avec l’adresse réelle. Le résolveur la transmet à votre appareil. Les réponses sont mémorisées, ou mises en cache, pendant une durée fixée par le propriétaire du domaine, si bien que la plupart des recherches ne prennent que quelques millisecondes.
Une fois que deux programmes peuvent se joindre, ils ont besoin d’un langage commun. Sur le web, c’est HTTP. Le client envoie une requête, qui indique une méthode, un chemin, des en-têtes et parfois des données. La méthode dit quoi faire : GET récupère quelque chose, POST soumet quelque chose de nouveau, comme une commande, PUT remplace quelque chose, et DELETE le supprime. Le serveur renvoie une seule réponse, avec un code d’état qui dit comment cela s’est passé. Les codes de la famille des deux cents signifient un succès. Les codes de la famille des quatre cents signifient que la requête était incorrecte, comme quatre cent quatre, non trouvé. Les codes de la famille des cinq cents signifient que le serveur a échoué, et réessayer plus tard peut fonctionner.
HTTP simple peut être lu par n’importe qui sur le trajet, par exemple une personne connectée au même Wi-Fi d’un café. HTTPS l’envoie dans un canal protégé créé par TLS, qui garde les échanges confidentiels et détecte les falsifications. Il prouve aussi que vous parlez vraiment au bon site, grâce à un certificat, qui fonctionne comme un passeport signé par une autorité à laquelle votre appareil fait confiance. Mais il ne prouve pas que le site est honnête.
La bande passante, c’est la quantité de données qui peut passer par seconde : la largeur du tuyau. La latence, c’est le temps que mettent les données pour arriver : la longueur du tuyau. Prenons maintenant une boutique hébergée à Londres et un client à Sydney. Même la lumière dans la fibre met du temps à traverser le monde, si bien que chaque aller-retour prend environ un quart de seconde. D’abord, une recherche DNS. Puis deux poignées de main, l’une pour se connecter et l’autre pour mettre en place le chiffrement : une demi-seconde. Puis la page elle-même et les fichiers dont elle a besoin : encore une demi-seconde. Cela fait environ une seconde avant que quoi que ce soit d’utile n’apparaisse, et une connexion plus rapide n’y changerait presque rien. Servez le même contenu depuis Sydney, et les mêmes étapes prennent environ un vingtième de seconde. C’est pourquoi les architectes suppriment des allers-retours et rapprochent le contenu des utilisateurs.
Rassemblons le tout. Voici un navigateur qui charge une page produit. Le temps s’écoule vers le bas. D’abord, le navigateur demande au DNS où se trouve shop point example, et obtient une adresse. Puis il ouvre une connexion, met en place le chiffrement et envoie sa requête pour le produit quarante-deux. Le serveur web interroge sa base de données pour obtenir le produit : le serveur est donc aussi un client. Le serveur répond deux cents, OK, avec la page. Le navigateur récupère les images et les styles, puis dessine la page. C’est le modèle client-serveur. Les clients lancent les requêtes ; les serveurs détiennent les données et les règles partagées. Et comme une application peut être modifiée par son utilisateur, un serveur ne doit jamais faire aveuglément confiance à un client.
Retenez ceci : dès qu’un système s’étend sur plus d’un ordinateur, chaque appel entre ses parties est plus lent et peut échouer. La section complète en dit plus. Ensuite, dans la section zéro point cinq, nous verrons où les données sont stockées.
Ce qu’il faut savoir
- Les données traversent les réseaux en paquets, que les routeurs font suivre de saut en saut grâce à l’adresse IP de destination ; un numéro de port identifie le programme sur cette machine.
- TCP fournit une connexion fiable et ordonnée après une poignée de main ; UDP envoie des paquets isolés sans aucune garantie, mais avec moins de délai.
- Le DNS transforme les noms en adresses IP grâce à une hiérarchie de serveurs racine, de domaine de premier niveau et faisant autorité, avec une mise en cache intensive contrôlée par des TTL.
- HTTP est un protocole requête-réponse sans état : une méthode (GET, POST, PUT, DELETE), un chemin, des en-têtes et un corps, auxquels répond un code d’état (2xx, 3xx, 4xx, 5xx).
- HTTPS, c’est HTTP sur TLS, qui chiffre le trafic, détecte les falsifications et utilise des certificats signés par des autorités de confiance pour prouver l’identité du serveur.
- Dans le modèle client-serveur, les clients lancent les requêtes et les serveurs détiennent les données et les règles partagées ; un serveur ne doit jamais faire aveuglément confiance aux clients.
- La latence (le délai) et la bande passante (la capacité) sont deux choses différentes ; la latence est limitée par la vitesse de la lumière, donc la distance et les allers-retours comptent.
Les réseaux et les paquets
Presque aucun logiciel moderne ne fonctionne seul. Une application de livraison de repas sur votre téléphone dialogue avec les serveurs de l’entreprise, qui dialoguent avec les tablettes des restaurants, un prestataire de paiement, un service de cartographie et un service de notifications. Cette section explique comment fonctionne ce dialogue, en partant du bas.
Un réseau est un ensemble d’ordinateurs reliés de façon à pouvoir échanger des données, par câble, Wi-Fi, réseau mobile ou fibre optique. Internet est un réseau de réseaux : des millions de réseaux appartenant à des propriétaires différents (box internet à domicile, opérateurs mobiles, universités, fournisseurs de cloud) qui ont accepté de transporter le trafic les uns des autres selon des règles communes appelées protocoles.
Les données ne circulent pas en un seul flux continu. Elles sont découpées en paquets : des morceaux d’environ 1500 octets au maximum en général, chacun étiqueté avec sa provenance et sa destination, comme un colis portant l’adresse de l’expéditeur et celle du destinataire. Des appareils appelés routeurs font passer les paquets d’un réseau à l’autre, chacun choisissant un bon saut suivant, un peu comme des centres de tri qui font suivre les colis vers leur destination. Différents paquets d’un même message peuvent emprunter des routes différentes, arriver dans le désordre ou parfois se perdre, et l’ordinateur destinataire les remet dans l’ordre. Découper les données en paquets permet à des millions de conversations de partager équitablement les mêmes câbles, et permet au trafic de contourner une liaison coupée.
Les paquets trouvent leur propre chemin
Les adresses : adresses IP et ports
Pour qu’un paquet arrive, la destination a besoin d’une adresse. Chaque appareil sur internet est joignable par une adresse IP (IP signifie Internet Protocol). L’ancienne version, IPv4, écrit les adresses sous la forme de quatre nombres de 0 à 255, comme 192.0.2.10 ; elle permet environ 4,3 milliards d’adresses, ce qui ne suffit pas pour tous les téléphones, ordinateurs portables et capteurs du monde. La nouvelle version, IPv6, utilise des adresses beaucoup plus longues écrites en hexadécimal (base 16, avec les chiffres 0 à 9 et les lettres a à f), comme 2001:db8::1, et peut accueillir un nombre pratiquement illimité d’appareils. Les deux sont utilisées côte à côte. (Les adresses d’exemple de cette section proviennent de plages réservées à la documentation : elles n’appartiennent à aucune machine réelle.)
Une adresse IP amène un paquet au bon ordinateur, mais un ordinateur exécute de nombreux programmes à la fois. Un numéro de port, de 0 à 65 535, indique quel programme doit le recevoir. Si l’adresse IP est l’adresse postale d’un immeuble de bureaux, le port est le numéro du bureau. Les services courants ont des ports standard : 443 pour HTTPS, 80 pour HTTP simple, 53 pour le DNS, 5432 pour la base de données PostgreSQL. Un programme serveur écoute sur un port, en attendant des connexions ; quand votre navigateur contacte un site web, il se connecte au port 443 de l’adresse IP du site.
TCP et UDP : deux façons de livrer
Au-dessus d’IP se trouvent deux grands protocoles de transport, qui décident du soin apporté à la livraison. TCP (Transmission Control Protocol) offre à deux programmes un flux d’octets fiable et ordonné. Avant tout envoi de données, les deux côtés établissent une connexion par une poignée de main (handshake) en trois étapes. Chaque paquet est numéroté ; le destinataire accuse réception de ce qui est arrivé ; tout ce qui manque est renvoyé ; tout est remis au programme dans le bon ordre. TCP ralentit aussi quand le réseau est encombré. C’est comme un envoi recommandé avec suivi : fiable, mais avec un certain surcoût.
UDP (User Datagram Protocol) envoie simplement des paquets isolés, appelés datagrammes, sans poignée de main, sans accusé de réception, sans renvoi et sans ordre. C’est comme envoyer des cartes postales : bon marché et rapide, mais certaines peuvent ne pas arriver. C’est exactement ce qu’il faut quand un paquet en retard ne sert de toute façon plus à rien. Dans un appel vidéo, un fragment de son qui arrive avec une demi-seconde de retard est pire qu’un fragment qui n’arrive jamais : les appels, les diffusions en direct et les jeux en ligne utilisent donc UDP et s’accommodent de petites lacunes. Les requêtes DNS, qui sont de toutes petites questions et réponses, utilisent elles aussi traditionnellement UDP.
TCP et UDP comparés
| TCP | UDP | |
|---|---|---|
| Établissement de la connexion | Oui : une poignée de main avant l’envoi des données | Aucun : on envoie, c’est tout |
| Livraison | Garantie : les paquets perdus sont renvoyés | Au mieux (best effort) : les pertes ne sont pas réparées |
| Ordre | Préservé | Non garanti |
| Surcoût et délai | Plus élevés | Plus faibles |
| Usages typiques | Pages web et API (HTTP/1.1 et HTTP/2), e-mail, transfert de fichiers, connexions aux bases de données | Appels vocaux et vidéo, diffusion en direct, jeux en ligne, DNS |
Le DNS : le carnet d’adresses d’internet
Les personnes retiennent des noms comme shop.example ; les réseaux acheminent selon des adresses IP. Le Domain Name System (DNS, système de noms de domaine) traduit les uns en les autres. C’est un annuaire mondial et distribué : aucun ordinateur ne détient à lui seul tous les noms. La responsabilité est au contraire répartie selon les points du nom, lus de droite à gauche. Les serveurs racine savent qui est responsable de chaque domaine de premier niveau, comme .com ou .uk ; ces serveurs de domaine de premier niveau savent quels serveurs de noms faisant autorité sont responsables de chaque domaine enregistré sous eux ; et les serveurs faisant autorité détiennent les enregistrements eux-mêmes, comme l’adresse IP de www.shop.example. La zone racine est servie par 13 identités de serveurs nommées, exploitées par 12 organisations indépendantes au moyen de bien plus d’un millier d’instances de serveurs dans le monde.
En général, votre appareil ne parcourt pas lui-même cette chaîne. Il interroge un résolveur récursif, généralement exploité par votre fournisseur d’accès à internet ou par un service public, qui fait le travail et mémorise (met en cache) les réponses pendant une durée fixée par le propriétaire du domaine, appelée TTL (time to live, durée de vie). Comme les réponses sont mises en cache à de nombreux niveaux, la plupart des recherches obtiennent une réponse en quelques millisecondes sans jamais atteindre la racine. Cette même mise en cache explique pourquoi la modification d’un enregistrement DNS peut mettre des minutes, voire des heures, à être visible partout.
La résolution DNS étape par étape (rien en cache)
- Interroger le résolveurVotre appareil demande au résolveur récursif configuré : quelle est l’adresse IP de
www.shop.example? - Interroger un serveur racineLe résolveur interroge un serveur racine, qui ne connaît pas la réponse, mais lui indique les serveurs responsables du domaine de premier niveau.
- Interroger le serveur du domaine de premier niveauLe résolveur interroge l’un de ces serveurs, qui lui indique les serveurs de noms faisant autorité pour
shop.example. - Interroger le serveur faisant autoritéLe résolveur interroge le serveur faisant autorité, qui répond avec l’enregistrement : par exemple
203.0.113.5, valable 300 secondes. - Répondre et mémoriserLe résolveur renvoie l’adresse à votre appareil, et tous deux la gardent en cache jusqu’à expiration du TTL, si bien que la recherche suivante est quasi instantanée.
Qui répond à une question DNS
HTTP : requêtes et réponses
Une fois qu’un programme peut joindre un autre programme, les deux ont besoin d’un langage commun pour dire ce qu’ils veulent. Sur le web, ce langage est HTTP (Hypertext Transfer Protocol). Il suit un schéma simple : le client envoie une requête ; le serveur renvoie une réponse. Chaque requête indique une méthode (quoi faire), un chemin (sur quoi), des en-têtes (des informations supplémentaires sous forme de paires nom-valeur) et parfois un corps (les données envoyées). Chaque réponse porte un code d’état, des en-têtes et généralement un corps : une page web, une image ou des données dans un format comme JSON (un format texte simple pour les données structurées, expliqué dans la section sur les API).
Les méthodes les plus courantes sont GET (récupérer quelque chose, sans le modifier), POST (soumettre quelque chose de nouveau, comme passer une commande), PUT (remplacer quelque chose à une adresse connue, comme mettre à jour une adresse de livraison) et DELETE (supprimer quelque chose). GET, PUT et DELETE sont par définition idempotentes : envoyer deux fois la même requête a le même effet que l’envoyer une fois, ce qui permet de les retenter sans risque après une panne réseau. POST ne l’est pas, et c’est pourquoi une nouvelle tentative imprudente peut passer une commande deux fois. Les en-têtes transportent des éléments comme le type de contenu (Content-Type: application/json), la langue préférée de l’utilisateur, les cookies (de petits éléments de données qu’un site demande au navigateur de stocker et de renvoyer avec les requêtes suivantes) et les identifiants, ainsi que des instructions de mise en cache.
HTTP est sans état : chaque requête se comprend par elle-même, et le serveur n’est pas tenu de se souvenir des précédentes. Les sessions de connexion sont construites par-dessus, généralement par l’envoi d’un cookie ou d’un jeton par le client à chaque requête. L’absence d’état est l’une des raisons pour lesquelles le web passe si bien à l’échelle : n’importe lequel de nombreux serveurs identiques peut traiter n’importe quelle requête.
POST /api/orders HTTP/1.1
Host: shop.example
Content-Type: application/json
Authorization: Bearer eyJhbGciOi...
{"product_id": 42, "quantity": 2}
HTTP/1.1 201 Created
Content-Type: application/json
Location: /api/orders/9917
{"order_id": 9917, "status": "received", "total_pence": 3000}Les codes d’état par famille
| Famille | Signification | Exemples courants |
|---|---|---|
| 2xx | Succès | 200 OK ; 201 Created (quelque chose de nouveau a été créé) ; 204 No Content |
| 3xx | Redirection : cherchez ailleurs | 301 Moved Permanently ; 302 Found (déplacement temporaire) ; 304 Not Modified (votre copie en cache est toujours valable) |
| 4xx | Erreur du client : la requête était incorrecte | 400 Bad Request ; 401 Unauthorized (non connecté) ; 403 Forbidden (connecté mais non autorisé) ; 404 Not Found ; 429 Too Many Requests |
| 5xx | Erreur du serveur : la requête était correcte, le serveur a échoué | 500 Internal Server Error ; 502 Bad Gateway ; 503 Service Unavailable ; 504 Gateway Timeout |
La distinction entre 4xx et 5xx compte en pratique. Un 4xx dit : « ne vous contentez pas de réessayer ; corrigez la requête ». Un 5xx dit : « le problème est de notre côté » ; réessayer plus tard peut fonctionner, et l’équipe d’exploitation doit être alertée quand le taux de 5xx augmente.
HTTPS et TLS : confidentialité et identité
HTTP simple envoie tout sous forme de texte lisible, si bien que n’importe qui sur le trajet, par exemple une personne connectée au même Wi-Fi d’un café, pourrait le lire ou le modifier. HTTPS, c’est HTTP envoyé dans un canal protégé créé par TLS (Transport Layer Security ; la version actuelle, TLS 1.3, a été publiée sous le nom de RFC 8446 en 2018). TLS apporte trois choses : la confidentialité (les personnes qui écoutent ne voient que des données brouillées), l’intégrité (toute falsification est détectée) et l’authentification (vous parlez vraiment à shop.example, et non à un imposteur).
L’authentification repose sur des certificats. Le certificat d’un site est un document numérique qui dit en substance : « cette clé publique appartient à shop.example », signé par une autorité de certification (CA) à laquelle votre navigateur ou votre téléphone fait déjà confiance. Il fonctionne comme un passeport : délivré par une autorité à laquelle les deux parties font confiance, vérifié par rapport à son titulaire, et valable seulement jusqu’à sa date d’expiration. Pendant la poignée de main TLS, le serveur présente son certificat, le client vérifie la signature, le nom et les dates, et les deux parties conviennent de nouvelles clés secrètes pour chiffrer le reste de la conversation. Si une vérification échoue, le navigateur affiche un avertissement.
TLS protège les données en transit entre deux points. Il ne protège pas les données une fois stockées, et il ne prouve pas que le site est honnête, seulement qu’il est bien celui qu’il prétend être. Aujourd’hui, HTTPS est la norme pour tout le trafic web, pas seulement pour les paiements, et les certificats sont souvent délivrés gratuitement et renouvelés automatiquement.
Le modèle client-serveur
La plupart des systèmes de ce cours suivent le modèle client-serveur. Un client (un navigateur, une application mobile, un autre programme) entame la conversation en envoyant une requête. Un serveur attend des requêtes et y répond. Le serveur détient ce qui doit être partagé et digne de confiance : le catalogue de produits, les commandes de tout le monde, les règles sur les prix et les remboursements. Le client gère l’écran de l’utilisateur et ses saisies.
Dans un restaurant, les convives sont les clients et la cuisine est le serveur : les convives passent commande ; la cuisine détient les ingrédients et le savoir-faire et sert de nombreux convives à la fois. Une conséquence est que le serveur ne doit jamais faire aveuglément confiance au client. Une application mobile peut être modifiée par son utilisateur : les prix, les autorisations et les niveaux de stock doivent donc être vérifiés sur le serveur, même si l’application les vérifie elle aussi avec soin.
Un serveur est souvent aussi un client : le serveur web de la boutique est client de sa base de données et du prestataire de paiement. Les systèmes réels sont des chaînes et des toiles de telles relations, comme le montre le diagramme de séquence ci-dessous.
Latence et bande passante
Deux chiffres décrivent la rapidité ressentie d’un réseau, et on les confond souvent. La bande passante est la quantité de données qu’une connexion peut transporter par seconde, par exemple 100 mégabits par seconde : la largeur du tuyau. La latence est le temps que met une donnée pour aller d’un bout à l’autre, généralement mesuré comme un temps d’aller-retour (RTT, round-trip time) en millisecondes : la longueur du tuyau. Une analogie autoroutière aide : ajouter des voies (la bande passante) laisse passer plus de voitures par heure, mais ne raccourcit le trajet d’aucune voiture (la latence).
La latence a un plancher fixé par la physique. Dans la fibre optique, la lumière se déplace à environ 200 000 km par seconde, soit environ les deux tiers de sa vitesse dans le vide. Londres et Sydney sont distantes d’environ 17 000 km en ligne droite à la surface du globe, si bien que même une fibre parfaite suivant cette ligne demanderait environ 85 ms dans un sens et 170 ms pour un aller-retour. Les câbles réels ne suivent pas le plus court chemin et les routeurs ajoutent du délai : les allers-retours mesurés sont donc généralement d’environ 250 ms. Aucune mise à niveau ne peut supprimer cela. Si le chargement d’une page depuis Sydney exige dix allers-retours successifs vers un serveur à Londres, l’utilisateur attend deux secondes et demie, quelle que soit la vitesse de sa connexion internet.
Exemple commenté
Exemple commenté : un serveur à Londres, un client à Sydney
Une boutique héberge tout à Londres. Un client à Sydney ouvre une page produit via une nouvelle connexion HTTPS. On suppose un aller-retour de 250 ms et on ignore le temps de traitement du serveur.
| Recherche DNS (pas en cache) | Le résolveur peut avoir besoin de plusieurs requêtes ; disons 1 aller-retour vers des serveurs proches : environ 50 ms |
|---|---|
| Poignée de main TCP | 1 aller-retour vers Londres : 250 ms |
| Poignée de main TLS 1.3 | 1 aller-retour : 250 ms |
| Demander la page HTML | 1 aller-retour : 250 ms |
| Demander le CSS et les scripts dont la page a besoin | Au moins 1 aller-retour de plus : 250 ms |
| Total avant que quoi que ce soit d’utile n’apparaisse | Environ 1050 ms, la bande passante ne jouant presque aucun rôle |
| Même client, contenu servi depuis Sydney | Aller-retour d’environ 10 ms : les cinq mêmes étapes prennent à peu près 50 ms |
Pour les petites pages, c’est la latence, et non la bande passante, qui domine. Faire passer la connexion du client de 50 à 500 mégabits par seconde ne changerait presque rien au résultat.
Les architectes réduisent la latence en supprimant des allers-retours (en réutilisant les connexions, en regroupant les requêtes) et en rapprochant le contenu des utilisateurs, par exemple avec des réseaux de diffusion de contenu, traités dans Les serveurs et le cloud.
Guide de décision
Guide de décision : une expérience réseau lente, est-ce une question de latence ou de bande passante ?
Un premier diagnostic approximatif quand les utilisateurs se plaignent d’une lenteur sur le réseau.
- Les petites requêtes (un court appel d’API, une page minuscule) sont-elles lentes elles aussi ?OuiLa latence est la cause probable. Vérifiez la distance jusqu’au serveur et le nombre d’allers-retours successifs effectués par la page ou l’application.NonPassez à la question suivante.
- Seuls les gros transferts (vidéos, gros téléchargements, rapports volumineux) sont-ils lents ?OuiLa bande passante est la limite probable, sur la connexion de l’utilisateur ou sur celle du serveur. Envisagez la compression, des fichiers plus petits ou un réseau de diffusion de contenu.NonPassez à la question suivante.
- Le délai est-il le même depuis tous les endroits ?OuiLe réseau n’est peut-être pas du tout en cause : examinez le traitement côté serveur, les requêtes à la base de données et les algorithmes (voir la section sur les données et les algorithmes).NonUn délai qui dépend du lieu indique un problème de latence et de routage : servez les utilisateurs depuis un endroit plus proche d’eux.
Ce qui se passe quand vous tapez une adresse web
Tous ces éléments se combinent chaque fois que vous visitez un site web. Voici l’enchaînement lorsque vous tapez https://shop.example/products/42 et appuyez sur Entrée, de façon simplifiée mais exacte.
De la touche Entrée à la page
- Analyser l’adresseLe navigateur découpe l’URL en schéma (
https, donc port 443 et TLS), nom d’hôte (shop.example) et chemin (/products/42). - Trouver l’adresse IPLe navigateur vérifie son propre cache, puis celui du système d’exploitation, puis interroge le résolveur récursif, qui consulte le DNS comme décrit plus haut et renvoie, par exemple,
203.0.113.5. - Ouvrir une connexion TCPLe navigateur et le serveur échangent les trois messages de la poignée de main pour établir une connexion fiable vers le port 443.
- Établir TLSLe serveur présente son certificat ; le navigateur vérifie qu’il est valable pour
shop.exampleet signé par une autorité de confiance ; les deux parties conviennent de clés de chiffrement. - Envoyer la requête HTTPLe navigateur envoie
GET /products/42avec des en-têtes comme les langues acceptées et les éventuels cookies du site. - Le serveur fait son travailLe logiciel serveur reçoit la requête et exécute le code de la boutique, qui interroge une base de données pour obtenir le produit 42, puis construit une page HTML.
- Recevoir la réponseLe serveur répond
200 OKavec le HTML dans le corps et des en-têtes commeContent-Type: text/htmlet des règles de mise en cache. - Récupérer le resteLe HTML fait référence à des feuilles de style, des scripts et des images ; le navigateur les demande aussi, souvent plusieurs à la fois sur la même connexion.
- AfficherLe navigateur met en page et dessine la page à l’écran ; des scripts peuvent ensuite faire d’autres requêtes, par exemple pour récupérer des avis.
Diagramme de séquence : le chargement d’une page produit
Pourquoi c’est important pour l’architecture
Dès qu’un système est réparti sur plus d’un ordinateur, chaque interaction entre ses parties devient un appel réseau, avec de la latence, un risque de défaillance et un besoin de sécurité. Un appel de fonction à l’intérieur d’un programme prend des nanosecondes et ne se perd jamais ; un appel à travers un réseau prend des millisecondes, parfois bien plus, et parfois ne revient jamais. Beaucoup des problèmes les plus difficiles de l’architecture découlent de cette différence, et c’est pourquoi le chapitre 6 s’ouvre sur les illusions de l’informatique distribuée, comme la croyance que la latence est nulle.
Les protocoles vus ici reviennent aussi comme briques de base : HTTP sous-tend les API web de la partie suivante de ce chapitre et les styles de communication du chapitre 6, tandis que TLS et les certificats reviennent dans la communication sécurisée et le zero trust. Placer des serveurs près des utilisateurs relève de l’architecture multirégion et en périphérie (edge).
Vérifiez votre compréhension
Pourquoi un paquet a-t-il besoin d’un numéro de port en plus d’une adresse IP ?
L’adresse IP l’amène au bon ordinateur, mais cet ordinateur exécute de nombreux programmes ; le port indique quel programme doit le recevoir, par exemple le serveur web qui écoute sur le port 443.
Que dit au client un code d’état 3xx ?
Que ce qu’il a demandé se trouve ailleurs ou n’a pas changé : par exemple, 301 signifie que la ressource a été déplacée définitivement, et 304 que la copie en cache du client est toujours valable.
Quelle est la différence entre une réponse 401 et une réponse 503 ?
401 est une erreur du client : la requête ne comporte pas d’identifiants valides. 503 est une erreur du serveur : le service est temporairement incapable de traiter la requête.
Pourquoi aucune mise à niveau du réseau ne peut-elle ramener un aller-retour Londres-Sydney à 10 ms ?
Dans la fibre, la lumière parcourt environ 200 000 km par seconde : l’aller-retour d’environ 34 000 km prend donc au moins 170 ms environ.
Sources et lectures complémentaires
Une question sur cette section ? ArchitectBot, l’assistant d’étude IA du cours, répond d’abord à partir du cours.
Demander : « Nos utilisateurs en Australie trouvent l’application lente, mais nos serveurs sont en Europe. Quelles sont mes options et combien coûte chacune ? »