Запит HTTP насправді недійсний, якщо браузер не спілкується з посередником (проксі).
Ваш приклад виглядав би трохи більше, як наступний, якби браузер спілкувався безпосередньо з веб-сервером:
GET /hello.htm HTTP/1.1
Host: www.pippo.it
Тепер, щоб поставити це в перспективу, розглянемо модель OSI:
У нас три системи:
- Клієнт працює браузер
- Веб - сервер , що обслуговує сайт
- DNS сервер знаючи IP - адреса сайту
Запропоновані протоколи - знизу вгору (мінімальний відповідний набір для ОП):
Зв'язок HTTP здійснюється через протокол TCP (TCP знаходиться поверх протоколу IP), тоді як зв'язок DNS, у цьому випадку, здійснюється через протокол UDP (UDP також знаходиться поверх протоколу IP).
Ось комунікаційна послідовність коротко:
Клієнт , який працює браузер, запитує сервер DNS для A
запису на www.pippo.it
, використовуючи протокол UDP.
1.1. На клієнті саме операційна система виконує вирішальну частину і повертається до браузера --- браузер ніколи не спілкується з сервером DNS безпосередньо, а через ОС, викликаючи gethostbyname () або новіший getaddrinfo () . У Windows, порядок , в якому операційна система вирішує адреси, швидше за все , визначається що - щось на зразок цього , в той час як на Linux дозволяє старшинство визначається/etc/nsswitch.conf
Сервер DNS , використовуючи протокол UDP, відповідає на клієнта записом / IP-адресою, якщо він існує
Клієнт відкриває з'єднання TCP на порт 80 веб - сервера і записує наступний текст:
HTTP-запит:
GET /hello.htm HTTP/1.1
Host: www.pippo.it
Ви можете імітувати те саме, зробивши щось подібне у консолі чи командному рядку:
> 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
слідом за двома порожніми рядками. Якщо потрібний вміст існує, веб-сервер виведе його на екран. Якщо з іншого боку є браузер, текст відповіді переглядається браузером, і всі теги, посилання, сценарії та зображення відображаються у тому, що ми називаємо веб-сторінкою.
Насправді є ще деякі деталі, наприклад, браузери можуть кешувати IP-адреси, якщо ви вже відвідали якийсь домен, так що рішення DNS стає непотрібним. Також сучасні веб-переглядачі можуть спробувати виконати рішення, перш ніж вам це справді потрібно ( попереднє завантаження DNS ), щоб прискорити перегляд.
Крім того, ваш комп'ютер може мати статичні записи у hosts
файлі. Якщо запис відповідає запиту, локальний статичний запис спочатку використовується, і жоден DNS-сервер ніколи не зв'язується. Це налаштовується, і не обов'язково відповідає дійсності, але це стандартні налаштування в операційних системах, з якими я знайомий.