Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

FTP(エフティーピー)とは | 意味や読み方など丁寧でわかりやすい用語解説

FTP(エフティーピー)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

ファイル転送プロトコル (ファイルてんそうプロトコル)

英語表記

FTP (エフティーピー)

用語解説

FTP(File Transfer Protocol)は、インターネットなどのTCP/IPネットワーク上でファイルを転送するために広く利用される標準的なプロトコルである。その名の通り、ファイル転送に特化した通信規約であり、コンピュータ間でファイルをアップロードしたり、ダウンロードしたりする際に使われる。これは、Webサイトのデータをサーバーに送ったり、大容量のファイルを共有したりする場面で古くから活用されてきた、基本的なネットワーク技術の一つである。クライアントとサーバーという二つの役割が存在し、クライアントがサーバーに対してファイル転送を要求し、サーバーがそれに応じる形でデータのやり取りが行われる仕組みを持つ。

FTPは、TCP/IPプロトコルスタックの一部として機能し、安定したデータ転送を可能にする。このプロトコルは、ファイル転送を制御するための「制御コネクション」と、実際のファイルデータを転送するための「データコネクション」という、二つの異なるTCPコネクションを使用する点が特徴である。制御コネクションは通常、サーバー側のポート21番で確立され、ユーザー認証(ユーザー名とパスワードの入力)やファイル転送コマンド(ファイル一覧の取得、ファイルのアップロード、ダウンロード、削除など)のやり取りを行う。一方、データコネクションは、ファイルの転送時に動的に確立される。

データコネクションの確立方法には、「アクティブモード」と「パッシブモード」の二種類がある。アクティブモードでは、クライアントがサーバーにデータコネクションの確立を要求した後、サーバーがクライアントの特定のポートに対してデータコネクションを確立する。しかし、クライアント側のファイアウォールがサーバーからの接続要求をブロックしてしまうことが多く、このモードでは接続が困難になる場合がある。これに対し、パッシブモードでは、クライアントがサーバーにデータ転送を要求すると、サーバーがデータコネクション用の特定のポート番号をクライアントに伝え、クライアントがそのポートに対してデータコネクションを確立する。この方法ならば、クライアント側のファイアウォールによる制限を受けにくいため、現代ではパッシブモードがより一般的に利用されている。

ファイルの種類に応じて、データを転送する際の「転送タイプ」も二つ存在する。一つは「ASCIIモード」で、主にテキストファイル(文字データのみで構成されるファイル)を転送する際に用いられる。このモードでは、異なるOS間での改行コードの違い(WindowsではCR+LF、Unix/LinuxではLFなど)を自動的に変換してくれるため、テキストファイルの表示が崩れることを防ぐ。もう一つは「バイナリモード」で、画像ファイル、動画ファイル、実行ファイルなどの非テキストファイルを転送する際に使用される。バイナリモードでは、ファイルのデータをバイト単位でそのまま転送するため、改行コードの変換は行われない。このため、非テキストファイルをASCIIモードで転送するとデータが破損する可能性があり、通常はバイナリモードを選択することが推奨される。

FTPは長年にわたり広く利用されてきたが、その大きな欠点として「セキュリティの脆弱性」が挙げられる。FTPの通信は基本的に暗号化されず、ユーザー名、パスワード、および転送されるファイルの内容がすべて平文(暗号化されていない状態)でネットワーク上を流れる。このため、悪意のある第三者によって通信内容が盗聴され、認証情報や機密データが容易に盗まれるリスクがある。また、中間者攻撃(Man-in-the-Middle Attack)など、様々なセキュリティ上の脅威に晒されやすい。

このようなセキュリティ上の問題から、現代ではFTP単体での利用は推奨されず、より安全な代替プロトコルが普及している。代表的なものとしては、「FTPS (FTP Secure)」と「SFTP (SSH File Transfer Protocol)」がある。FTPSは、既存のFTPプロトコルにSSL/TLS(Secure Sockets Layer/Transport Layer Security)という暗号化技術を組み込んだもので、制御コネクションとデータコネクションの両方を暗号化することで、盗聴や改ざんのリスクを低減する。一方SFTPは、SSH(Secure Shell)プロトコル上で動作するファイル転送プロトコルであり、認証からデータ転送まですべての通信がSSHの強力な暗号化によって保護される。SFTPはFTPとは根本的に異なるプロトコルであり、SSHサーバー機能があれば別途FTPサーバーを構築する必要がないため、多くの場面で推奨される選択肢となっている。他にも、SCP(Secure Copy Protocol)やHTTPSベースのWebDAVなども、安全なファイル転送の手段として利用される。

これらの代替技術が登場したことで、FTPの直接的な利用機会は減少しているが、基本的なファイル転送の仕組みやネットワークの動作原理を理解する上で、FTPの知識は依然として重要である。システムエンジニアを目指す者にとって、プロトコルの進化とその背景にあるセキュリティの重要性を学ぶ第一歩として、FTPの理解は不可欠である。

関連コンテンツ

関連IT用語

関連ITニュース

関連プログラミング言語