que se passe-t-il lorsque vous saisissez une URL dans le navigateur [fermé]

293

Quelqu'un peut-il me dire ce qui se passe dans les coulisses depuis le moment où je tape une URL dans le navigateur jusqu'au moment où je peux voir la page sur le navigateur? Un compte rendu détaillé du processus serait d'une grande aide.

Aadith Ramia
la source
2
Bien que cela puisse être lié à la programmation (éventuellement) - le niveau de détail auquel cela pourrait être répondu remplirait (et a) rempli des volumes. Veuillez reformuler en tant que requête de programmation.
KevinDTimm
28
Obtenez le livre DNS et Bind d' O'Reilly . C'est seulement 624 pages.
Wim Hollebrandse
7
edusagar.com/articles/view/70/… c'est la meilleure réponse possible!
Shivendra
1
Pour l'amour de la postérité, voici une version détaillée du fonctionnement d'Internet - goo.gl/eEHmpZ .
Ashwin Krishnamurthy
4
Il y a maintenant un effort de collaboration pour répondre à cette question de manière aussi détaillée que possible: github.com/alex/what-happens-when/blob/master/README.rst
Piskvor a quitté le bâtiment

Réponses:

587

Attention: il s'agit d'une esquisse extrêmement grossière et simplifiée , en supposant la requête HTTP la plus simple possible (pas de HTTPS, pas de HTTP2, pas d'extras), le DNS le plus simple possible, pas de proxy, IPv4 mono-pile, une seule requête HTTP, un simple serveur HTTP sur l'autre extrémité, et aucun problème dans aucune étape. Il s'agit, pour la plupart des intentions et des buts contemporains, d'un scénario irréaliste; tous ces éléments sont beaucoup plus complexes en utilisation réelle, et la pile technologique est devenue un ordre de grandeur plus compliqué depuis que cela a été écrit. Dans cet esprit, le calendrier suivant est encore quelque peu valide:

  1. le navigateur vérifie le cache; si l'objet demandé est dans le cache et est frais, passez à # 9
  2. le navigateur demande au système d'exploitation l'adresse IP du serveur
  3. Le système d'exploitation effectue une recherche DNS et répond l'adresse IP au navigateur
  4. le navigateur ouvre une connexion TCP au serveur (cette étape est beaucoup plus complexe avec HTTPS)
  5. le navigateur envoie la requête HTTP via une connexion TCP
  6. le navigateur reçoit une réponse HTTP et peut fermer la connexion TCP ou la réutiliser pour une autre demande
  7. le navigateur vérifie si la réponse est une redirection ou une réponse conditionnelle (codes d'état de résultat 3xx), demande d'autorisation (401), erreur (4xx et 5xx), etc .; ceux-ci sont traités différemment des réponses normales (2xx)
  8. si mise en cache, la réponse est stockée dans le cache
  9. le navigateur décode la réponse (par exemple, si elle est compressée)
  10. le navigateur détermine ce qu'il faut faire de la réponse (par exemple, est-ce une page HTML, est-ce une image, est-ce un clip audio?)
  11. le navigateur affiche une réponse ou propose une boîte de dialogue de téléchargement pour les types non reconnus

Encore une fois, la discussion de chacun de ces points a rempli d'innombrables pages; ne prenez cela que comme un résumé, abrégé par souci de clarté. En outre, de nombreuses autres choses se produisent en parallèle à cela (traitement de l'adresse tapée, prélecture spéculative, ajout de la page à l'historique du navigateur, affichage de la progression à l'utilisateur, notification des plugins et des extensions, rendu de la page pendant le téléchargement, pipelining, suivi de la connexion pour keep-alive, gestion des cookies, vérification du contenu malveillant, etc.) - et l'ensemble de l'opération devient un ordre de grandeur plus complexe avec HTTPS (certificats et chiffres et épinglage, oh mon Dieu!).

Piskvor
la source
Que se passera-t-il en cas de requêtes https à l'étape 4, pouvez-vous expliquer un peu plus?
Mohammad Raheem
2
C'est bien au-delà de la portée de cette réponse. Mais vérifiez la page GH liée ci-dessus, cela donne un bref aperçu: github.com/alex/what-happens-when/blob/master/…
Piskvor a quitté le bâtiment le
41

L'ordinateur recherche d'abord l'hôte de destination. S'il existe dans le cache DNS local, il utilise ces informations. Sinon, la requête DNS est effectuée jusqu'à ce que l'adresse IP soit trouvée.

Ensuite, votre navigateur ouvre une connexion TCP à l'hôte de destination et envoie la demande selon HTTP 1.1 (ou peut utiliser HTTP 1.0, mais les navigateurs normaux ne le font plus).

Le serveur recherche la ressource requise (si elle existe) et répond en utilisant le protocole HTTP, envoie les données au client (= votre navigateur)

Le navigateur utilise ensuite l'analyseur HTML pour recréer la structure du document qui vous sera ensuite présentée à l'écran. S'il trouve des références à des ressources externes, telles que des images, des fichiers css, des fichiers javascript, celles-ci sont fournies de la même manière que le document HTML lui-même.

naïvistes
la source