1.FTPの概要
・FTP(File Transfer Protocol)とは、言葉の通り、ファイル(File)を転送(Transfer)するプロトコル(Protocol)です。
・FFFTPなどの、FTPクライアントから、FTPサーバに対し、ファイルをアップロードおよび、ダウンロードします。
ftp

・FTPはHTTPとは異なり、ステートフルと言われる。FTPは制御ポート21番があるので、コネクションを管理することができる。
・21番ポートが制御用ポート。20番ポートがデータ転送用ポート
・FTPは、データが平文で流れるだけでなく、認証データ(ID/パスワード)も平文で流れる。つまり、セキュリティ的にはふさわしくない。
・そこで、セキュリティの高いFTPとしてSFTP(SSH Flie Transfer Protocol)があり、FTP通信をSSHで暗号化する。
・過去問では、「1台のクライアントと1台のサーバ間でのFTPを用いたファイル転送では、二つのコネクションを用いてデータ転送を行う。これら二つのコネクションはデータ転送用と制御用に分かれており、データ転送中でも制御コマンドを送信することが可能である。(H19NW午前 問34)」と述べられている。

2.FTPのシーケンス
 
1)Client→Server FTPの制御 宛先Port21
2)Client←Server FTPのデータ送信 送信元Port20 
※宛先Portが20と思っていたが、実は送信元(サーバ側)であった。キャプチャして確認した。
Clientのどのポートにアクセスするかは、事前にPORTコマンド(?)が送られて通知される。

通常モード(Activeモード)の場合、サーバからクライアントに対して通信が行われる。
PassiveモードならクライアントはFTPに対して20番ポートでアクセスするが、通常モードならサーバは何番ポートにアクセスすればよいのか?
それを通知するのがPORTというパケットである。
実際にFTPでgetコマンドを実行すると、以下のようにPORTというパケットが送られているのがわかる。

ftp> get aaa.txt
200 PORT command successful.
150 Opening ASCII mode data connection for aaa.txt
226 Closing data connection.
ftp: 803 bytes received in 0.00Seconds 803000.00Kbytes/sec.

※WindowsXPのコマンドプロンプトでは、標準ではPASVモードに行けない。ソフトを入れる必要がある。IEではオプションの設定でできる。

3.FTPのPassiveモード
FTPのデータ通信は、ServerからClientに向けて通信が行われる。社外のFTPサーバの場合、この通信は外部から内部への通信なので、Firewallで拒否される場合がある。(最近のFirewallは対応しているものも多いが)
そこで、FTPのデータ通信をClient側から送るモードがあり、それがPassiveモードである。