インストール
現在は、brewで入るらしい。
$ brew install wireshark --with-qt
なんか、インターフェイスリストが空になってしまうバグが有るらしいので、以下のコマンドを打って直す。
$ curl 'https://bugs.wireshark.org/bugzilla/attachment.cgi?id=3373' -o ChmodBPF.tar.gz
$ tar zxvf ChmodBPF.tar.gz
$ open ChmodBPF/Install\ ChmodBPF.app
起動してみる
$ wireshark
でGUIが開く。
特定の通信を見てみる
例として、https://api.github.com
への通信を見てみる
準備
$ nslookup api.github.com
をして、api.github.com
のIP Addressを取得する。
Name: api.github.com
Address: 192.30.252.125
とわかる。
パケットフィルタとして、こことの通信だけを見たいので
ip.dst==192.30.252.125||ip.src==192.30.252.125
とすれば良いことがわかる。
実は、api.github.comのipはすぐ変わってしまうので、ホスト名指定のip.dst_host
とかを使いたかったが上手くいかなかった。ipで指定しておくのが無難そう。
実践
この状態で
$ curl https://api.github.com
と打つと以下のようになる
上の部分だけ頑張って切り貼りした画像作った。通信の流れの一覧は以下のようになっている。
TCPの3ウェイ・ハンドシェイクやHTTPSの鍵交換などが行われているのもよく分かる。
最後の方にRSTパケットが送られているが、FINを送った後ずっと定期的にRSTを送る仕様になってるみたい。2回目に同じことをやったら個々の部分だけ少しだけ順番が違った。
これは練習なので、ここまでで終わりとしますが、httpsの通信の詳細や、ここで最後にエラーが出ているのは「SSLキャッシュが効いているから」みたいな話は以下のブログが詳しかったです。
http://d.hatena.ne.jp/ozuma/20140413/1397397632