FTP(File Transfer Protocol)その1
| ファイル転送したいときに FTP(File Transfer Protocol)はその名前の通りファイル転送を行うときに使われます。FTPはTCP/IPアプリケーション層のプロトコルで、トランスポート層にTCPを利用しています。ポート番号は、20と21を使っています。20はデータ転送用、21は制御用に使います。詳しくはまたあとで解説します。 FTPは下位層にTCPを使うことによって、信頼性の高い通信を行うことができます。大きなサイズのファイルを送るときには、いくつかのパケットに分割されて送られます。この分割されたパケットのひとつでも相手に届かなければ、ファイルを再構成することができなくなってしまいます。すると、また最初から送りなおし・・・このようなことが起こらないようにするために、TCPを使ってコネクションを確立し、確認応答、エラー時の再送制御などを行います。 ただ、TCPを使うことによって信頼性は高くなりますが、コネクションの確立、確認応答などで実際に転送するデータ以外の通信も発生しますので、ファイル転送自体の効率が悪くなってしまいます。このことを「オーバーヘッドが大きい」という風に言われています。 でも、サイズの小さなファイルを送りたいというときにはわざわざコネクションを確立したりするのは大げさです。もし、途中でなくなってしまって送りなおしてもそれほど手間ではない小さなファイルの時には、FTPはあまり向いていません。このような場合は、TFTP(Trivial File Transfer Protocol)を利用すると小さなファイルを効率よく転送することができます。TFTPについては、また近いうちに紹介していきます。 下の図はFTPの階層構造を示したものです。 ![]() |
| FTPの動作(制御コネクション) さて、FTPはクライアント・サーバ型の通信を行います。ファイルを提供するFTPサーバとそれをダウンロードしたいFTPクライアントがいます。 FTPクライアントはまずFTPサーバに対して、制御用のTCPコネクションを確立します。このとき送信先ポート番号は21となります。ポート番号21は制御用のポート番号です。FTPでは、この制御用コネクションを通じて、クライアントからさまざまなコマンド、それに対するサーバの応答をやり取りすることによって、ファイル転送を制御していきます。FTPクライアント側のポート番号はもちろん、ランダムポートですね。 ![]() FTPサーバとFTPクライアント間でTCPコネクションが確立すると、FTPサーバから「220 service ready」という応答が返されます。「準備いいよ〜」という合図みたいなものです。すると、クライアント側の画面にはユーザ名を入力するように表示されてきます。ユーザ名を入力すると、FTPクライアントは、「USER ユーザ名」コマンドを送ります。サーバはきちんと登録されているユーザ名であれば、「331 user okay」を返します。で、画面にはパスワードを入力するように表示されます。パスワードを入力することによって、FTPクライアントは「PASS パスワード」コマンドを発行します。ユーザ名に対するパスワードが一致すればサーバは、「230 user logged in」という応答コードを返します。正しくFTPサーバにログインして、FTPサービスを受けることができるようになります。 ![]() なお、anonymous FTPサーバといって特にユーザ名とパスワードを特定しなくても利用できるFTPサーバがあります。「anonymous」とは「匿名」という意味ですね。ユーザ名は「anonymous」でパスワードはだいたい利用者のメールアドレスが求められます。(でも、パスワード入れなくても大丈夫だったりします) anonymousを許容するかしないかは、FTPサーバの設定によるものですね。セキュリティを考えて、きちんと登録されている人にしかアクセスさせないようにしたいのであればanonymousの設定を無効にしておかなければいけません。 で、これからいよいよデータ転送という話になるのですが、今回はここまでで続きは次回です。 |
(C) Copyright 2000-2001 Gene All Right Reserved