不定期日記
2003-05-11 (Sun) [長年日記]
_ FTPのPORTコマンド、PASVモードについての備忘録
FTPのPORTコマンドやPASVモードについてです。
通常、インターネット上のサービスを利用する場合には、クライアント側(自分のパソコン)からサーバー側(Webサーバー、FTPサーバーなど)へという方向で接続するということがほとんどです。
しかし、FTPの場合はちょっと違います。まず、コマンドのやりとりをする接続と、データのやりとりをする接続の2種類の接続を使います。
ここで、コマンドのやりとりをする接続の方は、クライアント側からサーバー側へという方向で接続されますが、データのやりとりをする接続は、サーバー側からクライアント側へという方向で行われます。
そのままでは、クライアント側のどこに接続していいのかサーバーには分からないので、それを教えてあげるのが、 PORT コマンドです。PORT コマンドを実行したあとは、実際にサーバー側から、クライアント側のPORTコマンドで指定された場所に接続して、ファイルの転送が行われます。
しかし、間にファイアウォールが入っていて、実際にはPORTコマンドで指定された場所にサーバー側から接続できないことがあります。その場合、200 PORT command successfulと表示したあと、実際のファイル転送ができずに、止まってしまうわけです。
ここで出てくるのが、PASVモードです。PASVモードというのは、サーバー側からクライアント側に接続できないのなら、クライアント側からサーバー側という方向で接続するようにすればいいじゃん、というモードです。このモードにすれば、サーバーからクライアントへ接続する必要が無くなるので、ファイアウォールがあっても大丈夫なわけです。
したがって、 200 PORT command successful でとまってしまうような環境の場合には、PASVモードを使用することでファイルの転送を行うことができるようになります。