TFTP【Trivial File Transfer Protocol】

広告

広告

TFTPとは

最終更新
2006-01-09T00:45:00+09:00
この記事のURI参照
https://www.7key.jp/nw/technology/protocol/tftp.html#what

TFTPTCP/IPネットワーク上でファイルのやり取りを行うためのプロトコル、若しくはこのプロトコルを実装したアプリケーションを指します。そもそもTFTPはTrivial FTPの略で、直訳すると「取るに足らないFTP」となります。これはプロトコルの機能や動作が非常に原始的で簡素なところから付けられた名前のようです。 FTPの名が付いておりFTPもファイル転送のためのプロトコルですが、TFTPとは全く関係がありません。

TFTPFTPと違いUDPが使われ、コネクションレスモードで動作をします。このためIP/UDPが提供するもの以外の信頼性はTFTPが自分で提供する必要があります。ただし、TFTPはTCPを使わないためサイズの小さいデータのやり取りに適している点、プロトコルが単純なためアプリケーションも単純なもので良い点とFTPには無いTFTPのメリットを挙げる事ができます。プロトコルが単純なためアプリケーションのサイズが小さいので、ネットワーク機器やディスクレスのコンピュータシステム等のROMにもアプリケーションを保存する事が出来、それらがやり取りをするデータの転送に使われることが多いプロトコルとなっています。

TFTPの特徴

TFTPの動作

最終更新
2006-01-09T01:19:00+09:00
この記事のURI参照
https://www.7key.jp/nw/technology/protocol/tftp.html#action
  1. クライアントからUDP69番ポートを使い、最初のパケットでファイル転送を要求する(読み出し要求か書き込み要求のいずれか)。
  2. サーバ側が要求を受け入れる場合、書き込み要求の場合には確認応答が、読み出し要求の場合にはデータブロックが返信される。この際、サーバはUDP69番ポートは使わず、ランダムに決定されたUDPポート番号を使用する。以後クライアントはこのポート番号を使いデータのやり取りを行う。
  3. 送信側は、順序番号付き512オクテットの固定長データブロックを送信する。
  4. 送受信は送信側からのデータブロック送信と、それに対する受信側からの確認応答(受け取ったデータブロックの順序番号付き)とで行われる(送信は1度に1データブロックずつで、受信側からの応答確認を待ってから送信側が次のブロックを送信する)。
  5. 送信側はデータ送信後に確認応答が返って来なかった場合、タイムアウト処理として直前のデータブロックを再送する。
  6. 受信側は確認応答送信後に次のデータブロックが届かなかった場合、タイムアウト処理として直前の確認応答を再送する。
  7. 512オクテットより短いデータブロックが送信されると処理が終了する(転送ファイルが512オクテットで割り切れる場合、送信側は最後にデータ部分が0オクテットのデータブロックを送信する)。

受信側からの応答確認を待ってから送信側が次のデータブロックを送信しますので、送信側が再転送に備えてバッファに置くデータブロックは一つだけとなります。そのためオーバヘッドが小さく済まされるのです。

データブロックに付けられる順序番号は1から始まる連番となっています。応答確認では確認するデータブロックの番号が必ず付けられます。ただし最初の書き込み要求に対する確認応答は特別なケースとみなされ、0番を付けられた確認応答がクライアント側に返されます。

UDP69番ポートは最初の要求の際だけに使用することによって、複数クライアントへのサービスが可能となっています。

TFTPのプロトコルフォーマット

最終更新
2006-01-09T01:56:00+09:00
この記事のURI参照
https://www.7key.jp/nw/technology/protocol/tftp.html#format

TFTPの読み出し/書き込み要求フォーマット

TFTPの読み出し/書き込み要求フォーマット
OPコード
(2)
ファイル名
(可変長)
NULL
(1)
モード
(可変長)
NULL
(1)

括弧内はオクテット数です。OPコードは1が読み出し要求、2が書き込み要求を表します。モードには以下のいずれかの文字列が入ります。

netascii
全ての受信データをホストが自分のフォーマットに変換しなければならない。
octet
送信元のフォーマットでファイルは転送される。
mail
受信者の名前をファイル名に使用し、書き込み要求で転送を開始する点以外はnetasciiモードと同様。

TFTPデータ転送フォーマット

TFTPデータ転送フォーマット
OPコード
(2)
ブロック番号
(2)
データ部分(512オクテット以下)

OPコードには必ず3が入り、このPDUにデータが入っていることを示します。

TFTP応答確認フォーマット

TFTP応答確認フォーマット
OPコード
(2)
ブロック番号
(2)

OPコードには必ず4が入ります。ブロック番号は実際に応答確認をするデータブロックのブロック番号です。

TFTPエラーフォーマット

TFTPエラーフォーマット
OPコード
(2)
エラーコード
(2)
エラーメッセージ
(可変長)
NULL
(1)

括弧内はオクテット数です。OPコードは必ず5が入ります。エラーコードについては下記を参照。

TFTPのエラーコード
コード意味
0未定義。エラーメッセージを参照。
1ファイルが見つからない。
2アクセス違反。
3ディスクに書き込み領域が無い。
4不正なTFTPコマンド。
5不明な転送ID。
6ファイルが既にある。
7ユーザ未定義。

Secure TFTP

最終更新
2006-01-09T02:03:00+09:00
この記事のURI参照
https://www.7key.jp/nw/technology/protocol/tftp.html#secure_tftp

Secure TFTPは、クライアントに対してあらかじめ定めたディレクトリ構造以外の利用を禁止するものです。TFTPには認証機能が無いため、どのクライアントプロセスもサーバ上のファイルの読み出しや書き込みが可能なため実装されました。Secure TFTPではTFTPホームディレクトリをファイルシステムのルートと考え、そのツリー構造から外に出ることは許されていません。

補足知識

最終更新
2006-01-09T01:53:00+09:00
この記事のURI参照
https://www.7key.jp/nw/technology/protocol/tftp.html#supplement

2003年に流行したMS.BLASTと呼ばれるワームはTFTPクライアント機能を持ち、TFTPを使いサーバからMS.BLAST本体をダウンロードするものであった。

広告

当ページ作成にあたり、参考にさせてもらったリソース

Copyright (C) 2006 七鍵 key@do.ai 初版:2006年01月09日 最終更新:2006年01月09日