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
のオプションも少しずつ理解を深めていけそうです。ネットワーク経路なども選択できるようで、その辺りを使いこなしていきたいです。