🦆

【Network】世界一有名な ping コマンドの絵本

に公開

pingコマンドの解説本が絵本で!? 技術者のユーモア炸裂

今回はぼくたちがいつも使ってる Internet のお話なのだ。

Internet って、だれか一人が独り占めしてるものじゃなくて、みんなが参加できるオープンな場所にしようという素晴らしい精神があって日々大きくなっていってるんだ。

この「オープン」という性質はそれはみんなで監視できるっていうことでもあるのだ。つまり何か障害が発生したときに、みんなで何が問題なのかを確認できる..これって実はすごいことなのだ。

その Network 診断で活躍するのが、ping コマンドという便利なtoolなのだ。

ping コマンド開発者の web ページ 「The Story of the PING Program」の紹介

Mike Muuss氏

ping コマンドを開発したのは Mike Muuss 氏なのだ。
そして、その開発に至った経緯が「The Story of the PING Program」という Web ページに今も残っているのだ。

このページは、彼が所属していたアメリカ陸軍研究所(United States Army Research Laboratory)の FTP server 上で今も公開されているのだ。
https://ftp.arl.army.mil/~mike/ping.html

とっても面白い内容だからみんなにもぜひ読んでほしいのだけど、Mike Muuss 氏は「PINGのsource codeをみんなで使っていいのだ!」ってオープンソースにしてくれたから、ぼくたちが使ってる Windows とか Mac の OS にも最初から入ってたりして、いつもすぐそばにある便利なツールなのだ。

そしてね、ここから今回の記事の本題なんだけど、実は ping のとっても有名な絵本があるのだ!

1933年出版の絵本「The Story About Ping」の紹介

絵本 The Story About Ping

1933年ってかなり前に出版された「The Story About Ping」っていう絵本なのだ。

物語は、中国の揚子江に住んでるアヒル、Ping くんの冒険のお話。
そう、実はこの絵本は ping コマンドではなく同じ名前の ping くんというキャラクターのお話。

でも、とっても興味深いことにこの絵本が The Story About Ping というタイトルなもんだから、随分と昔だけど ping コマンドの解説本として盛り上がったことがあるんだ。

ぜひ、このAmazonのBookレビュー を見てみてほしいのだ。

話題の Book レビューの一部紹介

せっかくなので今回さっき紹介したレビューの和訳をここに置いておくのだ。

Using deft allegory, the authors have provided an insightful and intuitive explanation of one of Unix’s most venerable networking utilities. Even more stunning is that they were clearly working with a very early beta of the program, as their book first appeared in 1933, years (decades!) before the operating system and network infrastructure were finalized.

巧みなallegory(寓話)を用いて、著者たちはUnixの最も古くからあるnetworking utilityの一つについて、洞察に満ちた直感的な説明を提供してくれた。さらに驚くべきは、彼らが明らかにそのprogramの非常に初期のbeta版を使って作業していたということだ。なぜなら、彼らの本が最初に出版されたのは1933年、operating systemとnetwork infrastructureが完成する何年も(何十年も!)前のことだからだ。

The book describes networking in terms even a child could understand, choosing to anthropomorphize the underlying packet structure. The ping packet is described as a duck, who, with other packets (more ducks), spends a certain period of time on the host machine (the wise-eyed boat). At the same time each day (I suspect this is scheduled under cron), the little packets (ducks) exit the host (boat) by way of a bridge (a bridge). From the bridge, the packets travel onto the internet (here embodied by the Yangtze River).

この本は、子供でさえ理解できる言葉でnetworkingを説明しており、その根底にあるpacket構造を擬人化するという手法を選んでいる。ping packetは一羽のアヒルとして描かれており、他のpackets(他のアヒルたち)と共に、一定期間をhost machine(賢い目をしたボート)の上で過ごす。毎日同じ時刻に(私はこれがcronでscheduleされているのだと推測する)、小さなpackets(アヒルたち)はbridge(橋)を通ってhost(ボート)を出ていく。橋から、packetsはinternet(ここでは揚子江として具体化されている)へと旅立つ。

The title character – er, packet, is called Ping. Ping meanders around the river before being received by another host (another boat). He spends a brief time on the other boat, but eventually returns to his original host machine (the wise-eyed boat) somewhat the worse for wear.

表題のcharacter、いや、packetは、Pingと呼ばれている。Pingは川をうろつきまわった後、別のhost(別のボート)に受信される。彼はその別のボートで短い時間を過ごすが、最終的にはいくぶん消耗して、元のhost machine(賢い目をしたボート)へと戻ってくる。

If you need a good, high-level overview of the ping utility, this is the book. I can’t recommend it for most managers, as the technical aspects may be too overwhelming and the basic concepts too daunting.

もしping utilityの良い、high-levelな概観が必要なら、この本がそれだ。ほとんどのmanagerにはお勧めできない。technicalな側面があまりに圧倒的で、基本的なconceptが難しすぎるかもしれないからだ。

As good as it is, The Story About Ping is not without its faults. There is no index, and though the ping(8) man pages cover the command line options well enough, some review of them seems to be in order. Likewise, in a book solely about Ping, I would have expected a more detailed overview of the ICMP packet structure.

これほど素晴らしい出来ではあるが、『The Story About Ping』に欠点がないわけではない。index(索引)がない。そして、ping(8)のman pageがcommand line optionsを十分に解説しているとはいえ、それらの何らかの概説があってしかるべきだろう。同様に、Pingだけを扱った本なのだから、ICMP packet構造についてもっと詳細な概観を期待していただろう。

But even with these problems, The Story About Ping has earned a place on my bookshelf, right between Stevens’ Advanced Programming in the Unix Environment, and my dog-eared copy of Dante’s seminal work on MS Windows, Inferno. Who can read that passage on the Windows API (“Obscure, profound it was, and nebulous, So that by fixing on its depths my sight – Nothing whatever I discerned therein.”), without shaking their head with deep understanding. But I digress.

しかし、これらの問題があったとしても、『The Story About Ping』は私の本棚に場所を確保した。Stevensの『Advanced Programming in the Unix Environment』と、私の読み古したDanteによるMS Windowsに関する独創的な著作『Inferno』の間に。Windows APIに関するあの一節(「それは暗く、深く、そして漠然としていた。その深淵に視線を据えども――そこには何物をも見出すことはできなかった。」)を、深い理解と共に首を振ることなく読める者がいるだろうか。話が逸れてしまった。

このレビューを書いた人ははアヒルの Ping くんの冒険を network の言葉に置き換えて読み解いてる。ぼくは感動しちゃったのだ。他にも面白いレビューがあったから見てみるととっても面白いのだ。

ちなみに ping という名前の由来は?

アヒルの ping くんとは関係ない(当然なのだw)

開発者の Mike Muuss 氏がこの名前を付けたのは、潜水艦が敵を見つけるために使う SONAR(ソナー)の音から来ているって書いてあるのだ。

I named it after the sound that a sonar makes, inspired by the whole principle of echo-location.
https://ftp.arl.army.mil/~mike/ping.html

SONAR は「ping!」という短い音波を発信して、それが何かに当たって跳ね返ってくるまでの時間や音で、相手の位置や距離を知る仕組み。

どうも、ping コマンドが、特定の computer に対して ICMP (Internet Control Message Protocol) という小さな packet を送り、それに対する応答 (Reply) が返ってくることで接続を確認する仕組みということで、これが SONAR の原理がそっくりだったから、「ping」と名付けられたとのことなのだ。

こっちのエピソードもとっても面白いのだ!

番外編: 揚子江についてなのだ!

さて、なんで今回ブログを書いたかといったら実はぼくはひまわりの種より川が大好きなんだ。
だから ping コマンドについて調べてたら何故か川の絵が描かれた絵本が紹介されてたので思わず飛び付いちゃったんだ。

川の名前についてなのだ

今回絵本でアヒルの Ping くんが旅した「揚子江」は中国を西から東にずーっと旅して流れる大きな川。そしてこの揚子江という名前は実は、もともと河口の近く、揚州っていう場所のあたりだけを指すローカルな名前だったのだ。

それが日本では長江 (Yangtze River)の川全体の名前として使われるようになった。

だから、「揚子江」は「長江 (Yangtze River)」と同じ川のことだと思ってもらいたいのだ。

ちなみに、川の名前が場所によって全然違う名前がついてるのは結構あるあるなのだ!

大河川の大冒険なのだ

今回絵本のレビューにも出てきたこの長江 (Yangtze River)は、全長約6,300 km! はるか西の青海省の高原から生まれて、東シナ海に向かって、すごーく長い旅をするのだ。そしてぼくはこの川の冒険に想いを馳せるのだ大好きなのだ。

どうしてこの流れなんだろう? なんでここで急に曲がってるんだろう? この川のそばでは、どんな文明が生まれたんだろう?...あらやっぱ川のそばには町がある..なーんて、川を考えるのは楽しいのだ。

もうちょっとだけ話を続けさせてはしいのだ。

というのも、川ってね、長い旅路でたくさんの仲間たちと出会って、どんどん大きくなっていくのが基本。なので、Yangtze Riverが旅の途中で合流する仲間たち (Major tributaries)を紹介せずならいられないのだ。

  • Yalong River (雅礱江)
  • Min River (岷江)
  • Jialing River (嘉陵江)
  • Han River (漢江)
  • Gan River (贛江)
  • Wu River (烏江)

この仲間たちにも当然それぞれの川の冒険があって..考えるだけでワクワクしちゃうのだ。

そしてね、そんな楽しい妄想をするのに、絶対に欠かせないのが地図。
色々な地図があるけど、ぼくが特に大好きなのが、川のスタート地点、「源流」がしっかり描かれている地図なんだ。川の冒険を語るなら、その始まりの物語を忘れちゃいけないからね!

例えばこの地図なんか僕はとっても大好きなのだ
https://v.greattibettour.com/photos/202003/major-rivers-resourced-in-tibet-20379.jpg

もうちょっとお話したいけどまた別の機会に。

ここまで読んでくれてありがとうなのだ!

Discussion