Żądanie HTTP, o którym mowa, jest w rzeczywistości nieprawidłowe, chyba że przeglądarka rozmawia z pośrednikiem (proxy).
Twój przykład wyglądałby bardziej jak poniżej, gdyby przeglądarka bezpośrednio komunikowała się z serwerem sieciowym:
GET /hello.htm HTTP/1.1
Host: www.pippo.it
Teraz, aby spojrzeć na to z perspektywy, rozważ model OSI:
W akcji mamy 3 systemy:
- Klient uruchamiając przeglądarkę
- Serwer WWW obsługujących witrynę
- Serwer DNS znając adres IP strony
Stosowane protokoły są od dołu do góry (minimalny odpowiedni zestaw do PO):
Komunikacja HTTP odbywa się za pośrednictwem protokołu TCP (TCP znajduje się nad protokołem IP), podczas gdy komunikacja DNS w tym przypadku odbywa się za pośrednictwem protokołu UDP (UDP jest również nad protokołem IP).
Oto sekwencja komunikacji w skrócie:
Klienta , uruchamiając przeglądarkę, zwraca się do serwera DNS za A
rekord www.pippo.it
, przy użyciu protokołu UDP.
1.1 Na kliencie jest to system operacyjny, który wykonuje część rozstrzygającą i odsyła do przeglądarki --- przeglądarka nigdy nie komunikuje się bezpośrednio z serwerem DNS, raczej poprzez system operacyjny, wywołując gethostbyname () lub nowszą getaddrinfo () . W systemie Windows, kolejność, w jakiej OS rozwiązuje adresy prawdopodobne jest zdefiniowany przez coś takiego jak ten , podczas gdy w systemie Linux pierwszeństwo rozwiązywaniu jest zdefiniowana przez/etc/nsswitch.conf
Serwer DNS , korzystając z protokołu UDP, odpowiada klientowi za pomocą rekordu / adresu IP, jeśli istnieje
Klient otwiera połączenie TCP na porcie 80 na serwerze WWW i zapisuje się następujący tekst:
Żądanie HTTP:
GET /hello.htm HTTP/1.1
Host: www.pippo.it
Możesz naśladować to samo, robiąc coś takiego w konsoli lub wierszu polecenia:
> 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
a następnie dwie puste linie. Jeśli żądana treść istnieje, serwer internetowy wydrukuje ją na ekranie. Jeśli po drugiej stronie znajduje się przeglądarka, tekst odpowiedzi jest analizowany przez przeglądarkę, a wszystkie tagi, łącza, skrypty i obrazy są renderowane na tak zwanej stronie internetowej.
W rzeczywistości istnieje kilka dodatkowych szczegółów, np. Przeglądarki mogą buforować adresy IP, jeśli już odwiedziłeś jakąś domenę, więc rozpoznawanie DNS staje się zbędne. Ponadto nowoczesne przeglądarki mogą próbować rozwiązać problem, zanim rzeczywiście go potrzebujesz ( pobieranie DNS ), aby przyspieszyć przeglądanie.
Ponadto komputer może zawierać statyczne rekordy w hosts
pliku. Jeśli rekord pasuje do żądania, lokalny wpis statyczny jest wykorzystywany jako pierwszy i nigdy nie kontaktuje się z żadnym serwerem DNS. Jest to konfigurowalne i niekoniecznie prawdziwe, ale jest domyślne w systemach operacyjnych, które znam.