ファイル転送プロトコル。コンピュータ間でファイルを転送するための方式の一つ。広く普及しており、UNIXシステムなど、多くのシステムで実装されている。
FTPには二つのモードがある。一つはアクティブモードであり、もう一つはパッシブモード(pasv)である。
アクティブモードの場合、同期制御のための転送開始コマンドをやりとりした後、FTPサーバのプロセスが各ファイル毎に新規のデータ転送用のコネクションを設定して転送を始め、転送完了のたびにコネクションを解放する。つまり、ファイル転送のためのコネクションは、制御用コネクションとは逆にFTPサーバからFTPクライアントへと作られる。
パッシブモードの場合は、クライアント側からデータ転送の接続を行なう。クライアントを保護するようなネットワークが多くなっていることから、現在ではパッシブモードが主流である。
名前の似たプロトコルにTFTPがあるが、全く異なるプロトコルである。
TFTPは簡単なプロトコルだが、FTPは現在TCP/IP上で使われている中で、最も複雑なプロトコルの一つではないかと考えられている。
FTPは単に指定されたファイルを転送するだけではなく、相手側コンピュータ内の対象ディレクトリ移動やファイル一覧の取得などの機能が用意されている。
単純な2ホスト間の通信だけでなく、ホストAからの制御コマンドでホストBからホストCへファイルを転送することも出来る。ただし、現在ではセキュリティの理由により、この機能は利用できない場合が多い。
転送されるデータがリモートまたはローカルのコンピュータ上で、印刷可能なテクスト形式なのか、あるいはバイナリファイルなのかを規定する方法が用意されており、必要に応じて改行コードなどの変換も可能。
また、環境に合わせたファイル名の変換機能なども用意できる。
FTPによるファイル転送では、一般には不正アクセスの防止のためにログイン名とパスワードによるユーザ認証を必要とする。
不特定多数にファイルを配布するためには、匿名ログイン可能なAnonymous FTPが用いられる。
なお、制御コマンドやパスワードの暗号化、通信チャネルの暗号化については、基本的には対応していない。別のプロトコルを使用する必要がある。
| 制御コマンド | ユーザコマンド(例) | 機能 |
|---|---|---|
| USER username | user ユーザ名 パスワード | ユーザ認証 |
| PASS password | (user併記/プロンプト入力) | ユーザ認証 |
| CWD directory | cd ディレクトリ名 | ディレクトリ移動 |
| PWD | pwd | 現在位置表示 |
| LIST | dir | ファイル一覧表示 |
| TYPE (A/I) | ascii または binary | ファイル形式指定 |
| STOR filename | put ファイル名 | ファイル送信 |
| RETR filename | get ファイル名 | ファイル受信 |
| PORT addr,port | (クライアントが自動送信) | 転送接続 |
| PASV | (クライアントが自動送信) | パッシブモードにする |