网络管理与维护(2.3)基本编码规则

在这里插入图片描述

BER编码

BRE(basic enconding rules)是asn.1最早定义的编码规则
ASN.1采用数据类型和值,BER定义了值得编码传输格式,即传输语法
只有具体值才可以被传输,值也会属于不同数据类型,传输语法就是要为属于不同数据类型得值制定一套标准编码格式
BRE得任务:

将ASN.1定义得数据类型 得值编码成字节串

在这里插入图片描述日常学习就用TLV来书写吧

  • Value:是传输值得本身
  • Tag:控制信息,用于表明传输得值属于那种数据类型
  • Length:控制信息,表明值所占八位组(字节)得个数

TLV每个域都是一个八位组(字符串)
每一个V本身又可以是1个和多个TLV组,即V可以递归多个TLV组在这里插入图片描述在这里插入图片描述BER传输语法是基于三元组得(为了避免不同系统上得混淆,没用采用Byte为单位)
BER比特序列传输顺序:

八位组得最高有效位在最左边,最低有效位在最右边,传输顺序自最低有效位开始,到最高有效位结束
在这里插入图片描述

BER-Tag

在这里插入图片描述
Tag分为0-30和31以上两种格式
在这里插入图片描述
当标签号大于31,会将标签号全部置1,作为转义符,实际得标签号表示在后继得八位组,最左边一位,1表示不是最后一个,0表示为最后一个
在这里插入图片描述在这里插入图片描述有1表示后面还有八元组。第一位101表示5小于30就前面用10000表示。同样这个1也是表示后面还有八元组
在这里插入图片描述

简单类型

用integer举例
他是universal类得2号,且为简单类型,所以编码为
00 0 00010
在这里插入图片描述SNMP中tag编码,第一个choice类型实际上是application1类型。
在这里插入图片描述都是application类,所以01开头,都是简单类型所以pc位0
写16进制在二进制4位一组来看就行。

BER-Length

也是分为两组
注意:这个长度是value得长度。
小于127只占用一个字节,最左边为0,用右边7位表示。
在这里插入图片描述大于127最左边为1,后7位指明后继表示长度得字节数,在这里插入图片描述几个字节。
在这里插入图片描述在这里插入图片描述举两个例子,255和256

长度不确定(仅了解)
在这里插入图片描述长度不知道得就前缀就是10000000,加个值编码,最后两个全为0得字节作为结束符

各个数据类型得BER编码

在这里插入图片描述

扫描二维码关注公众号,回复: 12174510 查看本文章
  • T 01是因为十六进制得tag位。
  • L 先看V是几个字节,V是一个,就用01
  • V 00 ff
    在这里插入图片描述null没有值,所以V没有。L为00
    在这里插入图片描述注意这个Value用二进制补码在这里插入图片描述
    注意128,129这里超一个字节了,所以给前面加00000000.
    在这里插入图片描述负数这里
    -128 最前面得1就表示他是负数了
    -129 要用1表示负数,所以给前面加一个字节得1表示为负数

在这里插入图片描述由于可能补不到8得整数倍
310那个表示废弃多少位
注意补位在右边,填01都无所谓。在V最开始声明废弃多少位,即写多少。
十六进制表示中得03就表示丢弃多少位

在这里插入图片描述

octet string 也会出现没有凑够8位得情况下面这个就写上了E0.11100000

在这里插入图片描述

  • OBJECT INDENTIFIER

在这里插入图片描述
在这里插入图片描述
讲根部与下一个子节点一起编码
在这里插入图片描述
记住这个公式,n=40*x+Y
X根据表只能能是012取值
在这里插入图片描述

除了前两个,都是独立编码
在这里插入图片描述
0-127不是0-255
在这里插入图片描述
类比了leagth,长格式
在这里插入图片描述
二进制每7位一组,然后补指示位。然后化十六进制
在这里插入图片描述
一道练习题
在这里插入图片描述

构造类型

SEQUENCE就要嵌套TLV格式
在这里插入图片描述
在这里插入图片描述
注意这个嵌套的长度L字节是06,算上V中所有tlv个数,还包含嵌套V中的个数,这里只有一个就是1
T位置sequence是011 0000 从后往前,四位一划分。

标签类型

在这里插入图片描述
在这里插入图片描述
复习一下显式隐式。这么记
隐式一个tag,显式两个tag
在这里插入图片描述
例子很典型,先确定V是00,记住已经有值00了,所以L写01不是00
T要写新标签的tag,01 0 00001=41(H).
在这里插入图片描述
子标签无法体现
在这里插入图片描述
显式就把老标签写道内嵌的tlv里,L要写03
要十分注意,因为有了嵌套,所以tag标签中的pc位要置1,所以二进制就变成了01 1 00001=61(H)
在这里插入图片描述
这里L位就是,嵌套L是V中个数。外面的L是T+L+V个数之和

猜你喜欢

转载自blog.csdn.net/qq_43430273/article/details/105109885