Trivial File Transfer Protocol

Trivial File Transfer Protocol (TFTP) について



Trivial File Transfer Protocol(TFTP)は、UDP(User Datagram Protocol)をベースとした、シンプルなファイル転送プロトコルです。FTP(File Transfer Protocol)と比較して軽量で実装が容易である一方、認証機能がないため、セキュリティには注意が必要です。

概要



TFTPは、そのシンプルな設計から、小さなメモリフットプリントで実装できるため、組み込みシステムやネットワークブート環境で広く採用されています。特に、ディスクレス環境におけるOSイメージのロードや、ルーターなどの設定ファイルの転送によく利用されます。ただし、今日では、インターネット上でのデータ転送にはほとんど使用されていません。

TFTPの設計は、PUPプロトコルスイートの一部であるEFTPプロトコルの影響を受けています。1980年にIEN 133で定義され、1981年にはRFC 783として公開されました。その後、1992年にRFC 1350でアップデートが行われ、魔法使いの弟子症候群が修正されました。1995年にはTFTP Option Extension RFC 1782が定義され、1998年のRFC 2347でアップデートされ、転送オプションのネゴシエーションメカニズムが確立されました。これにより、ファイル転送前にさまざまなオプションを調整することが可能になりました。

TFTPは、ポート番号69を使用してUDP上で動作します。シンプルさを重視しているため、高度な機能はほとんど提供されていません。例えば、リモートサーバ間でファイルの読み書きはできますが、ディレクトリの操作やユーザー認証はできません。そのため、TFTPは通常、ローカルエリアネットワーク(LAN)内でのみ使用されます。

詳細な動作



TFTPでは、クライアントがサーバ上のファイルを読み書きするリクエストを発行することで転送が開始されます。リクエストには、RFC 2347で規定されたオプションパラメータを含めることができます。サーバがリクエストを承認すると、ファイル転送が開始されます。

ファイルは、デフォルトで512バイトの固定長ブロックで転送されますが、RFC 2348で定義されたオプションを使用することで、ブロックサイズをネゴシエーションできます。各データブロックは、次のブロックが送信される前に確認応答(ACK)パケットによって確認される必要があります。転送の終了は、512バイト未満のデータパケットで示されます。パケットが紛失した場合は、再送処理が行われます。

TFTPの転送モードには、netascii、octet、mailの3つがあります。netasciiモードは、ASCIIの修正版を使用し、テキストファイルの転送に適しています。octetモードは、生の8ビットバイトを転送し、バイナリファイルの転送に適しています。mailモードは、netasciiモードを使用し、メールアドレスをファイル名として指定してファイルを送信しますが、RFC 1350で廃止されました。

転送要求は常にポート69に対して開始されますが、データ転送に使用されるポートは、転送の初期化中にランダムに割り当てられます。転送の過程では、送信側と受信側の両方がデータと確認応答の送受信を交互に行います。

ネットワークブートとTFTP



TFTPは、ネットワークブート環境で重要な役割を果たします。1984年のRFC 906では、ブートストラップローディングにTFTPが推奨され、1985年のRFC 951で定義されたBOOTP(Bootstrap Protocol)によって、ディスクレスクライアントはTFTPサーバからOSイメージをロードできるようになりました。1997年のRFC 2131で定義されたDHCP(Dynamic Host Configuration Protocol)は、BOOTPを改善しました。1998年には、Preboot Execution Environment (PXE) 2.0がリリースされ、TFTPが重要な役割を果たしています。インテルは、UEFIの仕様でPXEを広くサポートし、TFTPの利用範囲を拡大しています。

ファイルサイズとパフォーマンス



初期のTFTPでは、ファイルサイズの上限は32MBでしたが、1998年のRFC 2348によって4.294GBに拡張されました。ただし、ブロックサイズが大きすぎるとIPフラグメンテーションが発生し、パフォーマンスが低下する可能性があります。そのため、ブロックサイズはMTU(Maximum Transmission Unit)の範囲内に収める必要があります。

TFTPはUDPを使用するため、独自のトランスポート層とセッション層のサポートが必要です。通常、TFTPはロックステップで動作し、一度に1つのパケット(データまたはACK)のみがネットワーク上を転送されます。このため、スループットが低く、遅延が大きくなる可能性があります。Microsoftは、Windows 2008にウィンドウ化TFTPを導入し、RFC 7440によってTFTPのパフォーマンスを改善しています。

セキュリティ上の注意点



TFTPには、ユーザー認証やアクセスコントロールのメカニズムがありません。そのため、認証や機密性が必要な場合には、補助的な処理が必要です。TFTPは通常、公開されているファイルのインストールにのみ使用され、ファイルのリスト、削除、名前変更、書き込みなどの操作はできません。

まとめ



TFTPは、軽量でシンプルなファイル転送プロトコルですが、セキュリティ上の注意点も考慮する必要があります。ネットワークブートや設定ファイルの転送など、特定の環境で有用なプロトコルです。

IETF 標準ドキュメント



以下に、TFTPに関するIETF標準ドキュメントのリンクを示します。

RFC 1350 - THE TFTP PROTOCOL (REVISION 2) (RFC 783 を廃止)
RFC 1785 - TFTP Option Negotiation Analysis
RFC 2347 - TFTP Option Extension (RFC 1782 を廃止)
RFC 2348 - TFTP Blocksize Option (RFC 1783 を廃止)
RFC 2349 - TFTP Timeout Interval and Transfer Size Options (RFC 1784 を廃止)

関連項目



Simple File Transfer Protocol
* Preboot Execution Environment

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。