Wie wird eine Subdomain an den Webserver übergeben?

12

Ich weiß, dass DNS eine Adresse wie example.com in eine IP-Adresse wie 11.22.33.44 auflöst, aber ich bin ein wenig verwirrt darüber, wie Subdomains aufgelöst werden. Wenn Sie also http://subdomain.example.com eingeben , was eigentlich wird an den Server um 11.22.33.44 übergeben? Mit anderen Worten, example.com = 11.22.33.44, aber subdomain.example.com/path = ???

Werden "Subdomain" und "Pfad" als http-Header übergeben oder auf irgendeine Weise in der URL abgebildet, oder was?

Danke im Voraus.

Bearbeiten: Wenn ich das richtig verstehe, sagt BloodPhilia, dass subdomain.example.com tatsächlich eine andere Domain ist, die sich im Prinzip in eine völlig andere IP auflösen könnte. Aber wenn dem so ist, was ist dann mit Hosts, die eine große Anzahl von (wie sie aussehen) Unterdomänen haben, die aber tatsächlich einem Pfad auf der Site zugeordnet sind. Zum Beispiel hostet Blogspot Millionen von Blogs und sie sehen alle so aus:

aaa.blogspot.com
bbb.blogspot.com
...millions more...
yyy.blogspot.com
zzz.blogspot.com

Dies sind eindeutig keine Subdomains mit eigenen IPs, sondern einige Zuordnungen wie aaa.blogspot.com -> www.blogspot.com/aaa, aber wie wird dies erreicht? Was wird tatsächlich an den Webserver von blogspot.com weitergegeben?

Joshua Frank
quelle

Antworten:

18

Domains, Subdomains, Sub-Subdomains und Sub (x) -sub-Subdomains (die letzten beiden wurden hinzugefügt!) Werden von DNS für einen Endbenutzer und einen Webserver genauso behandelt.

Zum Beispiel kann der DNS - Server unterschiedliche Ergebnisse für domain.com, www.domain.comoder mysite.domain.com.

Wie Sie wahrscheinlich wissen, gibt es auf der Welt weitaus mehr Domains als IPs.

Aus diesem Grund verwenden Server sogenannte "Host-Header", um den richtigen Inhalt bereitzustellen.

Es spielt keine Rolle, was Sie tatsächlich anfordern, Ihr Computer behandelt alles gleich - er sucht im DNS nach der IP-Adresse, mit der er sich verbinden soll, und sendet nach dem Herstellen der Verbindung den Host-Header als Teil der Anforderung. Der Webserver sendet dann den Inhalt zurück, für den er konfiguriert wurde.

Ein gutes Tool zum Testen / Lernen / Diagnostizieren ist Wfetch. Es kann hier heruntergeladen werden .

Hier ist ein Beispiel für die Header, die beim Zugriff auf superuser.com gesendet wurden

Alt-Text

Hier ist die Konfiguration für Host-Header in IIS (einem Webserver):

Alt-Text

(Bild von hier )

Wenn Sie interessiert waren, haben Serverfault.com und Superuser.com dieselbe IP. Dies ist die Technik, die verwendet wird, um die Websites zu trennen und unterschiedliche Inhalte bereitzustellen.

Weitere Informationen zu diesem Thema finden Sie im Wikipedia-Artikel zu Virtual Hosting .

(Ich weiß, dass Sie die Grundlagen verstehen, aber ich dachte, es wäre gut, ein wenig mehr zu sagen, damit jeder, der dies googelt, ein wenig lernen kann, wenn er möchte!)

Bearbeiten

Also, wie in Ihrem Beispiel, würde ich vermuten, dass jemand so groß wie Blogspot höchstwahrscheinlich einen Wildcard-DNS-Eintrag hat (Ein Wildcard-Eintrag gibt für jede Abfrage das gleiche Ergebnis zurück), der auf einen Load Balancer verweist. Der Load Balancer sendet ihn dann aus an viele verschiedene Webserver, die wahrscheinlich keine separate Site pro Host-Header haben, sondern eine einzelne Site / ein einzelnes Skript, auf das die eingegebene Adresse (Host-Header oder nicht) geparst wird, und den richtigen Inhalt von ihrem CDN abrufen.

Es wäre zwar auch möglich (aber unwahrscheinlich), dass sie nur ein paar tausend Einträge pro IP haben, die IP führt zu ein paar Servern und sie haben einfach einen Eintrag für jede Site, die einen passenden Hostheader hat.

William Hilsum
quelle
1
Nett! Randnotiz: Die Tatsache, dass zwei Websites eine IP-Adresse gemeinsam haben, bedeutet nicht unbedingt, dass sie immer auf demselben Computer gehostet werden. Ein Load Balancer kann in der Tat auch in diese Header hineinsehen und sie an verschiedene Computer delegieren. (Für Super User et al. Siehe auch das New Yorker Rechenzentrum von Stack Overflow , das ich selbst nicht wirklich gelesen habe ...)
Arjan
@Arjan +1 guter Punkt ... Ich erwähnte Load Balancer, aber es könnte natürlich nur die IP (s) eines Load Balancers sein, und dann verteilen sie die Anfragen an viele Server.
William Hilsum
1
Als Antwort für die detaillierten Informationen und Links zu weiterführenden Recherchen markiert. Vielen Dank!
Joshua Frank
6

Wenn zwei Domänen dieselbe IP-Adresse haben, verwendet der Server den Browser, um die angeforderte Domäne anzugeben. Wie :

GET / HTTP/1.1
Host: data.stackexchange.com
Arjan
quelle
3

Subdomains sind nicht das richtige Wort. Normalerweise ist eine Subdomain eine eigene Domain. Sub.example.com wird zuerst an den DNS übergeben. Wenn für diese Subdomain kein spezifischer Eintrag gefunden wird, wird die Anfrage an die IP der Top-Domain übergeben. (example.com) Auf diesem Server wird die Anfrage erneut gestellt und der Server wird entsprechend handeln.

Mit anderen Worten, eine Anfrage an example.com unterscheidet sich nicht wirklich von einer Anfrage an sub.example.com.

BloodPhilia
quelle
Ich denke, vielleicht verstehe ich hier etwas Wichtiges nicht. Lassen Sie mich meine Frage bearbeiten und klären. Vielen Dank.
Joshua Frank
Wollen Sie damit sagen, dass sub.example.comdie IP-Adresse von example.comverwendet wird , wenn sie nicht aufgelöst wird? Ich denke, Browser machen das nicht. (Es sei denn, es gibt einen Wildcard-DNS-Eintrag, aber dann würde sich die Subdomain tatsächlich auflösen, würde ich sagen.)
Arjan
1

Subdomain.example.com wird nicht in 11.22.33.44 aufgelöst. Für den Zweck Ihrer Frage verfügt es normalerweise über einen eigenen DNS-A-Eintrag und wird in eine andere Adresse aufgelöst.

Es ist möglich, die Auflösung der Unterdomäne auf dieselbe Adresse wie die übergeordnete Domäne zuzulassen und dennoch verschiedene Seiten zu verwalten. In diesem Fall müssen Sie jedoch beide Sites auf demselben Webserver hosten und dies in der Serverkonfiguration berücksichtigen. Die Art und Weise, wie Sie dies berücksichtigen, hängt davon ab, welche Art von Webserver Sie ausführen.

Joel Coehoorn
quelle
1
Wollen Sie damit sagen, dass "xyz.blogspot.com" in meinem Blogspot-Beispiel keinen dedizierten DNS-Eintrag hat, sodass dns nach "blogspot.com" sucht und diesen bei 11.22.33.44 findet. Aber es wird die gesamte URL "xyz.blogspot.com" als Host-Feld senden, und es liegt an dem Server, dies zu analysieren und die xyz-Seite an den Browser zu senden?
Joshua Frank
Ja, das ist richtig.
Joel Coehoorn
nslookup dummy.example.comErträge server can't find dummy.example.com- wie passt das dann zum oben genannten? (Zum Beispiel in @ Joshua's Kommentar?)
Arjan
Entschuldigung, Sie benötigen immer noch einen A-Eintrag für Ihre Subdomain - es ist nur so, dass er die gleiche IP geben kann, wenn Sie möchten.
Joel Coehoorn
Dann bin ich wieder verwirrt. Wenn es Millionen von xyz.blogspot.com-Subdomains gibt, können nicht alle über A-Einträge verfügen. Wie wird das Routing durchgeführt? Und die A-Record-Konfiguration ist serverseitig. Ich bin daran interessiert, wie der Client unter Angabe einer URL wissen würde, ob das xyz eine richtige Unterdomäne ist oder etwas, das serverseitig zugeordnet ist. Ist es jemals sicher, eine IP-Adresse für eine Weile zwischenzuspeichern, da Sie wissen, dass sich x.domain.com und y.domain.com auf demselben Server befinden, oder können Sie dies niemals allein anhand der URL feststellen?
Joshua Frank