通信内容を覗いてみる

たまに、サーバーとクライアントの通信内容を詳細に知りたいときがありますよね。

HTTPプロトコルのレベル、クライアントが Firefox でヘッダだけで良ければ

Tamper Data プラグイン がお手軽

HTTPプロトコルのレベル

http://ws.apache.org/axis/ の Axisライブラリーの中の TCP Monitor

使い方は

java -cp axis.jar  org.apache.axis.utils.tcpmon

サーバーがポート3000 で動いている場合、以下のように設定するとポート 3000 と 3001 の間の流れを表示してくれます。
当然、クライアントからは 3001 ポートにアクセスします。

ただし、文字コードUTF-8 以外だと化けます ^^);

TCP/IP レベルで見る

UNIX系の定番ツール tcpdump

ローカル、ポート3000 で動いている場合は以下のようなコマンドで通信内容が見れます。

% sudo tcpdump -i lo0 -nX -s 2000 port 3000

14:58:09.730833 IP 192.168.1.40.3000 > 192.168.1.40.49943: P 276:788(512) ack 831 win 65535 <nop,nop,timestamp 1001780813 1001780813>
        0x0000:  4500 0234 55bd 4000 4006 0000 c0a8 0128  E..4U.@.@......(
        0x0010:  c0a8 0128 0bb8 c317 9ffc f6f3 c0f3 33b4  ...(..........3.
        0x0020:  8018 ffff 85c7 0000 0101 080a 3bb5 f64d  ............;..M
        0x0030:  3bb5 f64d 3c68 746d 6c3e 0a3c 6865 6164  ;..M<html>.<head
        0x0040:  3e0a 3c74 6974 6c65 3ee6 97a5 e8a8 983c  >.<title>......<
        0x0050:  2f74 6974 6c65 3e0a 3c2f 6865 6164 3e0a  /title>.</head>.

データには TCP/IP のヘッダーなども含まれているので注意して下さい。