co się dzieje po wpisaniu adresu URL w przeglądarce [zamknięte]

293

Czy ktoś może mi powiedzieć, co się dzieje za kulisami, od momentu wpisania adresu URL w przeglądarce do momentu wyświetlenia strony w przeglądarce? Bardzo pomocna byłaby szczegółowa relacja z tego procesu.

Aadith Ramia
źródło
2
Chociaż może to być związane z programowaniem (ostatecznie) - poziom szczegółowości, na który można by odpowiedzieć, wypełniłby (i wypełnił) woluminy. Proszę przekształcić jako zapytanie programowe.
KevinDTimm,
28
Zdobądź książkę DNS i Bind O'Reilly . To tylko 624 strony.
Wim Hollebrandse,
7
edusagar.com/articles/view/70/… to najlepsza możliwa odpowiedź!
Shivendra
1
Dla potomności, oto szczegółowa wersja tego, jak działa Internet - goo.gl/eEHmpZ .
Ashwin Krishnamurthy,
4
Obecnie podjęto wspólny wysiłek, aby odpowiedzieć na to pytanie tak szczegółowo, jak to możliwe: github.com/alex/what-happens-when/blob/master/README.rst
Piskvor opuścił budynek

Odpowiedzi:

587

Uwaga: jest to bardzo szorstki i nadmiernie uproszczony szkic, zakładający najprostsze możliwe żądanie HTTP (bez HTTPS, bez HTTP2, bez dodatków), najprostszy możliwy DNS, bez serwerów proxy, pojedynczy stos IPv4, tylko jedno żądanie HTTP, prosty serwer HTTP na drugi koniec i żadnych problemów na żadnym etapie. Jest to, dla większości współczesnych zamiarów i celów, nierealny scenariusz; wszystkie z nich są znacznie bardziej złożone w rzeczywistości, a stos technologii stał się o rząd wielkości bardziej skomplikowany, odkąd zostało to napisane. Mając to na uwadze, następująca oś czasu jest nadal nieco poprawna:

  1. przeglądarka sprawdza pamięć podręczną; jeśli żądany obiekt znajduje się w pamięci podręcznej i jest świeży, przejdź do # 9
  2. przeglądarka pyta system operacyjny o adres IP serwera
  3. System operacyjny wyszukuje DNS i odpowiada adresowi IP w przeglądarce
  4. przeglądarka otwiera połączenie TCP z serwerem (ten krok jest znacznie bardziej skomplikowany przy HTTPS)
  5. przeglądarka wysyła żądanie HTTP przez połączenie TCP
  6. przeglądarka odbiera odpowiedź HTTP i może zamknąć połączenie TCP lub użyć go ponownie do innego żądania
  7. przeglądarka sprawdza, czy odpowiedź jest przekierowaniem czy odpowiedzią warunkową (kody statusu wyniku 3xx), żądanie autoryzacji (401), błąd (4xx i 5xx) itp .; są obsługiwane inaczej niż normalne odpowiedzi (2xx)
  8. jeśli buforowalne, odpowiedź jest przechowywana w pamięci podręcznej
  9. przeglądarka dekoduje odpowiedź (np. jeśli jest spakowana gzip)
  10. przeglądarka określa, co zrobić z odpowiedzią (np. czy jest to strona HTML, czy jest to obraz, czy to plik dźwiękowy?)
  11. przeglądarka wyświetla odpowiedź lub oferuje okno dialogowe pobierania dla nierozpoznanych typów

Ponownie dyskusja na temat każdego z tych punktów wypełniła niezliczone strony; traktuj to jedynie jako streszczenie, skrócone dla zachowania przejrzystości. Równolegle dzieje się wiele innych rzeczy (przetwarzanie wpisanego adresu, spekulacyjne pobieranie wstępne, dodawanie strony do historii przeglądarki, wyświetlanie postępów użytkownikowi, powiadamianie o wtyczkach i rozszerzeniach, renderowanie strony podczas pobierania, potokowanie, śledzenie połączeń dla utrzymywanie przy życiu, zarządzanie plikami cookie, sprawdzanie złośliwej zawartości itp.) - a cała operacja staje się o rząd wielkości bardziej złożona dzięki HTTPS (certyfikaty, szyfry i przypinanie, o mój!).

Piskvor
źródło
Co się stanie w przypadku żądań https w kroku 4. Czy możesz wyjaśnić nieco więcej?
Mohammad Raheem,
2
To znacznie wykracza poza zakres tej odpowiedzi. Ale sprawdź stronę GH, do której prowadzi powyższy link, zawiera krótki przegląd: github.com/alex/what-happens-when/blob/master/…
Piskvor opuścił budynek
41

Najpierw komputer wyszukuje hosta docelowego. Jeśli istnieje w lokalnej pamięci podręcznej DNS, wykorzystuje te informacje. W przeciwnym razie zapytania DNS są wykonywane do momentu znalezienia adresu IP.

Następnie przeglądarka otwiera połączenie TCP z hostem docelowym i wysyła żądanie zgodnie z HTTP 1.1 (lub może używać HTTP 1.0, ale normalne przeglądarki już tego nie robią).

Serwer wyszukuje wymagany zasób (jeśli istnieje) i odpowiada za pomocą protokołu HTTP, wysyła dane do klienta (= przeglądarki)

Przeglądarka używa następnie parsera HTML do odtworzenia struktury dokumentu, która jest następnie prezentowana na ekranie. Jeśli znajdzie odniesienia do zasobów zewnętrznych, takich jak obrazy, pliki css, pliki javascript, są one dostarczane w taki sam sposób, jak sam dokument HTML.

naiwiści
źródło