що відбувається під час введення URL-адреси у веб-переглядачі [закрито]


293

Чи може хтось сказати мені, що все відбувається за кадром, від моменту введення URL-адреси у веб-переглядачі до моменту, коли я переглядаю сторінку в браузері? Детальний опис процесу може бути дуже корисним.


2
Хоча це може бути пов'язане з програмуванням (зрештою) - рівень деталізації, на який можна було б відповісти, заповнив би (і набрав) обсяги. Перезапустіть, будь ласка, як запит програмування.
KevinDTimm

28
Отримайте книгу DNS і прив’язки O'Reilly . Це лише 624 сторінки.
Вім Холлебрандсе

7
edusagar.com/articles/view/70/… це найкраща можлива відповідь!
Шивендра

1
Заради нащадків, ось детальна версія того, як працює Інтернет - goo.gl/eEHmpZ .
Ешвін Крішнамурті

4
Зараз спільні зусилля, щоб відповісти на це якомога детальніше: github.com/alex/what-happens-when/blob/master/README.rst
Пісквор покинув будівлю

Відповіді:


587

Увага: це надзвичайно груба і спрощена ескіз, припускаючи найпростіший можливий HTTP-запит (без HTTPS, без HTTP2, без додаткових даних), найпростіший можливий DNS, відсутні проксі, односкладний IPv4, лише один запит HTTP, простий сервер HTTP на інший кінець, і жодних кроків немає проблем. Це для більшості сучасних намірів і цілей нереальний сценарій; все це є набагато складнішим у фактичному використанні, а технологічний стек став на порядок складнішим, оскільки це було написано. Зважаючи на це, така часова шкала все ще дещо діє:

  1. браузер перевіряє кеш; якщо запитуваний об’єкт знаходиться в кеші і є свіжим, перейдіть до №9
  2. браузер запитує ОС для IP-адреси сервера
  3. ОС здійснює пошук DNS і відповідає IP-адресу браузеру
  4. браузер відкриває TCP-з'єднання з сервером (цей крок набагато складніше з HTTPS)
  5. браузер надсилає запит HTTP через з'єднання TCP
  6. браузер отримує відповідь HTTP і може закрити TCP-з'єднання або повторно використовувати його для іншого запиту
  7. браузер перевіряє, чи відповідь є переспрямуванням або умовною відповіддю (3xx коди статусу результату), запит авторизації (401), помилка (4xx і 5xx) тощо; вони обробляються по-різному від звичайних відповідей (2xx)
  8. якщо кешируемо, відповідь зберігається в кеші
  9. браузер декодує відповідь (наприклад, якщо він gzipped)
  10. браузер визначає, що робити з відповіддю (наприклад, це HTML-сторінка, це зображення, чи це звуковий кліп?)
  11. браузер надає відповідь або пропонує діалогове вікно завантаження для нерозпізнаних типів

Знову ж таки, обговорення кожного з цих пунктів заповнило незліченну кількість сторінок; сприймайте це лише як підсумок, скорочене задля ясності. Також паралельно з цим відбувається багато інших речей (обробка введеної адреси, спекулятивне попереднє завантаження, додавання сторінки до історії веб-переглядача, показ прогресу користувачеві, сповіщення плагінів та розширень, надання сторінки під час завантаження, конвеєрування, відстеження з'єднання для зберігайте життя, керування файлами cookie, перевірка на наявність шкідливого вмісту тощо) - і вся операція набирає на порядок складніші з HTTPS (сертифікати та шифри та закріплення, о, мій!).


Що буде у випадку запитів https на кроці 4, чи можете ви пояснити трохи більше?
Мохаммед Рахім

2
Це виходить за межі цієї відповіді. Але перевірте пов’язану вище сторінку GH, вона дає короткий огляд: github.com/alex/what-happens-when/blob/master/…
Piskvor вийшов із будинку

41

Спочатку комп’ютер шукає хоста призначення. Якщо він існує в локальному кеш-пам'яті DNS, він використовує цю інформацію. В іншому випадку запит DNS виконується, поки не буде знайдена IP-адреса.

Потім ваш браузер відкриває TCP-з'єднання до цільового хоста та надсилає запит відповідно до HTTP 1.1 (або може використовувати HTTP 1.0, але звичайні браузери більше не роблять цього).

Сервер шукає необхідний ресурс (якщо він існує) і відповідає за допомогою протоколу HTTP, надсилає дані клієнту (= вашому браузеру)

Потім браузер використовує HTML-аналізатор, щоб відновити структуру документа, яка згодом буде представлена ​​на екрані. Якщо він знаходить посилання на зовнішні ресурси, такі як зображення, файли css, файли javascript, вони передаються так само, як і сам документ HTML.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.