パッシブモードFTP(PASV)と拡張パッシブモードFTP(EPSV)の違いを誰でも簡単に説明できますか?
パッシブモードFTP(PASV)と拡張パッシブモードFTP(EPSV)の違いを誰でも簡単に説明できますか?
回答:
唯一の違いは、PORT/PASV
IPv4に限定されていることですが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がなくても、ステートフルファイアウォールは制御コマンドを監視して、手動ルールなしでデータ接続を自動的に許可することがよくあります。
これは基本的に、単により多くの番号を送信するPORT
かPASV
、多くの人々にとって破られることが保証されることを意味します。おそらく、いくつかのファイアウォールは、一部のアドレスバイトをポートとして静かに誤って解釈し、残りを静かに破棄します。他の人は接続を落とすか、単にクラッシュするかもしれません。
上記のようなさまざまな問題を回避するには、FTPでマルチプロトコルをサポートするための新しいコマンドを導入する必要がありました。
1993年に、RFC 1639(元々はRFC 1545)が「長いアドレス」LPRT
とLPSV
コマンドを導入しました。これらは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が追加EPRT
しEPSV
、別名「拡張ポート」と「拡張パッシブ」を追加しました。これには、両端がサポートするプロトコルをネゴシエートする方法もありました。「拡張」コマンドは、人間が読める形式でアドレスを送信します。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サポートが唯一の違いです。
EPSV
応答にIPアドレスが含まれないことです(PASV
応答には何が含まれますか)。これは、NATの背後にあるFTPサーバーが外部IPアドレスを認識せず、内部アドレスを送信してFTPクライアントを混乱させる場合の一般的な問題を回避するためです。
アクティブとパッシブの違いはすでに答えられています。Extented Passive(EPSV)は、PASVへの応答の構文がIPv4に固有であり、したがってIPv6に新しいコマンドが必要であったため、IPv4およびIPv6ではパッシブです。アクティブモードのEPTRとPORTで同じ。EPRTとEPSVには、PORTとPASVのようなIPとポートではなく、ポートのみを含めることができるというわずかに異なる動作があります。したがって、データ転送は、制御接続を持つシステム間でのみ実行できます。PORTとPASVを使用すると、他のシステム間でデータ接続を作成できます(ただし、これは現在、設計が不適切でセキュリティリスクと見なされています)。