7.4 File Transfer Protocol(FTP)

ファイルを転送するためのプロトコルが FTP です。FTPでは双方向にデータを転送 出来るようになっており、特にデータを連続して転送したり、ファイル名を確認し ながら転送したり出来るように、コマンドとその結果のやり取りのために21番ポート を使い、実際のデータを転送するためには20番ポートを使います。FTPをコマンド レベルで使うことは少なくなりつつありますが、WWW のダウンロードサイトで ftp:// のようなリンクがあれば、それはFTPを使ってファイルをダウン ロードするという意味です。

FTPでは、このようにデータ転送のために別のコネクションを利用するために、 少し変わった方法を取っています。それは、通常アクティブモードと呼ばれ、 この方法では、サーバ側からクライアント側に接続を別に作ります。 この場合、クライアント側 のポート番号をサーバ側が分からないと困るので、21番ポートのコントロールライン のコネクションを使ってサーバ側にクライアントの待ち受けポートを通知し 、その情報に基づいてサーバからクライアントに向かって転送用コネクション が作られます。これは、 初期のファイアーウォールで問題になりました。何故ならば、通常 ファイアーウォールでは外から内への(つまり、今の場合はサーバからクライアント への)通信は一般に禁止しているからです。更に、NATを使っている場合には致命的 で、クライアントから通知した筈のポートは、NATは知らないことになりますから、 NATの所でアクセスを拒否されたのでした。現在では、多くのファイアーウォールや NATはFTPのプロトコルを直接覗き見することで対応をしていますが、まれに対応 していない場合には次のパッシブモードを使う必要があります。

FTPのデータ転送で、サーバからクライアントに接続を張るのは少し問題がある場合 に使われるのがパッシブモードです。パッシブモードでは、クライアントからサーバ に接続が張られるようになっているので、上記のような問題は生じないのです。

参考
最近のftpコマンドやツールは、このアクティブやパッシブを自動的に 調整するようになりつつあります。デフォルトではパッシブを使って、サーバが 対応していない場合にアクティブに切り替えたりするようになってきています。 パッシブの場合には、サーバからクライアントに待ち受けポートが通知され、 クライアントからそのポートに対してコネクションを張るために、どちらも プライベートポートが利用されます。



Noriyo Kanayama