首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >混淆RFC 1155、RFC 1157和ASN.1

混淆RFC 1155、RFC 1157和ASN.1
EN

Stack Overflow用户
提问于 2017-07-28 22:12:30
回答 1查看 242关注 0票数 1
  • RFC 1155 -第3.2.1节,第7页:四个ASN.1原语类型INTEGEROCTET STRINGOBJECT IDENTIFIERNULL
  • RFC 1155 -第6节,第18页:IpAdrressIMPLICIT OCTET STRING (SIZE (4))
  • RFC 1155 -第6节,第18页:NetworkAddressIpAddress
  • RFC 1157 -第4.1.6节,第26页:agent-addr是一个NetworkAddress,它是一个IpAddress

误码率将OCTET STRING表示为0x04。陷阱-PDU值agent-addr的数据类型为0x40 (在Wireshark中见)。

为什么agent-addr的数据类型不是IMPLICIT OCTET STRING (SIZE (4))

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-29 06:57:11

四种ASN.1原语类型整数、八进制字符串、对象标识符和NULL

他们说他们只是从ASN.1类型系统中选择了这些类型。这些是内置的标量ASN.1数据类型.当涉及到BER序列化时,这些类型在连线上有不同的it (AKA标记)。

IpAdrress是一个隐式八进制字符串(大小(4))

ASN.1允许您通过更改标记和(可选)对值范围施加附加约束,从任何其他类型创建新类型。有两种方法可以更改标记:

  • 通过重写基类型的标记(AKA IMPLICIT标记)
  • 通过将新标记附加到基类型的现有标记(AKA显式标记)

因此,在这里,他们通过在OCTET STRING名称空间中用标记#0替换它的标记来子类型APPLICATION类型。从算术上讲,这个新标签将成为0 | 0x40

此外,它们对值范围强制执行大小约束--例如,SIZE (4)值必须有四个八位数。

NetworkAddress是IpAddress。代理-addr是一个NetworkAddress,它是一个IpAddress。

好吧,是和不是。;-)

ASN.1有一个CHOICE伪类型,它在连线上是不可见的(默认情况下没有自己的标记),但是在连线上它可以变成它“嵌入”的类型之一。设计人员可能计划在未来支持更多不同的网络地址,因此他们将IpAddress封装在NetworkAddress容器中。

ASN.1 BER将八进制字符串表示为0x04。陷阱-PDU值代理-addr的数据类型为0x40 (在Wireshark中见)。

这是正确的:您可以看到OCTET STRING的一个子类型,它具有IMPLICIT APPLICATION 0标记,即0x40 | 0

顺便说一句,使用IMPLICIT标记时,类型的原始标记丢失了,因此在连线上看不到基本OCTET STRING类型的任何残留物。

为什么代理-addr的数据类型不是隐式八进制字符串(大小(4))?

实际上是的!希望上面的解释能让它少一点模糊。;-)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45383106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档