パソコン実習室
ftp 動作概要 - モードによる違い
  next ≫

T.ftp のポートとモード


T.1.ポート

 ftp はその動作において、サーバーとクライアントの間に下記 2 つの TCP コネクションを張る。

TCP コネクションの種類ポート番号通信内容
制御用21ftp コマンド、 セッション管理等
データ転送用20ファイル本体やリスト (ファイル一覧) 等のデータ

▼ 2 つのポート番号 (21, 20) はサーバー側に限った話であって、クライアント側が制御・データ転送用に使うポート
   番号は、クライアントのシステム (OS) が "1024" 以降の番号を適宜割り当てる。


T.2.モード

 ftp の動作 (転送) モードは、データ転送用 TCP コネクションの接続要求 (SYN) を、 どちら側 (サーバー or クライアント) から始めるかによって 2 つのモードに分かれる。

モードの種類コマンド接続要求の発出
アクティブ (ポート) モードPORTサーバー側から接続要求を行う
パッシブ モードPASVクライアント側から接続要求を行う
※ モードの呼称は、データ転送用コネクションを張る時のサーバー側の態勢が基のようだ。
   サーバーが主導してコネクションを張る動作がアクティブ(active) モードであり、クライアント側からの接続を待つ受
   動的な動作をパッシブ(passive) モードと呼んでいる。

  • モードの指定はクライアントが行う (ftp ツールに設定項目がある)。
  • クライアントがデータ転送コマンド (NLST, STOR等) を送る前に、モード指定コマンド (PORT, PASV) でサーバーに通知する。
    ※ サーバーの ftpd にもパッシブ モードの設定項目がある。
       サーバー側でパッシブ モードを不許可とした場合、PASV コマンドを送信してきたクライアントに対して
       "permission denied" を返す。


T.3.セッションとコネクション

【 制御用コネクション 】
 クライアントがサーバーに向けて ftp 接続を行うと制御用の TCP コネクション (サーバーの 21 番ポート) が張られ、 ユーザー名とパスワードによる認証 (IP アドレスやドメイン名の認証も可能) を受ける。
制御用コネクションは、FTP コマンドやセッション管理の通信に使われる。

【 セッション 】
 ftp 接続、データの送受信、ftp 終了までの一連の動作をセッションと呼ぶ。
サーバー・クライアント間の ftp セッションは認証が済んだ時点で確立し、 以降その ftp セッションはクライアントによる ftp 接続の終了やサーバーが設定したタイムアウトによる強制切断まで維持される。

【 データ転送用コネクション 】
 一方、サーバーからクライアントへ送信するファイル名一覧や、双方で送受信 (アップロード、ダウンロード) するファイル データは、 送受信データが発生する都度、データ転送用の TCP コネクションが張られて、そのコネクションを通して送受信される。
【 サーバー側のデータ転送用ポート番号 】
アクティブ (ポート) モードの時 : 21 番。
パッシブ モードの時 : サーバー OS が 1024 以降の番号をその都度割り振る。

 一連の ftp 動作において、一般的に制御用コネクションの接続動作は1回だが、データ転送用コネクションの接続動作は複数回発生することになる。

 次節以降では ftp クライアントがサーバーにログインし、リスト(ファイル一覧)の取得とファイル・アップロードをした時の、サーバーとクライアント間で行われる通信の動作概略を、アクティブ・モードとパッシブ・モードの両方で示す。



  [[ ftp 動作概要 - モードによる違い ]] next ≫