Данный HTTP-запрос на самом деле недействителен, если браузер не общается с посредником (прокси).
Ваш пример был бы похож на следующий, если бы браузер напрямую общался с веб-сервером:
GET /hello.htm HTTP/1.1
Host: www.pippo.it
Теперь, чтобы рассмотреть это в перспективе, рассмотрим модель OSI:
У нас есть 3 системы в действии:
- Клиент работает браузер
- Веб - сервер , обслуживающий сайт
- DNS сервер зная IP - адрес сайта
Используемые протоколы, снизу вверх (минимальное значение для OP):
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-сервер никогда не связывался. Это настраивается, и не обязательно верно, но это по умолчанию в операционных системах, с которыми я знаком.