Разница между pinging с и без http: //

Я пытаюсь выполнить ping мой веб-сайт http://www.example.com/, и он разрешает неизвестный IP-адрес и время ожидания.

PING http://www.example.com/ (198.105.254.228): 56 data bytes 
Request timeout for icmp_seq 0 
Request timeout for icmp_seq 1 
Request timeout for icmp_seq 2

, но когда я пинг example.com работает

Что мне здесь не хватает?

41 голос | спросил Saransh Singh 21 J0000006Europe/Moscow 2015, 00:45:05

4 ответа


104

Я пытаюсь выполнить ping мой веб-сайт http://www.example.com/, и он разрешает на неизвестный IP-адрес и время ожидания.

PING http://www.example.com/ (198.105.254.228): 56 data bytes
Request timeout for icmp_seq 0

Аргумент для ping - это имя хоста (или IP-адрес).

Итак, все будет работать:

ping example.com
ping www.example.com
ping 127.0.0.1

С другой стороны,

ping http://www.example.com/

не будет работать как http://www.example.com/ является HTTP Uniform Resource Locator (URL) не является допустимым именем хоста (хотя часть его - имя хоста).

URL-адрес HTTP состоит из 4 частей:

  • Схема - всегда присутствует
  • Имя хоста - всегда присутствует
  • Путь или Stem - всегда присутствует, но иногда имеет значение null
  • Параметры - необязательный

Ping обычно не распознает URL как допустимое имя хоста назначения.

Примечания

  • Не все URL-адреса имеют формат, указанный выше.

  • Полный URL-адрес состоит из спецификатора схемы именования, за которым следует строка, формат которой является функцией схемы именования.

  • Формат URL-адреса определен в спецификации IETF Uniform Локаторы ресурсов (URL)


DNS Hijacking

Исключение из вышеизложенного может произойти, если DNS-сервер (который разрешает имена хостов на IP-адреса) настроен на возврат допустимого IP-адреса, даже если указан недопустимый номер хоста.

Это может произойти, если интернет-провайдер захватит ваши DNS-запросы.

Из ответа Почему ping разрешает IP 198.105.254.228 для любого произвольного имени хоста, которое я набираю? Майкл Хэмптон :

  

Они пытаются быть «полезными», перенаправляя запросы на   несуществующие домены служба белых ярлыков , которая обеспечивает поиск   результаты и реклама, из которых каждый, кроме вас, получает разрез   доход.

     

К счастью, у них есть страница , где вы можете   предположительно отключите его.

ответил DavidPostill 21 J0000006Europe/Moscow 2015, 00:56:54
30

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

При запуске:

$ ping example.com

DNS-сервер возвращает IP-адрес сервера, на котором размещен веб-сайт.

Однако, когда вы префикс протокола и путь для создания стандартного URL-адреса http, который все отправляется на DNS-сервер, который будет разрешен.

Итак, вместо того, чтобы DNS-сервер обнаружил запись для example.com, он ищет запись http://example.com/, который не является допустимым именем хоста.

Многие DNS-серверы возвращаются без ничего. В этом случае команда ping просто выйдет из строя с ошибкой разрешения DNS.

Однако ваш DNS-сервер возвращает IP-адрес 123.456.789.000. Адрес, по-видимому, представляет собой сервис предложений Time Warner Cable, чтобы помочь пользователям, которые ошибочно указали URL-адрес в своем браузере.

Но команда ping берет это буквально и считает, что имя хоста http://example.com/ (которое не является допустимым именем хоста) разрешает адрес ---- +: = 5 =:. + ----

Причина, по которой команда ping истекает после этого, потому что 123.456.789.000 не отвечает на запросы ICMP.

ответил Hunter Dolan 21 J0000006Europe/Moscow 2015, 19:24:30
20

http: //означает протокол передачи гипертекста, протокол, используемый для доступа к веб-страницам. Pinging сервер не использует HTTP, но вместо этого состоит из сообщения ICMP (протокол управления интернет-сообщением), поэтому http: //не имеет смысла в этом контексте.

ответил KJ4TIP 21 J0000006Europe/Moscow 2015, 00:54:52
0

Почему вы все равно будете использовать «ping». Он не будет работать, если есть брандмауэр в способе блокирования трафика «пинг».

На мой взгляд, если вы собираетесь тестировать веб-сервер, тогда его лучше использовать «telnet», то вы можете протестировать хост и порт, которые он должен прослушивать.

например: Чтобы проверить свой веб-сервер telnet www.mywebserver.com 80 на пустом экране введите «get», затем «введите», и вы должны получить кучу ответа HTTP от веб-сервера. ( например: HTTP /1.1 400 Bad Request ... )

Это говорит мне, что не только сервер «вверх», но и прослушивает и отвечает на порт 80. (Я также ожидал, что любые брандмауэры передадут порт 80 на мой веб-сервер)

Аналогично, «telnet» также работает для тестирования почтовых серверов, ftp и всего около того.

ответил MattW 1 J000000Wednesday15 2015, 08:30:59

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132