понедельник, 25 апреля 2011 г.

Ping

ping для диагностики работы сети многие используют в первую очередь. Это эффективная и довольно простая программа. Задумывались ли вы когда-нибудь, кто её написал?
Недавно я начал читать книгу Ивана Склярова "Программирование боевого софта под Linux". Первой утилитой, которую предлагает написать автор, является альтернативная версия ping. Прочитав man ping, в конце документа я обнаружил следующее:

HISTORY
The ping command appeared in 4.3BSD.

The version described here is its descendant specific to Linux.
И всё. Ни слова об авторе. Досадное недоразумение, которое я решил исправить (тем более, что не нашёл в рунете никакой информации о нём).
Итак, о создателе ping.


wikipedia.org


Майкл Джон Муусс (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.

Домашняя страница

Исследовательские интересы Майка Муусса
К сожалению, Майк Муусс погиб в автокатастрофе 20 ноября 2000.
Его работа живет в завещании его интеллекта и неукротимого духа -- Ли А. Батлер

Добро пожаловать! Мои исследовательские интересы: компьютерная симуляция ( геометрическое моделирование, генерация синтетических изображений, трассировка лучей, виртуальная реальность ), передовые архитектуры процессора MIMD, высокоскоростные цифровые сети, а также операционные системы. Моя страсть на данный момент - трассировка лучей в реальном времени с 3-D атмосферой, для создания основанного на физике симулятора "виртуальной реальности".

Я архитектор BRL-CAD, надежной системы моделирования третьего поколения CSG, предоставляемой бесплатно, о которой вы скорее всего не слышали, а также автор ping, ttcp, и прочих различных сетевых лакомств . Ping это маленький тысячестроковый хак, который я написал, и о котором, кажется, знают все. *смешок* Он включен в каждую копию UNIX® и Microsoft Windows95® и WindowsNT®, присутствуя таким образом почти в каждом компьютере на нашей планете.

Если вам интересно, моя фамилия произносится "мус", как животное.

В отличие от любого другого документа в Сети, эта страница находится в окончательной форме и является полностью законченной. *смешок*

История программы Ping


Да, это так! Я автор 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
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

В 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). Жаль, что я думал об этом! :-) Конечно, реальный traceroute использует дейтаграммы UDP, потому что маршрутизаторы не должны генерировать сообщения ошибок ICMP для сообщений ICMP.

Лучшая история о ping, которую я когда-либо слышал, была рассказана мне на конференции USENIX. Администратору сети для определения обрыва Ethernet соединил программу ping с его программой vocoder, по сути написав:

ping goodhost | sed -e 's/.*/ping/' | vocoder

Он направил выход vocoder в его офисное стерео и повысил громкость на уровень, который только мог выдержать. Компьютер кричал "Пинг, пинг, пинг..." раз в секунду, и он бродил по зданию, шевеля разъемы Ethernet, пока звук не прекратился. Таким образом он обнаружил место обрыва.

Источники информации:
Домашняя страница
en.wikipedia.org

Замечания по переводу принимаются.

1 комментарий:

Анонимный комментирует...

Пожалуй лучшая история про ping. Согласен.