久々にパケットキャプチャをやってみた
初めてパケットキャプチャをしたのは大学2年の時で、ソケット通信のプログラムを作る課題が出た時、 自主課題としてパケットの解析結果的なのを載せるためにやった気がする。
その時はtcpdumpを使ったけど、今回はwiresharkを使う。
初日の成果でも書いてみる。
アカマイすげー
やはり前とやった時と同じく、何もやってない状態でもアカマイ、アマゾン、アップルとの通信は頻繁にやってる。
アップルはアカマイの顧客だけど、アップル以外っぽいエッジサーバーとも通信しているパケットも何度か見かけた。(LINEもアカマイを使っているというのを何処かで見た覚えがある)
TCPのハンドシェイクの確認ができた
TCPの開始・終了時のハンドシェィクは確認できた。 ちょっと意外だったのが、終了時のFIN,ACKパケットをクライアント側からではなく、サーバー側から投げられたこと。
HTMLのリクエストのための接続でしたが、サーバー側が一通りデータを送り終わった後、 「もう終わったから接続切りますね〜」的な切断をサーバー側から始めたのだろうか?通常解説書などでは、常にクライアント側からFIN,ACKパケットを送るような図になっていると思うのだが。。。
まだこの辺は知識が薄いので何が起こっているか不明。
動画サイトはUDP通信を利用していない?
動画サイトとの通信は基本UDPでやっていると思っていたのでちょっと驚き。 ネットで調べてみたら、パケットキャプチャ初心者が通る通過儀礼的なものらしいw (このことに関する質問などが山のように見つかる。)
ちなみに手元のアプリケーションでUDPが確認できたのはFaceTime(ビデオチャット)のみでした。
流れる情報が多すぎる。
リアルタイムのパケットを眺めているとオメーはツイッターの人気タグかよ。ってくらいの勢いでパケットが流れる。 まぁTCPのハンドシェィクだけで7回もパケット流れるわけですし。 プロトコルはTCPだけでなく多種多様なものが流れている。(NBNS,SSDP,DBなんとかは初見)
またIPv6の通信が結構行われている。ただしHTMLとの通信は確認できる範囲では全てipv4だった。 確かipv6でHTTP通信をするには、クライアント側にしかるべき設定をしてからipv6ように用意されたサイトにアクセスする必要があったような気がする。
ipv6を使ったhttp通信のキャプチャも今後挑戦してみたい。
まぁわからないことだらけだけど、初日はこんなもん、ということで。
便利なサイト一覧
キャプチャ中に頼りになったサイトでも貼っておく
MACアドレスのベンダーアドレスを調べる
基数変換