TLV

Linux下用tlv协议封包 什么是tlv 通信协议可以理解两个节点之间为了协同工作实现信息交换,协商一定的规则和约定,例如规定字节序,各个字段类型,使用什么压缩算法或加密算法等。常 见的有tcp,udo,http,sip等常见协议。协议有流程规范和编码规范。流程如呼叫流程等信令流程,编码规范规定所有信令和数据如何打包/解包。 tlv的结构 TLV是指由数据的类型Tag,数据的长度Length,数据的值Value组成的结构体,... 阅读详情

https://blog.youkuaiyun.com/Enjoy_endless/article/details/78259529?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

https://www.jianshu.com/p/be45fa5b88d4?from=groupmessage

几乎所有的需要在卡片和终端之间传送的数据都是TLV格式的.
我给你举个例子方便快速理解:
TLV是tag, length和value的缩写.一个基本的数据元就包括上面三个域. Tag唯一标识该数据元, length是value域的长度. Value就是数据本身了. 举个例子, 下面是一个tlv格式的AID(应用标识符)字节串”9F0607A0000000031010”, 其中9F06是tag, 07是长度, A0000000031010就是AID本身的值了.

对于程序编写人员来说,如果有类似上面这样的一串TLV编码的字节串从卡片传过来, 怎么样从中提取我们想要的数据. 这就牵扯出TLV解码的问题了

TLV一种可变格式,TLV的意思就是:Type类型, Lenght长度,Value值;
Type和Length的长度固定,一般那是2、4个字节;
Value的长度有Length指定;

解析方法:
1.读取type 转换为ntohl、ntohs转换为主机字节序得到类型;指针偏移+2或4
2.读取lenght,转换为ntohl、ntohs转换为主机字节序得到长度;指针偏移+2或4
3.根据得到的长度读取value,指针偏移+Length;
TLV编码就是指先对Tag编码,再对Length编码,最后对Value编码。



作者:FantJ
链接:https://www.jianshu.com/p/be45fa5b88d4
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

BER编码的一种,ASN1标准,全称Tag(标签),Length(长度),Value(值)。
IS-IS数据通信领域中,tlv三元组: tag-length-value(TLV)。T、L字段的长度往往固定(通常为1~4bytes),V字段长度可变。顾名思义,T字段表示报文类型,L字段表示报文长度、V字段往往用来存放报文的内容。

现在有这么一个二进制字节流

6F328407A0000000031010A5278701019F38129F1A029F33039F40059F1B049F09029F35015F2D086573656E667264659F110101

如第一行所示,它就是一个由上面buf解析出来的TLV结构
这里写图片描述
tag为6F,lenth为32,后面为value;

对于TLV来讲,有两种格式,一种是基本格式(BER-TLV),一种是嵌套格式

对于本例的buf来讲,它就是一个复合的嵌套格式,完整解析出来应该是这个样子
这里写图片描述
整个buf是一个父节点,6F

他有两个子节点84 、A5

对于84节点,他是不可再分的基础格式

对于A5节点,他是一个父节点

可以再拆分为4个子节点87、 9F38、 5F2D、 9F11

tag详细结构表:
这里写图片描述
分为3部分,最高两位,第六位和低五位,其具体表示含义如图;

编码规则
    第一个字节 bit8~bit7 表明tag所属类型
        00 通用级 universal class
        01 应用级 application class
        10 规范级 context-specific class
        11 私有级 private class

        在智能卡中见得较多的是应用类与上下文相关类,通用类与行业无关,好像只有一个(0x06:Object Identifier);应用类就很多了,如前文中的0x6F,还有经常碰到的0x4F表示AID(应用标识符),在7816中定义,在其它很多的应用中就遵循了,如EMV,PBOC,GP等。

    第一个字节 bit6 表明本tag的value部分是否包含子tag
    第一个字节 bit5~bit1 表明是否有第二个字节一起表示本tag
        11111 全为1表示有第二个字节
    第二个字节 bit8 为1,同时bit7~bit1 大于0 表示有下一个tag
    第三~N个字节同第二个字节
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

总结:编码解析和过程:1)根据第一个字节分解,bit1–bit5判断tag长度,bit6判断是否是复合tag;
2)根据tag长度,找到len,根据len画出后面数据长度;
3)根据是否是复合结构,继续循环如上分解过程;

后续更新代码操作;

https://blog.youkuaiyun.com/liwei16611/article/details/84075019?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

https://blog.youkuaiyun.com/Enjoy_endless/article/details/75108349

https://www.cnblogs.com/zhengweifang/p/11549337.html

https://blog.youkuaiyun.com/weixin_33968104/article/details/94602153?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

https://blog.youkuaiyun.com/freud_lv/article/details/7557702?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.control

https://blog.youkuaiyun.com/kxd_ysheng/article/details/21178101

https://blog.youkuaiyun.com/xuture/category_1477475.html

https://blog.youkuaiyun.com/xuture/article/details/9250067

https://blog.youkuaiyun.com/kxd_ysheng/article/details/40512551

 

TLV 格式及编码 几乎所有的需要在卡片和终端之间传送的数据都是TLV格式的. TLV是tag, length和value的缩写.一个基本的数据元就包括上面三个域. Tag唯一标识该数据元, length是value域的长度. Value就是数据本身了. 举个例子, 下面是一个tlv格式的AID(应用标识符)字节串”9F0607A0000000031010”, 其中9F06是tag, 07是长度,  A0 阅读详情

相关推荐

浅谈自定义通讯协议——TLV

       最近在做实验室的温度上报项目时,需要用到TLV来封装数据(Tag-Length-Value),然后通过客户端传送给服务器端,并作相应数据解析,再得到相应的数据。在具体了解TLV协议之前,我们先对通讯协议做一个简单的介绍。        所谓通讯协...

Mastema 6106

TLV文档阅读笔记-What is TLV及protobuf

TLV的全称为tag-length-value,接地气的名字叫type-length-value。 type:指数据的类型; length:指value的长度; value:为值 如下面这个TLV表示数据,准备这样的TLV包: Data Tag = DF 82 0A Data Length = 03 Data Value = 30 31 32. 在发送的时候就是这样的: DF 82 0A 03 30 31 32 这些数据还没组合起来,比如: DF 82 0A 03

IT1995的博客 2666

TLV解码

TLV编码是按[Tag Length Value]格式进行编码的,一段码流中的信元用Tag标识,Tag在码流中唯一不重复,Length表示信元Value的长度,Value表示信元的值。 码流以某信元的Tag开头,Tag固定占一个字节,Length固定占两个字节,字节序为小端序。 现给定TLV格式编码的码流,以及需要解码的信元Tag,请输出该信元的Value。 输入码流的16进制字符中,不包括小写字母,且要求输出的16进制字符串中也不要包含小写字母;码流字符串的最大长度不超过50000个字节。

qq_35947542的博客 1316

TLV(Tag Length Value)的排序

关于TLV的排序有很多帖子,但是我觉得都写的不够仔细,今天研究了一天,写一篇尽量详细的帖子给大家,也作为自己日后复习。本帖的内容很多来 作者:Coder_Suo。原文:https://blog.youkuaiyun.com/u011846436/article/details/38588447 另外,文章中若有错误,希望大家批评指正。 题目背景描述: 消息(也称信息码流)的格式如下: 1、一条消息...

manglang123的博客 1213

EMV TLV 总结

6F328407A0000000031010A527870101009F38129F1A029F33039F40059F1B049F09029F35015F2D086573656E667264659F110101 8407A0000000031010A527870101009F38129F1A029F33039F40059F1B049F09029F35015F2D086573656E6672

jzaicn的专栏 3972

Summary of TLV Encodings

Summary of TLV Encodings Type Description First DOCSIS Version  Usage 0 Pad 1 Cfg File 1 Downstream Frequency 1 Cfg File, REG 2 Upstream Channel ID 1 Cfg File, RE

kewb_2013的专栏 3424

深入 ProtoBuf - 编码

深入 ProtoBuf - 编码

whl0071的专栏 1510

C语言的TLV装包与解析

什么是TLV? 哈哈哈哈哈哈,碰见新东西,先来一手我的学习三大问:这是什么?有什么用?怎么做? 先了解下TLV——BER编码的一种,ASN1标准,由Tag(标签),Length(长度),Value(值)而来。what?我一看,前面两个又没听过,怎嘛办,上百度查了查,这么高大的出身,我这代码写的都觉得对不起这个它。 ASN.1抽象语法标记(Abstract Syntax Notation One) ...

qq_43416810的博客 4191

TLV(tag length value) 概念描述及实例应用

概念描述 标签(Tag)字段是关于标签和编码格式的信息;  长度 (Length)字段定义数值的长度;  内容(Value)字段表示实际的数值。  因此,一个编码值又称TLV(Tag,Length,Value)三元组。编码可以是基本型或结构型,如果它表示一个简单类型的、完整的显式值,那么编码就是基本型 (primitive);如果它表示的值具有嵌套结构,那么编码就是结构型 (const

第三眼的思绪 6140

TLV通信协议之TLV封包的实现

TLV通信协议的简介 TLV,即Tag(Type)—Length—Value,是一种简单实用的数据传输方案。在TLV的定义中,可以知道它包括三个域,分别为:标签域(Tag),长度域(Length),内容域(Value)。这里的长度域的值实际上就是内容域的长度。 只用TLV可能会出现问题 问题1:数据可能重合!如果你设置0x01为温度,那么后面如果还有个有个0x01可能是表示其...

Tian Jincheng's Blog 1803

tlv的java编码和解码

java的TLV包的编码和解码,能够对Tag Length Value对应的值进行编码和解码。包内包含jar包和源码包,还有一个java写的带有详细注释的Demo

看懂通信协议——TLV

注:上篇转载博客主要介绍了TLV编码逐步进化和完善。下面主要介绍TLV编码方式! TLV:TLV是指由数据的类型Tag,数据的长度Length,数据的值Value组成的结构体,几乎可以描任意数据类型,TLV的Value也可以是一个TLV结构,正因为这种嵌套的特性,可以让我们用来包装协议的实现。 一、 TLV编码介绍 以下将分别针对Tag、Length、Value进行解说: Tag 描述Valu...

Mastema 4万+

TLV 解析函数整理

java编写的tlv解析相关函数整理

TLV格式解析

TLV即Tag-Length-Value,常在IC卡与POS终端设备中通过这样的一个应用通信协议进行数据交换。 金融系统中的TLV是BER-TLV编码的一个特例编码规范,而BER-TLV是ISO定义中的规范。在TLV的定义中,可以知道它包括三个域,分别为:标签域(Tag),长度域(Length),内容域(Value)。

zjjyliuweijie的专栏 4693

主流双目相机技术参数横向评测:从ZED到国产新锐

本文对主流双目相机技术参数进行了横向评测,涵盖ZED、Bumblebee等国际品牌及国产新锐产品。详细分析了分辨率、帧率、视场角等关键参数,并针对机器人导航、AR/VR交互、工业检测等场景提供选型建议。特别推荐ZED相机在科研领域的成熟应用,以及国产方案在长基线设计和主动双目技术上的创新突破。

weixin_33670786的博客 318

Gradle进阶:4:结合Sonarqube进行代码审查

作为代码质量检查的流行工具,比如Sonarqube能够检查代码的“七宗罪”,跟代码结合起来能够更好地提高代码的质量,这篇文章将会介绍如何结合gradle和sonarqube对代码质量与测试覆盖率进行分析。

知行合一 止于至善 1万+

TLV协议——实现封包与解析

问题1,数据可能重合 加包头 问题2,数据可能会跳变 加CRC校验 问题3,包头可能在TLV中 加CRC校验

Shallwen_Deng的博客 1万+

World Action Model:经典论文

郑困时,图prorpt为机量人压务时,退过驱制解弱词表(constrsinsd decoding), 强附模型只从.256个者动作token中保H, B象总注活地。始VLA之一,RT-2使用了大量的五联网VQ据与少里的机械网的AcSonDat行CoFine-Tunng, 独组sl, 共i744个episode,Mous使用三个专累模,分是vidogonmedel,actonesget,understandng。包的核定之的的观到沟血黄动作,预之后现(vorlemodel),tseing,2。

u013250861的博客 406

TLV协议

TLV协议是一种通讯协议,一般将数据封装成TLV的形式,即Tag,length,value。 协议就是指通信双方对数据传输控制的一种规定,规定了数据格式,同步方式,传送速度,传送步骤的问题作出统一的规定。可以理解为两个节点之间为了协同工作,协商一定的规则和约定。例如我们 ...

心.跳的博客 5366

BUCK降压斩波电路设计实战:从IGBT选型到续流二极管优化

本文详细解析了BUCK降压斩波电路的设计实战,从IGBT选型到续流二极管优化,涵盖了关键参数设计、调试技巧及电磁兼容问题解决方案。通过实际案例和数据对比,帮助工程师高效完成DC-DC转换电路设计,提升系统性能和可靠性。

weixin_29253711的博客 95

Open3D (C++) 使用点云创建数字高程模型DEM

Open3D (C++) 使用点云创建数字高程模型DEM

点云侠的博客 1392

TLV编码详解

TLV编码属于BER编码的一种,ASN1标准。全称:Tag(标签),Length(长度),Value(值)。 其中Tag一般为1~4字节。 TLV结构见下图: 由图可知: 第一个字节 含义 取值 位8 位7 表明tag所属类型 00 – 通用级 – – 01 – 应用级 – – 10 – 规范级 – – 11 – 私有级 位6 表明该Tag的Value段是否嵌套了...

weixin_43217923的博客 3399

《UDS协议从入门到精通》系列——图解0x23:通过地址读取内存

如何读取ECU中指定内存地址的数据?图解UDS 0x23服务带你快速上手!!

车载系统攻城狮 2623

ISIS TLV Cyrus

IS-IS TLV 根据不同的IS-IS PDU类型和特定的网络环境,紧跟在各种类型IS-IS PDU之后的是TLV(Type/Length/Value)字段,PDU报头与TLV字段构成了一个完整的IS-IS PDU。在ISO10589和RFC1195这二种当前IS-IS标准中,使用代码(code)这个词,而不是类型(type),但由于TLV用于其他协议标准中,故TLV比CLV在网络文献中使用的多...

繁星流动天际 5516

《YOLOv12魔术师专栏》专栏介绍 & 专栏目录

《YOLOv12魔术师专栏》专栏介绍 & 专栏目录

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 5059

深度学习实战35-图卷积神经网络GCN模型的搭建与应用

大家好,我是微学AI,今天给大家介绍一下深度学习实战35-图卷积神经网络GCN模型的搭建与应用,GCN是一种用于处理图结构数据的深度学习模型,它可以捕捉节点之间的拓扑关系和局部特征,并进行图级别的预测和分类任务。下面将介绍如何搭建并应用GCN模型。

微学AI的博客 2226
上一篇: PBOC
下一篇: PBOC借记贷记应用终端规范文档,对名词解释
TuxedoLinux
博客等级 码龄9年 268粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值