Як веб-сервери знають, якщо ви використовуєте прямий доступ до IP-адрес або ні?
Зазвичай, ми просто вводимо адресу веб-сайту, який ми хочемо переглянути, але чи буде веб-сервер насправді “знати”, якщо замість нього буде використано пряму IP-адресу? Сьогоднішня посада із запитами та відповідями SuperUser має відповідь на плутане запитання читача.
Сьогоднішня сесія запитань та відповідей приходить до нас люб'язно SuperUser - підрозділ Stack Exchange, групування веб-сайтів із запитаннями та відповідями на рівні спільноти..
Фото надано Кори М. Греньє (Flickr).
Питання
Читач SuperUser Джозеф А. хоче знати, як веб-сервери можуть дізнатися, чи використовуєте ви прямий доступ до IP-адреси чи ні:
Деякі веб-сервери, які отримують доступ за допомогою IP-адреси, повертають помилку, що прямий доступ до IP-адреси не дозволений. Я деякий час дивувався, як це працює.
Чи завжди браузер вирішує IP-адресу та підключається до нього? Прямий доступ до IP-адреси просто пропускає DNS, чи не так? Як віддалений сервер навіть знає, що ви пропустили DNS?
Як веб-сервери знають, чи використовуєте ви прямий доступ до IP-адрес чи ні?
Відповідь
Співробітник SuperUser iAdjunct має відповідь для нас:
Щоб відповісти на ваше питання про те, як він знає, це пов'язано з тим, що ваш браузер посилає веб-серверу. Ви маєте рацію, що система завжди вирішує її на IP-адресу, але веб-переглядач надсилає URL-адресу, яку ви намагалися отримати, у заголовку HTTP.
Ось приклад заголовка, який я знайшов в Інтернеті, модифікований, щоб виглядати так, якби ви використовували Firefox у Windows і набрали apple.com у адресний рядок:
Ось як би виглядав заголовок, якщо ви використовували його IP-адресу:
Обидва вони надсилаються на одну IP-адресу через сокет, але браузер повідомляє веб-серверу, до чого він звертався. Чому? Оскільки веб-сервери з однаковою IP-адресою можуть розміщувати декілька веб-сайтів і надавати різні сторінки для кожного. Він не може розрізнити, хто хоче, яка сторінка за IP-адресою, оскільки всі вони мають один і той самий, але може відрізняти їх за заголовком HTTP.
Маєте щось додати до пояснення? Звучить в коментарях. Хочете прочитати більше відповідей від інших технологічних користувачів Stack Exchange? Перегляньте повний потік обговорення тут.