ファイル転送のプロトコル ~ FTPとは ~

WWWシステムでウェブページを閲覧する際のプロトコルは「HTTP」でしたが、インターネットにはWWW以外の要素もあることはすでに繰り返し学習してきました。

WWW以外の要素 で解説のとおり、遠隔操作ファイル転送情報伝達 といった要素があります。

その中で、ファイル転送専用のプロトコルとして開発されたのが、

FTP(エフティーピー)

と呼ばれるプロトコルです。

FTPは「File Transfer Protocol」の略で、文字通りファイルを転送するためのプロトコルになります。

FTPの詳しい解説に入る前に、まず、ファイル転送専用のプロトコルとはどういうものなのか知っておきましょう。

データ伝送 で学習のとおり、WWWシステムでウェブページを閲覧したり、電子メールで情報伝達したり、ファイルをダウンロードしたり、インターネットを利用して何かを行うということは、データ伝送をともなうものでした。

ではなぜ、FTPがファイル転送のプロトコルと呼ばれるのでしょうか?

実際に「HTTP」でも、WWWサーバからウェブページのHTMLファイルや画像などのデータを自分のパソコンに転送して表示しているわけです。

FTPHTTPも、TCP/IPプロトコルの基礎のうえに成り立っているプロトコルなので、パケット通信を行っており、いずれもデータ伝送を担うプロトコルには変わりありません。「転送」と「伝送」という言葉の違いがあるだけです。

FTPは古くから使われているプロトコルなので、ファイル転送プロトコルとして定着しているため「転送」が使われていますが、基本的には同じ意味です。

あえて言うなら、「転送」よりも「伝送」の方が広い意味で使われます。前項で学習したURIURLを包括した広義的な用語であるのと同じです。

データ伝送 の項では、

意味の違いはほとんどありませんが、工学的な観点では区別される用語です。ファイルは小さな単位に分割されて伝送されます。このように形を変えて送ることを「伝送」と言い、形を変えずに送ることを「転送」と言います。

と解説しています。

すなわち「ファイル転送」はファイルの転送のみを行い、「データ伝送」はファイル転送のみならず、ウェブページを閲覧したり、メールを見たりといった他の要素も含むと解釈すればよいでしょう。ファイル単位のダウンロードを「ファイル転送」、パケット単位のすべての通信を「データ伝送」と理解してください。

したがって、FTPは広く汎用的なプロトコルではないということです。

FTPはファイル転送のみを目的としたプロトコル

になります。

他の要素を含まず、ファイル転送以外の要素を持っていません。ファイル転送専用のプロトコルと呼ばれているゆえんです。

FTPは、先述のとおりインターネットの初期から存在するプロトコルで、WWWの誕生以前からインターネットの目的の一つであるファイル転送を担ってきました。もともと単純なデータのやり取りを行うFTPが主流だったわけです。

HTTPFTPの後に誕生しました。HTTPはウェブコンテンツを扱うためにつくられた汎用的なプロトコルであり、電子メールのプロトコルであるPOPSMTP(詳しくは以降の項で学習します)は、添付ファイルも送受信することのできるプロトコルです。

一方、FTPはファイル転送以外の要素を持っていません。そのため、利点もあります。

HTTPでのファイル転送はWWWサーバからデータを「ダウンロード」するのみですが、

FTPはアップロードも簡単にできる

という特徴があります。

アップロードとは、自分のパソコンからネットワーク上のサーバ等へファイルを転送することです。アップロードには専用のアプリケーションソフトを使います。FTPソフトは多数あり、インターネット上で無料でダウンロードできます。

またFTPは、ファイルの転送を行うだけの単純なプロトコルであるがために、

OSなどの環境に依存されずにファイル転送を行うことができる

というメリットがあります。

もっとも、FTPHTTPは用途や環境によって使い分けるもので、比較的サイズの大きいファイルを転送する場合は、転送専用につくられたFTPを使用する方が安定しているというくらいの認識で構わないでしょう。

例えば、電子メールのプロトコルであるPOPSMTPでは、大きいサイズのファイルの添付は適しませんが、FTPであれば巨大なファイルでも転送することができます。

ただし現在、FTPはセキュリティ上の問題から多くのブラウザでサポートされなくなっています。

以前のダウンロード系のサイトでは、ダウンロード欄に「FTPでダウンロード」と「HTTPでダウンロード」の2通りの方法に分けてある場合が多くありました。

「FTPでダウンロード」と「HTTPでダウンロード」のイメージ

現在ではまず見かけることがありません。これは、会社のパソコンなどの利用環境によって、管理者からダウンロードに制限がかけられている場合などがあり、FTPが使えないことがあるのでHTTPも用意していたためです。

この場合、どちらを選択しても転送速度に違いはほとんどありません。同じTCP/IPモデルによるパケット通信なので、速度にそれほどの差はないのです。

HTTPはウェブコンテンツのプロトコルなので、そのウェブページを「見ている」ということは、HTTPを使えば必ずダウンロードできることになります。

FTPも、HTTP同様にFTPサーバとクライアントとの間で転送が行われます。

HTTPWWWサーバからクライアントへウェブコンテンツをダウンロードして、ブラウザでウェブページを表示しているのと同様に、FTPの場合もFTPサーバを通して目的地へファイルを転送します。同様にFTPサーバもインターネット上に無数に存在します。

HTTPと異なる点は、

FTPでファイル転送を行うには「認証」が必要

という点です。

下図は「ホームページビルダー」というホームページ作成ソフトに付属された「ファイル転送」というFTPソフトのイメージです。

FTPの認証イメージ

このように、FTPではユーザーIDとパスワードによる認証プロセスが必要です。

これらのソフトは自分のパソコンに保存してあるファイルをFTPサーバやWWWサーバに転送(アップロード)する目的で利用されます。複数のファイルをまとめてアップロード、ダウンロードすることができ、サーバ上のファイルの削除なども行うことができます。

また、アップロードしたファイルへのパーミッションというアクセス権を設定することができるなど、クライアント側の自由度が大きいのも特徴です。(こうした点もセキュリティ上の問題となっています)

多くの場合、FTPソフトはウェブサイトのファイルをサーバにアップロードする際に利用するケースが多いです。

一方、以前の下図にあるようなソフトウェアやプログラムのダウンロードサイトでは、ダウンロードのボタンをクリックするだけで、認証作業をすることなくFTPでファイルをダウンロードすることができていました。

「FTPでダウンロード」と「HTTPでダウンロード」のイメージ

なぜ認証をしなくてもよいのかというと、

Anonymous FTP(アノニマス エフティーピー)

という仕組みを使っているからです。

Anonymous FTPは、先ほどのサイトのように、不特定多数に認証を行わないでファイル転送を行うための仕組みです。

もっとも「認証作業を意識させない」という方が正確です。

Anonymousと言うとハッカー集団を想起させますが、本来は「匿名」の意味で「Anonymous」というユーザーIDをあらかじめ作っておいて、パスワードによる認証を行わずにFTPサーバにログインできるようにする仕組みです。

この仕組みは、FTPサーバの中に「Anonymous FTPサイト」を作成し、このFTPサイトにアクセスすれば、その領域にあるファイルを誰でもダウンロードできるというものです。

つまり、FTP通信を行うには本来認証作業が必要ですが、

「Anonymous」という匿名で誰でも認証できるように有名無実化することができる

というわけです。

下図は、有名なダウンロードサイト Vector から、フリーソフトをダウンロードしたときのブラウザの確認画面です。

FTPサーバからのファイルのダウンロード確認画面のイメージ

URIの責任者部のサーバ名が「www」ではなく「ftp」であり、FTPサーバからダウンロードしたことを意味しています。

上図の場合では、FTPダウンロードではなくHTTPHTTPS)ダウンロードになっていますが、インターネットではFTPの認証を意識することなくFTPを利用することができるFTPサーバ(Anonymous FTPサイト)が多数存在しています。

ただし、本来はAnonymous FTPでも最低限の認証作業は必要です。通常は、ユーザー名に「Anonymous」か「ftp」を、パスワードには「自分のメールアドレス」を入力して認証を受けるのが慣例となっています。

FTPサーバの認証画面イメージ

以上でFTPの概要は理解できたと思います。

このようにFTPはファイル転送のみを目的としたプロトコルでしたが、比較的自由度が高いために、FTPサーバを操作できてしまうなどセキュリティ上の問題が大きくなってきました。

中でも問題だったのが、暗号化通信に対応していない点でした。認証で必要なユーザIDやパスワードといった情報が暗号化されずにプレーンテキストで通信されているからです。

そのため、2023年現在ではほとんどのブラウザでFTPはサポート対象外となっています。

そこで、セキュリティ機能を強化したファイル転送プロトコルが登場してきました。

FTPS(エフティーピーエス)

FTPSは「File Transfer Protocol over SSL/TLS」の略で、FTPSSL/TLSという暗号化通信技術を使用できるようにしたFTPの改良版とも言えるプロトコルです。

「over 〇〇」という表現は今後もよく登場します。通常であれば使えない機能を使えるようにしたという意味です。単純にFTPプロトコルのままでSSLの機能が追加されたようなイメージです。

SSL/TLSについては仕組みが難解なので、順を追って知識を得たうえで、SSLとは で詳しく学習することとします。

契約しているサーバとクライアントのFTPソフトがFTPSに対応している必要があります。

SFTP(エスエフティーピー)

SFTPは「SSH File Transfer Protocol」の略で、SSHという暗号化通信技術を使用できるようにした、こちらもFTPの拡張版とも言えるプロトコルです。

SSHは「Secure Shell」の略で、機器を遠隔操作する際に用いられるプロトコルになります。

遠隔操作という用語でピンときた方はさすがです。

WWW以外の要素 で学習した「Telnet(テルネット)」の後継プロトコルになります。TelnetがFTPと同様に暗号化通信にしておらず、暗号化通信に対応したのがSSH(エスエスエイチ)プロトコルになります。

Telnetも同様に、Telnetクライアントソフトのインストール、 遠隔操作を行う機器やコンピュータにはTelnetサーバのサービスを有効にして認証を行う必要がありますが、認証パスワードをはじめとするすべての通信は平文で行われていました。

SSHは、パスワード情報を含めてすべての通信が暗号化されてやり取りされるようになっています。その仕組みはSSLにも使われている公開鍵暗号方式が利用されています。

これも仕組みが難解なので、順を追って学習していきます。本項ではここまでの理解で問題ありません。

もっとも、FTPの後継としてこれらのプロトコルが開発されましたが、現在では多くのサイトでHTTPの後継プロトコル「HTTPS」が使われており、HTTPSダウンロートが一般的となっています。

HTTPSは、HTTPとは で少し触れましたが「Hypertext Transfer Protocol Secure」の略で、SSL/TLSの技術で暗号化された通信が可能なプロトコルです。

ウェブサイトの製作者など、大量のデータをダウンロード、アップロードする場合には、ファイル転送専用のプロトコルであるFTPSSFTPが選択されています。

更新履歴

2008年7月25日
ページを公開。
2009年5月11日
ページをXHTML1.0とCSS2.1で、Web標準化。レイアウト変更。
2018年1月26日
ページをSSL化によりHTTPSに対応。
2023年1月6日
内容修正。

参考文献・ウェブサイト

当ページの作成にあたり、以下の文献およびウェブサイトを参考にさせていただきました。

文献
図解入門 インターネットのしくみ