FTP
ファイルを転送するためのアプリケーション層プロトコル。命令をやり取りする制御用と、ファイルの中身を送るデータ転送用の、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は、パスワードもファイルの中身も暗号化せずに送る。安全に使うには次の方法がある。
| 方法 | 内容 |
|---|---|
| FTPS | FTPをTLSで暗号化したもの。FTPのコマンド体系はそのまま |
| SFTP | SSHの上で動く、FTPとは別のファイル転送プロトコル。ポート22番の1本のコネクションで済む |
実際の試験ではここに出る!
- ネットワークスペシャリスト 令和7年度 春期 午前Ⅱ 問14
- ネットワークスペシャリスト 令和5年度 春期 午前Ⅱ 問13
- ネットワークスペシャリスト 令和3年度 春期 午前Ⅱ 問17
- ネットワークスペシャリスト 令和元年度 秋期 午前Ⅱ 問13
- ネットワークスペシャリスト 平成30年度 秋期 午前Ⅱ 問14