Если я введу IP-адрес для веб-сайта, а не строковую форму, понимает ли мой локальный DNS-сервер это и пропустит ли я процесс DNS? [Дубликат]

12

Это чисто из любопытства. Но если бы я набрал IP-адрес веб-сайта, прошел бы ли этот запрос процесс прямого просмотра? Если нет, то в какой момент и на каком этапе выясняется, что это местоположение по IP, а не по имени хоста в виде строки?

Кроме того, как это будет записано в моем хост-файле? Если он проходит весь процесс поиска, будет ли файл хоста содержать строку hostname, а также IP и заполняться локально?

Дрю Д
источник
1
Система доменных имен, это то, что переводит URL (google.com) в IP-адрес, поэтому, если вы используете IP-адрес, ему не нужно выполнять поиск имени, минуя систему DNS. ru.wikipedia.org/wiki/Domain_Name_System
Моав
Ответы ниже верны, браузеры достаточно умны, чтобы не выполнять прямой просмотр IP-адреса. Выполнение прямого просмотра IP-адреса никогда не является хорошей идеей, есть 3 способа, которыми DNS-сервер может на него реагировать: 1) Большинство DNS-серверов просто возвращают один и тот же IP-адрес. 2) Другие DNS-серверы не могут преобразовать «имя DNS» в IP и сообщат вам об этом. 3) Некоторые (бесплатные) DNS-серверы не могут разрешить «имя DNS» и дают вам IP-адрес, который перенаправляет вас на свою собственную страницу поиска (обычно полную рекламы).
user1793963
1
Доменное имя необходимо, если на веб-сервере размещено несколько сайтов. Он имеет один IP-адрес и без доменного имени не может понять, какой сайт вы хотите. Если есть только один веб-сайт, то он будет работать с IP таким же образом.
i486
1
Обратите внимание, что имя хоста отправляется не только в DNS для перевода, но и на сам веб-сервер. Это означает, что веб-сервер, который обслуживает несколько веб-сайтов, не может знать, какой из этих сайтов вы хотите. Это, конечно, проблема IPv4; с IPv6 каждый веб-сайт может иметь свой собственный IP-адрес.
MSalters
1
Теперь следующий вопрос: как ваш браузер узнает, что 2001:feed:face:dead::beef:8080это IPv6-адрес с указанным портом, а не просто плохо отформатированный URL-адрес ...;)
Марк Хендерсон

Ответы:

15

Если вы используете IP-адрес, ОС сразу узнает, что это IP-адрес, и не будет выполнять прямой просмотр.

Когда вы делаете HTTP-запрос, первым шагом является получение IP-адреса пункта назначения, чтобы браузер мог обмениваться данными с сервером. Для связи с сервером все происходит по IP, от IP-адреса до IP-адреса, и поэтому имя сервера не требуется для этой связи. Тем не менее, он передается в заголовках HTTP как Host:заголовок, чтобы веб-сервер знал, на каком веб-сайте вы находитесь, если на нем размещено несколько сайтов.

В случае доступа по IP-адресу этого не происходит, и сайт по умолчанию представлен.

Ваш hostsфайл является статическим файлом, он не изменяется ни при каких действиях, которые вы предпринимаете, за исключением случаев, когда вы непосредственно редактируете его (или имеете скрипты или приложения, которые его изменяют).

Павел
источник
2
Кроме того, стоит отметить, что если вы введете IP-адрес в браузере, таком как Chrome, он может выполнить поиск в Google перед простой загрузкой сайта.
Свентечие
1
Обратите внимание, что внутреннее связывание отдельных объектов, составляющих страницу, вероятно, выполняется с помощью полного доменного имени, поэтому пока корневой запрос будет выполняться без поиска DNS, но каждое изображение, таблица стилей, файл сценария и т. Д. Почти наверняка будут разрешены DNS запрос, когда ваш браузер пытается отобразить корневую страницу и загружает все дочерние ресурсы ..
Фрэнк Томас,
2
@FrankThomas В большинстве случаев, когда ресурс находится на одном и том же сервере, на ресурсы ссылаются относительные URL-адреса, и поэтому доступ к нему осуществляется тем же методом, что и в исходном запросе, - по IP. Исключением является случай, когда base_href используется в заголовках, и, таким образом, определяет хост, который должны использовать относительные URL. Если используется полное доменное имя, то да, игра окончена.
Пол
In the case of accessing by IP address, this does not happen, and the default site is presented.Скорее всего, вы получите страницу с ошибкой.
User112638726
@sventechie Действительно? Есть идеи, почему это так? Мол, какова ценность этого?
Athoxx
3

Как писали другие, используя IP-адрес, вы действительно пропускаете DNS, который позволяет получить доступ, например, к сайтам разработки без имени хоста.

Добавление псевдонима IP-имени хоста в / etc / hosts снова очень распространено для сайтов разработки. В отличие от непосредственного использования IP-адреса, это а) все же пропустит DNS; б) заставит браузер добавить Hostзаголовок запроса к HTTP-запросу, разрешив, например, виртуальные хосты на локальном сервере.

СНХ
источник
Стоит отметить, что если по какой-либо причине обновляется IP-адрес, файл HOSTS вместе с ним не обновляется, что может привести к непредвиденному поведению, и сайт, похоже, больше не работает. Просмотр файла hosts - это одна из последних вещей, которую люди делают при устранении неполадок, и ее можно полностью упустить из виду.
LPChip
@LPChip справедливо, но, пожалуйста, обратите внимание, я несколько раз подчеркивал, что это больше похоже на местную практику разработчика, чем что-либо еще.
chx