NDN网络学习笔记(一)——NDN基础-程序员宅基地

技术标签: 网络  路由器  NDN  

NDN(Named Data Networking)是用来取代当前TCP/IP架构的新的互联网架构,在2010年被提出。

NDN 的网络架构如下右图,它继承了 IP 架构的沙漏型瘦腰结构:
NDN继承了IP瘦腰模型

TCP/IP架构存在的问题

TCP/IP互联网只提供一个通讯管道,只负责维护管道,不关心传输的内容。内容的管理和获取是有应用和服务管理的。

存在哪些问题呢:

  1. 效率低。管道是单源单路径的,容易造成拥塞,比如同一个视频,要从单个服务器发送无数次。
  2. 可扩展性差。不断打补丁,网络设计管理越来越复杂。IP地址也不够用了。
  3. 安全性弱。重视管道保护,但不能保证数据本身的可靠性。比如建立一个信任连接后,对方发的恶意代码也会照收无误。

NDN架构基本思想

当前网络的功能(建立管道)和目的(获取数据)不匹配。NDN网络企图用数据内容取代管道的核心地位。
数据为核心
核心思想是:

  1. 用户程序只提供数据的名字,无需目的地址;
  2. 数据可以来自任何节点;(不用都从服务器拿数据,可以从就近的缓存获取)
  3. 每个数据包必须有数字签名;(保证安全可靠)

优势有:

  1. 高效。(多源多路径,组播发送,有缓存)
  2. 适合现代场景如移动互联网、物联网、灾害救援、时延容忍网络(DTN)等。(无需建立管道连接)
  3. 安全。(数据有签名,需要时可加密;应用程序开发时就考虑数据安全,而非事后弥补)

NDN数据包

数据包格式

IP数据包:核心字段是地址。
IP数据包
NDN数据包:分为兴趣包和数据包两种类型,不包含地址,核心是名字。
NDN数据包

数据包命名

名字由程序应用生产,对网络层透明。它包括:

  1. 数据包大小。(废话)
  2. 多层级。(就像文件夹分层一样,方便匹配前缀)
  3. 签名。(和名字、秘钥紧密关联,保证安全可靠)

下面是一个NDN数据包命名的例子:
NDN数据包名称举例:一个视频数据名

NDN路由机制

命名驱动

  1. 服务端注册名字。数据发布者需要注册一个名字前缀(name prefix),比如YouTube注册了一个YouTube/……

  2. 路由器根据名字建表。路由器能计算出到达每个名字前缀的路径,建立起路由表。

  3. 用户端拿名字请求数据。数据消费者发送兴趣包来请求数据,路由器根据名字和路由表匹配转发。

路由缓存

每个节点都可以缓存数据,可以被反复请求使用。

用户的请求的数据包是没有收货地址的,那快递回来后给谁呢?是这么解决的:每个路由器都维护一个兴趣包缓存表(PIT, Pending Interest Table),就像是淘宝订单,谁请求过什么数据都记录在案!路由器能根据兴趣包缓存表,将数据反向传输给请求者。

路由转发

先看反面典型,IP数据包路由转发。缺点有:

  1. 单向的。(请求可能有去无回)
  2. 路由器是无状态的。(太笨)
  3. 不会缓存任何数据。(太慢)
    IP路由机制

再看NDN兴趣包和数据包的转发。优势是:

  1. 双向的。(有请求才有数据,二者一一对应)
  2. 有状态的。(路由器记录多种状态,信息量大)
  3. 有缓存。

下面是兴趣包和数据包各自的路由机制。

兴趣包结构如下,查询步骤是:
CS:是否已经有缓存了;
PIT:是否已经有其他人请求过了,那就不用再重复发请求了,只需记录一下,在包回来时给所有请求都分一份就行;
FIB:查询哪条路径能满足请求,把兴趣包转发下去。
兴趣包路由
数据包结构如下,查询步骤是:
PIT:若有该数据的请求,发给所有请求列表;若无则直接丢弃。
CS:留一份缓存后,继续转发。
数据包路由

杂想

NDN可能取代IP吗?

新型网络体系提出多年,为啥现在仍是老一套呢?不禁想到了键盘布局的例子,当初键盘布局被特意打乱来减低机器打字的效率,防止太快机器出故障,结果这种“乱序”布局竟然流传至今,原因就是人们习惯了。

那么会不会因为习惯的力量,而同样使人们放弃更先进的NDN,继续使用IP呢?

这倒不会。因为网络结构作为底层实现,是不影响人们正常使用的。不论用NDN还是IP,用户使用习惯丝毫不受影响。NDN由于更灵活、高效、安全,能带来更好的用户体验,还是很有希望取得革命性发展的,就像汽车取代马车一样。

现在的IP网络实在太老旧,在飞速发展的时代面前显得越来越力不从心。相信不久的将来,新一代网络体系必将崭露头角。

参考资料:

张北川:命名数据网络(NDN)

视频简单介绍-命名数据网络

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhang35/article/details/105420611

智能推荐

Swift5.0 代理的基本使用-程序员宅基地

文章浏览阅读1.1k次。代理: 个人理解, 假如存在 A B两个对象需求: 当B做出动作的时候, 需要A来响应,并做出动作实现思路:B 中 创建的函数 通过在 A中创建了B B中调用函数, A接收而改变代码如下:A 对象import UIKitclass ViewController: UIViewController,TestDelegate { func returuColore(in color: UIColor) { // 改变自..._swift5.0 代理

Web安全学习图径——系列课程推荐_这套php的教程包含了html/css/js和php+mysql-程序员宅基地

文章浏览阅读598次。本文作者:i春秋作家 大哥哥团长 说到Web安全必须要了解Web方面的一些基础知识做为铺垫的去的去学习这门技术,因为不是人人都可以直接先渗透在进行编程等方面学习的、所以为了更好的入门的Web安全必须要先掌握一些基础知识,相比对逆向方面的入门Web安全真的不难,逆向要是想了解一个简单的什么叫jmp esp溢出需要的基础知识不是一点点,如果是计算机专业的还好,不然通过自己去学习_这套php的教程包含了html/css/js和php+mysql

matlab凯塞窗设计,实验三用凯塞窗设计线性相位带通FIR滤波器.docx-程序员宅基地

文章浏览阅读1.9k次。实验三用凯塞窗设计线性相位带通FIR滤波器中国地质大学(北京)实 验 报 告课程名称:数字信号处理 实验名称:用凯塞窗设计线性相位带通FIR滤波器姓 名: 张淑坤学 号: 1004133105班 级导教师:陈玉东评 分:实验时间:2015-12-31用凯塞窗设计线性相位带通FIR滤波器实验目的:基于MATLAB环境,熟悉利用窗函数法设计线性相位FIR滤..._用凯塞窗法设计一线性相位高通滤波器·

什么是JAVA_sese.con-程序员宅基地

文章浏览阅读1.8k次。Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言(以下简称Java语言)和Java平台的总称。由James Gosling 和同事们共同研发,并在1995年正式推出。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常_sese.con

gstreamer app 静态编译后运行时出现的问题_neither a subproject directory nor a gstreamer.wra-程序员宅基地

文章浏览阅读929次。gstreamer app 静态编译后运行时出现的问题_neither a subproject directory nor a gstreamer.wrap file was found

Caffe + Ubuntu 14.04 64bit + CUDA 6.5 配置说明-程序员宅基地

文章浏览阅读40次。笔者花了很长时间才装完,主要是cuda安装和opencv安装比较费劲,cuda找不到32位的安装包只好重装64位的ubuntu系统,opencv 也是尝试了很久才解决,这里建议用2.4.9版本。其实如果没用GPU的话不需要安装cuda,不过为了后续兼容性的考虑,系统强烈建议64位的。下面是 对自己的安装过程记录备忘,有些主要参考网上的文章,所以有些过程就直接用了原来文章中的内容。caffe在git...

随便推点

cocosLua 之cocosStudio动画_cocos studio-程序员宅基地

文章浏览阅读2.6k次。动画制作通过编译器可以对某个控件进行动画制作, 实现倾斜,缩放,移动等动画的实现,甚至可实现帧动画相关。大概步骤如下:添加 + 号按钮添加动画名,设定名称,起始帧,结束帧。设定成功后, 在-- ALL -- 中选择自己设定的动画相关选定动画后,千万注意勾选上开始记录动画,添加帧使用 + 号按钮可添加多个不同的动画, 可通过动画列表进行管理这样做的优点:通过动画名播放指定的动画比通过帧数播放更容易让人理解。另外注意: 设定多个动画名的情况下,结束帧数不要与下个动画名的起始帧数_cocos studio

无法安装.Net4.0 《已在此计算机上安装相同或更高版本的 .NET Framework 4》解决方案_已存在较高版本无法安装net-程序员宅基地

文章浏览阅读5.9k次。装了.Net4.8,接手都程序目标框架是4.0,低版本的都没法装,看了其他很多骚操作都没用。官网下载vs2019安装程序,选择单个组件勾选目标框架完美解决。_已存在较高版本无法安装net

Android WebView 缓存机制和模式详解_android webview几种cachemode的区别-程序员宅基地

文章浏览阅读3.3k次。 当我们加载Html时候,会在我们data/应用package下生成database与cache两个文件夹:我们请求的Url记录是保存在webviewCache.db里,而url的内容是保存在webviewCache文件夹下.WebView中存在着两种缓存:网页数据缓存(存储打开过的页面及资源)、H5缓存(即AppCache)。一、网页缓存1、缓存构成/data/data/packag..._android webview几种cachemode的区别

Python 文件处理:在 Python 中写入文件_python将内容写入文件-程序员宅基地

文章浏览阅读1.8k次,点赞40次,收藏43次。因此,在处理诸如 1、2、3、4 和 5 之类的数字数组时,有必要将它们转换为字节表示形式,然后再将它们存储在二进制文件中。在 Python 中,使用 for 语句是将数据写入文件的一种强大且简洁的方法,尤其是在处理列表或字符串等可迭代对象时。但是,使用 open() 函数中的 'a' 模式,我们可以将新数据附加到文件末尾,而不影响现有内容。这里需要注意的一件事是,您是要打开现有文件还是要打开不存在的文件(通过创建文件)取决于您的访问模式。函数打开该文件时,该文件不存在。我们创建了它,然后打开了它。_python将内容写入文件

Linux基础学习笔记之——磁盘与文件系统(二)_verify and correct link counts-程序员宅基地

文章浏览阅读247次。Linux磁盘与文件系统(二)2、文件系统的简单操作2.1、磁盘与目录的容量现在我们知道磁盘的整体数据是在superblock区块中,但是每个个别文件的容量则在 inode 当中记录的。那如何在文字接口底下显示出这些数据呢?df:列出文件系统的整体磁盘使用量;du:评估文件系统的磁盘使用量(常用于推估目录所占容量)。2.1.1、df[root@server ~]# df [-ahikHTm] [目录或文件名]选项与参数:-a:列出所有的文件系统,包括系统特有的/proc等文件系统-k_verify and correct link counts

【论文推荐】结合KB和answer selection的相关论文推荐-程序员宅基地

文章浏览阅读304次。点击上方,选择星标或置顶,每天给你送干货!阅读大概需要11分钟跟随小博主,每天进步一丢丢来自 |知乎地址 |https://zhuanlan.zhihu.com/p/52057462..._shared layers 与specific layers机器学习

推荐文章

热门文章

相关标签