W jaki sposób subdomena jest przekazywana do serwera WWW?

12

Wiem, że dns rozpoznaje adres taki jak example.com na adres IP taki jak 11.22.33.44, ale jestem trochę zdezorientowany co do sposobu, w jaki subdomeny są rozwiązywane, więc kiedy wpiszesz http://subdomain.example.com , co faktycznie dostaje się na serwer o 11.22.33.44? Innymi słowy, example.com = 11.22.33.44, ale subdomena.example.com/path = ???

Czy „subdomena” i „ścieżka” są przekazywane jako nagłówki http lub w jakiś sposób mapowane w adresie URL?

Z góry dziękuję.

Edycja: Jeśli dobrze rozumiem, BloodPhilia twierdzi, że subdomena.example.com to właściwie inna domena, która w zasadzie mogłaby zostać przekształcona na zupełnie inne adresy IP. Ale jeśli tak, to co z hostami, które mają ogromną liczbę (jak wyglądają) subdomen, ale które w rzeczywistości są odwzorowane na ścieżkę w witrynie. Na przykład blogspot obsługuje miliony blogów i wszystkie wyglądają tak:

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

To oczywiście nie są poddomeny z własnymi adresami IP, ale raczej niektóre mapowania, takie jak aaa.blogspot.com -> www.blogspot.com/aaa, ale jak to się robi? Co faktycznie jest przekazywane do serwera WWW na blogspot.com?

Joshua Frank
źródło

Odpowiedzi:

18

Domeny, subdomeny, sub-subdomeny i sub (x) sub-subdomeny (utworzone dwa ostatnie w górę!), Są traktowane w identyczny sposób przez DNS dla użytkownika końcowego i serwera WWW.

Na przykład, serwer DNS może zwracać różne wyniki dla domain.com, www.domain.comlub mysite.domain.com.

Teraz, jak zapewne wiesz, na świecie jest o wiele więcej domen niż adresów IP.

Z tego powodu serwery używają czegoś zwanego „nagłówkami hosta” w celu dostarczenia poprawnej zawartości.

Nie ma znaczenia, czego faktycznie zażądasz, twoje urządzenie traktuje wszystko tak samo - wyszuka w DNS, z jakim adresem IP powinien się połączyć, a po połączeniu wyśle ​​nagłówek hosta jako część żądania. Serwer następnie odsyła zawartość, którą skonfigurował do odesłania.

Dobrym narzędziem do testowania / uczenia się / diagnozy jest Wfetch, można go pobrać tutaj .

Oto przykład nagłówków wysłanych podczas uzyskiwania dostępu do superuser.com

alternatywny tekst

Oto konfiguracja nagłówków hosta w IIS (serwer WWW):

alternatywny tekst

(Zdjęcie stąd )

Jeśli jesteś zainteresowany, Serverfault.com i Superuser.com znajdują się w tym samym adresie IP i jest to technika stosowana w celu oddzielenia stron i udostępniania różnych treści.

Aby uzyskać więcej informacji na ten temat, możesz przeczytać artykuł w Wikipedii na temat wirtualnego hostingu .

(Wiem, że rozumiesz podstawy, ale pomyślałem, że dobrze byłoby powiedzieć coś więcej, aby każdy, kto korzysta z Google, mógł się czegoś nauczyć, jeśli chce!)

Edytować

Tak więc, na przykład, zgaduję, że ktoś tak duży jak blogspot najprawdopodobniej ma wpis wieloznaczny DNS (wpis wieloznaczny zwraca taki sam wynik dla każdego zapytania), który wskazuje na moduł równoważenia obciążenia, moduł równoważenia obciążenia następnie go wyśle do wielu różnych serwerów, którzy prawdopodobnie nie mają oddzielnej witryny dla nagłówka hosta, ale zamiast tego pojedynczej witryny / skryptu, na który wpisany adres (nagłówki hosta lub nie) jest analizowany i pobiera tam odpowiednią zawartość z CDN.

Chociaż byłoby również możliwe (ale mało prawdopodobne), że mają po prostu kilka tysięcy wpisów na ip, ip prowadzi do kilku serwerów i po prostu ma wpis dla każdej witryny, która ma pasujący nagłówek hosta.

William Hilsum
źródło
1
Ładny! Uwaga dodatkowa: fakt, że dwie witryny mają wspólny adres IP, niekoniecznie oznacza, że ​​zawsze są hostowane na tym samym komputerze. Moduł równoważenia obciążenia może w rzeczywistości również zajrzeć do tych nagłówków i przekazać je innym urządzeniom. (Dla superużytkownika i wsp. Patrz także New York Data Center Stack Overflow , którego jednak tak naprawdę sam nie czytałem ...)
Arjan,
@Arjan +1 dobry punkt ... Wspomniałem o modułach równoważenia obciążenia, ale oczywiście może to być tylko adres IP modułu równoważenia obciążenia, a następnie podzielili żądania na wiele serwerów.
William Hilsum,
1
Oznaczone jako odpowiedź na szczegółowe informacje i linki do dalszych badań. Dzięki!
Joshua Frank
6

Rzeczywiście, jeśli dwie domeny mają ten sam adres IP, serwer polega na przeglądarce, aby określić żądaną domenę. Jak :

GET / HTTP/1.1
Host: data.stackexchange.com
Arjan
źródło
3

Subdomeny nie są właściwym słowem. Zwykle subdomena jest domeną samą w sobie, dlatego sub.example.com jest najpierw przekazywany do DNS, jeśli nie zostanie znaleziony żaden konkretny rekord dla tej subdomeny, żądanie jest przekazywane do adresu IP najwyższej domeny. (example.com) Na tym serwerze żądanie jest wysyłane ponownie i serwer będzie działał odpowiednio.

Innymi słowy, żądanie do example.com tak naprawdę nie różni się od żądania do sub.example.com.

BloodPhilia
źródło
Myślę, że może nie rozumiem tutaj czegoś ważnego. Pozwól mi edytować i wyjaśnić moje pytanie. Dzięki.
Joshua Frank
Czy mówisz, że jeśli sub.example.comto nie rozwiąże, example.comzostanie użyty adres IP ? Myślę, że przeglądarki tego nie robią. (Chyba, że ​​istnieje jakiś rekord DNS z symbolami wieloznacznymi, ale wtedy subdomena faktycznie rozwiązałaby się, powiedziałbym).
Arjan
1

Poddomena.przyklad.com nie jest tłumaczona na 11.22.33.44 - na potrzeby twojego pytania zazwyczaj ma własny rekord DNS A i rozwiązuje się na inny adres.

Możliwe jest zezwolenie, aby subdomena rozpoznała adres tego samego adresu co domena nadrzędna, i nadal będzie obsługiwać różne strony, ale jeśli to zrobisz, musisz hostować obie witryny na tym samym serwerze internetowym i potrzebujesz konta w konfiguracji serwera. Sposób, w jaki to rozliczasz, zależy od rodzaju obsługiwanego serwera WWW.

Joel Coehoorn
źródło
1
Czy mówisz, że w moim przykładzie blogspot „xyz.blogspot.com” nie będzie miał dedykowanego wpisu dns, więc dns wyszuka „blogspot.com” i znajdzie go na 11.22.33.44. Ale wyśle ​​cały adres URL „xyz.blogspot.com” jako pole hosta i to do serwera należy przeanalizowanie tego i wysłanie strony xyz do przeglądarki?
Joshua Frank
Tak to prawda.
Joel Coehoorn
nslookup dummy.example.complony server can't find dummy.example.com- w jaki sposób to pasuje do powyższego? (Jak na przykład w komentarzu Jozuego?)
Arjan
przepraszam, wciąż potrzebujesz rekordu A dla swojej subdomeny - wystarczy, że możesz podać ten sam adres IP, jeśli chcesz.
Joel Coehoorn,
Potem znów jestem zdezorientowany. Jeśli istnieją miliony subdomen xyz.blogspot.com, nie wszystkie mogą mieć rekordy A, więc jak przebiega routing? A konfiguracja rekordów A jest po stronie serwera. Interesuje mnie, jak klient wiedziałby, biorąc pod adres URL, czy xyz jest odpowiednią subdomeną, czy czymś, co mapuje stronę serwera. W szczególności, czy kiedykolwiek bezpieczne jest buforowanie adresu IP przez chwilę, ponieważ wiesz, że x.domain.com i y.domain.com znajdują się na tym samym serwerze, czy nigdy nie możesz się dowiedzieć, patrząc tylko na adres URL?
Joshua Frank