ftp はその動作において、サーバーとクライアントの間に下記 2 つの TCP コネクションを張る。
TCP コネクションの種類 | ポート番号 | 通信内容 |
制御用 | 21 | ftp コマンド、 セッション管理等 |
データ転送用 | 20 | ファイル本体やリスト (ファイル一覧) 等のデータ |
ftp の動作 (転送) モードは、データ転送用 TCP コネクションの接続要求 (SYN) を、
どちら側 (サーバー or クライアント) から始めるかによって 2 つのモードに分かれる。
モードの種類 | コマンド | 接続要求の発出 |
アクティブ (ポート) モード | PORT | サーバー側から接続要求を行う |
パッシブ モード | PASV | クライアント側から接続要求を行う |
- モードの指定はクライアントが行う (ftp ツールに設定項目がある)。
- クライアントがデータ転送コマンド (NLST, STOR等) を送る前に、モード指定コマンド (PORT, PASV) でサーバーに通知する。
【 制御用コネクション 】
クライアントがサーバーに向けて ftp 接続を行うと制御用の TCP コネクション (サーバーの 21 番ポート) が張られ、
ユーザー名とパスワードによる認証 (IP アドレスやドメイン名の認証も可能) を受ける。
制御用コネクションは、FTP コマンドやセッション管理の通信に使われる。
【 セッション 】
ftp 接続、データの送受信、ftp 終了までの一連の動作をセッションと呼ぶ。
サーバー・クライアント間の ftp セッションは認証が済んだ時点で確立し、
以降その ftp セッションはクライアントによる ftp 接続の終了やサーバーが設定したタイムアウトによる強制切断まで維持される。
【 データ転送用コネクション 】
一方、サーバーからクライアントへ送信するファイル名一覧や、双方で送受信 (アップロード、ダウンロード) するファイル データは、
送受信データが発生する都度、データ転送用の TCP コネクションが張られて、そのコネクションを通して送受信される。
次節以降では ftp クライアントがサーバーにログインし、リスト(ファイル一覧)の取得とファイル・アップロードをした時の、サーバーとクライアント間で行われる通信の動作概略を、アクティブ・モードとパッシブ・モードの両方で示す。
番号は、クライアントのシステム (OS) が "1024" 以降の番号を適宜割り当てる。