P
PingOn

История ping: как один инженер за ночь придумал команду, которой пользуется весь мир

$ ping google.com PING google.com: 56 data bytes 64 bytes from 142.250.74.46: time=12.4 ms 64 bytes from 142.250.74.46: time=11.8 ms 64 bytes from 142.250.74.46: time=13.1 ms --- google.com ping statistics --- 3 packets transmitted, 3 received round-trip min/avg/max = 11.8/12.4/13.1

Каждый раз, когда PingOn проверяет ваш сайт, он использует технику, которой уже больше сорока лет. Придумал её один человек, за одну ночь, чтобы понять — почему пакеты не доходят.

1983 год. Ночь в военной лаборатории

Дэвид Миллс, один из архитекторов ARPANET, описал в RFC 792 протокол ICMP. В спецификацию почти мимоходом вошли два типа сообщений: Echo Request и Echo Reply. Смысл простой — пошли пакет, получи его обратно. Сигнал существования. Никто особо этим не пользовался.

Майк Муусс работал инженером в Баллистической исследовательской лаборатории армии США (BRL) в Мэриленде. В 1983 году перед ним стояла конкретная проблема: сеть вела себя непредсказуемо, пакеты куда-то пропадали, и никто не мог объяснить, на каком именно участке. Специальных инструментов для диагностики не существовало — если что-то шло не так, инженеры читали дампы памяти и строили гипотезы.

За одну ночь Муусс написал небольшую программу на C. Она отправляла ICMP Echo Request к удалённому хосту и измеряла время до ответа. Он назвал её ping — по звуку гидролокатора подводных лодок: импульс уходит в воду, ждёшь эха.

Майк Муусс в лаборатории BRL
Майк Муусс (1958–2000) в лаборатории BRL. Автор утилиты ping.

Почему 56 байт — не случайное число

Первый ping отправлял ровно 56 байт данных. Случайность? Нет. Вместе с 8-байтным заголовком ICMP получалось ровно 64 байта — красивая степень двойки. Муусс любил такие детали.

Это число дожило до наших дней. Запустите ping google.com прямо сейчас — в выводе вы увидите «64 bytes from...». Ровно то, что видел Муусс на своём терминале VAX в 1983-м.

Как ping оказался везде

Муусс поделился кодом с BSD-сообществом. В 1986 году программа вошла в состав 4.3BSD и стала стандартной утилитой UNIX. Когда Microsoft строила Windows NT, ping перекочевал и туда — с минимальными изменениями. Сегодня он есть в каждой операционной системе: macOS, Linux, Windows, iOS, Android.

Это один из немногих инструментов, переживших сорок лет без принципиальных изменений. Аргументы чуть разные, вывод немного отличается — суть та же: пошли сигнал, дождись эха, измерь время.

Что осталось

Майк Муусс погиб в автокатастрофе в ноябре 2000 года. Ему было 39 лет. Он не увидел, как его ночная поделка превратилась в базовый элемент интернет-инфраструктуры — инструмент, который запускают миллиарды устройств каждую секунду.

На его мемориальной странице сохранилось собственное описание: «Я назвал это ping, потому что именно такой звук издаёт гидролокатор. Когда субмарина хочет найти что-то в темноте, она посылает сигнал и ждёт эха.»

Именно это делает PingOn каждые несколько минут — посылает сигнал и ждёт эха.

🐧 Забавный факт

В Unix/Linux ping работает бесконечно — пока не нажмёшь Ctrl+C. В Windows отправляет ровно 4 пакета и останавливается. Microsoft никогда официально не объясняла, почему именно четыре. Лучшая версия: разработчик просто решил, что этого достаточно — и никто не возразил.