형식-길이-값

형식-길이-값 또는 TLV(type-length-value 혹은 tag-length-value약자)는 통신 프로토콜에서 필수적이지 않은 항목의 자료를 부호화하는 방식이다.

항목의 형식(자료형)과 길이는 크기(통상 1~4 바이트)가 정해진 자리를 차지하며, 항목의 값은 차지하는 자리의 크기가 가변적이다. 각 부분은 다음 순서로 나열된다.

형식 (자료형)
메시지에서 해당 항목이 어떤 종류의 항목을 표현하는지 나타내기 위한, 보통 알파벳과 숫자를 부호화한 이진 코드다.
길이
값 부분이 차지하는 크기 (보통 바이트 단위);이다.
메시지의 해당 항목에 해당하는 값을 담은 가변 길이의 바이트열이다.

TLV 부호화는 다음과 같은 장점이 있다.

  • 일반화된 파서 함수를 통해 검색이 용이하다.
  • 나중에 추가된 항목을 그보다 오래된 노드가 수신했을 때 안전하게 무시하고 건너뛸 수 있다. 이는 XML에서 모르는 태그는 안전하게 무시하고 건너뛸 수 있는 것과 유사하다.
  • 한 메시지 안에서 항목들이 아무 순서로 나열되도 괜찮다.
  • 빠르게 파싱할 수 있고 적은 용량을 차지하는 바이너리 포맷에 쓰인다.