Как клиент (браузер) генерирует запрос для отправки на сервер? - PullRequest
1 голос
/ 05 ноября 2010

Как только пользователь нажимает URL-адрес, локальный компьютер выполняет поиск файла hosts, чтобы узнать, есть ли какие-либо записи, если локальный компьютер не пропингует DNS (как? Где?), Чтобы разрешить URL-адрес и получить связанный IP-адрес. адрес ... Как только он получает IP, он открывает канал сокета на этом IP-адресе и взаимодействует с сервером ...

Это точно?

Я пытаюсь пошагово и подробно понять, как запрос генерируется и отправляется на сервер.

Спасибо за ваш вклад!

Ответы [ 4 ]

4 голосов
/ 05 ноября 2010

Для очень подробного обзора того, как работает DNS, см. RFC 1035 и как работает HTTP, см. RFC 2616 .

Это канонические документы.Они становятся очень подробными, но если вы будете придерживаться разделов «Общие операции» и искать те части, по которым вам необходимо уточнить, они могут быть очень полезны.

В основном для любого протокола, для которого вы хотите пояснение (на более глубоком уровне выВозможно, вы захотите увидеть протокол TCP), наиболее подробным местом для получения информации являются RFC.

2 голосов
/ 05 ноября 2010

Полагаю, вы говорите о TCP-соединении.Как вы говорите, клиент выполнит поиск в своем файле hosts;если запись отсутствует, он выполнит поиск своего первого настроенного DNS-сервера (на основе ручной настройки или настроек DHCP) и установит соединение с этим сервером.Как только клиент получит адрес нужного сервера, он отправит пакет SYN на этот сервер, который ответит SYN / ACK, а клиент ответит пакетом ACK, чтобы установить соединение.Это TCP рукопожатие .Как только соединение установлено, клиент и сервер обмениваются данными через свои соответствующие сокеты, передавая данные через уровни протокола TCP и отправляя пакеты исправления ошибок и метаданных для координации друг с другом.Эта информация содержит тип запроса, обычно зависящий от протокола.Для HTTP это обычно запрос GET или POST, на который сервер отвечает соответствующим образом.Если вам нужна более конкретная информация, можете ли вы опубликовать какой протокол вам интересен?

1 голос
/ 06 ноября 2010

http://betterexplained.com/wp-content/uploads/compression/HTTP_request.png

1 голос
/ 05 ноября 2010

Да. Вы более и менее правы.

Он смотрит на файл hosts и затем в DNS. На Linux-машине вы можете изменить порядок в файле etc / resolv.conf.

Ваш основной DNS-сервер настроен в настройках tcp / ip. DNS использует порт UDP / 53 для такого запроса. если ваш DNS не может разрешить имя хоста, он перенаправляет его на родительский DNS, но это уже другая тема. После получения IP-адреса он открывает сокет для сервера, используя адрес (IP + порт).

Надеюсь, это поможет.

...