命名数据网络 | 数据包(Data Packet)
命名数据网络 | 数据包(Data Packet)
- 命名数据网络 | 数据包(Data Packet)
- Name
- MetaInfo
- ContentType
- FreshnessPeriod
- FinalBlockId
- Content
- DataSignature
命名数据网络 | 数据包(Data Packet)
参考文档:https://docs.named-data.net/NDN-packet-spec/current/interest.html
NDN 数据包是 TLV,定义如下:
Data = DATA-TYPE TLV-LENGTHName[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)如下:
ContentType | Assigned number | Description of the content |
---|---|---|
BLOB | 0 | 由数据名称标识的有效载荷,这是默认的 ContentType |
LINK | 1 | 委托列表(见于 Link Object) |
KEY | 2 | 公钥(见于 Certificate) |
NACK | 3 | 应用程序级别的 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。