命名数据网络(NDN)与TCP/IP网络
之前面试时遇到一个十分有趣的开放性的问题:
当前TCP/IP协议存在哪些问题?如何改进?
当时没有回答好,然后提到了NDN可以针对TCP/IP做出改进,但是在行家面前就漏洞百出,一是对TCP/IP网络理解不够深入,另外一方面是自己对NDN比较陌生。趁着这段时间比较得闲,在网上搜了《Named Data Networking(NDN) Project》(2010.10)和初略看了看北大出版的《信息中心网络与命名数据网络》(雷凯老师编著),对我当时的回答进行补充和完善吧。
有需求才有探索与实践,所以,首先,要理解一下当前的互联网的发展背景,才知道TCP/IP为什么逐渐无法满足我们的需求了。
一.当今互联网发展趋势与特征
2.手机网民规模日益扩大,对移动性网络的需求在增强
3.互联网应用习惯出现显著变化,包括新型即时通信(微信),微博,云视频,云存储等在内的新兴互联网内容应用迅速扩散,说明用户越来越依赖互联网来进行内容的传播和分发,对于内容共享需求日益强烈。
二.TCP/IP协议
1.目的
在两个实体之间端到端的数字数据交换
2.优势
3.问题
(1)安全性
(2)移动性和多网址
(3)组播传输
(4)可拓展性和服务质量的保证
(5)资源浪费
(6)带宽竞争和拥塞会导致骨干网压力,网络出入口压力大
针对TCP/IP网络的这些问题,NDN做出如下的改进或者革命(其实NDN的提出是想要替代IP网络的主体地位)
三.NDN网络
1.数据和网络安全性高——安全性
通过检查IP数据包头部或有效载荷来推测数据包的内容,通过检查目的地址可以得出谁(来自哪里)在请求该数据。NDN明确的命名数据,无疑使网络更容易监控什么样的数据被请求,然而,NDN通过签名加密了关于数据请求者的信息,除非点对点链路直接连接到发出请求的主机,否则路由器将只知道有人请求某些数据,但不知道是谁发起请求。
2.内容中心的位置无关传输机制——移动性
3.原路返回的反馈式流量平衡机制——流量,负载均衡;组网传播
NDN中只有Interest包被路由器转发,任何接收到该Interest包的路由节点,如果拥有可以满足这个Interest包的数据,就回复一个Data包,而Data包沿着各个节点PIT中所记录的接口信息按“原路返回”:不进行路由转发,只简单沿着Interest包被传输的相反路径返回。
IP路由采用单一的最佳路径以防止循环,不能形成网络回路;而NDN中Interest包是不会形成环路的,,其关键设计是Interest包中的Nonce字段,该字段是个随机数,根据它可以很容易地判断出重复的Interest包,及时地丢弃,而Data包沿着Interest包被传输的相反路径返回,不形成环路,从而解决了组播的问题。
4.基于名字路由的可拓展性更优
NDN解决了TCP/IP网络中的IP地址耗尽问题,内网穿透问题,移动性问题,可扩展地址管理问题,打破传统的C/S结构,解决了TCP/IP网络下热门服务器负载过重的问题。
5.基于逐跳的报文包转发——减少冗余传输
6.传输层的嵌入式缓存——减轻带宽压力
NDN路由器可以对内容缓存,而且这个缓存直接建立在网络传输层,节省了带宽,提高了内容共享率,无论IP路由器转发后不能重用该数据,而NDN路由器能够重用该数据,因为它们的命名是不变的,而且不包含代表位置相关的IP地址信息,数据可以在传输路径中间任意节点缓存,复制或者移动,尽可能长时间地保存接收到的数据,将数据缓存自身以满足未来潜在的请求。
四.NDN网络工作机制简介
NDN中的通信是由接收端(即数据消费者)驱动的。为了接收数据,一个消费者发出一条兴趣(Interest)报文,该报文携带一个名字,由名字识别期望的数据(见1)。例如,一个消费者可请求/parc/videos/WidgetA.mpg。一台路由器记住请求到达的接口,之后通过在其转发信息表(FIB)(是由一种基于名字的路由协议传播的)中查找该名字而转发兴趣报文。一旦兴趣到达拥有被请求数据的一个节点,则发回一条数据(Data)报文,它携带数据的名字和内容,还有生产者密钥的一个签名(图1)。这条数据报文经兴趣报文所产生的反向路径到达消费者。注意兴趣或数据报文都没有携带任何主机或接口地址(例如IP地址);依据兴趣报文中携带的名字,兴趣报文向数据生产者路由,而数据报文依据在每个路由跳处由兴趣所建立的状态信息得以返回(图2)。
NDN路由器在一段时间内保持兴趣和数据。当从下游接收到相同数据的多条兴趣报文时,仅有第一条兴趣报文朝向数据源发送到上游。之后路由器将兴趣存储在未决兴趣表(PIT)之中,其中每个表项包含兴趣的名字以及由之接收到匹配兴趣的接口集合。当数据报文到达时,路由器查找匹配PIT表项,并将数据转发到PIT表项中列出的所有接口。之后路由器清除相应的PIT表项,并在内容存储(Content Store)中缓存数据,内容存储基本上是受限于缓存替换策略的路由器缓冲内存。数据采取与请求数据的兴趣报文相同的路径,但方向相反。一个数据沿每跳满足一个兴趣,取得逐跳的流平衡。
暂时是那么多了,笔者现在还处于理论学习部分,所以假如有什么纰漏,希望多多交流与指正O(∩_∩)O哈!
命名数据网络(NDN)与TCP/IP网络相关推荐
- TCP/IP 网络数据封包和解包
这是一个网上的代码:下面列出资料并简略分析代码: TCP/IP 网络数据封包和解包 . TCP/IP 网络数据以流的方式传输,数据流是由包组成,如何判定接收方收到的包是否是一个完整的包就要在发送 ...
- TCP/IP网络协议的通俗理解,socket,http,soap。
前段时间做了一个开发,涉及到网络编程,开发过程比较顺利,但任务完成后始终觉得有一些疑惑.主要是因为对网络协议不太熟悉,对一些概念也没弄清楚.后来我花了一些时间去了解这些网络协议,现在对TCP/IP网络 ...
- 对TCP/IP网络协议的浅出归纳
前段时间做了一个开发,涉及到网络编程,开发过程比较顺利,但任务完成后始终觉得有一些疑惑.主要是因为对网络协议不太熟悉,对一些概念也没弄清楚.后来 我花了一些时间去了解这些网络协议,现在对TCP/IP网 ...
- 第一章 OSI网络模型和TCP/ IP协议栈
第一章 OSI网络模型和TCP/ IP协议栈 1.1 计算机网络的定义 计算机网络是指将若干台地理位置不同,且具有独立功能的计算机,通过通信设备和传输线路相互连接起来,按照一定的通讯规则进行通信,以实 ...
- TCP/IP网络协议栈:以太网数据包结构、802.3、MTU
<TCP/IP网络协议栈:以太网数据包结构.802.3> <TCP/IP网络协议栈:ARP协议详解> <TCP / IP攻击:ARP缓存中毒的基本原理.TCP序列号预测和 ...
- TCP/IP网络编程:P3->地址族与数据序列
本系列文章为<TCP/IP网络编程----尹圣雨>学习笔记,前面的系列文章链接如下 TCP/IP网络编程:P1->理解网络编程和套接字 TCP/IP网络编程:P2->套接字类型 ...
- OSI七层网络结构图与TCP/IP五层网络结构图
一. OSI七层网络结构图与TCP/IP五层网络结构图 又称<OSI七层网络模型与TCP/IP四层网络模型>. (1)OSI七层模型 OSI中的层 功能 TCP/IP协议族 应用层 文件传 ...
- TCP/IP网络编程 - 基础学习
1. 创建Socket #include<sys/types.h> #include<sys/socket.h>int sock = ::socket(PF_INET, SOC ...
- C# TCP/IP网络数据传输及实现
C# TCP/IP网络数据传输及实现 一.概念简述 1.什么是OSI 和TCP/IP 2.什么是套接字Socket 3.TCP 和 UDP 4.IP .MAC.PORT (1) IP地址 (2) MA ...
最新文章
- Andrej Karpathy发文谈神经网络:这不仅仅是分类器,这是一种新的软件开发思想
- 我看TechEd 2012之技术热点
- 华为海思年内恐超越联发科 成亚洲最大芯片设计公司
- libpython3.7m so静态库_libpython3.7m.dll
- 常见的预设分栏包括_计算机应用基础_实训项目二Word综合应用
- 全面剖析《自己动手写操作系统》第五章---makefile文件
- 希望能多看几遍找到自己的影子
- Zabbix5系列-监控惠普服务器iLO管理口 (六)
- 超快激光啁啾放大技术的原理及应用
- Java多线程系列--【JUC锁08】-共享锁和ReentrantReadWriteLock
- JAVA-----集合子接口Queue及其子接口Deque
- java 动态定时提醒_java实现定时提醒功能
- 英特尔CAS缓存加速软件优化SSD性能
- python seo cms_「SEO帝国」 SEO中讲的 CMS是什么意思
- STM32学习心得十八:通用定时器基本原理及相关实验代码解读
- 宝塔设置A站点SSL,同服务器下其他未设SSL站点访问HTTPS默认会打开A站点
- 输入两个正整数,求其最大公约数和最小公倍数。
- 百度收录静态html吗,网站设置伪静态更利于百度收录吗
- fanuc机器人基于程序号码选择(PNS)的自动运转
- 站长应该怎么选择香港服务器!
热门文章
- 【剧情】あかね色に染まる坂(染成茜色的坂道) 中文剧情简介
- Yeoman安装和使用详解
- 问题解决之 采购订单自动舍入数量
- 那些在校期间成绩好的同学,工作后会同样优秀吗?
- python 实现对 同比、环比、占比、贡献率、拉动率 、移动均值 等的计算(附详细代码和样例)
- 苹果即将发布折叠手机,或许它和三星才是折叠手机的赢家
- 三,usb dwc3 controller 驱动流程
- Kali linux 学习笔记(二十三)提权——几个好工具(WCE、fgdump、mimikatz) 2020.3.4
- 洛谷:海底高铁(P3406)C++
- ubuntu16.04 安装g++7,并支持C++14