Type-length-value
Author
Albert FloresTLV (Type-length-value) je obecný název pro formát dat, která jsou složena z řady bloků:
* Značka (anglicky type nebo tag) - číslo popisující typ dat v daném bloku; například „textový řetězec“ * Délka (anglicky length) - číslo udávající délku dat v daném bloku; například „4 byte“ * Data daného bloku; například „Ahoj“
Struktury TLV obvykle používají binární formát dat, často jsou zaměřené na optimalizaci objemu a rychlosti zpracování dat. Používají se také pro přenos nekonečného proudu dat, například v telekomunikacích.
Známým příkladem použití struktury typu TLV je standard ASN.1.
BER-TLV
Formátu BER-TLV se používá v kryptografii, například pro ukládání datových objektů na čipových kartičkách. Je popsán v ISO/IEC 7816, část 4, kapitola 5. +more2 (datové objekty). Některé značky popisuje také ISO/IEC 7816.
Struktura:
* libovolněkrát trojice: značka - délka dat - data * v datovém objektu na začátku/na konci/mezi jednotlivými TLV bloky mohou být bajty s hodnotou 0x00 (padding, vata) * značka: přímo binární hodnota značky ** jednobajtová značka: A, kde A & 0x1F != 0x1F (pět nejméně významných bitů nesmí být pět jedniček) ** dvoubajtová značka: A C, kde A & 0x1F
0x1F a C < 0x80 ** tříbajtová značka: A B C, kde A & 0x1F
0x1F, B >= 0x80 a C < 0x80 * délka ** jednobajtová délka: A, kde A < 0x80; A je délka dat (binární číslo) ** dvoubajtová délka: 0x81 A; A je délka dat (binární číslo) ** tříbajtová délka: 0x82 A B; AB je délka dat (binární číslo) ** čtyřbajtová délka: 0x83 A B C; ABC je délka dat (binární číslo) ** pětibajtová délka: 0x84 A B C D; ABCD je délka dat (binární číslo) * data, například: ** textový řetězec v kódování v utf-8 ** číslo - číslo binárně (4 byte) ** datum: YYYYMMDD, kde YYYY je rok, MM je měsíc a DD je den v měsíci (textově) ** vložená BER-TLV hodnota ** a další (teoreticky cokoli)
Formát značky:
* délka značky může být 1 až 3 bajty, vyšší hodnoty jsou rezervovány pro budoucí použití * hodnota značky nesmí být 0x00 * 8. a 7. +more bit je nastaven na hodnotu 00 - univerzální třída značky; hodnota značky není definována v ISO/IEC 7816, význam značky nezávisí na kontextu (na pozici v datovém objektu) * 8. a 7. bit je nastaven na hodnotu 01 - aplikační třída značky; hodnota značky musí být definována v ISO/IEC 7816, část 6 * 8. a 7. bit je nastaven na hodnotu 10 - třída značky závislá na kontextu; hodnota značky je definována v ISO/IEC 7816 * 8. a 7. bit je nastaven na hodnotu 11 - soukromá třída značky; hodnota značky není definována v ISO/IEC 7816 * 6. bit je nastaven na 1 - data v daném TLV bloku jsou strukturovaná (tj. jsou ve formátu BER-TLV) * 6. bit je nastaven na 0 - data v daném TLV bloku nejsou strukturovaná (tj. nejsou ve formátu BER-TLV) * 5. až 1. bit jsou nastaveny na 11111 (0x1F) - délka značky je delší než 1 byte ** druhý byte nesmí nabývat hodnot 0x80 a 0x00 až 0x1E ** u další bytů značky s výjimkou posledního je nastaven 8. bit na hodnotu 1 ** u posledního bytů značky je nastaven 8. bit na hodnotu 0 * 5. až 1. bit jsou nastaveny na jinou hodnotu než 11111 - délka značky je 1 byte.
Odkazy
Související články
Basic Encoding Rules * RADIUS * Short Message Peer to Peer
Externí odkazy
[url=http://tlve.sourceforge.net/]tlve[/url] Obecný TLV parser
Kategorie:Formáty serializace dat Kategorie:Internetové standardy Kategorie:Internetové protokoly Kategorie:Přenos dat Kategorie:Kódování Kategorie:Počítačová terminologie