3.4 FTP
FTP(File Transfer Protocol)は、ネットワークでファイルの転送を行うための通信プロトコルである。日本語訳は、ファイル転送プロトコル。インターネット初期の頃から存在するプロトコルで、今でもインターネットでよく使用されるプロトコルの 1 つである。プロトコル上は任意のホスト間のファイル転送を行うことが可能であるが、通常は接続したクライアントとサーバ(FTP サーバ)間の転送に利用される。用途としては、ウェブページ用各種データファイル(HTML ソース、画像など)のクライアントのパソコン→ウェブサーバへのアップロード、パソコンソフト配布サイトや、データが入っているFTP ファイルサーバからクライアントへのファイルのダウンロードなどに使われる。ダウンロードについては、ブラウザソフトでも可能であるが、アップロードについてはFTPクライアントソフトやCUIコマンドが必要となる。
任意のホスト間の転送を指示できる名残として、サーバへの接続時のコマンド用とは別にデータ転送用のコネクションを確立するが、この確立方法にアクティブモード、パッシブモードという 2種類の方式がある。アクティブモード(ポートモードとも言う)では、クライアントがサーバへ待ち受けIPアドレスとポート番号を通知し、サーバがクライアントから通知された IP アドレスのポート番号へコネクションを確立しに行く。このとき利用するポート番号が毎回異なるので、ファイアーウォール、NAT(IP マスカレード)などを使った環境では場合によってはうまく接続できないこともある。この場合はパッシブモードを用いる。パッシブモードではサーバがクライアントへ待ち受けポート番号を通知し、待ち受けポート番号の通知を受けたクライアントがサーバへコネクションを確立しに行く。いずれのモードでも、コマンド用とデータ用で別々のコネクションを張ることには変わりはない。サーバ側にファイアーウォールがある場合、データコネクションのためにどのポート番号を使うかを設定してファイアーウォールとの整合を確認する必要がある。パッシブモードを使っている限りにおいては、クライアント側のファイアーウォールは気にする必要がない。
通常、サーバに接続する際には認証を必要とするが、専らファイル(主に無償のフリーソフトなど)を配布する目的で、匿名でアクセスできる Anonymous(匿名)FTP サーバを用いる場合もある。ただし、匿名アクセスでも形式上認証が必要であり、この場合、ユーザとして"anonymous"または"ftp"を指定する。
FTP は、サーバ(ウェブサーバなど)へのアップロードを行う場合、コマンドによりサーバ側のファイルを変更、消去することも可能であるため(一般的にクライアント側からのウェブサーバ内のデータファイルの入れ替えや削除などのメンテナンスは、FTPソフトを使って行うことが多い)、転送前にユーザ名とパスワードによる認証が必要となる。通常の FTP アップロードでは、パスワードが暗号化されず危険であるため、ワンタイムパスワードを利用した認証を行ったり、SCPなどで代替したりすることが多い。一方、フリーソフトなどのダウンロード専用のFTPサーバでは、認証無しで接続・ダウンロードできるサーバも多い。