File Transfer Protocol

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索

テンプレート:Infobox File Transfer Protocol(ファイル・トランスファー・プロトコル、FTPファイル転送プロトコル)は、ネットワークファイルの転送を行うための通信プロトコルの1つである。

FTPは、インターネット初期から存在する古いプロトコルであり、セキュア(安全)なプロトコルとして設計されていない。ユーザ名やパスワードなどの認証情報を含むすべての通信内容を暗号化せずに転送するなどの問題の他、数多くのセキュリティ脆弱性が指摘されている。そのため、現在では、FTPのかわりに FTPS (SSL/TLSを使ったFTP) や SFTP (SSH File Transfer Protocol) といったプロトコルがよく用いられる。

概説

インターネット初期の頃から存在するプロトコルで、今でもインターネットでよく使用されるプロトコルの1つである。プロトコル上は任意のホスト間のファイル転送を行うことが可能であるが、通常は接続したクライアントサーバ(FTPサーバ)間の転送に利用される。

用途としては

  • ウェブページ用各種データファイル(HTMLソース画像など)のクライアントのパソコンからウェブサーバへのアップロード
  • パソコンソフト配布サイトや、データが入っているFTPファイルサーバからクライアントへのファイルのダウンロード

などに使われる。 ダウンロードについては、ブラウザソフトでも可能であるが、アップロードについてはFTPクライアントソフトやCUIコマンドが必要となる。

任意のホスト間の転送を指示できる名残として、サーバへの接続時のコマンド用とは別にデータ転送用のコネクションを確立するが、この確立方法にアクティブモード、パッシブモードという2種類の方式がある。

アクティブモード(ポートモードとも言う)では、クライアントがサーバへ待ち受けIPアドレスポート番号を通知し、サーバがクライアントから通知されたIPアドレスのポート番号へコネクションを確立しに行く。このとき利用するポート番号が毎回異なるので、ファイアーウォールNATIPマスカレード)などを使った環境では場合によってはうまく接続できないこともある。この場合はパッシブモードを用いる。

パッシブモードではサーバがクライアントへ待ち受けポート番号を通知し、待ち受けポート番号の通知を受けたクライアントがサーバへコネクションを確立しに行く。

いずれのモードでも、コマンド用とデータ用で別々のコネクションを張ることには変わりはない。 サーバ側にファイアーウォールがある場合、データコネクションのためにどのポート番号を使うかを設定してファイアーウォールとの整合を確認する必要がある。 パッシブモードを使っている限りにおいては、クライアント側のファイアーウォールは気にする必要がない。

通常、サーバに接続する際には認証を必要とするが、専らファイル(主に無償のフリーソフトなど)を配布する目的で、匿名でアクセスできる Anonymous(匿名) FTP サーバを用いる場合もある。ただし、匿名アクセスでも形式上認証が必要であり、この場合、ユーザとして"anonymous"または"ftp"を指定する。パスワードは通常何でもよいが、配布したソフトに瑕疵があった場合などにサーバ管理者が連絡をとることができるよう、ユーザの電子メールアドレスを指定するのがマナー(ネチケット)とされてきた(メールアドレスのドメインがクライアントのIPアドレスの逆引きなどから明らかな場合は、"foo@"のようにドメインを省略することも多い)。サーバによっては、パスワードがメールアドレスの形式を満たさないと利用できないこともある。しかし、近年ではスパム(迷惑メール)などの問題により、むやみにメールアドレスを公開しない風潮が高まっていることから、このマナーは廃れつつある。また、現在ではFTPクライアント機能を備えたウェブブラウザで匿名FTPサーバにアクセスすることも多く、この場合パスワードは特に指定しない限りブラウザのデフォルト設定(Internet Explorerであれば"IEuser@"など)が使われ、メールアドレスとして意味のあるものにはならない。

セキュリティ

FTPはセキュア(安全)なプロトコルとして設計されていない。ユーザ名やパスワードを暗号化せずに転送するなどの問題の他、数多くのセキュリティ脆弱性が指摘されている。RFC 2577は、以下の脆弱性を列挙している:

FTPは通信内容を暗号化できない。通信経路上でパケットをキャプチャすることで、ユーザ名・パスワード・コマンド・データといった情報を容易に盗聴できる。この問題は、SMTPIMAPといった他の歴史のあるインターネットプロトコルでも同様である。これらのプロトコルをセキュアにする一般的な方法は、SSL/TLSセッション上で通信を行うことである。FTPでこれを行うのがFTPSである。またSSHを介してファイル転送を行うSFTPSCPといったツールもある。

関連RFC

  • RFC 4217 - Securing FTP with TLS
  • RFC 3659 - Extensions to FTP
  • RFC 2640 - Internationalization of the File Transfer Protocol
  • RFC 2577 - FTP Security Considerations
  • RFC 2428 - FTP Extensions for IPv6 and NATs
  • RFC 2389 - Feature negotiation mechanism for the File Transfer Protocol
  • RFC 2228 - FTP Security Extensions
  • RFC 1635 - How to Use Anonymous FTP
  • RFC 1579 - Firewall-Friendly FTP
  • RFC 1127 - A Perspective on the Host Requirements RFCs
  • RFC 1123 - Requirements for Internet Hosts -- Application and Support 4.1章
  • RFC 959 - FILE TRANSFER PROTOCOL (FTP)
  • RFC 765 - FILE TRANSFER PROTOCOL (RFC 959 で改訂)
  • RFC 114 - A FILE TRANSFER PROTOCOL

同様の目的に使えるプロトコル

関連項目

テンプレート:Navbox テンプレート:URI scheme