weblog of key_amb

主にIT関連の技術メモ

tcpdumpの出力の見方

TCPパケットの場合

例として次のようにtcpdumpコマンドを実行して、出力が得られた場合を取り上げる。

hostname:~# tcpdump host hotta and port www
11:26:59.113561 hotta.1036 > server2.www: S 120396:120396(0) win 8192  (DF)
11:26:59.113561 server2.www > hotta.1036: S 1610721549:1610721549(0) ack 120397 win 31744 
11:26:59.113561 hotta.1036 > server2.www: . ack 1 win 8760 (DF)
11:26:59.473561 hotta.1036 > server2.www: P 1:313(312) ack 1 win 8760 (DF)
11:26:59.483561 server2.www > hotta.1036: P 1:173(172) ack 313 win 31744 (DF)
11:26:59.623561 hotta.1036 > server2.www: . ack 173 win 8588 (DF)
11:26:59.813561 hotta.1036 > server2.www: P 313:671(358) ack 173 win 8588 (DF)
11:26:59.813561 server2.www > hotta.1036: P 173:345(172) ack 671 win 31744 (DF)
11:26:59.923561 hotta.1036 > server2.www: . ack 345 win 8416 (DF)
11:27:14.803561 server2.www > hotta.1036: F 345:345(0) ack 671 win 31744
11:27:14.803561 hotta.1036 > server2.www: . ack 346 win 8416 (DF)

左から順に、以下の通りである。

順番 意味 フォーマット,詳細
1 時刻 HH:MM:SS.マイクロ秒
2 送信元アドレス ホスト名(またはIPアドレス).ポート番号
3 矢印 >
4 宛先アドレス ホスト名(またはIPアドレス).ポート番号
5 フラグ S:SYN(コネクション確立要求)
P:PUSH(バッファリングせず、即時にデータを送るようTCPに要求)
F:FIN(コネクション開放要求)
R:RST(コネクション強制切断要求)
.:上記いずれのフラグビットも立っていない
6 シーケンス番号 s1:s2(s3)(*1)
s1:新しいデータの最初のバイトに対する(バイト単位の)シーケンス番号
s2:(今までに送った最後のバイトに対するシーケンス番号)+1
s3:バイト数
7 ACKビット ack:ビットが立っており、 次のフィールドがACK番号であることを示す(*2)
8 ACK番号 (*2)
9 ウィンドウ win:次のフィールドがウィンドウサイズであることを示す
10 ウィンドウサイズ
11 フラグメント禁止 (DF):フラグメント(パケット分割)禁止ビットON
  • (*1) ACKだけを単独で送信する場合は、このフィールドはない
  • (*2) ACKビットが立っていない場合は、このフィールドはない

この出力フォーマットは、TCPパケットのフォーマットと密接な関係があるので、その内そちらもまとめるつもり。

参考