Die betreffende HTTP-Anfrage ist tatsächlich nur gültig, wenn der Browser mit einem Vermittler (Proxy) spricht.
Ihr Beispiel sieht ungefähr so aus, wenn der Browser direkt mit einem Webserver kommuniziert:
GET /hello.htm HTTP/1.1
Host: www.pippo.it
Betrachten Sie nun das OSI-Modell, um dies in die richtige Perspektive zu rücken:
Wir haben 3 Systeme in Aktion:
- Ein Client , auf dem der Browser ausgeführt wird
- Ein Webserver, der die Site bedient
- Ein DNS-Server , der die IP-Adresse der Site kennt
Die beteiligten Protokolle sind von unten nach oben (Mindestrelevanz auf OP gesetzt):
Die HTTP-Kommunikation erfolgt über das TCP-Protokoll (TCP steht über dem IP-Protokoll), während die DNS-Kommunikation in diesem Fall über das UDP-Protokoll erfolgt (UDP steht auch über dem IP-Protokoll).
Hier ist die Kommunikationssequenz in Kürze:
Der Client , auf dem der Browser ausgeführt wird, fragt den DNS-Server nach einem A
Eintrag www.pippo.it
unter Verwendung des UDP-Protokolls.
1.1. Auf dem Client übernimmt das Betriebssystem die Lösung und kommuniziert mit dem Browser. Der Browser kommuniziert nie direkt mit dem DNS-Server, sondern über das Betriebssystem, indem er gethostbyname () oder das neuere Programm getaddrinfo () aufruft . Unter Windows , in dem die Reihenfolge der OS - Adressen aufgelöst wird durch so etwas wie wahrscheinlich definiert dies , während auf Linux die Lösung Vorrang definiert ist durch/etc/nsswitch.conf
Der DNS-Server , der das UDP-Protokoll verwendet, antwortet dem Client mit einer Datensatz- / IP-Adresse, falls vorhanden
Der Client öffnet eine TCP-Verbindung auf dem Port 80 des Webservers und schreibt den folgenden Text:
HTTP-Anfrage:
GET /hello.htm HTTP/1.1
Host: www.pippo.it
Sie können dasselbe nachahmen, indem Sie in Ihrer Konsole oder Eingabeaufforderung Folgendes ausführen:
> telnet www.pippo.it 80
Trying 195.128.235.49...
Connected to www.pippo.it.
Escape character is '^]'.
GET /hello.htm HTTP/1.1
Host: www.pippo.it
gefolgt von zwei leeren Zeilen. Wenn der angeforderte Inhalt vorhanden ist, druckt der Webserver ihn auf dem Bildschirm aus. Wenn sich auf der anderen Seite ein Browser befindet, wird der Antworttext vom Browser analysiert, und alle Tags, Links, Skripte und Bilder werden auf einer so genannten Webseite gerendert.
In der Realität gibt es einige Details, z. B. können Browser IP-Adressen zwischenspeichern, wenn Sie bereits eine Domain besucht haben, sodass eine DNS-Auflösung nicht mehr erforderlich ist. Moderne Browser versuchen möglicherweise auch, das Auflösen durchzuführen, bevor Sie es tatsächlich benötigen ( DNS-Prefetching ), um das Surfen zu beschleunigen.
Darüber hinaus verfügt Ihr Computer möglicherweise über statische Datensätze in einer hosts
Datei. Wenn ein Datensatz mit der Anforderung übereinstimmt, wird zuerst der lokale statische Eintrag verwendet und es wird nie ein DNS-Server kontaktiert. Dies ist konfigurierbar und nicht unbedingt wahr, aber es ist die Standardeinstellung für die mir vertrauten Betriebssysteme.