Was passiert, wenn Sie eine URL im Browser eingeben? [geschlossen]


293

Kann mir jemand sagen, was alles hinter den Kulissen passiert, von der Eingabe einer URL im Browser bis zur Anzeige der Seite im Browser? Eine detaillierte Darstellung des Prozesses wäre eine große Hilfe.


2
Obwohl dies (eventuell) mit der Programmierung zusammenhängt, würde (und hat) der Detaillierungsgrad, auf den dies beantwortet werden könnte, Bände gefüllt. Bitte wiederholen Sie als Programmierabfrage.
KevinDTimm

28
Holen Sie sich O'Reillys DNS and Bind- Buch. Es sind nur 624 Seiten.
Wim Hollebrandse

7
edusagar.com/articles/view/70/… das ist die bestmögliche Antwort!
Shivendra

1
Der Nachwelt zuliebe finden Sie hier eine detaillierte Version der Funktionsweise des Internets - goo.gl/eEHmpZ .
Ashwin Krishnamurthy

4
Es gibt jetzt eine gemeinsame Anstrengung, um dies so detailliert wie möglich zu beantworten: github.com/alex/what-happens-when/blob/master/README.rst
Piskvor verließ das Gebäude am

Antworten:


587

Achtung: Dies ist eine äußerst grobe und stark vereinfachte Skizze, bei der die einfachste mögliche HTTP-Anforderung (kein HTTPS, kein HTTP2, keine Extras), das einfachste mögliche DNS, keine Proxys, Single-Stack-IPv4, nur eine HTTP-Anforderung und ein einfacher HTTP-Server vorausgesetzt werden das andere Ende und keine Probleme in jedem Schritt. Dies ist für die meisten gegenwärtigen Absichten und Zwecke ein unrealistisches Szenario; All dies ist im tatsächlichen Gebrauch weitaus komplexer, und der Tech-Stack ist seit dem Schreiben um eine Größenordnung komplizierter geworden. In diesem Sinne ist die folgende Zeitleiste noch etwas gültig:

  1. Browser überprüft Cache; Wenn sich das angeforderte Objekt im Cache befindet und frisch ist, fahren Sie mit Schritt 9 fort
  2. Der Browser fragt das Betriebssystem nach der IP-Adresse des Servers
  3. Das Betriebssystem führt eine DNS-Suche durch und antwortet dem Browser auf die IP-Adresse
  4. Browser öffnet eine TCP-Verbindung zum Server (dieser Schritt ist mit HTTPS viel komplexer)
  5. Der Browser sendet die HTTP-Anfrage über eine TCP-Verbindung
  6. Der Browser empfängt eine HTTP-Antwort und kann die TCP-Verbindung schließen oder für eine andere Anforderung wiederverwenden
  7. Der Browser prüft, ob es sich bei der Antwort um eine Umleitung oder eine bedingte Antwort (3xx Ergebnisstatuscodes), eine Autorisierungsanforderung (401), einen Fehler (4xx und 5xx) usw. handelt. Diese werden anders behandelt als normale Antworten (2xx)
  8. Wenn zwischenspeicherbar, wird die Antwort im Cache gespeichert
  9. Browser dekodiert die Antwort (z. B. wenn sie komprimiert ist)
  10. Der Browser bestimmt, was mit der Antwort geschehen soll (z. B. handelt es sich um eine HTML-Seite, um ein Bild oder um einen Soundclip?)
  11. Der Browser gibt eine Antwort oder bietet einen Download-Dialog für nicht erkannte Typen

Wiederum hat die Diskussion über jeden dieser Punkte unzählige Seiten gefüllt; Nehmen Sie dies nur als Zusammenfassung, der Klarheit halber gekürzt. Parallel dazu passieren noch viele andere Dinge (Eingabe der eingegebenen Adresse, spekulatives Prefetching, Hinzufügen einer Seite zum Browserverlauf, Anzeigen des Fortschritts für den Benutzer, Benachrichtigen von Plugins und Erweiterungen, Rendern der Seite während des Herunterladens, Pipelining, Verbindungsverfolgung für Keep-Alive, Cookie-Verwaltung, Überprüfung auf schädliche Inhalte usw.) - und der gesamte Vorgang wird mit HTTPS um eine Größenordnung komplexer (Zertifikate und Chiffren und Pinning, oh mein Gott!).


Was passiert bei https-Anfragen in Schritt 4. Können Sie etwas mehr erklären?
Mohammad Raheem

2
Das geht weit über den Rahmen dieser Antwort hinaus. Aber überprüfen Sie die oben verlinkte GH-Seite, sie gibt einen kurzen Überblick: github.com/alex/what-happens-when/blob/master/…
Piskvor verließ das Gebäude

41

Zuerst sucht der Computer den Zielhost. Wenn es im lokalen DNS-Cache vorhanden ist, werden diese Informationen verwendet. Andernfalls wird eine DNS-Abfrage durchgeführt, bis die IP-Adresse gefunden wurde.

Anschließend öffnet Ihr Browser eine TCP-Verbindung zum Zielhost und sendet die Anforderung gemäß HTTP 1.1 (oder verwendet möglicherweise HTTP 1.0, normale Browser tun dies jedoch nicht mehr).

Der Server sucht nach der erforderlichen Ressource (falls vorhanden) und antwortet mit dem HTTP-Protokoll. Er sendet die Daten an den Client (= Ihren Browser).

Der Browser verwendet dann den HTML-Parser, um die Dokumentstruktur neu zu erstellen, die Ihnen später auf dem Bildschirm angezeigt wird. Wenn Verweise auf externe Ressourcen wie Bilder, CSS-Dateien oder Javascript-Dateien gefunden werden, werden diese auf dieselbe Weise wie das HTML-Dokument selbst geliefert.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.