FTPとは?
FTP は Webサーバ上にあるファイルの確認や更新を行う通信技術で、FTP を使いこなせると Webサーバ環境を使うことの多い Webアプリケーション開発や Webサイト制作の効率が上がります。
FTP (File Transfer Protocol) とは、使用しているパソコン (クライアント) と外部のサーバを接続し、ファイル転送を行うのに必要となる通信プロトコルです。
通信プロトコルはデータ通信をするための規約、ルールのことで、FTP 以外にもいくつか存在します。
さまざまな通信プロトコル
たとえば、よく知られている「HTTP」もその一つです。どちらもファイルのやり取りを行いますが、利用するポートが異なり、HTTPは、80 番ポート、FTPは 20番 と 21番ポートを利用します。FTP は 2つのポートを利用できるため細かく制御することも可能で、大容量のデータ転送に適しています。
このほかにも、後ほどご紹介する FTPS、SFTP、SCP などがあります。
通信の仕組み
サーバの種類
FTPサーバには、匿名で利用可能な「anonymousサーバ」とそうではないものの 2種類があります。
anonymousサーバは誰でもファイルのダウンロードが可能ですが、ダウンロード専用で、一般企業や研究機関、官公庁での情報公開などに利用されています。ファイルの転送なども自由に行えますが、中身を勝手に書き換えるといったことはできません。
一方、ユーザアカウントとサーバを使ってログインする必要のある FTPサーバは、ID とパスワードを入力してログインすると、権限の範囲内でファイルのアップロードができます。
プログラムの種類
FTP には「PI」と「DTP」という2つのプログラムが使われています。PI (Protocol Interpreter) は通信プロトコルに合わせてコマンドの指示を変換するものです。DTP (Data Transfer Process) は、データを転送するプロセスを指します。
この 2つが揃うことで FTP が機能します。
FTPの利用に必要な情報
・接続先ホスト名
FTP のソフトウェアで表示する名前。はじめに設定するのであらかじめ決めておきましょう。
・接続先IPアドレス
サーバの場所を表します。サーバに接続する際に必要となるため、サーバの情報を確認しておきましょう。
・接続先ポート番号
接続するポートを指定する番号を指します。サーバに接続する際に必要となるため、サーバの情報を確認しておきましょう。
コネクションの種類
このコネクションとは、クライアントとサーバの間における通信経路を指します。FTP では、制御用コネクションでログインや転送といった情報をやりとりし、データ転送用コネクションでファイルを転送します。
通信の流れ
FTP の通信では、制御用コネクションは 21番ポート、データ転送用コネクションは 20番ポートを利用します。FTPではこの、2つのポートとコネクションを用いて、次のような流れでファイルの転送を行います。
【制御用コネクション】
① FTPクライアントから FTPサーバに対し、接続を要求する
② FTPサーバが応答する
③ FTPクライアントでユーザIDとパスワードを入力する
④ FTPサーバで認証に成功した場合、ファイルの転送に関する情報を確認する
⑤ FTPクライアントからファイルの転送を要求する
【データ転送用コネクション】
⑥ FTPサーバからデータ転送の接続を要求する
⑦ FTPサーバからクライアントにデータを転送する
【制御用コネクション】
⑧ データ転送が終了したら、FTPクライアントから切断を要求する
⑨ 通信を終了する
FTPでできること
FTP を使ってできることは主に次の 2つです。
・サーバに格納されている情報を取得する
・サーバにファイルのアップロード・ダウンロードができる
後で詳しく説明しますが、FTPソフトを使えば、パソコンのフォルダ内のフォルダを操作するような感覚でサーバ上のフォルダ情報を確認したり、サーバにファイルをアップロードやダウンロードしたりすることができます。
FTPのデメリット
50年以上という長い歴史を持つプロトコルである FTP は、世界中で普及しました。しかし、古くからあるプロトコルであるゆえにセキュアな設計がなされておらず、暗号化通信に対応していないため、現在は使用を推奨されていません。
FTP は、制御用コネクションとデータ転送用コネクションのどちらも通信が暗号化されておらず、データが平文で送られてしまいます。しかし、これではアカウント情報や送信データなどが悪意のある第三者に盗み取られてしまうという危険性があります。これを避けるには暗号化通信ができるソフトウェアを使うといった対処法がありますが、詳しくは次項で説明します。
おすすめのFTPソフト
前項でお伝えしたように、FTP にはセキュリティ面で問題があり、これを避けるには「SFTP」、「FTPS」、「SCP」といった暗号化通信が可能なソフトウェアを利用する必要があります。
そこで FTP と同様にファイル転送プロトコルでありながら、セキュリティに強いプロトコルを紹介します。
SFTP(SSH File Transfer Protocol)
セキュリティ性の高いファイル転送ができるプロトコルです。SSHを用いることで、ID やパスワードといった認証情報を暗号化してファイルを転送できます。
FTP の脆弱性を解消するために 1990年代後半に開発されました。
SSH とは、鍵暗号やパスワード認証といった暗号化技術を利用し、遠隔のコンピュータと暗号化通信を行うプロトコルです。SFTP は SSH の利用できる環境であれば、SFTP用サーバの構築も省けます。
SFTPに「FTP」という言葉が入ってはいますが、根本的にFTPと方式が異ります。単一のコネクション (22番ポート) でのファイル転送が可能です。
FTPS(File Transfer Protocol over SSL/TLS)
FTPS は、FTP での送受信がSSL/TLSによって暗号化できるという FTP のデメリットを解消したファイル転送プロトコルです。SSL/TLS はデータを暗号化して送受信する仕組みのことで、SSL/TLS によって安全にデータを送受信できます。
FTPS は、FTP のセキュリティを強化するという目的で 1990年代後半に開発された FTP の拡張機能です。FTPと同様に、制御用コネクション (989番ポート) とデータ転送用コネクション (990番ポート) の2つのコネクションを確立して通信を行います。
ただ、「FTPS」 は 「SFTP」 と名前も似ていますが、SSH通信という暗号化通信のなかでFTP通信を行う「SFTP」とFTP通信を暗号化する「FTPS」とでは通信方式が違います。
SCP(Secure Copy Protocol)
SSH(Secure Shell)で安全なファイル転送を行うプロトコルです。SSH とは、ネットワークに接続された端末を遠隔で操作をするときにデータを暗号化することで安全に通信を行うプロトコルです。認証部分を含めたすべての通信を暗号化できるため、安心してファイルの送受信ができます。
FTP でデータの送受信を行う際にクライアント側で使うソフトを「FTPソフト」と言います。
実際は、FTP でのファイルの送受信は、FTPソフトがなくても可能ですが、いちいち、サーバを直接開いてファイルを操作するのは骨が折れるので、専用のソフトを使ったほうが圧倒的に便利です。
パソコンの種類によって対応の有無などが異なるため、暗号化通信に優れているFTPソフトを OS ごとに紹介します。
Windowsの場合
「WinSPC」3つの暗号化通信をサポートしています。
macOSの場合
「FileZilla」FTPS、SFTP の通信をサポートしています。
重要なファイルを扱っている場合は上記のFTPソフトの使用をおすすめします。