ushumpei’s blog

生活で気になったことを随時調べて書いていきます。

pingを知ろう

こんにちは。

シンプルなものって素敵ですよね。自分が好きなものは包丁とまな板です。大工道具もなかなか素敵です。

本当のところはよくわかってないですが、今日はシンプルそうで、使いこなせるとカッコ良さそうな、pingコマンドについてメモしました。(BSD

ping(píŋ)とは?

まずはターミナルからman pingを実行してマニュアルを確認します。

NAME
     ping -- send ICMP ECHO_REQUEST packets to network hosts

ICMPとはInternet Control Message Protocolの略で、IP通信の制御や通信状態の調査などを行なうためのものです。
ECHO_REQUESTとは「エコー要求」と訳されていて、通信可能なら応答するよう要求するICMPのメッセージの一種です。

pingはICMPでネットワークホストにエコー要求パケットを送るコマンド、 つまりネットワークを通して「大丈夫ですか?」と聞くコマンドということみたいです。

オプション

単純にping XXX.XXX.XXX.XXXを実行すると、XXX.XXX.XXX.XXXへパケットが送られ続けます。制御するオプションの一部をメモします。

オプション 内容
-c count count回のパケット送信を行った後停止する
-i wait パケット送信毎にwait秒の間隔(interval?)待機する
-t timeout timeout秒過ぎたら停止する
-W waittime 応答がwaittime秒過ぎたら画面表示しない(最終的には遅れた応答も統計情報として反映はする)

パケットが見たい

-p patternというオプションでは送信するパケットの内容を変更できるようです。 しかしターミナルからはパケットの内容は見えないため(やり方があるのかもしれませんが)、確認できません......
それだとちょっと寂しいので、脱線してOS Xでパケットを見る方法をメモしておきます。

wireshark

ネットワークプロトコル解析ツールのwiresharkを使えばいいようです。オプションなしでhomebrewでインストールするとguiが無いようなので--with-qtをつけてコマンドを打ちます。

brew install wireshark --with-qt

インストールの仕方が悪かったのか、うまく動きませんでしたが、sudo /usr/local/Cellar/wireshark/バージョン/bin/Wiresharkで直接起動したらいけました。

wi-fiを選択して、icmpでフィルタします。あとは試しにping -p ff 外部のIPとして見ると、icmpのrequestとreplyが交互に表示されました。 パケットの中身を見るとffがたくさん並んでいて、-pオプションも効いています!

感想

とりあえずパケットの中身が見れて満足です。これでpingのオプションも少しずつ理解を深めていけそうです。ネットワーク経路なども選択できるようで、その辺りを使いこなしていきたいです。