PASVモードに関する説明は良く見かけますが、PORTモードに関する情報をご存知の方回答をお願いします。
特に知りたい所
・FTPにてdefaultがPORTモードになっている理由、背景、開発者の意図
・PASVモードに較べPORTモードを使うメリット
英語ページでも構いません。よろしくお願いします。
<参考URL>
http://www.atmarkit.co.jp/fwin2k/win2ktips/118ftpmode/118ftpmode.html
http://katsu.watanabe.name/doc/ftp/aboutpassive.html
Incorrect rumors about passive mode in FTP protocol
こまかく読むと参考URLにほとんど乗っているのですがportモードはサーバ間転送ではデータを送る側です。送る側に送られる側のport番号をportコマンドで教えるわけです。ですので、passive modeの説明のページにはかならずportモードの説明も載っています。
http://www.rtpro.yamaha.co.jp/RT/FAQ/TCPIP/ftp-passive-mode.html
FAQ for YAMAHA RT Series / TCP/IP
本来、送る側がportですから、デフォルトはportモードなわけですが、送る側をpassiveモードにすることがある、そのメリットは、そうするとファイアーウォールを通ることが多いからです。この点にはついてはいろんなページで説明されています。
電話で類推するといいかもしれません。portモードだと、サーバーからこちらに電話をかけてくるのですが、passiveモードだとこちらから電話をかけることになります。
でも電話を相手にかけてもらえるためには、電話をかけてくれとお願いしなければなりません。
ですからportモードでは、まず電話をかけてくれとこちらから電話をかけて、番号を知らせます。(コントロール・コネクションでこちらのport番号を教える。)そうすると、相手がこちらに電話をかけて内容を教えてくれる(データ・コネクションで実データを転送)わけです。
http://www.atmarkit.co.jp/fnetwork/rensai/netpro10/netpro01.html
過去からの贈り物「FTP〜前編」
PORTコマンドは、クライアントからサーバにデータコネクションのためのIPアドレスとポート番号を通知するためのコマンドです。
メリットはクラインとがポートを指定できることではないでしょうか?
なぜクライアントがポートを指定できることがメリットにつながりますか ?
FTPのRFC959を見てみましたが、もうひとつピンときません。。
http://katsu.watanabe.name/doc/ftp/aboutpassive.html#
Incorrect rumors about passive mode in FTP protocol
一番目の回答者さんが参照URLを提示してくれていましたが、本当にこの内容を読みましたか?
かつてのクライアントには、サーバのファイルを格納するようなストレージなんてなかったですよ。すなわち、ファイル置き場(FTPサーバA)から別のファイル置き場(FTPサーバB)にデータを送る場合、どうするべきだったのか?というところに注目してください。
…とはいえ、現在のようにクライアントに十分なストレージがあると、PASVモードだけでいいような気もしますよね。前述のような機会なかなかないし。
すみません、さらっと流し読みしただけで良く理解できていませんでした。
そもそもcontrol connection と data connection が別になっているのは、上記の例にあるリモートの2者間のファイル転送をftpで完結して行うためのものだったのですね。
proxyコマンドなど初めて意味を理解しました。
ありがとうございました。
ほとんど私の理解と同じでした。
PORTモードの理由はサーバからみたクライアントの信頼性を確かめるためといった理由になるのでしょうか。