【NDN实验】Consumer-Producer API for Named Data Networking 学习笔记

本文有两个版本:一个概述版,一个完整版。

本文主要阐述了NDN通信协议的网络编程接口API,该API由两部分组成:消费者环境中的API和生产者环境中的API,以及两种环境下的API函数,函数的参数及其调用过程,以及API函数的应用实例。

文中涉及以下部分:

(1)当前TCP/IP环境下的Socket API不适用于NDN,因为Socket API设计用于点对点虚拟信道,TCP/IP设计为点对点数据交付,而NDN在命名空间中生产/消费数据。

(2)消费者环境中的API用于消费者程序中,执行针对特定名字前缀的多段内容的可靠或不可靠的数据获取,及包排序、包重组,密切监控包交付过程及在该过程中可能发生的各种差错。消费者环境与一个NDN名字前缀相关联,以实现数据获取、传输、内容验证,并集成了消费者端兴趣包和数据包的处理。

(3)生产者环境中的API用于生产者程序中,用于在特定名字前缀下发布一段或多段数据内容。生产者环境与一个NDN名字前缀相关联,以实现包组帧、缓存、基于内容的安全、命名空间注册,并集成了生产者端兴趣包和数据包的处理。

(4)API设计实现的功能:

          <1>名字构建。TCP/IP传输层协议,比如RTP,使用时间戳来与参与者同步,使用序列号来检测包丢失和乱序。而在NDN中,时间戳和序列号作为兴趣包和数据包的名字组件。

          <2>重传。包括实际的协议机制(定时器、窗口管理)和包缓存。NDN应用程序的开发经验显示,NDN API需要为TCP和UDP都提供接口。

          <3>重组。TCP/IP socket API中的重组为应用程序设计者提供了一种方式直接访问内容流,而不处理包头部(这点我不懂)。NDN API中的重组为乱序包处理提供了编程接口。

          <4>错误处理。TCP/IP提供错误代码来使得应用程序设计者理解TCP连接内部的问题。在NDN中,可以有多种方式通过兴趣包选择器、版本等获取数据包对象,因此,需要一个更加细粒度的监控技术(这点我不懂)。

          <5>分段。使用write()原语(这点我不懂)。

          <6>包的绑定。将socket号与主机地址、端口号进行绑定。而TCP/IP和NDN中的多路解编(demultiplexed)在本文例子中是什么意思我不了解。

(5)3.2 核心概念方面不了解。

(6)网络通信协议包含两部分:传输控制和数据操纵。而TCP/IP中的例子HTTP和NDN中基于Application Data Units (ADUs)的协议在这两部分的设计我不理解。

(7)消费者环境中的函数:

          <1>consumer():创建消费者环境,控制兴趣包的生成和返回数据包的处理。

          <2>consume():开始数据传输,该数据传输以消费者环境下的某一特定名字标识。

          <3>setcontextopt():用来指定或修改消费者环境中的一些参数。

          <4>stop():在消费者环境中终止数据传输。

          <5>close():销毁消费者环境。

(8)生产者环境中的函数:

          <1>producer():创建数据,保护数据,并将兴趣包多路解编。

          <2>setup():激活生产者环境,以便于接收兴趣包和生产数据包。

          <3>setcontextopt():用于指定或修改生产者环境的参数。

          <4>produce():传输数据包。

          <5>close():销毁生产者环境。

(9)NDN API的应用实例:

          <1>文件同步NDN FileSync。

          <2>直播视频流NDNVideo。

          <3>建筑物自动化系统Building Automation Systems (BAS)。

(10)以上NDN API函数、API函数的参数及API的应用实例了解的只是皮毛,深入学习需要认真研究API函数代码及其应用实例源代码,并在函数、代码指定的平台上实际运行程序才可以理解透彻。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页