疑問解決(FTP)

2009/7/2

FTPは結構使う機会があると思います。
何気なく使っていると思いますが、おさらいしてみましょう。

・概要
 FTPはFile Transfer Protocolの略で、
 その名の通り、ファイル転送を行う際に利用されるプロトコルです。
・構造
 FTPは、クライアント・サーバ方式を採用しています。
 また、クライアント・サーバ共に”PI(Protocol Interpreter)”と
  ”DTP(Data Transfer Process)”という2つのモジュールから成ります。

 PIは、FTP用のミドルウェアのような物です。
 クライアントから受けた指示を実際のFTPのプロトコルに変換します。
 例を挙げると、複数ファイル転送でよく利用する ”mget”というコマンドが有りますが、
 FTPプロトコルには複数ファイルを転送する機能はありません。
 これは、クライアントが”mget”指令を出すと、
 PIが単一ファイルの転送を複数回繰り返して実行してくれています。

 DTPは、ファイルにアクセスする部分です。
 実際OSが異なるとファイルアクセスのやり方が変わってきます。
 そのためモジュール化されています。
・コネクション

 FTPは、WEBやSMTPと違って、下記の通りコネクションを2つ使用します。
  ・コントロールコネクション
  ・データコネクション

 何故2つにわかれているかというと、
 大量のデータ送受信を行った場合、
 コネクションが1つだと途中でキャンセルができなくなってしまいます。
 そのため、制御用のコネクションを専用に用意しています。

・フロー
 FTPの簡単なフローは下記の通りです。
 
FTPサーバへ接続要求
 ↓
ユーザ名入力
 ↓
パスワード入力
 ↓
PORTコマンドでデータコネクションを作成
 ↓
ファイル転送
・データコネクションの作成

 上記フローでも書いていますが、
 データコネクションはPORTコマンドを使って
 クライアントのIPアドレスとポート番号を通知します。
 そして、サーバからその通知されたクライアントに対して
 データコネクションを張りに行きます。

 つまり、FTPサーバがTCPプロトコルで言うクライアントになり、
 FTPクライアントは、サーバになります。
 ちょっとややこしいですね。

・パッシブモード

 FTPの基本はある程度理解していただけたかと思いますが、
 最近のインターネット事情を考えると、
 データコネクションの作成方法が成り立たない場合多くなっています。

 最近では、Firewall や NAT などの普及によって、
 FTPサーバ側からFTPクライアント側へコネクションを張ることは困難になって来ています。
 そのため、FTPサーバ側から利用できるポート情報を通知し、
 FTPクライアントがそのポートに対してデータコネクションを作成する方法ができました。
 この機能を”パッシブモード”と呼んでいます。

・単語メモ
 
さらに情報が欲しい方は、Google検索で  
Google
・TOPへ戻る
 

 

メールはこちらに