FTP

読み:えふてぃーぴー / 英語表記:File Transfer Protocol

ファイルを転送するためのアプリケーション層プロトコル。命令をやり取りする制御用と、ファイルの中身を送るデータ転送用の、2本のTCPコネクションを使う。

イマシルちゃんの解説

FTPは、昔からあるファイルを送り受けするための決まりごとなんだ。

おもしろいのは、電話を2本使うところ。
1本目の電話で「このファイルをください」ってお願いして、
2本目の電話でファイルの中身を受け取るんだ。
この2本目をどっちからかけるかで、「アクティブモード」と「パッシブモード」に分かれるんだよ!

より深い解説

定義

FTP(File Transfer Protocol)は、RFC 959で定められたファイル転送のプロトコルである。TCPを使い、役割の違う2本のコネクションを使い分ける。

コネクション役割サーバ側のポート番号
制御用コネクションコマンドと応答のやり取り21
データ転送用コネクションファイルの中身や、ファイル一覧の転送アクティブモードでは20、パッシブモードではサーバが指定した番号

制御用コネクションは接続している間ずっと維持し、データ転送用コネクションは転送のたびに張る。

主なコマンド

コマンド内容
USER / PASS利用者名とパスワードを送る
ACCT課金などのためのアカウント情報を送る
RETRファイルをダウンロードする
STORファイルをアップロードする
LISTファイルの一覧を得る
TYPEデータの形式を指定する(A=テキスト、I=バイナリ)
MODE転送モードを指定する(ストリーム、ブロック、圧縮)
PORTクライアントが待ち受けるIPアドレスとポート番号を伝え、サーバから接続させる(アクティブモード)
PASVサーバ側のデータ転送用のポートを要求し、クライアントから接続する(パッシブモード)
QUIT接続を終える

IPv6にも対応した拡張版として、PORTに当たるEPRTと、PASVに当たるEPSV(RFC 2428)がある。

アクティブモードとパッシブモード

データ転送用コネクションを、サーバとクライアントのどちらから張るかで2つのモードがある。

モードコマンド誰が接続するか
アクティブモードPORTサーバからクライアントへ
パッシブモードPASVクライアントからサーバへ

クライアントがNATやファイアウォールの内側にいる場合、外のサーバから内側へ接続するアクティブモードは遮断されやすい。そのため、現在はパッシブモードが広く使われている。

セキュリティ

FTPは、パスワードもファイルの中身も暗号化せずに送る。安全に使うには次の方法がある。

方法内容
FTPSFTPをTLSで暗号化したもの。FTPのコマンド体系はそのまま
SFTPSSHの上で動く、FTPとは別のファイル転送プロトコル。ポート22番の1本のコネクションで済む

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

この用語が出てくる記事

↑