FTP

FTPとは

FTP(File Transfer Protocol)は、サーバーとの間でファイルをアップロード・ダウンロードするための古典的なプロトコルです。Webサイトのファイルをサーバーに置く用途などで長く使われてきました。

FTPの最大の特徴は、制御用とデータ転送用の2本の接続を使うことです。

  • 制御コネクション: ログインやコマンドのやり取り(ポート21)
  • データコネクション: ファイルの中身や一覧の転送(モードによってポートが変わる)

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

データコネクションを「どちらから張るか」で2つのモードがあります。[[ファイアウォール]] との相性を理解する上で重要なポイントです。

アクティブモードパッシブモード
データ接続の向きサーバー → クライアントに接続しにいくクライアント → サーバーに接続しにいく
クライアント側の都合外からの接続を受ける必要があり、ファイアウォールや NAT にブロックされやすい外向きの接続だけなので通りやすい
現在の主流ほぼ使われないこちらが標準

家庭や社内のネットワークは「内から外への接続は許可、外から内は拒否」が基本のため、サーバー側から接続しにくるアクティブモードは失敗しがちです。これは [[ファイアウォール]] のステートフルインスペクション(内側から始めた通信の戻りだけを通す仕組み)による挙動で、同じ FTP でもデータ接続を張る向きが変わるだけで結果が変わります。「FTPがつながらない」トラブルの定番原因であり、現在はパッシブモードが標準になっています。

現在の位置づけ — SFTPへ

素のFTPはID・パスワードもファイルの中身も平文で流れるため、盗聴に弱いという致命的な弱点があります([[暗号化の基礎]])。このため現在は、

  • SFTP — [[SSH]] の仕組みの上でファイル転送する(事実上の後継。ポートも SSH と同じ22番1本で済む)
  • FTPS — FTP を TLS で暗号化したもの

への移行が進み、新規で素のFTPを選ぶ理由はほぼありません。プロトコルの歴史と「なぜ置き換えられたか」を学ぶ教材としての価値が大きい技術です。

関連技術とのつながり

  • [[TCP/IP]] — FTP は TCP の上で動く(制御とデータで2本の接続)
  • [[ファイアウォール]] — アクティブ/パッシブの違いはファイアウォール越えの問題そのもの
  • [[SSH]] — 後継の SFTP は SSH の応用
  • [[暗号化の基礎]] — 平文プロトコルの危険性と暗号化の必要性
Q: FTPパッシブモードの説明として正しいのはどれ?
- [ ] サーバーからクライアントへデータ接続を張りにいく
- [x] クライアントからサーバーへデータ接続を張りにいく
- [ ] データ接続を使わず制御接続だけでファイルを送る
解説: パッシブモードはクライアント側から接続するため、ファイアウォールや NAT を通りやすく現在の標準です。

Q: アクティブモードがファイアウォール環境で失敗しやすい理由はどれ?
- [x] サーバー側からクライアントへの接続が「外から内」への通信として拒否されるから
- [ ] 暗号化が必須でクライアントが対応できないから
- [ ] ポート21が常に閉じられているから
解説: 多くのネットワークは外から内への接続を拒否するため、サーバー発のデータ接続がブロックされます。

Q: 素のFTPに代わって現在推奨される、SSHの仕組みを使うファイル転送はどれ?
- [ ] FTPS
- [ ] SCP-FTP
- [x] SFTP
解説: SFTP は SSH 上でファイル転送を行い、認証も転送内容も暗号化されます。