Три ключа, которые используют чаще всего
Сама по себе команда ping отправляет четыре эхо-запроса и печатает итог. Для быстрой проверки этого хватает, но при поиске плавающей неисправности четырёх пакетов мало: обрыв может случиться через минуту, а ping к этому времени уже завершился. Поэтому в Windows почти всегда добавляют один из трёх ключей.
Ключ -t отвечает за длительность, -n за точное число запросов, а -l за размер полезной нагрузки. Их можно писать в любом порядке, адрес узла ставится последним или первым, разницы нет. Все три работают в обычной командной строке без прав администратора.
Ниже сводка того, что делает каждый ключ и какое значение действует по умолчанию.
| Ключ | Что делает | По умолчанию |
|---|---|---|
| -t | Отправляет запросы, пока вы не остановите команду | выключен, отправляется 4 запроса |
| -n число | Задаёт количество запросов | 4 |
| -l байты | Задаёт размер данных в запросе | 32 байта |
| -w миллисекунды | Ждёт ответ не дольше указанного времени | 4000 мс |
| -a | Пытается показать имя узла по адресу | выключен |
ping -t: непрерывная проверка и статистика по Ctrl+C
Команда ping -t example.com отправляет запросы бесконечно, по одному в секунду. Остановить её можно сочетанием Ctrl+C. После остановки Windows печатает итоговую статистику: сколько пакетов отправлено, получено и потеряно, а также минимальное, максимальное и среднее время ответа.
Есть тонкость, о которой знают не все. Сочетание Ctrl+Break выводит текущую статистику и продолжает работу, поэтому промежуточные итоги можно снимать, не прерывая наблюдение. Это удобно, когда вы ходите по квартире с ноутбуком и проверяете качество Wi-Fi: окно остаётся открытым, а цифры читаются по требованию.
Пример вывода после Ctrl+C (пример, адреса из блока документации):
Статистика Ping для 192.0.2.10: Пакетов: отправлено = 120, получено = 118, потеряно = 2 (1% потерь), Приблизительное время приема-передачи в мс: Минимальное = 1мсек, Максимальное = 48мсек, Среднее = 4мсек
Если потери есть, а среднее время скачет, разберите порядок проверки на странице про ошибку Request timed out. Для долгих наблюдений полезно вести журнал с временем, как описано в отдельной странице про запись ping в файл.
Практический приём: запустите ping -t на адрес роутера в одном окне и на внешний узел в другом. Если пропадают ответы в обоих окнах одновременно, проблема на вашем участке, а если только во втором, то дальше по маршруту. Такое сравнение занимает минуту и сильно сужает круг поисков.
ping -n: заданное число запросов без ручной остановки
Ключ -n нужен, когда результат должен быть сопоставим между запусками. Команда ping -n 20 192.0.2.10 отправит ровно двадцать запросов и завершится сама, а значит, вы сравните два измерения одинаковой длины: до и после смены кабеля, перезагрузки роутера или переезда в другую комнату.
Число можно делать и большим: ping -n 1000 адрес сработает как долгий тест, который сам закончится. Но для бесконечных наблюдений привычнее -t.
Полезные сочетания:
- ping -n 1 адрес: единичная проверка достижимости в скриптах, где нужен один короткий ответ;
- ping -n 50 -w 1000 адрес: пятьдесят запросов с ожиданием не дольше секунды, чтобы медленные ответы считались потерянными;
- ping -t -a 192.0.2.10: непрерывная проверка с попыткой определить имя узла по его адресу.
В скриптах обращайте внимание на код возврата: если хотя бы один ответ получен, ping обычно считает попытку успешной, даже когда потери составили 90 процентов. Поэтому итоговую строку со статистикой нужно разбирать отдельно.
ping -l: размер пакета и его границы
Ключ -l задаёт размер поля данных в запросе. По умолчанию это 32 байта. Максимум в Windows составляет 65500 байт, но такие пакеты режутся на фрагменты и как проверка обычного канала мало полезны.
Зачем менять размер. Малые пакеты проходят почти везде, поэтому при маленьком размере всё работает, а на крупных начинаются потери. Такой признак часто указывает на проблему с размером MTU, повреждённый кабель или перегруженный участок сети. Для обычного сравнения сначала проверьте ping -l 32, затем ping -l 1400 и посмотрите на разницу в потерях и времени.
Важно не путать размер данных и размер пакета целиком. К данным добавляются 8 байт заголовка ICMP и 20 байт заголовка IP, поэтому пакет с данными 1472 байта займёт в сети 1500 байт. Как искать предельный размер без фрагментации, объясняется на странице про ключ -f и проверку MTU.
Не отправляйте большие пакеты с высокой частотой на чужие узлы: это нагрузка на чужое оборудование. Проверяйте свои устройства или узлы, которые для этого предназначены.
Если нужно проверить, как канал справляется с крупными пакетами, комбинируйте ключи: ping -n 30 -l 1400 192.0.2.10 отправит тридцать крупных запросов, и по потерям видно, где начинаются проблемы с размером. Сравнивайте всегда два запуска с одинаковым -n, иначе проценты потерь будет трудно сопоставить.
Аналоги в Linux и macOS
Синтаксис ключей различается между системами, и перенос привычек из Windows приводит к неожиданным результатам. Главная ловушка: в Linux ключ -t задаёт время жизни пакета (TTL), а не бесконечную отправку. Там ping и так работает до остановки по Ctrl+C.
| Задача | Windows | Linux и macOS |
|---|---|---|
| Работать до остановки | ping -t адрес | ping адрес (по умолчанию) |
| Заданное число запросов | ping -n 10 адрес | ping -c 10 адрес |
| Размер данных | ping -l 1000 адрес | ping -s 1000 адрес |
| Интервал между запросами | не задаётся ключом | ping -i 0.5 адрес (интервалы меньше 0,2 с в Linux требуют прав root) |
Размер по умолчанию в Linux составляет 56 байт данных, то есть 64 байта с заголовком ICMP и 84 с заголовком IP. Это одна из причин, почему цифры из вывода в разных системах не совпадают напрямую. Для IPv6 в Windows добавляют ключ -6, подробности есть на странице про ping для IPv6.