
Это чисто из любопытства. Но если бы я ввел IP веб-сайта, запрос все равно прошел бы процесс прямого поиска? Если нет, то в какой момент и на каком этапе он понимает, что это местоположение по IP, а не имя хоста в виде строки?
Кроме того, как это будет записано в моем файле хостов? Если он пройдет весь процесс поиска, будет ли файл хостов содержать строку hostname, а также IP и заполняться локально?
решение1
Если вы используете IP-адрес, ОС сразу поймет, что это IP-адрес, и не будет выполнять прямой поиск.
Когда вы делаете HTTP-запрос, первым шагом является получение IP-адреса назначения, чтобы браузер мог связаться с сервером. Для связи с сервером все происходит по IP, от IP-адреса к IP-адресу, и поэтому имя сервера не требуется для этой связи. Однако оно передается в заголовках HTTP как заголовок, Host:
чтобы веб-сервер знал, какой веб-сайт вы ищете, если он размещает несколько сайтов.
В случае доступа по IP-адресу этого не происходит, и отображается сайт по умолчанию.
Ваш hosts
файл является статическим, он не изменяется ни при каких ваших действиях, за исключением случаев, когда вы его напрямую редактируете (или используете скрипты или приложения, которые его изменяют).
решение2
Как уже писали другие, используя IP-адрес, вы действительно пропускаете DNS, что позволяет получать доступ, например, к сайтам разработки без имени хоста.
Добавление IP - фиктивного имени хоста в /etc/hosts снова чрезвычайно распространено для сайтов разработки. В отличие от использования IP-адреса напрямую, это a) все равно пропустит DNS b) заставит браузер добавить Host
заголовок запроса к HTTP-запросу, разрешая виртуальные хосты на локальном сервере, например.