FTPの通信をパケットキャプチャーしてみよう。
FTPの通信をパケットキャプチャーしてみよう。
参考URL
サーバ:Linuxサーバ
サーバ側でキャプチャーしてみました。
■FTP編
FTP基本:21番ポートが制御用
20番ポートがデータ用
コマンド:tcpdump port 20 or port 21
①まずクライアント側から サーバ側の21番ポートに対して、Flagが [S] SYN(コネクション確立要求)です。
シーケンス番号は「2155816753」windowサイズが8kb
17:36:16.965909 IP 192.168.3.2.49624 > 192.168.3.150.ftp: Flags [S], seq 2155816753, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
②次に、サーバ側の21番ポートから同様にFlags [S.](コネクション確立要求)です。なんで[S.]があるんだろう??
ACKがあることは、SYNに対する確認応答です。ACKは「2155816754」で+1されています。
17:36:16.965984 IP 192.168.3.150.ftp > 192.168.3.2.49624: Flags [S.], seq 2742584544, ack 2155816754, win 14600, options [mss 1460,nop,nop,sackOK,nop,wscale 7],
③フラグがなくなりました。ただしクライアント側からもきちんとACKしていますね。
ackの「1」は見やすくしているためで、本当は、+1しているので「2155816755」です。(余計にわかりにくいな。。。)
※ちなみにtcpdump に -S オプションをつけるとそのままのシーケンス番号を表示してくれる。
17:36:16.966903 IP 192.168.3.2.49624 > 192.168.3.150.ftp: Flags [.], ack 1, win 256, length 0
④21番ポートから20バイトのデータが送信されている。開始シーケンスと終了シーケンスが記載されている。
seq 1:21は"開始シーケンス番号:終了シーケンス番号" という意味らしい。納得。
1+20は21という感じかな
ちなみに、PはPUSH(バッファリングせず、即時にデータを送るようTCPに要求)
マスタリングTCP/IPには、Pがある場合は、バッファリングしてはならない。即座にデータを送信する必要あり。
17:36:16.970634 IP 192.168.3.150.ftp > 192.168.3.2.49624: Flags [P.], seq 1:21, ack 1, win 115, length 20
⑤次はクライアント側から13バイト送信している。
そのためシーケンス番号はseq 1:14で納得。ackもしており、21までokって。双方向通信だな。
17:36:16.975339 IP 192.168.3.2.49624 > 192.168.3.150.ftp: Flags [P.], seq 1:14, ack 21, win 256, length 13
⑥サーバ側から14番ack。今更だけど「.」(ドット)はフラグなしみたい。
17:36:16.975362 IP 192.168.3.150.ftp > 192.168.3.2.49624: Flags [.], ack 14, win 115, length 0
途中省略
⑦次にftp-dataからのコネクションのSYNパケットが開始される。
クライアント側から21番ポートにSYNを送って通信は開始されるが
20番ポートの場合は、サーバ側からSYNパケットが始まるんだ。今回はクライアント側からのPUTにも関わらず、、
17:36:17.035540 IP 192.168.3.150.ftp-data > 192.168.3.2.49625: Flags [S], seq 1545207833, win 14600, options [mss 1460,sackOK,TS val 93797 ecr 0,nop,wscale 7],
⑧これはseqが+1されているので問題なし。
17:36:17.036495 IP 192.168.3.2.49625 > 192.168.3.150.ftp-data: Flags [S.], seq 1 482706172, ack 1545207834, win 8192, options [mss 1460,nop,wscale 8,sackOK,TS va l 122508 ecr 93797], length 0 length 0
⑨それでデータ転送が開始されていきます
17:36:17.036514 IP 192.168.3.150.ftp-data > 192.168.3.2.49625: Flags [.], ack 1, win 115, options [nop,nop,TS val 93798 ecr 122508], length 0