web-dev-qa-db-ja.com

FTPプロトコルが複数のポートを使用するように設計されたのはなぜですか?

質問はタイトルにあります。私がこれを不思議に思う理由は、私がtcpサービスをコーディングしていて、それらが私の仕事にいくらかの光を当てるかもしれないので、いくつかの理由を調査したいからです。

5
d-_-b

別のポートを使用すると、制御接続とは異なる形式になる、予期される個別のデータ接続の処理が簡素化されることを期待しています。これにより、受信者は、ポート21を使用した場合に必要な接続開始であるかどうかを確認することなく、データの処理を簡単に開始できると思います。

これにより、最後の箇条書きの改行プリンターの例で、印刷するテキストの受信を開始できます。ただし、これが実際にどのように使用されていたかはわかりません(21で既にリッスンしているFTPデーモンがある可能性があるため、ターミナルのプログラムはポート20をラインフィードプリンターに転送しますか?)

別の接続の理由については、3つの主な理由があります。

転送の効率は、FTPの有用性に影響を与える重要な要素です。不適切な転送戦略(不適切なバイトサイズなど)が使用されている場合、ファイル転送は(CPU時間の点で)非常にコストがかかり、(リアルタイムで)遅くなる可能性があります。データの転送を最適化するためにあらゆる試みを行う必要があります。良い戦略は、別の接続を介したファイルの転送を許可するか、接続を閉じて再度開くことです(おそらく異なるバイトサイズを使用して)。

[4] 2つの全二重リンクを使用することを検討しました。1つは制御用です。
情報、もう1つはデータ用。個別の制御リンクの使用
協力するプロセス間では、中止、エラーが単純化されます
リカバリと同期。

FTPを変更して、指定されたモードとタイプで指定されたソケットにデータを送信できるようにすることが望ましいでしょう。 TIPユーザーは、高速ラインプリンターでファイルのリストを取得し、カードリーダーからファイルを入力し、カードまたは磁気テープにバックアップしておくと便利です。

6
Rob Olmos

過剰設計が主な理由かもしれません。

分割制御/データ接続の1つの(あまり使用されない)利点は、データがクライアントを通過する必要なしに、クライアントが2つのサーバー間の転送を開始できることです。

3
David Spillett

過剰設計は当てはまりません。このように設計されているため、さまざまな操作モードが可能です。このモードではサーバーがクライアントに接続し直すため、アクティブFTPは最近ほとんど使用されていません。しかし、当時(80年代)は非常にうまく機能していました。パッシブFTPは、最近ファイアウォールの背後で非常に役立ちます。このモードでは、クライアントはサーバーによって開かれたポートに接続します。クライアントの前にファイアウォール/ NAT /アプライアンスがあるため、通常、クライアントに直接アクセスすることはできません。したがって、このモードも理にかなっています。

ウィキペディアの記事には、ニースの詳細情報があります: http://en.wikipedia.org/wiki/FTP

2
Craig

FTPは、1つのポートをデータ送信(20)に使用し、もう1つのポートを使用してコマンド(21)、GET、DIR、PUTなどを送信します。

より詳細な説明はここにあります: http://slacksite.com/other/ftp.html

HTH!

0
byte_slave