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

46

Я пытаюсь пропинговать мой веб-сайт, 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это работает

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

Саранш Сингх
источник
32
Что сбивает с толку, так это то, что ping даже не может разрешить это как имя хоста, а тем более отправлять ошибочные пакеты ICMP. На какой ОС / версии вы работаете?
пушистый
11
Я извиняюсь, но я отказался от этого из-за комбинации причин - новый пользователь с одним вопросом, который содержит URL-адрес их веб-сайта с явно фальсифицированным выводом из PING. По всем правилам это попытка привлечь трафик на URL. Если мы не можем выяснить, какая операционная система имеет версию PING, которая 1) знает, что такое URL, и 2) идентифицирует номер icmp_seq для каждого тайм-аута.
Рассвет Бентон
25
Для тех , кто downvoted , потому что они не знали , есть DNS сервисов, угон неудачные Lookups, не знал pingи getaddrinfo()и друзья проходят через косые черты, не знали , что 56 data bytesявляется общим по умолчанию, и т.д .: Пожалуйста , примите это как знак что ваши усилия узнать больше о вещах, прежде чем пытаться помочь, будут оценены.
Ракслице
5
@ Ƭᴇcʜιᴇ007 Результаты проверки подлинности являются реальными, я вижу то же самое, когда проверяю неверное имя хоста с помощью TimeWarner Cable DNS на OS X.
Hunter Dolan

Ответы:

108

Я пытаюсь проверить связь с моим сайтом 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 (URL) и не является допустимым именем хоста (хотя часть его является именем хоста).

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

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

Ping обычно не распознает URL-адреса как действительные имена хостов назначения.

Примечания :

  • Не все URL имеют формат, упомянутый выше.

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

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


DNS угон

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

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

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

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

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

ДэвидПостилл
источник
33

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

Когда вы бежите:

$ ping example.com

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

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

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

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

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

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

Причина истечения времени ожидания команды ping заключается в том, что 123.456.789.000она не отвечает на запросы ICMP.

Охотник Долан
источник
5
Стоит отметить, что действительный домен / ip был отредактирован ботом Сообщества. «123.456.789.000» изначально был IP-адресом, который выкинул DNS TWC, когда вы пытались разрешить несуществующее имя хоста.
Охотник Долан
1
Бот не умеет делать автоматические правки; Я бы сказал, что это изменение, предложенное анонимным пользователем.
Лео Лам
Редактирование было предложено анонимным пользователем и одобрено мной и другим пользователем.
ДэвидПостилл
21

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

KJ4TIP
источник
Я бы сказал, что это не очевидно для тех, кто еще не знает, но теперь, когда вы знаете информацию из ответа KJ4TIP, посмотрите на вывод: Request timeout for icmp_seq 0вы можете увидеть там ICMP, то есть последовательность ICMP 0, 1, 2 ...
Тайлер Кольер
0

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

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

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

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

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

MattW
источник