TLV形式 【Type-Length-Value】 Tag-Length-Value
概要
TLV形式(Type-Length-Value)とは、通信プロトコルなどで用いられる汎用的なデータ記述形式の一つで、データの種類(Type)、長さ(Length)、値(Value)を連結したもの。可変長や可変個数のオプションの記述などに向いている。値(データ本体)は任意の長さや形式で記述することができるが、種類と長さは固定長としてあらかじめ文字数やバイト数を決めておく。各項目は種類、長さ、値をこの順で連結したもので、この組を必要なだけ連結してデータ全体を格納する。
読み出し時には、先頭から種類、長さを読み込み、長さの分だけデータを読み出せば一つ分の項目が取り出せる。その後には次の項目の種類、長さ、値が続いており、同じ操作を繰り返せば順番に各項目を取り出すことができる。
項目の種類や数、長さ、出現順などがあらかじめ分からなくても(あるいは、決まっていなかったり、当初の規定から変更が行われても)、項目の種類と値の組を確実に取り出すことができる。読み出し側は種類や値を見て不要なものは捨て、必要なものだけ利用すればよい。
例えば、プロトコルのバージョンアップで項目の追加や削除が行われた場合、TLV形式なら旧版のソフトウェアをすべて更新しなくても新バージョンのデータを流通させることができる。ファイル形式に任意のオプション項目がたくさんある場合などでも、各ソフトウェアは自分に必要な項目だけ抜き出して利用すればよく、すべてのオプションに対応する必要はない。
TLV形式はテキストデータの設計に適用することもできるが、テキスト形式の場合はこの方法を用いなくても柔軟な表現形式を取ることができるため、柔軟で拡張性のあるバイナリデータの格納形式として用いられることが多い。TLV形式自体は種類や値の詳細は定めないため、データ形式というよりデータ構造に近い。
プロトコルのデータ記述形式としてSSLや後継のTLS、SSH、IS-IS、RADIUS、LLDP、DHCPなどで採用されており、ファイル形式としてMatroska(MKVファイル/MKAファイル)、AIFFやRIFFの元になったIFF(Interchange File Format)、MP4ファイルの元になったMOV(.movファイル/.qtファイル/QuickTime File Format)などに採用されている。