(1) FTPのアクティブモードとパッシブモードの違いについて
(1-1) アクティブモード
(1-2) パッシブモード
(1-3) 両者の違い
(1) FTPのアクティブモードとパッシブモードの違いについて
「アクティブモード」と「パッシブモード」は共にFTPの用語で、FTPの接続モードを表す単語です。この記事では、それぞれの特徴や違いについて簡単にご紹介します。
(1-1) アクティブモード
アクティブモードでは、大きく分けて2つのステップでFTP接続を行います。
STEP1:サーバへの接続(コマンドチャネル)
クライアントはランダムなポートを使って、FTPサーバ(接続される側)の21番ポートに接続します(図の①の線)。その際に「PORT」コマンドを送信し、クライアント側の「どのポートに接続すべきか?」をサーバに知らせます。このポートは後にデータチャネルが使うポートで、コマンドチャネルが使っているポートとは別のを指定します。
STEP2:サーバからの接続(データチャネル)
サーバは20番ポートから、クライアントに接続します(図の②の線)。接続先のポートは先程クライアントから通知された専用のポート番号を使用します。この接続が確立されると、両者のポートからファイルの送受信を開始する事ができます。
(図111)
(1-2) パッシブモード
こちらも同じく、大きく2つのステップで接続しますが、アクティブモードと異なるのは「PORT」コマンドの代わりに「PASV」コマンドを送信します。「PASV」ではポートの指定はしておらず、単にサーバに対してデータ送受信のための接続を要求するのみです。
STEP1:サーバへの接続(コマンドチャネル)
クライアントはランダムなポートを使って、FTPサーバ(接続される側)の21番ポートに接続します。その際に「PASV」コマンドを送信し、サーバ側はランダムに送受信ポートを開けて、そのポートの情報をFTPクライアントに連携します。
STEP2:サーバへの接続(データチャネル)
クライアントはランダムなポートを使用して、サーバより指定されたランダムポートにアクセスします。この接続が確立されると、両者のポートからファイルの送受信を開始する事ができます。
(図121)
(1-3) 両者の違い
FTPクライアントとFTPサーバ間の「データチャネル」の接続方向(向き)が大きな違いとなります。
図の通り、アクティブモードでは「サーバ⇒クライアント」で、パッシブモードでは「クライアント⇒サーバ」となっています。
この方向が異なると「接続が成功する確率」も大きく変わってきます。クライアント側は基本的にファイアウォールの背後に配置されており、接続できるポートも限られています。
そのため「アクティブモード」でクライアント側のランダムなポートに接続しに行っても、高い確立で接続不可のポートに当たってしまい、接続に失敗します。