Ping
Недавно я начал читать книгу Ивана Склярова “Программирование боевого софта под Linux”. Первой утилитой, которую предлагает написать автор, является альтернативная версия ping. Прочитав man ping, в конце документа я обнаружил следующее:
HISTORY
The ping command appeared in 4.3BSD.The version described here is its descendant specific to Linux.
И всё. Ни слова об авторе. Досадное недоразумение, которое я решил исправить (тем более, что не нашёл в рунете никакой информации о нём).
Итак, о создателе ping.
Майкл Джон Муусс (16 Октября 1958 – 20 Ноября 2000) был автором свободной сетевой утилиты Ping. Выпускник университета Джона Хопкинса, Муусс был старшим научным сотрудником, специализирующимся на моделировании геометрии твёрдых тел, трассировке лучей, архитектурах MIMD и цифровых компьютерных сетях в исследовательской лаборатории армии Соединенных Штатов Америки в Мэриленде, когда он умер. Он написал ряд программных пакетов (в том числе BRL-CAD) и сетевых утилит (в том числе ttcp и концепцию маршрута по умолчанию, или “шлюза по умолчанию”) и участвовал во множестве других проектов (включая BIND). Тем не менее, тысячестрочный ping, который он написал в декабре 1983, работая в лаборатории исследования баллистики, является программой, за которую его все помнят. Благодаря его полезности, реализации ping были написаны для большого числа операционных систем, первоначально на BSD Unix, а позднее на других, включая Windows и Mac OS X. В 1993 ассоциация USENIX вручила Lifetime Achievement Award (Flame) исследовательской группе компьютерных систем университета Калифорнии, Беркли, благодаря 180 лицам, включая Муусса, которые внесли вклад в релиз CSRG’s 4.4BSD-Lite. Муусс упоминается в двух книгах, The Cuckoo’s Egg (ISBN 0-7434-1146-3) и Cyberpunk: Outlaws and Hackers on the Computer Frontier (ISBN 0-684-81862-0), за его роль в отслеживании взломщиков. Также он упоминается в книге Peter Salus’а A Quarter Century of UNIX. Муусс умер 20 ноября 2000 в автомобильной катастрофе на автостраде 95. Научная стипендия имени Майкла Дж. Муусса, созданная его друзьями и семьёй Муусс, увековечивает его имя в университете Джона Хопкинса. Г-н Муусс работает с передовыми компьютерными системами уже более двух десятилетий. Сейчас он старший научный сотрудник в исследовательской лаборатории армии США, область научных интересов: трассировка лучей в реальном времени, и синтетическая мультиспектральная основанная на физике генерация изображений с высоким разрешением. С 1981 по 1997 он возглавляет команду передовых компьютерных систем исследовательской лаборатории баллистики армии США (BRL) в научно-исследовательских проектах, касающихся CAD/CAE, графики, сети, операционных систем, параллельных архитектур, а также командования и управления. Г-н Муусс является архитектором концепции BRL-CAD®, систем CAD/CAE конструктивной блочной геометрии третьего поколения, которая сейчас используется на более чем 3000 сайтов, поддерживающих очень быструю трассировку лучей в очень больших геометрических моделях (эквивалентых триллионну полигонов). Он внес значительный вклад в разработку и развитие сетевой инфраструктуры ARL, одной из лучших в DoD. Его ранний вклад в развитие TCP/IP и InterNet включает программу PING и маршрут по умолчанию в UNIX, редактирование TCP-IP digest и UNIX-Wizards digest. Г-н. Муусс родился в 1958, получил BES по электротехнике в университете Джона Хопкинса в 1979, и впоследствии получил множество наград и отсылок на свои работы. Является двухкратным победителем U.S. Army Research and Development Achievement Award. Исследовательские интересы Майка Муусса Добро пожаловать! Мои исследовательские интересы: компьютерная симуляция ( геометрическое моделирование, генерация синтетических изображений, трассировка лучей, виртуальная реальность ), передовые архитектуры процессора MIMD, высокоскоростные цифровые сети, а также операционные системы. Моя страсть на данный момент – трассировка лучей в реальном времени с 3-D атмосферой, для создания основанного на физике симулятора “виртуальной реальности”. Я архитектор BRL-CAD, надежной системы моделирования третьего поколения CSG, предоставляемой бесплатно, о которой вы скорее всего не слышали, а также автор ping, ttcp, и прочих различных сетевых лакомств . Ping это маленький тысячестроковый хак, который я написал, и о котором, кажется, знают все. *смешок* Он включен в каждую копию UNIX® и Microsoft Windows95® и WindowsNT®, присутствуя таким образом почти в каждом компьютере на нашей планете. Если вам интересно, моя фамилия произносится “мус”, как животное. В отличие от любого другого документа в Сети, эта страница находится в окончательной форме и является полностью законченной. *смешок* Да, это так! Я автор ping для UNIX. Ping это маленький тысячестроковый хак, который я написал, и о которым слышали практически все. Я назвал его в честь звука, издаваемого эхолотом, вдохновленный самим принципом эхо-локации. В колледже я сделал множество систем моделирования гидролокатора и радиолокатора, поэтому аналогия “Киберпространство” казалось очень удачной. Точно та же парадигма применительно к новой предметной области: ping использует временные пакеты IP/ICMP ECHO_REQUEST и ECHO_REPLY для испытания “дистанции” до целевой машины. Первоначальный импульс для написания мной PING для 4.2a BSD UNIX пришёл от брошенного замечания в июле 1983 доктором Дэйвом Миллзом, когда мы участвовали во встрече DARPA в Норвегии. Он описал некоторые работы, которые он выполнил на своих системах “Fuzzball” LSI-11 для измерения задержки в пути, используя эхо-пакеты ICMP. В декабре 1983 я столкнулся с некоторыми странностями в поведении сети IP в BRL. Вспомнив комментарии доктора Миллза, я быстро написал программу PING program, работавшую на открытом SOCK_RAW AF_INET в стиле ICMP на socket() в стиле Беркли. Код отлично скомпилировался, но он не работал – в ядре не было поддержки сокетов raw ICMP! Возмущенный, я написал поддержку ядра, и всё успешно работало до восхода солнца. Неудивительно, что Чак Кеннеди (“Кермит”) исправил поддержку сетевого аппаратного обеспечения до того как я смог запусить мой самый первый пакет “ping”. Но я использовал его несколько раз с тех пор. *смешок*. Если бы я знал тогда, что это будет мой самый известный достижением в жизни, я бы работал на нем в другой день или два, и добавил еще несколько вариантов. Люди в Беркли охотно забрали мои изменения в ядре и исходные коды PING, и с тех пор он стал стандартной составной частью Berkeley UNIX. Вследствие его свободности, он был впоследствии портирован на множество систем, включая Microsoft Windows95 и WindowsNT. Вы можете узнать его по отличительным сообщениям, которые он печатает, которые выглядят следующим образом: PING vapor.arl.army.mil (128.63.240.80): 56 data bytes В 1993, десять лет спустя после написания мной PING, ассоциация USENIX подарила мне красивый свиток и назвала меня получателем награды ассоциации USENIX – 1993 Lifetime Achievement Award, представленной для группы исследования компьютерных систем (CSRG) университета Беркли в Калифорнии в 1979-1993. “Нам представляется честь наградить глубокие интеллектуальные достижения и высочайший уровень обслуживания для нашего сообщества. Согласно принципам CSRG настоящим мы признаем следующие лица и организации участниками, сотрудниками и сторонниками CSRG” Вот это да! Хотите увидеть исходный код? (40k) С моей точки зрения PING это не акроним от Packet InterNet Grouper, а аналогия с гидролокатором. Тем не менее, я слышал из вторых уст что Дэйв Миллз опубликовал это объяснение имени, поэтому они оба правильны. Что ж, я думаю правительство ошиблось с расширением акронимов! Фил Дэйкстра добавил в PING поддержку ICMP Record Route, но в те ранние дни лишь немногие маршрутизаторы их обрабатывают, что делает эту особенность практически бесполезной. Ограничение на число переходов, которые могут быть записаны в заголовке IP исключается благодаря измерению очень длинных путей. Я безумно ревновал Вана Джэкобсона из LBL, когда он импользовал мою поддержку ICMP ядра для написания TRACEROUTE, понимая, что он может получить сообщения ICMP Time-to-Live Exceeded при пинговании модуляцией IP поля времени жизни – time to life (TTL). Жаль, что я думал об этом! Лучшая история о ping, которую я когда-либо слышал, была рассказана мне на конференции USENIX. Администратору сети для определения обрыва Ethernet соединил программу ping с его программой vocoder, по сути написав: ping goodhost | sed -e ‘s/.*/ping/’ | vocoder Он направил выход vocoder в его офисное стерео и повысил громкость на уровень, который только мог выдержать. Компьютер кричал “Пинг, пинг, пинг…” раз в секунду, и он бродил по зданию, шевеля разъемы Ethernet, пока звук не прекратился. Таким образом он обнаружил место обрыва. Источники информации: Замечания по переводу принимаются.
wikipedia.org
Автобиография
Домашняя страница
К сожалению, Майк Муусс погиб в автокатастрофе 20 ноября 2000.
Его работа живет в завещании его интеллекта и неукротимого духа — Ли А. БатлерИстория программы Ping
64 bytes from 128.63.240.80: icmp_seq=0 time=16 ms
64 bytes from 128.63.240.80: icmp_seq=1 time=9 ms
64 bytes from 128.63.240.80: icmp_seq=2 time=9 ms
64 bytes from 128.63.240.80: icmp_seq=3 time=8 ms
64 bytes from 128.63.240.80: icmp_seq=4 time=8 ms
^C
—-vapor.arl.army.mil PING Statistics—-
5 packets transmitted, 5 packets received, 0% packet loss
round-trip (ms) min/avg/max = 8/10/16
Конечно, реальный traceroute использует дейтаграммы UDP, потому что маршрутизаторы не должны генерировать сообщения ошибок ICMP для сообщений ICMP.
Домашняя страница
en.wikipedia.org
