アクティブモード
FTPで、データ転送用のコネクションをサーバからクライアントへ張る方式。クライアントがPORTコマンドで待ち受けるポートを伝え、サーバがそこへ接続する。
イマシルちゃんの解説
アクティブモードでは、2本目の電話をかけてくるのはサーバなんだ。
クライアントが「この番号で待ってるから、ファイルを送るときはここにかけてね」って伝えると、
サーバのほうから電話がかかってくる。
でも、家の中にいるクライアントに外から電話をかけると、門番(ファイアウォール)に止められちゃうことが多いんだよね。
より深い解説
定義
アクティブモードは、FTPのデータ転送用コネクションを、サーバからクライアントへ張る方式である。サーバが自分から「能動的に(active)」接続することから、この名前がある。FTPの元々の方式で、標準モードともいう。
手順
- クライアントが、データ転送用に待ち受けるポートを開く
- クライアントが、制御用コネクションでPORTコマンドを送り、自分のIPアドレスとポート番号を伝える(例:
PORT 192,0,2,20,195,80) - サーバが、自分のポート20番から、伝えられたIPアドレスとポートに接続する
- 接続できたら、データを転送する
問題点
| 問題 | 内容 |
|---|---|
| ファイアウォール | クライアント側のファイアウォールは、外部から内側への接続を遮断することが多い |
| NAT | PORTコマンドに書かれるのはクライアントのプライベートアドレスなので、外のサーバからは接続できない |
これを解決するため、NAT機器の中には、FTPの制御用コネクションの中身を見てPORTコマンドのアドレスを書き換えたり、一時的に接続を許可したりする機能(ALG:Application Level Gateway)を持つものもある。ただし、FTPSのように制御用コネクションが暗号化されていると、中身を見られないのでこの機能は働かない。
現在は、こうした問題の起きにくいパッシブモードが一般的である。
試験での見分け方
- データ転送用コネクションをサーバから張る → アクティブモード、PORT
- データ転送用コネクションをクライアントから張る → パッシブモード、PASV
「クライアント側から接続するために、サーバ側のポートを要求する」と書かれていれば、パッシブモードのPASVである。