FTP(File Transfer Protocol) えふてぃーぴー
ファイル転送TCP/IPSFTPFTPSポート番号クライアント・サーバー
FTPについて教えて
簡単に言うとこんな感じ!
FTPはインターネット越しにファイルを「送ったり受け取ったり」するための古参ルールだよ。Webサーバーにファイルをアップロードするときなんかに使われてきたんだけど、パスワードが丸見えになる弱点があって、今は安全版のSFTPやFTPSに切り替えが進んでるんだ!
FTPとは
FTP(File Transfer Protocol)とは、ネットワーク越しにファイルを転送するための通信規約(プロトコル)です。1971年に原型が生まれた歴史ある仕組みで、Webサーバーへのファイルアップロードやリモートサーバーからのデータ取得など、長年にわたってインターネットの「荷物の運び方ルール」として使われてきました。
仕組みはシンプルで、クライアント(操作する側)がサーバーに接続し、ファイルの一覧取得・アップロード・ダウンロード・削除などを指示します。接続にはユーザー名とパスワードで認証する方式が基本です。
ただし、大きな弱点があります。通信内容が暗号化されないため、パスワードやファイルの中身がネットワーク上を「平文(ひらぶん)」、つまり誰でも読める状態で流れてしまいます。そのため現代のセキュリティ要件では生のFTPはほぼ使われなくなり、暗号化を加えたSFTPやFTPSへの移行が標準となっています。
FTPの基本構造と仕組み
FTPは少し変わった設計で、2本のTCP接続を使ってやり取りします。
| チャンネル | ポート番号 | 役割 |
|---|---|---|
| 制御接続(Control Connection) | 21番 | コマンド・レスポンスのやり取り |
| データ接続(Data Connection) | 20番(アクティブ時) | 実際のファイルデータの転送 |
- 制御接続は「注文を取る窓口」、データ接続は「荷物を運ぶベルトコンベア」のイメージです。
動作モード:アクティブとパッシブ
FTPには2つの接続モードがあります。ファイアウォール環境での接続可否に影響するため、実務でもよく問題になるポイントです。
【アクティブモード】
クライアント ──(制御:21)──► サーバー
クライアント ◄──(データ:20)── サーバー
※サーバー側からクライアントへ接続しにくる
→ クライアントのファイアウォールに阻まれやすい
【パッシブモード(PASV)】
クライアント ──(制御:21)──► サーバー
クライアント ──(データ:高番ポート)──► サーバー
※クライアント側からサーバーへ接続する
→ ファイアウォール越えに有利なため現在の主流
代表的なFTPコマンド
| コマンド | 意味 |
|---|---|
USER | ユーザー名を送信 |
PASS | パスワードを送信 |
LIST | ファイル一覧を取得 |
RETR | サーバーからファイルをダウンロード |
STOR | サーバーへファイルをアップロード |
DELE | サーバー上のファイルを削除 |
QUIT | 接続を切断 |
歴史と背景
- 1971年 — Abhay Bhushan によってFTPの原型(RFC 114)が発表。ARPANETの時代から存在する
- 1980年 — TCP/IPベースの現行仕様に近い形へ改定(RFC 765)
- 1985年 — 現在も参照される主要仕様 RFC 959 が策定。長く標準として使われ続ける
- 1990年代 — Webの普及とともにWebサーバーへのファイルアップロード手段として爆発的に広まる。「FTPソフト」がITツールの定番に
- 1999年 — SFTP(SSH File Transfer Protocol)が登場。SSH経由で暗号化転送が可能に
- 2000年代 — FTPS(FTP over TLS/SSL)も普及。TLS暗号化をFTPに被せる方式
- 2021年 — 主要ブラウザ(Google Chrome・Firefox等)がFTPサポートを廃止。セキュリティ上の理由から
- 現在 — 新規システムでの生FTP採用はほぼなく、SFTPやFTPSへの移行が完了しつつある
FTP・SFTP・FTPSの比較
FTPを検討するときに必ずセットで出てくる3つを整理します。
実務での選び方ポイント
- 新規システム構築なら迷わず SFTP を選ぶのが鉄則。Linuxサーバーとの相性が良く、設定もシンプル
- 既存のFTPサーバーをどうしても使う場合は、FTPS に切り替えて暗号化を追加する
- 生のFTPを外部ネットワークに公開するのはNG。パスワード盗用・ファイル改ざんのリスクが高い
- クラウドストレージ(S3など)が使える環境なら、FTP系を使わず HTTPSベースのAPIやSCP を検討するのが現代的
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| RFC 959 | FTPの基本仕様(1985年。現在も参照される主要仕様) |
| RFC 2228 | FTPのセキュリティ拡張(AUTH TLSなど、FTPSの基礎) |
| RFC 2246 | TLS 1.0(FTPSが利用する暗号化プロトコル) |
| RFC 4251 / 4253 | SSHプロトコル(SFTPの基盤) |
| RFC 4616 | FTPのパッシブモード拡張(EPSV)に関連する仕様 |