プロトコル補足

FTP(File Transfer Protocol) えふてぃーぴー

ファイル転送TCP/IPSFTPFTPSポート番号クライアント・サーバー
FTPについて教えて

簡単に言うとこんな感じ!

FTPはインターネット越しにファイルを「送ったり受け取ったり」するための古参ルールだよ。Webサーバーにファイルをアップロードするときなんかに使われてきたんだけど、パスワードが丸見えになる弱点があって、今は安全版のSFTPやFTPSに切り替えが進んでるんだ!


FTPとは

FTP(File Transfer Protocol)とは、ネットワーク越しにファイルを転送するための通信規約(プロトコル)です。1971年に原型が生まれた歴史ある仕組みで、Webサーバーへのファイルアップロードやリモートサーバーからのデータ取得など、長年にわたってインターネットの「荷物の運び方ルール」として使われてきました。

仕組みはシンプルで、クライアント(操作する側)がサーバーに接続し、ファイルの一覧取得・アップロード・ダウンロード・削除などを指示します。接続にはユーザー名とパスワードで認証する方式が基本です。

ただし、大きな弱点があります。通信内容が暗号化されないため、パスワードやファイルの中身がネットワーク上を「平文(ひらぶん)」、つまり誰でも読める状態で流れてしまいます。そのため現代のセキュリティ要件では生のFTPはほぼ使われなくなり、暗号化を加えたSFTPFTPSへの移行が標準となっています。


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年SFTPSSH 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つを整理します。

項目 FTP SFTP FTPS 暗号化 なし ❌ SSH ✅ TLS/SSL ✅ 標準ポート 20/21番 22番 21番 or 990番 ベース技術 FTP単体 SSH拡張 FTP + TLS 現在の推奨度 非推奨 ⚠️ 推奨 ✅ 推奨 ✅ 主な用途 レガシー環境 Linux/Unix連携 Webホスティング

実務での選び方ポイント

  • 新規システム構築なら迷わず SFTP を選ぶのが鉄則。Linuxサーバーとの相性が良く、設定もシンプル
  • 既存のFTPサーバーをどうしても使う場合は、FTPS に切り替えて暗号化を追加する
  • 生のFTPを外部ネットワークに公開するのはNG。パスワード盗用・ファイル改ざんのリスクが高い
  • クラウドストレージ(S3など)が使える環境なら、FTP系を使わず HTTPSベースのAPIやSCP を検討するのが現代的

関連する規格・RFC

規格・RFC番号内容
RFC 959FTPの基本仕様(1985年。現在も参照される主要仕様)
RFC 2228FTPのセキュリティ拡張(AUTH TLSなど、FTPSの基礎)
RFC 2246TLS 1.0(FTPSが利用する暗号化プロトコル)
RFC 4251 / 4253SSHプロトコル(SFTPの基盤)
RFC 4616FTPのパッシブモード拡張(EPSV)に関連する仕様

関連用語

  • SFTP — SSHを使った暗号化ファイル転送プロトコル。現在のFTP代替として最も普及
  • FTPS — FTPにTLS/SSLを組み合わせて暗号化した安全版FTP
  • SSH — 安全なリモート接続プロトコル