Если вы man ping
свою версию, вы увидите, что одним из параметров является параметр hop
(ping [hop ...] destination
), это позволяет вам пропинговать ваше назначение через hop
и полезно, если у вас есть несколько шлюзов и хочу явно указать маршрут пинга.
Таким образом, ping ping localhost
будет пинговать localhost
при использовании ping
качестве hop
. Но реальный вопрос заключается в том, почему ping ping
работает и не возвращает unknown host
ошибку хоста ? Следует отметить, что выполнение команды ping ping
в Windows и некоторых вариантах BSD возвращает unknown host
ошибку хоста , но не по причинам, о которых можно подумать.
Если я выполняю ping ping
в моей системе, я получаю 127.0.53.53
, и после некоторого осмотра я нашел соответствующий ответ, который помогает объяснить этот результат; в двух словах, это связано с используемым вами DNS-сервером и структурой коллизий именования ICANN, которая возвращает адрес 127.0.53.53
для некоторых общих TLD (очевидно, ping
- один). Некоторые ОС и версии утилиты ping
могут добавлять TLD (или ваш локальный домен) к месту назначения для вас, поэтому, если вы выполнили ping ping
, она может фактически выполнить ping ping.com
или ping ping.localdomain
и вернуть ожидаемые результаты. (против предоставления 127.0.53.53
).
Это должно помочь объяснить, почему вы видите потерю пакетов при выполнении команды ping ping localhost
; вы перенаправляете свои эхо-запросы через локальный localhost
на эхо-запрос вашего localhost
, который, если ваша система не настроена для этого (запросы на маршрутизацию маршрутизации), завершится ошибкой и вернет потерю пакетов, которую вы видите.
Надеюсь, что это может помочь.