17Aug
Kiedy po raz pierwszy zaczniesz się uczyć, jak nazwy domen, adresy IP, serwery WWW i witryny internetowe pasują i współpracują ze sobą, czasami może to być trochę mylące lub przytłaczające. Jak to wszystko działa tak sprawnie? Dzisiejszy post SuperUser Q & A ma odpowiedzi na ciekawe pytania czytelnika.
Dzisiejsze pytanie &Sesja odpowiedzi przychodzi do nas dzięki uprzejmości SuperUser - poddziału Stack Exchange, opartego na społecznościach grupy Q & A.
Zdjęcie dzięki uprzejmości Rosmarie Voegtli( Flickr).
Pytanie użytkownika
Czytnik SuperUser użytkownik3407319 chce wiedzieć, czy serwery internetowe posiadają tylko jedną stronę internetową:
Na podstawie tego, co rozumiem przez DNS i łączenia nazwy domeny z adresem IP serwera internetowego, na którym jest przechowywana strona internetowa, czy oznacza toserwer internetowy może przechowywać tylko jedną stronę internetową?Jeśli serwery internetowe obsługują więcej niż jedną stronę, to jak to wszystko rozwiązuje się, aby uzyskać dostęp do strony internetowej, którą chcę, bez żadnych problemów i pomyłek?
Czy serwery internetowe posiadają tylko jedną stronę internetową, czy mają więcej?
Odpowiedź Pomocnik
SuperUser Bob ma odpowiedź dla nas:
Zasadniczo przeglądarka zawiera nazwę domeny w żądaniu HTTP, aby serwer WWW wiedział, która domena była żądana i może odpowiednio zareagować.
Żądania HTTP
Oto, jak wygląda typowe żądanie HTTP:
1. Użytkownik podaje adres URL w postaci http: // host: port / ścieżka.
2. Przeglądarka wyodrębnia część adresu URL hosta( domeny) i tłumaczy ją na adres IP( jeśli jest to konieczne) w procesie zwanym rozpoznawaniem nazw. Tłumaczenie to może odbywać się przez DNS, ale nie musi( na przykład lokalny plik hosts na zwykłych systemach operacyjnych omija DNS).
3. Przeglądarka otwiera połączenie TCP z określonym portem lub domyślnie port 80 na tym adresie IP.
4. Przeglądarka wysyła żądanie HTTP.Dla HTTP / 1.1 wygląda to następująco:
Nagłówek hosta jest standardowy i wymagany w HTTP / 1.1.Nie określono go w specyfikacji HTTP / 1.0, ale niektóre serwery i tak to obsługują.
Z tego miejsca serwer WWW ma kilka informacji, które mogą posłużyć do określenia odpowiedzi. Należy pamiętać, że możliwe jest powiązanie pojedynczego serwera WWW z wieloma adresami IP.
- Żądany adres IP z gniazda TCP( dostępny jest również adres IP klienta, ale jest to rzadko używane, a czasami do blokowania / filtrowania)
- Żądany port, z gniazda TCP
- Żądana nazwa hosta, jakookreślona w nagłówku hosta przez przeglądarkę w żądaniu HTTP
- Żądana ścieżka
- Wszelkie inne nagłówki( pliki cookie itp.)
Jak już zauważyliście, najczęstsza konfiguracja współdzielonego hostingu w dzisiejszych czasach powoduje umieszczanie wielu witryn na jednym adresie IP: połączenie portów, pozostawiając tylko hostowi rozróżnienie między stronami.
Jest to tak zwany host wirtualny oparty na nazwie w serwerze Apache-land, podczas gdy Nginx nazywa je nazwami serwerów w blokach serwerów, a serwer IIS preferuje serwer wirtualny.
Co z HTTPS?
HTTPS jest nieco inny. Wszystko jest identyczne do ustanowienia połączenia TCP, ale po tym musi zostać utworzony szyfrowany tunel TLS.Celem nie jest ujawnianie jakichkolwiek informacji o żądaniu.
Aby zweryfikować, czy serwer sieciowy faktycznie jest właścicielem tej domeny, serwer WWW musi wysłać certyfikat podpisany przez zaufaną stronę trzecią.Przeglądarka porówna następnie ten certyfikat z żądaną domeną.
Jest to problem. W jaki sposób serwer WWW wie, który certyfikat hosta / strony internetowej wysłać, jeśli musi to zrobić przed otrzymaniem żądania HTTP?
Tradycyjnie zostało to rozwiązane dzięki dedykowanemu adresowi IP( lub portowi) dla każdej witryny wymagającej HTTPS.Oczywiście stało się to problematyczne, ponieważ kończy nam się adres IPv4.
Wprowadź SNI( Nazwa serwera).Przeglądarka przekazuje teraz nazwę hosta podczas negocjacji TLS, więc serwer internetowy ma te informacje wystarczająco wcześnie, aby wysłać prawidłowy certyfikat. Po stronie serwera konfiguracja jest bardzo podobna do konfiguracji hostów wirtualnych HTTP.
Minusem jest to, że nazwa hosta jest teraz przekazywana jako zwykły tekst przed szyfrowaniem i zasadniczo jest to informacja wyciekła. Zwykle uważa się to za możliwy do zaakceptowania kompromis, chociaż biorąc pod uwagę nazwę hosta, jest on normalnie wyświetlany w zapytaniu DNS.
Co się stanie, jeśli poprosisz o stronę internetową tylko według adresu IP?
Co robi serwer WWW, gdy nie wie, który konkretny host jest wymagany, zależy od implementacji i konfiguracji serwera WWW.Zazwyczaj określona jest strona "domyślna", "catch-all" lub "fall back", która zapewnia odpowiedzi na wszystkie żądania, które nie określają jawnie hosta.
Ta domyślna witryna może być własną, niezależną witryną( często zawierającą komunikat o błędzie) lub inną witryną na serwerze internetowym, w zależności od preferencji administratora serwera WWW.
Czy masz coś do dodania do wyjaśnienia? Dźwięk w komentarzach. Chcesz przeczytać więcej odpowiedzi od innych użytkowników Stack Exchange, którzy znają się na technologii? Sprawdź cały wątek dyskusji tutaj.