TFTP通信の仕組み

 TFTPは、「Trivial File Transfer Protocol」の略で、RFC 1350で規定されています。「Trivial」とは「取るに足らない」と言う意味があり、FTPには及ばないプロトコルであることが、名称からも分かります。

 TFTPとは、FTPの機能を単純化したプロトコルで、FTPと比べて使用できる機能が制限されシンプルな作りになっており、ユーザ名とパスワードによる認証機能やディレクトリ一覧を閲覧する機能はありません。また、ファイルの転送にはUDPを使用します。

 TFTPには、ディレクトリを閲覧する機能がないため、転送したいファイル名とそのファイルが存在する場所を正確に把握しておかなければなりません。

 TFTPは、シンプルなプロトコルである為、やりとりするデータ量が少ない通信に向いています。しかし、信頼性の面では、認証機能がないことに加え、転送にUDPを使用することから、信頼性が高いとは言えません。

そのため、現在ではセキュリティ上の関係からTFTPをサポートしているサイトは、ほとんどありません。

 現在のTFTPの使用用途は、起動のためのディスク持たないディスクレスコンピュータがOSをブートする際や、ルータやスイッチなどのネットワーク機器のOSやファームウェアをアップデートしたり入れ替えたりする際に利用されています。

TFTPのパケット

 クライアントがTFTPサーバにアクセスする際には、UDPのポート番号69を使用します。ただし、宛先のポート番号に69を指定するのは、クライアントからTFTPサーバへのリクエストの時のみで、それ以降の通信では、TFTPサーバは、ランダムなポート番号を使用して通信を行います。

 TFTPのデータは、512バイトの固定長で、順序番号付きのデータブロックを送信されます。サーバは、固定長のデータブロックを送信すると、クライアントからの確認応答を待ってから、次のデータブロックを送信します。サーバは、確認応答が来なかった場合、タイムアウト処理として直前のデータブロックを再送するようになっています。

 転送ファイルが512バイトで割り切れる場合、サーバは最後にデータ部分が0バイトのデータブロックを送信します。