インターネット初期の頃から存在するプロトコルで、今でもインターネットでよく使用されるプロトコルの1つである。プロトコル上は任意のホスト間のファイル転送を行うことが可能であるが、通常は接続したクライアントとサーバ間の転送に利用される。
用途としては
ウェブページ用各種データファイル(HTML、画像など)のクライアントのパソコン→ウェブサーバへのアップロード
パソコンソフト配布サイトやデータが入っているFTPファイルサーバからクライアントへのファイルのダウンロード
などに使われる。 ダウンロードについては、ブラウザソフトでも可能であるが、アップロードについてはFTPクライアントソフトやCUIコマンドが必要となる。
任意のホスト間の転送を指示できる名残として、サーバへの接続時のコマンド用とは別にデータ転送用のコネクションを確立するが、この確立方法にアクティブモード、パッシブモードという2種類の方式がある。
アクティブモード(ポートモードとも言う)では、クライアントがサーバへ待ち受けIPアドレスとポート番号を通知し、サーバがクライアントから通知されたIPアドレスのポート番号へコネクションを確立しに行く。このとき利用するポート番号が毎回異なるので、ファイアーウォール、NAT(IPマスカレード)などを使った環境では場合によってはうまく接続できないこともある。この場合はパッシブモードを用いる。
パッシブモードではサーバがクライアントへ待ち受けポート番号を通知し、待ち受けポート番号の通知を受けたクライアントがサーバへコネクションを確立しに行く。
いずれのモードでもコマンド用とデータ用で別々のコネクションを張ることには変わりはない。 サーバ側にファイアーウォールがある場合、データコネクションのためにどのポート番号を使うかを設定してファイアーウォールとの整合を確認する必要がある。 パッシブモードを使っている限りにおいてはクライアント側のファイアーウォールは気にする必要がない。
通常、サーバに接続する際には認証を必要とするが、専らファイル(主に無償のフリーソフトなど)を配布する目的で、匿名でアクセスできる Anonymous(匿名) FTP サーバを用いる場合もある。ただし、匿名アクセスでも形式上認証が必要であり、この場合、ユーザとして"anonymous"または"ftp"を指定する。パスワードは通常何でもよいが、配布したソフトに瑕疵があった場合などにサーバ管理者が連絡をとることができるよう、ユーザの電子メールアドレスを指定するのがマナーとされてきた(メールアドレスのドメインがクライアントのIPアドレスの逆引きなどから明らかな場合は、"foo@"のようにドメインを省略することも多い)。サーバによっては、パスワードがメールアドレスの形式を満たさないと利用できないこともある。しかし、近年ではスパムなどの問題により、むやみにメールアドレスを公開しない風潮が高まっていることから、このマナーは廃れつつある。また、現在ではFTPクライアント機能を備えたウェブブラウザで匿名FTPサーバにアクセスすることも多く、この場合パスワードは特に指定しない限りブラウザのデフォルト設定(Internet Explorerであれば"IEuser@"など)が使われ、メールアドレスとして意味のあるものにはならない。
FTPは、サーバ(ウェブサーバなど)へのアップロードを行う場合、コマンドによりサーバ側のファイルを変更、消去することも可能であるため(一般的にクライアント側からのウェブサーバ内のデータファイルの入れ替えや削除などのメンテナンスは、FTPソフトを使って行うことが多い)、転送前にユーザ名とパスワードによる認証が必要となる。通常のFTPアップロードでは、パスワードが暗号化されず危険であるため、ワンタイムパスワードを利用した認証を行ったり、SCP(「同様の目的に使えるプロトコル」参照)などで代替したりすることが多い。
一方、フリーソフトなどのダウンロード専用のFTPサーバでは、認証無しで接続・ダウンロードできるサーバも多い。
関連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
同様の目的に使えるプロトコル
TFTP
HTTP/WebDAV
SCP/SFTP
Rcp
rsync
NFS
SMB/CIFS(Samba)
FTPS(FTP over SSL/TLS)
関連項目
Archie
FTPサーバ
FTPクライアント
TCP Wrapper
カテゴリ: RFC | 通信プロトコル
更新日時:2008年7月25日(金)21:16
取得日時:2008/08/17 10:15