「パケットを見る」と聞くと難しそうですが、Wiresharkで自分のPCの通信を眺めるだけでも、通信の仕組みが体感できます。始め方を紹介します。
まず自分の通信を見てみる
Wiresharkをインストールし、自分のネットワークインターフェースを選んでキャプチャを開始。ブラウザでサイトを開くだけで、大量のパケットが流れ始めます。「普段こんなにやり取りしているのか」と驚くはずです。
表示フィルタで絞る
流れるパケットは膨大なので、フィルタで絞ります。
dns … DNSの問い合わせ・応答
http … HTTP通信
tcp.port == 443 … HTTPS
ip.addr == 8.8.8.8 … 特定IPとの通信
tcp.flags.syn == 1 … 接続開始のSYN
名前解決を目で追う
dns でフィルタして、ブラウザでサイトを開くと、
- 「このドメインのIP教えて」という問い合わせ
- 「このIPです」という応答
が見えます。教科書で読んだDNSの動きが、目の前で起きているのを確認できます。
3ウェイハンドシェイクを観察する
tcp でフィルタし、接続の始まりを見ると、SYN → SYN/ACK → ACK の3パケットが並びます。TCPが「握手してから通信する」のを、実際のパケットで確認できるのは感動的です。
HTTPのやり取りを覗く
暗号化されていないHTTP通信なら、リクエスト(GET /...)とレスポンス(200 OK)の中身まで見えます。「Webはこうやってページを取ってくるのか」が一目で分かります。
学びになる観察テーマ
- pingを打って、ICMPのechoとreplyを見る
- ページ読み込み時の、DNS→TCP→HTTPの流れを追う
- 再送(
tcp.analysis.retransmission)が起きる様子
注意点
- キャプチャには通信内容が含まれます。他人の通信を勝手に覗くのはNG。自分の通信、自分の環境で。
- 暗号化通信(HTTPS)は中身が見えません(ヘッダやハンドシェイクは見える)。
まとめ
Wiresharkは「ネットワークのレントゲン」ですが、最初は自分の通信を眺めるだけで十分学びになります。DNS・TCPハンドシェイク・HTTPの流れを目で追うと、教科書の知識が実体を持ちます。まずは自分のPCで、サイトを1つ開く様子をキャプチャしてみてください。