目次
概要
TFTPは簡易的なファイル転送プロトコルです。ルータなどのネットワーク機器の設定ファイルなどを転送するためによく利用します。TFTPの仕組みとCiscoルータをTFTPサーバ/クライアントとして利用する方法について解説します。
TFTPとは
TFTP(Trivial File Transfer Protocol)とは、簡易的なファイル転送プロトコルです。TFTPでファイル転送をする場合、ユーザ認証は行いません。また、トランスポート層にUDP(ウェルノウンポート69)を利用していて、TCPコネクションを確立するようなオーバーヘッドがかからず、効率よくファイル転送できます。トランスポート層にTCPを利用するFTPやHTTPに比べると、ファイル転送の信頼性があまり高くありません。ルータの設定ファイルなどサイズがあまり大きくないファイルを簡単に転送したいという用途で利用します。

TFTPの仕様はRFC1350で定義されています。
TFTPの仕組み
TFTPでファイル転送するときには、TFTPサーバアプリケーションとTFTPクライアントアプリケーションが必要です。TFTPサーバアプリケーションとクライアントアプリケーション間の動作の流れは以下のようになります。
- 要求コマンドの送信
- ファイルデータの転送と確認応答
要求コマンドの送信
TFTPクライアントアプリケーションからTFTPサーバアプリケーションへ要求コマンドを送信します。このとき、宛先ポート番号が69です。送信元のポート番号はランダムです。

ファイルデータの転送と確認応答
要求コマンドに応じてファイルデータを転送します。TFTPサーバはファイルデータ転送のためにランダムなポート番号を決定します。TFTPクライアント側のポート番号は要求コマンドを送信したときのポート番号です。また、TFTPでのファイルデータの転送は1回あたり512バイトです。サイズが大きいファイルは、TFTPによって512バイトごとのブロックに分割されます。
TFTPでファイル転送をするときにはTFTPの確認応答(ACK)を行っています。分割したブロックが1つでも届かないとファイルを再構成できなくなってしまうので、TFTPのレベルでの確認応答を行います。
512バイトのファイルデータを分割したブロックとそれに応じた確認応答のやり取りを必要なだけ繰り返します。最終的に512バイト未満のブロックの転送が完了すると、TFTPのファイル転送は完了です。

TFTPサーバとクライアントの間にパケットフィルタを行っているルータやファイアウォールが存在している場合、パケットフィルタの条件に注意が必要です。TFTPサーバはUDP69だけではなく、ランダムポートも利用していることを考慮してパケットフィルタの条件を設定してください。
CiscoルータをTFTPサーバおよびTFTPクライアントとして利用する
CiscoルータをTFTPサーバおよびTFTPクライアントとして利用することができます。
TFTPサーバの設定
CiscoルータをTFTPサーバとして動作させられます。そうすると、TFTPクライアントは、ルータのフラッシュやNVRAM上のファイルをダウンロードできます。そのために、グローバルコンフィグレーションモードから以下のコマンドを入力します。
Ciscoルータ TFTPサーバの設定
(config)#tftp-server <file-path>
<file-path> : TFTPでダウンロードさせるファイルパス

TFTPクライアント
CiscoルータをTFTPクライアントとして、TFTPサーバとファイル転送できます。TFTPサーバ上のファイルをルータのフラッシュメモリなどにダウンロードする場合は、特権EXECモードで次のように入力します。
Ciscoルータ TFTPクライアント ダウロード
#copy tftp <copy-destination>
<copy-destination> : コピー先のファイル
コマンドを入力するときに、TFTPサーバのIPアドレスやダウンロードするファイル名などを指定していないと、以下のように必要な情報の入力が求められます。
Ciscoルータ TFTPクライアント ダウロード サンプル
R1#copy tftp nvram Address or name of remote host []? 192.168.12.1 Source filename []? r1-config Destination filename [nvram]? startup-config
「Address or name of remote host」はTFTPサーバのIPアドレスです。「Source filename」は、TFTPサーバ上のダウンロードするファイル名です。「Destination filename」はルータのローカルに保存するファイル名です。

また、ルータのフラッシュメモリなどのストレージ上のファイルをTFTPサーバにアップロードするときには、特権EXECモードで次のように入力します。
Ciscoルータ TFTPクライアント アップロード
#copy <copy-source> tftp
<copy-source> : コピー元のファイル
この場合もコマンド入力時に必要な情報を指定していなければ、必要な情報の入力を求められます。
Ciscoルータ TFTPクライアント アップロード サンプル
R1#copy nvram: tftp Source filename []? startup-config Address or name of remote host []? 192.168.12.1 Destination filename [r1-confg]?
「Address or name of remote host」はTFTPサーバのIPアドレスです。「Source filename」は、ルータローカルのアップロードするファイル名です。「Destination filename」はTFTPサーバに保存するファイル名です。

まとめ
ポイント
- TFTPは簡易的なファイル転送プロトコルです。ルータなどのネットワーク機器の設定ファイルといった小さなサイズのファイルを転送するためによく利用します。
- トランスポート層にUDPを利用し、ウェルノウンポート番号は69です。ただし、サーバ側でランダムポートも利用します。
- CiscoルータをTFTPサーバおよびTFTPクライアントとして利用することができます。
関連記事
リンク
TCP/IP
- TCP/IPの階層
- IP(Internet Protocol) ~データを送り届ける~
- ICMP ~きちんとIPで転送できますか?~
- Ping ~きちんとデータは届きますか?~
- Windows OSのPingコマンド
- トレースルート ~データはどのルータを通っていますか?~
- tracertコマンド(Windows OS)
- ICMPリダイレクト
- トラブルはどこ? ~Pingとトレースルート~
- ARP ~IPアドレスとMACアドレスを対応付け~
- ARPフォーマット
- Gratuitous ARP(GARP)
- ポート番号 ~どのアプリケーションのデータなの?
- TCPの概要
- TCPの動作
- UDPの概要
- アプリケーションのデータが届くまでのまとめ
- DNS ~宛先IPアドレスを求める~
- nslookupコマンド ~DNSの名前解決の確認~
- DHCP ~IPアドレスを自動割り当て~
- Cisco IOS DHCPサーバの設定と確認コマンド
- Ciscoルータ DHCPサーバの設定例
- DHCPリレーエージェント
- DHCPリレーエージェントの設定例[Cisco]
- DHCPサーバ配置のまとめ
- TCP/IPの設定のまとめ
- ipconfigコマンド ~Windows OSのTCP/IP設定を確認~
- Linux(Ubuntu)でのTCP/IP設定の確認コマンド
- Webサイト
- HTMLとCSS ~Webページを作る~
- URL ~Webサイト(Webページ)のアドレス~
- HTTP ~HTMLファイルを転送する~
- Webアプリケーション ~Webブラウザだけあればいい~
- HTTP Cookie
- Webアプリケーションのセッション管理
- Webプロキシサーバ ~Webアクセスを代わりに~
- Webアクセスのまとめ
- 電子メール
- SMTP ~電子メール送信用プロトコル~
- POP3 ~メール受信用プロトコル~
- IMAP4 ~メールサーバ上でメールを管理~
- 電子メールのまとめ
- FTP ~代表的なファイル転送プロトコル~
- TFTP ~簡易的なファイル転送プロトコル~
- Windows10/11のTFTPクライアント
- ネットワークのトラブルの切り分け手順