NDN-lite 命名数据网络 -----第一章:关于Interest和Data
声明:
博主这里参考的是NDN-lite 格式规范的0.3版本,不同版本中的数据包和兴趣包中所包含的参数会有细微的差异。
关于NDN网络
命名数据网络(Named-Data Networking,NDN)早前也被称为内容中心网络(Content Centric Networking,CCN),由于其特殊的传输方式,其协议架构设计上可以彻底解决TCP/IP设计上的诸多不适应性,但依旧保留了细腰沙漏模型。
NDN网络也中有十分灵活的路由选择策略,可以自动同时支持各种路由协定,以及较高的基于数据本身的安全机制。NDN不仅从原理上避免了网络冲突和堵塞,还彻底实现了多链路路由,同时基于网络内缓存(Content Store,CS)实现了就近获取、负载均衡和容断能力,从而提高了大规模的内容分部的性能、效率和可靠性。
什么是兴趣包、数据包
兴趣包:
消费者希望得到的东西的name放入兴趣包中,并在网络上传递。路由器全依据该名字将兴趣包转发给资料生产者。
数据包:
当兴趣包在网络上传送时抵达某一基点的时候,当该基点有与之相符的数据后,该基点就将所需要的数据进行封装,以相反的路径回传给请求者。其中,数据包中除了有名字和内容以外,还要在名字和内容的基础上加上资料生产者的密钥当做前述资讯。
关于兴趣包和数据包的结构
关于兴趣包和数据包的结构大致如下图所示:
兴趣包内:
Name:
限制获得的数据包是具体的哪一个
CanBePrefix:
当有这个属性的时候,传回来的数据包中的name可以和兴趣包中的name相同,也可以是以兴趣包中的name为前缀的name
MustBeFresh:
存在这个参数的时候,则节点不得返回“非新鲜”的数据包以响应此兴趣包。效果与“非新鲜”数据不存在的情况相同(即,兴趣可能与商店中的某些其他数据匹配,或者,如果失败,则转发到其他节点)。当具有正值的“非新鲜”数据包的精确副本FreshnessPeriod到达节点时,节点应该在指定的持续时间内将其重新标记为“新鲜”。
ForwardingHint:
ForwardingHint元素包含名称委托列表,每个委托意味着可以通过沿委托路径转发兴趣来检索所请求的数据分组。每个委托都还对应着一个相关的优先级priority,在link content里面会按照优先级,按照升序的方式去进行排列。(及从小到大)
Nonce:
Nonce携带一个随机生成的4个八位字节长字节串。Name和Nonce的组合应唯一标识Interest数据包。这用于检测循环兴趣包。
InterestLifeTime:
InterestLifetime表示兴趣包超时前的剩余(近似)时间。该值是毫秒数。超时是相对于当前节点的兴趣包的到达时间。转发兴趣包的节点可能会缩短生命周期以计算转发前在节点上花费的时间。如果InterestLifetime省略该元素,则使用默认值4秒(4000)。可以在转发之前添加缺少的元素。
Hoplimit:
可选HopLimit元素指示允许转发兴趣包的次数。该值被编码为0到255范围内的1字节无符号整数值。如果该HopLimit值大于或等于1,则节点应接受该数据包并将编码值减1。如果HopLimit值变为0,若节点可以在本地满足此兴趣包(缓存或绑定到本地面的应用程序),则可以依旧发送数据包回去,但不能将兴趣包转发;若本地不能满足,则只能将其丢弃。
ApplicationParameters[InterestSignature]:
ApplicationParameters元素可以携带任何参数化Data请求的任意数据。兴趣包的名称必须包含兴趣包中参数的摘要组件,以确保参数化兴趣的唯一性和完整性。
数据包内:
Name:
这里与上方兴趣包中的name为同一个类型的东西。
MetaInfo:其中有三个组成部分
ContentType:
当ContentType为0的时候,数据类型为BLOB。是由数据名称标识的有效负载; 这是默认的ContentType
当它为1的时候,数据类型为LinkObject,是一个授权列表。
当为2的时候,数据类型为Key,为公钥。
当为3的时候,数据类型为NACK,是应用程序级NACK
FreshnessPeriod:
可选项FreshnessPeriod指示节点在到达此数据包之后应等待多长时间,然后将其标记为“非新鲜”。编码值是毫秒数。请注意,“非新鲜”数据包的数据仍然是有效数据; 到期只意味着生产者可能产生了更新的数据。
如果数据包携带的FreshnessPeriod大于零,则节点应该首先将其视为“新鲜”。数据包在节点中驻留了FreshnessPeriod几毫秒后,它将被标记为“非新鲜”。如果数据包中没有FreshnessPeriod或如果它FreshnessPeriod等于零,则必须立即标记为“非新鲜”。
FinalBlockID:
选的FinalBlockId标识片段序列中的最后一个块。它应该存在于FinalBlock本身中,并且还可以存在于其他片段中以向消费者提供结束的高级警告。此处的值应等于最后一个Block的最后一个显式名称组件。
Content:
Content元素可以携带任意字节序列。
结束语
关于兴趣包和数据包里面的内容就讲到这里,其实如果没有一定的NDN基础的话,看这篇文章可能会有点云里雾里的,因为这牵扯到这些参数的运用以及数据包和兴趣包的传递方式和命名方法,下一章会继续讲解这一部分的知识。
NDN-lite 命名数据网络 -----第一章:关于Interest和Data相关推荐
- NDN-lite 命名数据网络 -----第二章:对Interest和Data包的处理
NDN可以解决的问题 1.IP地址耗尽的问题. 2.内网穿透问题. 3.移动性问题,因为名字是固定不变的,不会随着位置的移动发生变化. 4.可扩展地址管理问题,这也使得传感网络成为可能 ...
- NDN全栈: 一、命名数据网络(Named Data Networking)背景介绍
NDN全栈: 一.命名数据网络(Named Data Networking)背景介绍 johnosnfan 关注 2018.10.02 18:09 字数 4557 阅读 294评论 0喜欢 2 最近 ...
- 命名数据网络(NDN)中的数据安全隐患
当前互联网不断面临着动态性.安全性和可扩展性等方面的技术挑战,其发展速度已经难以适应全球网络规模的爆发式扩张. 什么是命名数据网络 (Named Data Network,NDN)? 为了适应发展迅猛 ...
- 命名数据网络(NDN)与TCP/IP网络
之前面试时遇到一个十分有趣的开放性的问题: 当前TCP/IP协议存在哪些问题?如何改进? 当时没有回答好,然后提到了NDN可以针对TCP/IP做出改进,但是在行家面前就漏洞百出,一是对TCP/IP网 ...
- webapi 路由限制命名控件_什么是命名数据网络NDN?
命名数据网络(Named Data Networking, NDN)经常出现在5G.边缘计算相关的文献书籍上,那NDN究竟是何方神圣?一起来了解一下吧! 一.NDN架构概述 众所周知,21世纪的重要特 ...
- 什么是命名数据网络NDN?
命名数据网络(Named Data Networking, NDN)经常出现在5G.边缘计算相关的文献书籍上,那NDN究竟是何方神圣?一起来了解一下吧! 一 NDN架构概述 众所周知,21世纪的重 ...
- 命名数据网络NDN中的概念小总结
命名数据网络NDN中的概念 1.命名数据网络NDN (named data network) 2.NDN中的两类报文 (1)请求报文(interest报文):当路由结点请求内容时,则发送包含该内容名字 ...
- 曲奇的ndnSIM API教程翻译 命名数据网络 NDN ndn simulator
目录 ndnSIM 开发文档 1.入门 1-1介绍 更多文档 支持 日志 1.2下载和编译 可移植性 先决条件 核心依赖项 NS-3 Python绑定的依赖项 下载ndnSIM源码 编译运行ndnSI ...
- 命名数据网络introduction
NDN将内容作为主体,不再关心内容存储的位置, 而关心的是内容本身是什么.NDN中每个节点 都具有内容存储库( content storage,CS),这是其 有别于传统网络最大的特点.与传统网络相比 ...
最新文章
- R语言ggplot2可视化为组合图添加综合图例实战:使用ggpubr包ggarrange函数实现综合图例、使用patchwork包实现综合图例
- git的基本使用命令操作
- sqlserver查询当月的每一天_SQLServer 查询最近一天,三天,一周,一月,一季度数据的方法...
- 威胁报告:mDNS 反射式 DDoS 攻击
- textrank4zh是_GitHub - renxiaowei941015/TextRank4ZH: 从中文文本中自动提取关键词和摘要...
- Microsoft Visual c++简介
- boost::multi_array模块实现在矩阵上测试切片
- java焦点图_javascript焦点图(能够自己主动切换 )
- 2010经典句句 学会了以后你的嘴巴会很流利 (转)
- 城市规划Java_智慧城市通过边缘计算转向高层次的城市规划
- 【图像超分辨率论文】BasicVSR++: Improving Video Super-Resolution with Enhanced Propagation and Alignment
- 如何使用html如何安装,node.js – 如何使用全球安装的grunt-html?
- Machine Learning - IV. Linear Regression with Multiple Variables多变量线性规划 (Week 2)
- sql2005找不到服务器名,SQLServer2005 没有服务器名称的两种解决方法
- 史上最简单的 Nginx 教程,没有之一!
- win10系统个人服务器配置,个人电脑win10配置服务器吗
- 儿童识字量测试3090字(倪铂颖)
- FPGA,关于安装使用libero IDE V9.2 及其gold floating license配置
- 【Excel】excel中怎样隔行插入空行?
- 数学与计算机科学虎扑,北大数学系在国内是最顶级存在吗?
热门文章
- 你不看足球,你就不会懂:这些主场有多美?
- Hadoop常用端口web界面
- assert预处理宏与预处理变量
- 可视化了解一下?ECharts 4.0最全技术攻略
- 开发中遇到的bug-Uncaught TypeError: $(...).css is not a function
- 差距在哪儿?苹果M1瞄准了英特尔和微软
- 【论文泛读80】通过滚动交互预测文本可读性
- JS--闭包--渡一教育(视频笔记)
- 剑英陪你玩转图形学 (三)归去来
- 设计师如何在整理设计规范中变强