Wie teilen Websites dieselbe IP-Adresse?

7

Ich war immer verwirrt von der Idee, dass mehrere Websites dieselbe IP-Adresse haben. Ich meine, wenn es da draußen einen Webserver gibt, der eine IP-Adresse hat. Ich kann diese IP-Adresse einfach mit dem richtigen Port wie 80 eingeben und das Ziel-Gateway weiß, auf welchem ​​Server diese eingehende Anfrage weitergeleitet werden soll. In diesem Fall ist Port 80 der Webserver und die Website wird dem Client bereitgestellt.

Ich verstehe jedoch nicht, wie zwei Websites auf dem Webserver und eine IP-Adresse gehostet werden können. Angenommen, die beiden Websites mit den Namen abc.com und xyz.com werden auf demselben Webserver mit einer IP-Adresse gehostet. Der DNS-Server, den ich verwende, z. B. einer von meinem Internetdienstanbieter, kann die Namen mit der IP-Adresse einwandfrei auflösen und meinen Webbrowser auf den richtigen Webserver verweisen. Meine Verwirrung ist jedoch, wie der Webserver weiß, welche Website bereitgestellt werden soll.

Ich habe immer gedacht, dass die einzige Möglichkeit, zwischen verschiedenen Websites auf demselben Webserver zu unterscheiden, die jeweiligen Portnummern sind. Mit anderen Worten, wenn sich die eingehende Anforderung auf Port 80 befindet, ist es abc.com und wenn es sich um Port 81 handelt, ist es xyz.com. Offensichtlich füge ich xyz.com:81 nicht in meinen Webbrowser ein, daher wird standardmäßig Port 80 verwendet. Warum bekomme ich dann die eigentliche xyz.com-Website zurück und nicht abc.com?

PacketRider
quelle

Antworten:

13

Die Webserver-Software überprüft den Hostnamen in der HTTP-Anforderung und verwendet diesen, um zu bestimmen, welche Website bereitgestellt werden soll. Beispielsweise verfügt Apache über die NameVirtualHostKonfigurationsoption, die dieses Verhalten steuert. Eine ausführliche Erläuterung der Funktionsweise dieses Prozesses finden Sie in der Dokumentation: https://httpd.apache.org/docs/2.2/vhosts/name-based.html

Tim Brunnen
quelle
6
  1. Der Webclient, normalerweise ein Browser, öffnet dem Server einen TCP-Socket.
  2. Die Serversoftware akzeptiert die Verbindung, ohne die angeforderte Site zu kennen, und wartet auf eine HTTP-Anforderung.
  3. Der Client sendet die Anforderung, die hauptsächlich aus HTTP-Headern besteht. Einer dieser Header ist der Host: example.comHeader. Zu diesem Zeitpunkt kennt der Server die richtige Website, für die diese Anforderung bestimmt ist, und führt die Anforderung gemäß den entsprechenden Hosteinstellungen aus ... Sei es ein Serverblock in Nginx oder ein virtueller Host Definition in Apache ..
Aularon
quelle
0

Ohne auf den eigentlichen Mechanismus im Detail einzugehen, gibt der DNS-Server, der die Domänen abc.com und xyz.com in eine IP-Adresse auflöst, die beide Domänen gemeinsam nutzen, diese gemeinsam genutzte IP-Adresse an den Webbrowser zurück. Der Webbrowser sendet dann eine HTTP-Anfrage an diese IP-Adresse und erreicht schließlich den Webserver, auf dem diese beiden (und möglicherweise viele weitere) Websites gehostet werden. Da es sich um eine HTTP-Anforderung handelt, gibt es darüber hinaus zusätzliche Informationen als nur die IP-Adresse, wenn diese Anforderung den Webserver erreicht, nämlich ein Header-Paket mit dem tatsächlichen Namen abc.com oder xyz.com oder anderen Domänen, die dieser einzelne Webserver hostet. Mit diesem HTTP-Header-Paket weiß der Webserver genau, welche Website bereitgestellt werden soll. HTTP kapselt die Datenpakete, die zusätzlich zur IP-Adresse einige ASCII-Textinformationen enthalten.

PacketRider
quelle