之前面试时遇到一个十分有趣的开放性的问题:

 当前TCP/IP协议存在哪些问题?如何改进?

当时没有回答好,然后提到了NDN可以针对TCP/IP做出改进,但是在行家面前就漏洞百出,一是对TCP/IP网络理解不够深入,另外一方面是自己对NDN比较陌生。趁着这段时间比较得闲,在网上搜了《Named Data Networking(NDN) Project》(2010.10)和初略看了看北大出版的《信息中心网络与命名数据网络》(雷凯老师编著),对我当时的回答进行补充和完善吧。

有需求才有探索与实践,所以,首先,要理解一下当前的互联网的发展背景,才知道TCP/IP为什么逐渐无法满足我们的需求了。

一.当今互联网发展趋势与特征

1.随着用户接入网络的物理带宽的提高,互联网应用主题已经转向文字信息和多媒体音视频等内容的获取,信息内容服务已经成为网络服务的主体。
2.手机网民规模日益扩大,对移动性网络的需求在增强
3.互联网应用习惯出现显著变化,包括新型即时通信(微信),微博,云视频,云存储等在内的新兴互联网内容应用迅速扩散,说明用户越来越依赖互联网来进行内容的传播和分发,对于内容共享需求日益强烈。

二.TCP/IP协议

1.目的

在两个实体之间端到端的数字数据交换

2.优势

在数据帧的设计上简单,标准统一,兼容异构的网络互联互通,良好的破坏恢复机制,低数据开销

3.问题

(1)安全性

基于IP网络安全需要对终端和连接同时信任。IP网络接受任何人发送的任何内容,不管数据包的内容,只要发送者看似合法,这种情况导致恶意信息发送到接收者,这是IP网站容易被攻击的根源。

(2)移动性和多网址

IP地址网络层寻址器和传输层定位标识符的双重作用限制了移动性和多网址的灵活性。特别是,传输协议绑定地址以确定通信会话,如果地址变化就会中断会话,需要重新建立连接。这种语义重载又导致IP网络中不允许存在回路,也不能同一时刻具有多个网络地址。

(3)组播传输

IP组播协议是事后添加到原有的点对点通信模型,以提供将信息发送到一组接收者的能力,然而因为其拓展性方面的缺点,组播从未在局域网之外的环境中大规模使用过。

(4)可拓展性和服务质量的保证

(5)资源浪费

互联网上发生了大量的重复冗余传输

(6)带宽竞争和拥塞会导致骨干网压力,网络出入口压力大

针对TCP/IP网络的这些问题,NDN做出如下的改进或者革命(其实NDN的提出是想要替代IP网络的主体地位)

三.NDN网络

1.数据和网络安全性高——安全性

通过检查IP数据包头部或有效载荷来推测数据包的内容,通过检查目的地址可以得出谁(来自哪里)在请求该数据。NDN明确的命名数据,无疑使网络更容易监控什么样的数据被请求,然而,NDN通过签名加密了关于数据请求者的信息,除非点对点链路直接连接到发出请求的主机,否则路由器将只知道有人请求某些数据,但不知道是谁发起请求。

2.内容中心的位置无关传输机制——移动性

采用名字来标识数据包,NDN不再包含明确的主机或接口地址等位置信息,其通信是由数据请求驱动的,主要是拉数据模式,一旦Interest到达一个有请求数据的节点,那么就会返回一个数据包。无论请求包还是数据包,都没有携带任何主机或接口位置信息(如IP地址),请求包只依据自身携带的内容进行路由,而数据包则延Interest原路返回。

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.基于逐跳的报文包转发——减少冗余传输

请求数据时,请求方发出Interest包(含标识目标数据的数据命名),请求包可以在任意的连接无关的中间节点上被转发,一个Internet包经过每一跳都有可能从不同数据源(包括缓存)得到匹配的的Data包,不一定要走完路径到达数据源的终点。一旦data包在回传的路径上丢包,只需在丢包的节点断点续传。这样,就消除了对终端主机执行拥塞控制和传输确认的依赖。

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网络相关推荐

  1. TCP/IP 网络数据封包和解包

    这是一个网上的代码:下面列出资料并简略分析代码: TCP/IP 网络数据封包和解包  .   TCP/IP 网络数据以流的方式传输,数据流是由包组成,如何判定接收方收到的包是否是一个完整的包就要在发送 ...

  2. TCP/IP网络协议的通俗理解,socket,http,soap。

    前段时间做了一个开发,涉及到网络编程,开发过程比较顺利,但任务完成后始终觉得有一些疑惑.主要是因为对网络协议不太熟悉,对一些概念也没弄清楚.后来我花了一些时间去了解这些网络协议,现在对TCP/IP网络 ...

  3. 对TCP/IP网络协议的浅出归纳

    前段时间做了一个开发,涉及到网络编程,开发过程比较顺利,但任务完成后始终觉得有一些疑惑.主要是因为对网络协议不太熟悉,对一些概念也没弄清楚.后来 我花了一些时间去了解这些网络协议,现在对TCP/IP网 ...

  4. 第一章 OSI网络模型和TCP/ IP协议栈

    第一章 OSI网络模型和TCP/ IP协议栈 1.1 计算机网络的定义 计算机网络是指将若干台地理位置不同,且具有独立功能的计算机,通过通信设备和传输线路相互连接起来,按照一定的通讯规则进行通信,以实 ...

  5. TCP/IP网络协议栈:以太网数据包结构、802.3、MTU

    <TCP/IP网络协议栈:以太网数据包结构.802.3> <TCP/IP网络协议栈:ARP协议详解> <TCP / IP攻击:ARP缓存中毒的基本原理.TCP序列号预测和 ...

  6. TCP/IP网络编程:P3->地址族与数据序列

    本系列文章为<TCP/IP网络编程----尹圣雨>学习笔记,前面的系列文章链接如下 TCP/IP网络编程:P1->理解网络编程和套接字 TCP/IP网络编程:P2->套接字类型 ...

  7. OSI七层网络结构图与TCP/IP五层网络结构图

    一. OSI七层网络结构图与TCP/IP五层网络结构图 又称<OSI七层网络模型与TCP/IP四层网络模型>. (1)OSI七层模型 OSI中的层 功能 TCP/IP协议族 应用层 文件传 ...

  8. TCP/IP网络编程 - 基础学习

    1. 创建Socket #include<sys/types.h> #include<sys/socket.h>int sock = ::socket(PF_INET, SOC ...

  9. C# TCP/IP网络数据传输及实现

    C# TCP/IP网络数据传输及实现 一.概念简述 1.什么是OSI 和TCP/IP 2.什么是套接字Socket 3.TCP 和 UDP 4.IP .MAC.PORT (1) IP地址 (2) MA ...

最新文章

  1. Andrej Karpathy发文谈神经网络:这不仅仅是分类器,这是一种新的软件开发思想
  2. 我看TechEd 2012之技术热点
  3. 华为海思年内恐超越联发科 成亚洲最大芯片设计公司
  4. libpython3.7m so静态库_libpython3.7m.dll
  5. 常见的预设分栏包括_计算机应用基础_实训项目二Word综合应用
  6. 全面剖析《自己动手写操作系统》第五章---makefile文件
  7. 希望能多看几遍找到自己的影子
  8. Zabbix5系列-监控惠普服务器iLO管理口 (六)
  9. 超快激光啁啾放大技术的原理及应用
  10. Java多线程系列--【JUC锁08】-共享锁和ReentrantReadWriteLock
  11. JAVA-----集合子接口Queue及其子接口Deque
  12. java 动态定时提醒_java实现定时提醒功能
  13. 英特尔CAS缓存加速软件优化SSD性能
  14. python seo cms_「SEO帝国」 SEO中讲的 CMS是什么意思
  15. STM32学习心得十八:通用定时器基本原理及相关实验代码解读
  16. 宝塔设置A站点SSL,同服务器下其他未设SSL站点访问HTTPS默认会打开A站点
  17. 输入两个正整数,求其最大公约数和最小公倍数。
  18. 百度收录静态html吗,网站设置伪静态更利于百度收录吗
  19. fanuc机器人基于程序号码选择(PNS)的自动运转
  20. 站长应该怎么选择香港服务器!

热门文章

  1. 【剧情】あかね色に染まる坂(染成茜色的坂道) 中文剧情简介
  2. Yeoman安装和使用详解
  3. 问题解决之 采购订单自动舍入数量
  4. 那些在校期间成绩好的同学,工作后会同样优秀吗?
  5. python 实现对 同比、环比、占比、贡献率、拉动率 、移动均值 等的计算(附详细代码和样例)
  6. 苹果即将发布折叠手机,或许它和三星才是折叠手机的赢家
  7. 三,usb dwc3 controller 驱动流程
  8. Kali linux 学习笔记(二十三)提权——几个好工具(WCE、fgdump、mimikatz) 2020.3.4
  9. 洛谷:海底高铁(P3406)C++
  10. ubuntu16.04 安装g++7,并支持C++14