NDN网络学习笔记(一)——NDN基础

2023-05-16

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)

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NDN网络学习笔记(一)——NDN基础 的相关文章

随机推荐

  • 【EtherCAT实践篇】八、更改XML示例3,增加16位模拟DAC输出

    目的 xff1a 在EtherCAT开发板上IO程序 xff08 基本IO通讯 基于SSC xff09 基础上进行修改 xff0c 增加一路模拟量输出 xff0c 并输出给DAC管脚 由于STM32F405底板具有DAC输出功能 xff0c
  • Pixhawk固件PX4之串口通讯

    1 目的 为进一步扩展pixhawk的接口及功能 xff0c 通过pixhawk现有接口 xff08 串口 I2C等 xff09 连接外部设备来实现 xff0c 本节内容主要介绍串口通讯方式 2 测试平台 硬件 xff1a pixhawk
  • 手机充电原理分析及问题总结

    xff08 1 xff09 充电流程介绍 xff1a 当充电器插入时 xff0c 亦即为PMIC充电模块提供了Vcharge电压 xff0c 这时会产生一个充电中断信号到CPU xff0c 通知CPU现在已经进入充电状态 CPU开始启动如下
  • 串口接收不定长数据的几种方法

    串口作为单片机开发的一个常用的外设 xff0c 应用范围非常广 大部分时候 xff0c 串口需要接收处理的数据长度是不定的 那么怎么才能判断一帧数据是否结束呢 xff0c 今天就以STM32单片机为例 xff0c 介绍几种接收不定长数据的方
  • 删除分节符的技巧

    WORD中删除分节符有这样的规定 xff1a 如果要删除分节符 xff0c 只要把光标移动到该分节符上 xff0c 按Delete键即可 但是要注意该分节符前面的文字将合并到后面的节中 xff0c 并且采用后者的格式设置 我就不知道天杀的微
  • 虚机创建异常报错No valid host was found,There are not enough hosts available

    虚机创建异常 xff0c 使用nova show 虚机ID提示fault报错信息 xff1a No valid host was found xff0c There are not enough hosts available 检查所在宿主
  • vuzzer 具体原理解析

    目录 1 安装 vmware 15 01环境下安装 xff1a 2 vuzzer使用说明 3 vuzzer原理 3 1权重文件以及有着cmp信息的文件生成 3 2 vuzzer种子生成 xff0c 变异原理 3 2 1 runfuzz py
  • C++ unordered_set

    目录 1 定义 2 基本的函数 2 1 unordered set构造 2 2 添加新的元素 注意无法插入相同元素 2 3 查找元素 2 4 查找桶接口 2 5 观察器 2 6 清除元素 2 7 其他函数 1 定义 unordered se
  • clang 10 介绍——sanitizerCoverage

    1 Introduction llvm内置了一个简单的代码覆盖率检测 xff08 sanitizercoverage xff09 它在函数级 基本块级和边缘级插入对用户定义函数的调用 提供了这些回调的默认实现 xff0c 并实现了简单的覆盖
  • C++ 匿名函数

    1 定义 所谓匿名函数 xff0c 其实类似于python中的lambda函数 xff0c 其实就是没有名字的函数 使用匿名函数 xff0c 可以免去函数的声明和定义 这样匿名函数仅在调用函数的时候才会创建函数对象 xff0c 而调用结束后
  • 给docker中的ubuntu系统安装桌面程序

    原本服务器是centos的 xff0c 用的不是很习惯 xff0c 也为了可以分割功能 xff0c 于是在服务器上装了docker xff0c docker里装了ubuntu系统 xff0c 具体过程可以参见https blog csdn
  • 陇剑杯 2021 write up整理

    竞赛 write up 收集和整理 陇剑杯 2021 write up整理1 签到题1 1 2 JWT2 12 22 32 42 52 6 3 webshell3 13 23 33 43 53 63 7 4 日志分析4 14 24 3 5
  • PBCTF2021

    PBCTF2021 1 MISC1 1 幽灵作家 Ghost Writer 2 Crypto2 1 Alkaloid Stream2 2 Steroid Stream2 3 good hash 1 MISC 1 1 幽灵作家 Ghost W
  • ASISCTF

    warm up 题目代码如下图所示 xff0c 我们会发现整个加密过程如下所示 xff0c 先在flag后面加上p长度的随机字符 xff0c 然后选择pow s i p 的结果选择字符重新连接字符串实现加密 usr bin env pyth
  • burpsuite简介

    1 burpsuite简介 burpsuite作为web渗透较为常用的软件 xff0c 有着9个比较常用的模块 proxy xff0c target xff0c intruder xff0c comparer xff0c repeater
  • libFuzzer

    目录 1 概述 2 版本 3 Fuzz Target 4 Fuzzer Usage 5 Corpus 6 Running 7 Parallel Fuzzing 8 Fork mode 9 Resuming merge 10 Options
  • linux virsh console无法登入虚拟机,宿主机virsh console 登录异常

    创建虚机后在宿主机上通过virsh console 登录不进去 xff0c 一直卡在登录界面 xff08 可以通过命名空间ssh登录 xff0c 排除用户名及密码问题 xff09 原因是相关配置文件没有添加 xff0c 可以通过以下方法进行
  • FrankMocap:A Monocular 3D Whole-Body Pose Estimation System via Regression and Integration 2021阅读理解

    ICCV Workshop 2021 Facebook AI research Btw why the name FrankMocap Our pipeline to integrate body and hand modules remi
  • 网络流算法学习笔记——Dinic有效算法

    屈婉玲 算法设计与分析 第2版第7章网络流算法学习笔记 概述 Dinic有效算法同样用来求最大流 xff0c 相当于FF算法的改进 FF算法参考 xff1a 网络流算法学习笔记 最大流问题基本概念和Ford Fulkerson方法 xff0
  • NDN网络学习笔记(一)——NDN基础

    NDN xff08 Named Data Networking xff09 是用来取代当前TCP IP架构的新的互联网架构 xff0c 在2010年被提出 NDN 的网络架构如下右图 xff0c 它继承了 IP 架构的沙漏型瘦腰结构 xff