Главная страница

История программы PING. Ping для unix. Ping это небольшая программка длиной всего в сотню строк, которую я написал за один вечер и о которой почти все наверняка знают.


Скачать 27,5 Kb.
НазваниеPing для unix. Ping это небольшая программка длиной всего в сотню строк, которую я написал за один вечер и о которой почти все наверняка знают.
АнкорИстория программы PING.doc
Дата18.11.2016
Размер27,5 Kb.
Формат файлаdoc
Имя файлаIstoria_programmy_PING.doc
ТипДокументы
#6285
Каталогtopic30666517_27030103

С этим файлом связано 3 файл(ов). Среди них: ProgrammingGroundUp-1-0-booksize.pdf, Istoria_programmy_PING.doc, Ten_Things_I_Hate_About_Object-Oriented_Program.pdf, Istoria_programmy_PING.pdf.
Показать все связанные файлы



История программы PING
Все верно, я — автор программы ping для UNIX. Ping — это небольшая программка длиной всего в сотню строк, которую я написал за один вечер и о которой почти все наверняка знают. :-)
Я назвал ее в честь звука, издаваемого гидролокатором. В колледже я много занимался моделированием гидроаккустических и радиолокационных систем, так что аналогия с “Киберпространством” казалась весьма уместной. В ping используется та же идея: равномерно посылать IP/ICMP-пакеты ECHO_REQUEST и ECHO_REPLY, чтобы измерить “расстояние” до целевого компьютера.
Мое первоначальное желание написать ping для 4.2a BSD UNIX возникло после небрежного замечания Дэвида Миллса, сделанного им в июле 1983 года на заседании DARPA в Норвегии, о проделанной им работе в замере задержки прохождения ICMP пакетов в системах Fuzball LSI-11.
В декабре 1983 года я столкнулся со странным поведением сети в Лаборатории Баллистических Исследований. Вспоминая замечания Миллса, я быстро закодил ping, которая открывала сырой ICMP сокет. Код без проблем скомпилировался, но не работал — в ядре не было поддержки сырых ICMP сокетов! Возмущенный, я закодил и ее, таким образом заставив все работать до утра. Неудивительно, что Чак Кеннеди уже исправил проблемы с сетью до того, как я отправил первый пакет “ping”. Позже, однако, я использовал свою программу несколько раз. *Усмехаясь* Если бы я только знал, что это будет самым большим достижением в моей жизни, я бы поработал над ней еще пару дней и добавил несколько опций.
Парни из Беркли охотно приняли мои изменения в ядре и исходники ping, так что с тех пор они являются стандартной частью Berkeley UNIX. Поскольку ping была бесплатной, ее портировали на множество других платформ, включая Microsoft Windows 95 и Windows NT. Вы можете определить это по характерным сообщениям, которые выглядят примерно так:
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 Lifetime Achievement Award, вручаемую исследовательской группе университета Беркли. “Вручается за основательное интеллектуальное достижение и беспримерную услугу нашему сообществу. По распоряжению руководителей исследовательской группы мы таким образом признаем нижеследующие лица и организации помощниками и участниками исследовательской группы...”. Вот это да!
Кстати, хотите увидеть исходники? (40k)
С моей точки зрения, “ping” – это не акроним для Packet InterNet Grouper, а аналогия с гидролокатором. Хотя кто-то говорил мне, что Дейв Миллс использовал именно такое объяснение, так что, возможно, мы оба правы. Черт, а я-то думал правительство занимается растягиванием акронимов! :-)
Фил Дайкстра добавил поддержку record route в ping, но в те далекие времена лишь немногие роутеры обрабатывали их, что делало эту фичу бесполезной. Ограничение на количество прыжков, записываемых в заголовок IP пакета, препятствовало отслеживанию очень длинных маршрутов.
Я безумно завидовал Вану Якобсону из Национальной лаборатории имени Лоуренса в Беркли, когда тот использовал мой код поддержки ICMP в ядре, чтобы написать traceroute. Он понял, что может получать ICMP Time-To-Live exceeded сообщения, изменяя поле TTL IP-пакета. Ну почему я не додумался до такого! :-) Конечно, на самом деле traceroute использует дейтаграммы UDP, поскольку роутеры не должен генерировать сообщение об ошибке в ответ на ICMP-сообщения.
Самую лучшую историю о ping мне рассказали на конференции USENIX: сетевой администратор с проблемной Ethernet сетью связал ping с устройством для синтеза речи, написав, по существу, следующее:
ping goodhost | sed -e 's/.*/ping/' | vocoder
После он подключил выход синтезатора к колонкам в офисе и выкрутил громкость до предела. Компьютер стал выкрикивать “Ping, ping, ping” каждую секунду, а администратор пошел проверять каждый Ethernet коннектор в здании. В тот момент, когда компьютер умолк, пробой в сети был найден.

Ссылка: http://ftp.arl.army.mil/

mike/ping.html

Оригинал: Mike Muuss, Перевод: Антон Белый


перейти в каталог файлов
связь с админом