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

U.アクティブ (ポート) モード


 アクティブ (ポート) モードでは、データ転送用コネクションの接続動作をサーバー側から開始する。
そのためクライアント側では、データ転送用コネクションに使用するポートを事前に用意し、その番号を PORT コマンドを使ってサーバーに通知する。

 アクティブ (ポート) モード時に、サーバーとクライアントの間で交わされる通信の概略を順を追って説明する。

U.1.前提条件

 クライアントが使用するポートは必要の都度 OS によって適宜割り当てられる。
クライアントの動作環境を次のように仮定する。

IP アドレス10.2.3.200
制御用ポート番号3001
データ転送用ポート番号3002 および 3003

クライアントは次の操作を行うと仮定する。
  1. ftp サーバーに接続。
  2. サーバー上のファイル一覧を取得。
  3. テキスト ファイルをアップロード

U.2.通信の概略

【 凡例 】
制御用コネクションのポートと通信の方向。
データ転送用コネクションのポートと通信の方向。
※ 図中の表示が通信の全てではない。


=== ftp 開始 ===
-- 接続とセッションの確立 --
( 1)クライアントの割当済みポート (3001) から、サーバーの 21 番ポートへ接続要求。
( 実際には 3 way handshake が行われる )
 ユーザー名とパスワードで認証を受け、login OK となった時点で ftp セッションが確立する。

=== リスト要求 ===
-- 動作モード指定 --
( 2)ASCII モード指定コマンドとその応答。
( 3)アクティブ モード指定とその応答。
 クライアントは自 IP アドレスとデータ転送用の待ち受けポート番号 3002 を、PORT コマンドでサーバーに通知する。

-- リスト (ファイル一覧) 要求 --
( 4)クライアントがリスト (ファイル一覧) を要求。

-- データ転送用コネクションの開始と転送 --
( 5)リストの要求を受けたサーバーは、リストを転送するためのコネクションを別途用意する。
 サーバーの 20 番ポートから、クライアントの 3002 番ポートへ接続要求を送出し、転送用コネクションを確立する( 3 way handshake )。
( 6)準備完了と転送開始をクライアントへ通知。
( 7)サーバーは要求されたリストを、転送用コネクションを通して送信。
( 8)送信を完了したサーバーは、送信完了および転送用コネクションの切断を通知。
( 9)クライアントは受信確認および転送用コネクション切断了承を通知。
(10)データ転送コネクションを切断。
切断の通知は双方で行う。

=== アップロード ===
-- 動作モード指定 --
(11)ASCII モード指定コマンドとその応答。
(12)アクティブ モード指定とその応答。
 クライアントは自 IP アドレスとデータ転送用の待ち受けポート番号 3003 を、PORT コマンドでサーバーに通知する。

-- アップロード要求 --
(13)クライアントは対象ファイル名をパラメータにして STOR コマンド(アップロード要求)を送出。

-- データ転送用コネクションの開始と転送 --
(14)アップロード要求を受けたサーバーは、ファイルデータを受信するためのコネクションを別途用意する。
 サーバーの 20 番ポートから、クライアントの 3003 番ポートへ接続要求を送出し、転送用コネクションを確立する( 3 way handshake )。
(15)準備完了と転送開始をクライアントへ通知。
(16)転送用コネクション OK の通知を受けたクライアントは、そのコネクションを通してファイルデータを送信する。
(17)サーバーは受信確認を通知。
(18)クライアントは送信終了で転送用コネクション切断を通知。
(19)サーバーは要求(アップロード)処理の終了と転送用コネクション切断を通知。
(20)クライアントは転送用コネクション切断の了承を通知。
(21)サーバーは転送用コネクション切断を通知し、クライアントは OK を返す。

※ 制御用のコネクションはクライアントによる ftp 終了処理、あるいはサーバーのタイムアウトに
   よる切断まで維持される。



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