c# – TLV 파싱하기

TLV는 Type-length-value의 약자로서 data 통신에 종종 사용되는 프로토콜입니다.
T를 Tag라고 하기도 하지요.
TLV의 Type과 Length는 고정크기이며, Value는 가변크기라서 Length의 값으로 크기를 판단합니다.
참고 : http://en.wikipedia.org/wiki/Type-length-value

C#에서 byte배열을 class로 매핑하기 위해 마샬링을 사용하면 코드가 간단해 지긴 하지만,
고속으로 처리해 보려고 Length를 파싱하는 메소드를 만들어 보았습니다.

아래의 예제는 Length가 빅인디언인 4byte int일 경우입니다.
일반적으로 여러개의 TLV들이 연속적으로 전송되므로 offset을 통해 해당 원하는 TLV를 선택할 수 있습니다.

  • 1번째 TLV 선택시 Offset : 0
  • 2번째 TLV 선택시 Offset : 첫번째 TLV 전체 길이 (4 + 4 + 1번째 Length)
  • 3번째 TLV 선택시 Offset : 첫번째 TLV + 두번째 TLV 전체 길이 (4 + 4 + 1번째 Length + 4 + 4 + 2번째 Length)

 

 

 

Notice

  • 이 저작물은 크리에이티브 커먼즈 저작자표시-비영리-변경금지 2.0 대한민국 라이선스에 따라 이용할 수 있습니다. 크리에이티브 커먼즈 라이선스
  • 저작권과 관련된 파일요청 및 작업요청을 받지 않습니다.
  • 댓글에 대한 답변은 늦을 수도 있습니다.
  • 댓글 남기기