Последнее обновление:
Как отправить НТТР-запрос?
Вроде бы, ничего сложного. Надо лишь ввести в адресную строку браузера необходимы URL, ну, и нажать "перейти" (или "открыть"). После чего через какое-то время откроется требуемая вебстраница. Но, поговорим о том, как может выглядеть сам URL. Скажем, взять поисковую систему Google. Всем известна примерно такая ссылка:
https://google.com
Однако, могут быть и другие виды этой же самой ссылки (URL). Например, вместо доменного имени (google.com) можно указать IP-адрес:
64.233.161.101
Ну, или так:
https://64.233.161.101
Вероятно, не все знают о такой возможности. А она вполне работает, так как каждому доменному имени (в том числе и google.com) соответствует тот или иной IP-адрес (один или несколько). Фактически, браузер, пытаясь открыть страницу с URL https://google.com
, посылает в сеть запрос именно по соответстующему IP-адресу. Доменное имя нужно лишь для того, чтобы:
-
По нему определить IP-адрес сайта,
-
По нему определить хост (host) сайта.
Однако, здесь есть один нюанс. Дело в том, что одному IP-адресу может соответствовать не один, а несколько (даже много) сайтов. Именно так обстоит дело, в частности, на виртуальных хостингах (shared hosting). В подобных случаях файлы таких сайтов находятся физически на одном и том же компьютере - сервере. Который именно соответствующий IP-адрес. Который, конечно, будет одинаковым для всех этих сайтов.
А как собственно узнать ip? Например, того же Гугла? Для этого можно использовать специальные протоколы DNS (например, протокол ARP). Равно как и И утилиты, работающие с этими протоколами(nslookup, drill и т.п.). Можно использовать даже утилиту ping. Скажем, введем в консоли (или командной строке - синонимы) такую команду:
ping google.com
Нажав Enter, получим в результате:
Обмен пакетами с google.com [64.233.161.101] с 32 байтами данных: Ответ от 64.233.161.101: число байт=32 время=74мс TTL=103 Ответ от 64.233.161.101: число байт=32 время=92мс TTL=103 Ответ от 64.233.161.101: число байт=32 время=82мс TTL=103 Ответ от 64.233.161.101: число байт=32 время=80мс TTL=103 Статистика Ping для 64.233.161.101: Пакетов: отправлено = 4, получено = 4, потеряно = 0 (0% потерь) Приблизительное время приема-передачи в мс: Минимальное = 74мсек, Максимальное = 92 мсек, Среднее = 82 мсек
Как видим, указан IP-адрес Гугла, равный 64.233.161.101. Так как этому адресу более НЕ соответствует ни одного сайта, то совершенно равносильно, что использовать в адресной строке браузера в качестве URL: то ли доменное имя (google.com), то ли IP-адрес.
Однако, есть ряд нюансов, почему подобное может не работать:
- Сайт может сам проверять host и не реагировать на ip-адрес вместо имени.
- На одном ip может существовать несколько сайтов, выбор между которыми происходит на основе host'а. В таком случае сервер либо выдаст ошибку, либо покажет страницу хостинга-владельца.
- При использовании защищённых протоколов (https) сертификат выдан на доменное имя, а не на ip-адрес, а значит браузер признает сертификат невалидным.
Но, есть еще "третий" способ
Например, можно сложить поразрядно байты IP-адреса и полученное большое целое число использовать в качестве URL. Это кажется "хаком", но это вполне работает. Сложим побитово разряды указанного выше IP-адреса:
(((((64 << 8) + 233) << 8) + 161) << 8) + 101
Получим число 1089053029
Так вот, это число - и есть не что иное, как URL поисковой системы Google (т.е. аналог ссылки google.com). Предлагаем читателю скопировать это число, вставить в адресную строку браузера и нажать "перейти". Откроется начальная страница поиска Гугла. Несколько необычный вид ссылки, не так ли?...