Якщо я введу IP-адресу для веб-сайту, а не строкової форми, чи розуміє мій локальний DNS-сервер і чи обходжу це процес DNS? [дублікат]


12

Це суто з цікавості. Але якби я вводив IP-адресу веб-сайту, чи запит все-таки проходитиме через процес пошуку вперед? Якщо ні, то в який момент і за допомогою якого кроку зрозуміло, що це місцезнаходження за IP, а не ім'я хоста як рядка?

Крім того, як це буде записано у моєму файлі хостів? Якщо він пройде весь процес пошуку, чи буде містити файл хоста рядок імені хоста, а також IP та заповнюватиметься локально?


1
Система доменних імен - це те, що переводить URL (google.com) на ip адресу, тому, якщо ви використовуєте ip адресу, не потрібно робити пошук імен, минаючи систему DNS. en.wikipedia.org/wiki/Domain_Name_System
Моав

Наведені нижче відповіді правильні, браузери досить розумні, щоб не здійснювати пошук вперед IP-адреси. Робити прямий пошук IP-адреси ніколи не є хорошою ідеєю, є 3 способи, на які DNS-сервер може реагувати на нього: 1) Більшість серверів DNS просто повернуть ту саму IP-адресу. 2) Інші DNS-сервери не можуть вирішити "dns name" в IP-адресі і скажуть вам це. 3) Деякі (безкоштовні) DNS-сервери не можуть вирішити "ім'я dns" і надати вам IP-адресу, яка перенаправляє вас на власну пошукову сторінку (як правило, повну рекламу).
користувач1793963

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, перш ніж просто завантажити сайт.
sventechie

1
Зауважте, що внутрішнє посилання окремих об'єктів, що складають сторінку, ймовірно, виконується FQDN, тому, хоча запит root буде виконуватись без пошуку DNS, але кожне зображення, таблиця стилів, файл сценарію тощо майже напевно буде вирішене DNS запит, коли ваш браузер намагається надати кореневу сторінку та завантажує всі дочірні ресурси ..
Френк Томас

2
@FrankThomas У більшості випадків, коли актив знаходиться на одному сервері, на активи посилаються відносні URL-адреси, і таким чином доступ до них буде здійснюватися тим самим методом, що і вихідний запит - через IP. Винятком з цього буде те, коли base_href використовується в заголовках, і так диктує хост, який повинні використовувати відносні URL-адреси. Якщо використовується FQDN, то так, гра закінчена.
Павло

In the case of accessing by IP address, this does not happen, and the default site is presented.Вам набагато більше шансів надати сторінку з помилками.
User112638726

@sventechie Дійсно? Будь-яка ідея, навіщо це робити? Мовляв, у чому цінність цього?
Атокс

3

Як писали інші, використовуючи IP-адресу, ви дійсно пропускаєте DNS, що дозволяє отримати доступ, наприклад, на сайти розробки без імені хоста.

Додавання IP-макету імені хоста в / etc / hosts вкрай поширене для сайтів розробки. На відміну від прямого використання IP-адреси, це: a) все-таки пропускає DNS; b) змушує браузер додавати Hostзаголовок запиту до HTTP-запиту, що дозволяє, наприклад, віртуальним хостам на локальному сервері.


Варто зазначити, що якщо з будь-якої причини IP-адреса оновлюється, файл HOSTS не оновлюється разом із ним, що може призвести до несподіваної поведінки та сайту, який, здається, більше не працює. Перегляд файлу хостів - одна з останніх речей, яку люди роблять при вирішенні проблеми, і може бути повністю пропущена.
LPChip

@LPChip ярмарок, але зауважте, я декілька разів наголошував на тому, що це більше для місцевих розробників, ніж будь-що інше.
chx
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.