Type-length-value
表示
![]() |
通信プロトコルでは、 省略可能な情報がtype-length-value︵TLV、tag-length-valueとも︶というフォーマットで表現されることがある。type-length-valueは、情報の種類(type)・長さ(length)・値(value)をセットにして表現するフォーマットである。
type︵種類︶とlength︵長さ︶は固定長︵通常、1~4バイト︶である。value︵値︶のフィールドは可変長である。各フィールドは以下のように用いられる。
- type
- 情報の種類に対応した数値または文字
- length
- valueフィールドのサイズ(数値)
- value
- 可変長のデータ
例
[編集]
﹁電話をかける﹂コマンドを例に説明する。
このシステムの最初のバージョン︵バージョン1︶では、﹁電話をかける﹂コマンドには2つの要素、﹁コマンド﹂と﹁宛先電話番号﹂が想定される。
command_c/4/makeCall_c/phoneNumberToCall_c/8/"722-4246"
ここで、
command_c
、makeCall_c
、phoneNu
mberToCall_c
は整数値、4、8はvalueフィールドの長さである。
後のバージョン︵バージョン2︶で、新たな要素﹁送信元電話番号﹂を追加しようとすると、以下のようになる。
command_c/4/makeCall_c/callingNumber_c/14/"1-613-715-9719"/phoneNumberToCall_c/8/"722-4246"
バージョン2のシステムから送信されたメッセージをバージョン1のシステムが受信した場合、まずcommand_c
要素を読み取り、次にcallingNumber_c
要素を読み取る。バージョン1のシステムはcallingNumber_c
要素を理解できないので、lengthフィールド(14)を読み取ってそのバイト数だけスキップし、次のphoneNumberToCall_c
要素を読み取る。
上記の例はLink Layer Discovery Protocol(LLDP)である。LLDPでは組織特有の情報をTLV形式でパケットに入れることを許容している。
TLV形式は、COPS、IS-IS、RADIUSなどでも使われている。
他の表現の形式
[編集]
TCP/IPプロトコルの根幹であるIP、TCP、UDPでは、固定長フィールドが使われている。
TCP/IPベースのプロトコル、HTTP、FTP、SMTP、POP3、SIPなどは、文字列による﹁種類: 値﹂の形式のフォーマットを採用している
。これはRFC 2822を継承するものである。
ASN.1は、TLV形式(BER, DER)と非TLV形式(PER, XER)のフォーマットを並用している。
関連項目
[編集]- Common Open Policy Service (COPS)
- IS-IS
- key-length-value
- Link Layer Discovery Protocol
- RADIUS
- OBEX
- tlve, A common TLV parser