4. ファイル転送 (FILE TRANSFER)
このセクションでは、2つのファイル転送プロトコルについて説明します:ファイル転送プロトコル (File Transfer Protocol, FTP) と簡易ファイル転送プロトコル (Trivial File Transfer Protocol, TFTP)。
4.1 ファイル転送プロトコル -- FTP (FILE TRANSFER PROTOCOL)
4.1.1 はじめに (Introduction)
ファイル転送プロトコル (FTP) は、ホスト間のファイル転送のためのプロトコルです。FTPは2つの並列TCP接続を使用します:コマンドと応答のための制御接続と、ファイル転送のためのデータ接続です。
ファイル転送をサポートするすべてのインターネットホストは、FTPを実装しなければなりません (MUST)。ただし、一般的なファイル転送サービスを必要としないホストでは、FTPクライアント機能を実装しても構いません (MAY)。
4.1.2 プロトコルウォークスルー (Protocol Walk-Through)
制御接続 (Control Connection)
FTP制御接続は、クライアント (USER-PI) からサーバー (SERVER-PI) にFTPコマンドを送信し、サーバーからクライアントに応答を返すために使用されるTelnet接続です。
FTPコマンドには以下が含まれます:
- USER:ユーザー名
- PASS:パスワード
- ACCT:アカウント
- CWD:作業ディレクトリの変更
- CDUP:親ディレクトリへの変更
- SMNT:構造マウント
- QUIT:ログアウト
- RETR:ファイル取得
- STOR:ファイル保存
- STOU:一意に保存
- APPE:追加
- ALLO:割り当て
- REST:再開
- RNFR:名前変更元
- RNTO:名前変更先
- ABOR:中止
- DELE:削除
- RMD:ディレクトリ削除
- MKD:ディレクトリ作成
- PWD:作業ディレクトリ表示
- LIST:ファイル一覧
- NLST:名前一覧
- SITE:サイトパラメータ
- SYST:システム
- STAT:ステータス
- HELP:ヘルプ
- NOOP:何もしない
データ接続 (Data Connection)
FTPデータ接続は、ファイル転送とディレクトリ一覧のために使用されます。FTPは、データ接続を確立するためにアクティブ (PORT) とパッシブ (PASV) の両方のモードをサポートします。
4.1.3 特定の問題 (Specific Issues)
4.1.3.1 FTP再開メカニズム (FTP Restart Mechanism)
FTP RESTコマンドは、指定されたチェックポイントからファイル転送を再開することを可能にします。FTPサーバーは、RETR用のRESTコマンドを実装すべきです (SHOULD)。
4.1.3.2 FTP TYPEコマンド (FTP TYPE Command)
TYPEコマンドは、表現タイプ(ASCII、EBCDIC、Image/Binary、Local)を指定します。FTP実装は、少なくとも以下のTYPEコマンドをサポートしなければなりません (MUST):
- ASCII Non-print (TYPE A N)
- Image (TYPE I)
4.1.3.3 FTP PASVコマンド (FTP PASV Command)
PASVコマンドは、サーバーにデータポートでリスンし、接続を待つように要求します。FTPサーバーはPASVを実装すべきです (SHOULD)。
4.1.3.4 FTP PORTコマンド (FTP PORT Command)
PORTコマンドは、サーバーが接続すべきデータポートを指定します。FTPサーバーはPORTを実装しなければなりません (MUST)。
4.1.4 FTP要件の概要 (FTP Requirements Summary)
| 機能 | セクション | Must | Should | May | Not |
|---|---|---|---|---|---|
| FTPを実装する | 4.1.1 | x | |||
| TYPE A Nをサポートする | 4.1.3.2 | x | |||
| TYPE Iをサポートする | 4.1.3.2 | x | |||
| PORTを実装する | 4.1.3.4 | x | |||
| PASVを実装する | 4.1.3.3 | x | |||
| RETR用のRESTを実装する | 4.1.3.1 | x |
4.2 簡易ファイル転送プロトコル -- TFTP (TRIVIAL FILE TRANSFER PROTOCOL)
4.2.1 はじめに (Introduction)
簡易ファイル転送プロトコル (TFTP) は、UDP上に構築されたシンプルなファイル転送プロトコルです。TFTPは、FTPの洗練を必要としないアプリケーション向けに設計されています。
汎用インターネットホストは、TFTPクライアント機能を実装すべきです (SHOULD)。汎用インターネットホストは、TFTPサーバー機能を実装しても構いません (MAY)。
4.2.2 プロトコルウォークスルー (Protocol Walk-Through)
TFTPは5種類のパケットを使用します:
- 読み取り要求 (Read Request, RRQ):ファイル読み取り要求
- 書き込み要求 (Write Request, WRQ):ファイル書き込み要求
- データ (Data, DATA):ファイルデータパケット
- 確認応答 (Acknowledgment, ACK):データ受信確認
- エラー (Error, ERROR):エラー状態
4.2.3 特定の問題 (Specific Issues)
4.2.3.1 TFTPタイムアウト (TFTP Timeout)
TFTPは、タイムアウトと再送信を伴うシンプルなストップアンドウェイトプロトコルを使用します。TFTP実装は、適応的なタイムアウトを使用しなければなりません (MUST)。
4.2.3.2 TFTPオプション (TFTP Options)
TFTPは、ブロックサイズネゴシエーションとタイムアウトネゴシエーションを含むオプションの拡張をサポートします。これらのオプションは実装されても構いません (MAY)。
4.2.4 TFTP要件の概要 (TFTP Requirements Summary)
| 機能 | セクション | Must | Should | May | Not |
|---|---|---|---|---|---|
| TFTPクライアントを実装する | 4.2.1 | x | |||
| TFTPサーバーを実装する | 4.2.1 | x | |||
| 適応的なタイムアウトを使用する | 4.2.3.1 | x | |||
| TFTPオプションをサポートする | 4.2.3.2 | x |