タイプ-長さ-値


Type%E2%80%93length%E2%80%93value

 「Type–length–value」  
通信プロトコル内では、TLV(type-length-valueまたはtag-length-value)は、特定のプロトコルのオプションの情報要素に使用されるエンコード方式です。TLVでエンコードされたデータストリームには、レコードタイプのコード、レコード値の長さ、最後に値自体が含まれます。

コンテンツ
1 詳細
2 例
2.1 実際の例
2.1.1 トランスポートプロトコル
2.1.2 データストレージフォーマット
2.2 その他の例
3 データを表す他の方法
4 も参照してください

詳細
タイプと長さはサイズが固定されており(通常は1〜4バイト)、値フィールドは可変サイズです。これらのフィールドは次のように使用されます。
タイプ
メッセージのこの部分が表すフィールドの種類を示すバイナリコード(多くの場合、単に英数字)。
長さ
値フィールドのサイズ(通常はバイト単位)。
価値
メッセージのこの部分のデータを含む可変サイズの一連のバイト。
TLV表現データシステムソリューションを使用する利点は次のとおりです。
TLVシーケンスは、一般化された解析関数を使用して簡単に検索できます。
古いノードで受信された新しいメッセージ要素は安全にスキップでき、メッセージの残りの部分を解析できます。これは、不明なXMLタグを安全にスキップできる方法に似ています。
TLV要素は、メッセージ本文内で任意の順序で配置できます。
TLV要素は通常、バイナリ形式とバイナリプロトコルで使用されます。これにより、同等のテキストベースのプロトコルよりも解析が高速になり、データが小さくなります。

実際の例

トランスポートプロトコル
TLS(およびその前身のSSL)は、TLVでエンコードされたメッセージを使用します。 SSH 警官 IS-IS 半径
Link Layer Discovery Protocolを使用すると、組織固有の情報をLLDPパケット内のTLV要素として送信できます。
Media Redundancy Protocolにより、組織固有の情報が可能になります
動的ホスト構成プロトコルは、TLVでエンコードされたオプションを使用します
GSM携帯電話で使用されるRRプロトコル(3GPP 04.18で定義)。このプロトコルでは、各メッセージは一連の情報要素として定義されます。

データストレージフォーマット IFF QTFF(MPEG-4コンテナの基礎)

その他の例
電話をかけるメッセージを想像してみてシステムの最初のバージョンでは、これは2つのメッセージ要素を使用する可能性があります:「コマンド」と「phoneNumberToCall」:
command_c / 4 / makeCall_c / phoneNumberToCall_c / 8 / “722-4246”
ここでcommand_c、makeCall_cおよびphoneNumberToCall_c定数整数であり、4,8は、それぞれ、「値」フィールドの長さです。
後で(バージョン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ため、長さフィールドが読み取られ(つまり、14)、システムは14バイト先にスキップして読み取ります。 phoneNumberToCall_c これを理解し、メッセージの解析を続行します。

データを表す他の方法
コアTCP / IPプロトコル(特にIP、TCP、およびUDP)は、事前定義された静的フィールドを使用します。
HTTP / 1.1(およびその非標準化された先行バージョン)、FTP、SMTP、POP3、およびSIPを含む一部のアプリケーション層プロトコルは、RFC 2822に従ってフォーマットされたテキストベースの「フィールド:値」ペアを使用します。(HTTPは、Content-Lengthヘッダーでペイロードの長さを表し、空の行でペイロードからヘッダーを分離し、新しい行で互いにヘッダーを分離します。) 
ASN.1は、いくつかのTLVベースのエンコーディングルール(BER、DER)と、非TLVベースのエンコーディングルール(PER、XER)を指定します。
CSN.1は、非TLVセマンティクスを使用したエンコーディングルールについて説明しています。
最近では、 XMLは、ネットワーク内の異なるノード間のメッセージングを実装するために使用されてきました。これらのメッセージには通常、BEEPなどの行ベースのテキストコマンドが接頭辞として付けられます。

も参照してください
KLV、特定のタイプのType-Length-Valueエンコーディング
バイナリプロトコル