FTPでは、パッシブモードと拡張パッシブモードの違いは何ですか?


17

パッシブモードFTP(PASV)と拡張パッシブモードFTP(EPSV)の違いを誰でも簡単に説明できますか?


2
@DavidPostill申し訳ありませんが、私は本当にPASV対EPSVにのみ興味がありました。
CGCampbell 14

回答:


20

唯一の違いは、PORT/PASVIPv4限定されていることですEPRT/EPSV、どのネットワークプロトコルでも動作します(実際にはIPv6のみが使用されます)。

FTP制御プロトコルの標準PORT(アクティブ)およびPASV(パッシブ)コマンドは、アドレスとポート情報を6つの1バイト10進数として交換、そこから相手側は4バイトのIPアドレスと2バイトのTCPポート番号を再構築する必要があります。

PORT <address[4]>,<port[2]>

PORT 132,235,1,2,24,131

しかし、その後、他のプロトコルが登場し始めました。IPv4のは、かなりの数の競合する代替案を持っていた「のIPng」に置き換えることとしていた(OSI CLNP、TUBA、SIP、SIPP、CATNIP -歴史の中で様々な時点で)、短い、長い、でもといくつかの変数のホストアドレスのサイズ、 16バイトのアドレスを持つIPv6が最終的に定義されるまで。

これ以上のバイトを送信するだけではうまくいきませんでした。サーバーとクライアントは、アドレスの長さだけに基づいて正しいプロトコルを知ることは期待できませんでした。(たとえば、16バイトのアドレス+ 4バイトのポートを持つプロトコルと、12バイトのアドレス+ 12バイトのポートを持つプロトコルがある場合はどうでしょうか?)

それに加えて、これは20年前にはそれほど重要ではありませんでしたが、最近ではインターネット上に何百万ものNATデバイスがあります。ホストはRFC1918ローカルのものを送信しました。NATがなくても、ステートフルファイアウォールは制御コマンドを監視して、手動ルールなしでデータ接続を自動的に許可することがよくあります。

これは基本的に、単により多くの番号を送信するPORTPASV、多くの人々にとって破られることが保証されることを意味します。おそらく、いくつかのファイアウォールは、一部のアドレスバイトをポートとして静かに誤って解釈し、残りを静かに破棄します。他の人は接続を落とすか、単にクラッシュするかもしれません。

上記のようなさまざまな問題を回避するには、FTPでマルチプロトコルをサポートするための新しいコマンドを導入する必要がありました。

1993年に、RFC 1639(元々はRFC 1545)が「長いアドレス」LPRTLPSVコマンドを導入しましたこれらはPORT&に似PASVていますが、アドレスの長さ可変です。プロトコルタイプ識別子も含まれていました。(ただし、構文は変更されませんでした。IPv6address:portは、6ではなく21の数字として送信されます。)

LPRT <protocol>,<addr-length>,<address...>,<port-length>,<port...>

LPRT 4,4,132,235,1,2,2,24,131

LPRT 6,16,16,128,0,0,0,0,0,0,0,8,8,0,32,12,65,122,2,20,162

しかし、それでも制御接続用とは異なるプロトコルを使用するようサーバーに要求するなど、いくつかの問題は解決しませんでした。また、RFCもすぐに時代遅れになりました。IPv6が1年後に登場したとき、LPRTに割り当てられたLPRTプロトコル識別子がなかったため、LPRTで使用できませんでした(初期のさまざまな提案のみ)。

これを修正するために、1998年にRFC 2428が追加EPRTEPSV、別名「拡張ポート」と「拡張パッシブ」を追加しました。これには、両端がサポートするプロトコルをネゴシエートする方法もありました。「拡張」コマンドは、人間が読める形式でアドレスを送信します。IPv6の場合、一連の別個の10進数ではなく、16進表記とコロン表記を使用することを意味します。

EPRT x<protocol>x<address>x<port>x

EPRT |1|132.235.1.2|6275|

EPRT |2|1080::8:800:200C:417A|5282|

結論として、IPv6サポートが唯一の違いです。


うわー、私が読んだすべてのサイトは、これまでクリックしませんでした。有難うございます。私は(おそらく)1時間か2時間でそれを受け入れます。他の誰かがそれを違うようにするかどうかを見たいです。また、Activeを要求した理由は、タグ付けがgoogleでうまく機能するため、この質問/回答が検索で見つかるためです。回答に誰も追加しない場合(グーグルの回答の場合はより完全になります)、元の質問と本文を編集して回答の内容を反映し、基本的に質問を回答に適合させます。
CGCampbell 14

3
もう1つの違いは、EPSV応答にIPアドレスが含まれないことです(PASV応答には何が含まれますか)。これは、NATの背後にあるFTPサーバーが外部IPアドレスを認識せず、内部アドレスを送信してFTPクライアントを混乱させる場合の一般的な問題を回避するためです。
マーティンPrikryl

@MartinPrikrylの発言に加えて、FTP-over-TLSを使用する場合のもう1つの理由は、ファイアウォール/ NATがPASVコマンドでIPアドレスをインターセプトして書き換えることができないことです(少なくとも制御接続をMITMすることなく)。 Unixの世界の人々は一般にFTP-over-TLSの代わりにSFTPを使用します。FTP-over-TLSは一般的にIBMメインフレームで使用されます。FTPはレコード指向ファイル(STRU R、MODE B)ファイル
サイモンキッサーネ

1

アクティブとパッシブの違いはすでに答えられています。Extented Passive(EPSV)は、PASVへの応答の構文がIPv4に固有であり、したがってIPv6に新しいコマンドが必要であったため、IPv4およびIPv6ではパッシブです。アクティブモードのEPTRとPORTで同じ。EPRTとEPSVには、PORTとPASVのようなIPとポートではなく、ポートのみを含めることができるというわずかに異なる動作があります。したがって、データ転送は、制御接続を持つシステム間でのみ実行できます。PORTとPASVを使用すると、他のシステム間でデータ接続を作成できます(ただし、これは現在、設計が不適切でセキュリティリスクと見なされています)。


2
これは私が望んでいない種類の答えでした。他の場所で見つけることができる限り正確に教えてくれます。つまり、EPSVはIPv6用に作成されましたが、その理由は説明していません。(つまり、十分な説明としてあなたの理由を受け入れません)私はあなたが多分あなたの答えをもっと良くすることを望んでこれをあなたに言っています。
CGCampbell 14

PASVコマンドに対する応答がIPv6をサポートしないため、新しいコマンドが必要であることを明確にするために応答を編集しました。
ステフェンUllrich 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.