命名数据网络 | 数据包(Data Packet)

命名数据网络 | 数据包(Data Packet)

参考文档:https://docs.named-data.net/NDN-packet-spec/current/interest.html

NDN 数据包是 TLV,定义如下:

Data = DATA-TYPE TLV-LENGTH
         Name
         [MetaInfo]
         [Content]
         DataSignature

数据包表示一些任意的二进制数据(保存在可选的 Content 元素中)以及它的Name、一些附加的可选信息位(MetaInfo)和一个数字签名(DataSignature)。

根据 TLV 可演化性指南 的建议,数据包中可能出现无法识别的非关键 TLV 元素。但是,它们不能出现在 Name 元素之前。

Name

有关详细信息,请参见:Name

MetaInfo

MetaInfo = META-INFO-TYPE TLV-LENGTH
             [ContentType]
             [FreshnessPeriod]
             [FinalBlockId]

ContentType

ContentType = CONTENT-TYPE-TYPE TLV-LENGTH NonNegativeInteger

目前定义的内容类型(ContentType)如下:

ContentTypeAssigned numberDescription of the content
BLOB0由数据名称标识的有效载荷,这是默认的 ContentType
LINK1委托列表(见于 Link Object
KEY2公钥(见于 Certificate
NACK3应用程序级别的 NACK

其他内容类型编号在 NDN 包规范 Wiki 中分配和维护。

在这里插入图片描述

FreshnessPeriod

FreshnessPeriod = FRESHNESS-PERIOD-TYPE TLV-LENGTH NonNegativeInteger

可选的 FreshnessPeriod 元素指示节点在此数据到达后应该等待多长时间才能将其标记为“非新鲜”(non-fresh)。编码值是毫秒数。请注意,“非新鲜”数据仍然是有效数据,FreshnessPeriod 的过期只意味着生产者可能产生了较新的数据。

如果数据包携带的 FreshnessPeriod 值大于 0,则节点最初认为该数据包是新鲜的。当数据在节点中驻留了 FreshnessPeriod 毫秒后,它将被标记为“非新鲜”。如果数据没有 FreshnessPeriod 元素,或者它的 FreshnessPeriod 等于 0,那么在处理完任何挂起的数据包后,必须立即将其标记为“非新鲜”。

FinalBlockId

FinalBlockId = FINAL-BLOCK-ID-TYPE TLV-LENGTH NameComponent

可选的 FinalBlockId 元素标识片段序列中的最后一个块。

它应该出现在最终块本身中,也可以出现在其他片段中,以便向消费者提供结束的提前警告。

这里的值应该等于最后一个块的最后一个显式名称组件。

Content

Content = CONTENT-TYPE TLV-LENGTH *OCTET

Content 元素可以携带任意字节序列。

DataSignature

有关详细信息,请参见:Data Signature

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UestcXiye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值