パッシブモード

読み:ぱっしぶもーど / 英語表記:passive mode

FTPで、データ転送用のコネクションをクライアントから張る方式。クライアントがPASVコマンドを送り、サーバが知らせたポートにクライアントが接続する。

イマシルちゃんの解説

パッシブモードでは、2本目の電話をかけるのはクライアントの役目なんだ。

クライアントが「ファイルを受け取りたいから、どの番号にかければいい?」って聞くと、
サーバが「この番号で待ってるよ」って教えてくれる。
あとはクライアントがその番号にかけるだけ!
自分からかけるから、家の中にいても通じやすいんだよ。

より深い解説

定義

パッシブモードは、FTPのデータ転送用コネクションを、クライアントからサーバへ張る方式である。サーバが接続を「待つ(passive)」側になることから、この名前がある。

手順

  1. クライアントが、制御用コネクションでPASVコマンドを送る
  2. サーバは、データ転送用に待ち受けるポートを開き、そのIPアドレスとポート番号を応答コード227で返す(例:227 Entering Passive Mode (192,0,2,10,195,80)。最後の2つは 195×256+80 = 50000番のポートを表す)
  3. クライアントが、そのIPアドレスとポートに接続する
  4. 接続できたら、RETR(ダウンロード)やSTOR(アップロード)などでデータを転送する

パッシブモードが好まれる理由

クライアントのほとんどは、家庭や会社のルータのNAT(NAPT)やファイアウォールの内側にいる。パッシブモードでは、接続はすべてクライアントから外向きに張られるので、内側への接続を許可する設定が要らず、NATを越えやすい。

サーバ側の注意点

その代わり、サーバ側では、データ転送用のポートへの外部からの接続を受け付ける必要がある。ファイアウォールでは、制御用の21番だけでなく、パッシブモードで使うポートの範囲もあらかじめ決めて開けておく必要がある。

また、サーバがNATの内側にある場合、PASVの応答に内側のプライベートアドレスが書かれてしまうと、クライアントが接続できない。サーバに外側のアドレスを応答させる設定や、IPアドレスを含まずポート番号だけを返すEPSVを使う方法がある。

アクティブモードとの比較

パッシブモードアクティブモード
コマンドPASVPORT
データ転送用コネクションを張る側クライアントサーバ
サーバ側のデータ用ポートサーバが選んだ番号20番
クライアント側のNATやファイアウォール問題になりにくい遮断されやすい

実際の試験ではここに出る!

この用語が出てくる記事

↑