【NDN实验】Consumer-Producer API for Named Data Networking 学习笔记
2016-10-19 18:55
531 查看
本文有两个版本:一个概述版,一个完整版。
本文主要阐述了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函数代码及其应用实例源代码,并在函数、代码指定的平台上实际运行程序才可以理解透彻。
本文主要阐述了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函数代码及其应用实例源代码,并在函数、代码指定的平台上实际运行程序才可以理解透彻。
相关文章推荐
- 【NDN实验】Consumer-Producer API for Named Data Networking 全文翻译
- 【NDN安全】Mitigating Distributed Denial-of-Service Attacks in Named Data Networking 学习笔记
- 【NDN安全】Interest Flooding Attack and Countermeasures in Named Data Networking 学习笔记
- 【NDN安全】Poseidon: Mitigating Interest Flooding DDoS Attacks in Named Data Networking 学习笔记
- 【NDN基础】Named Data Networking 学习笔记
- 【NDN安全】DoS & DDoS in Named Data Networking 学习笔记
- 【NDN VANET】Ad Hoc Networking via Named Data 学习笔记
- 【NDN基础】Information-Centric Networking: A Natural Design for Social Network Applications 学习笔记
- 【NDN IoT】NDN-ACE: Access Control for Constrained Environments over Named Data Networking 全文翻译
- 【NDN VANET】Rapid Traffic Information Dissemination Using Named Data 学习笔记
- ArcGIS API for Flex制作程序发布后出现错误:"访问 URL 时遇到安全性错误" 解决办法尝试(学习笔记)
- learning jQuery 学习笔记十五(+jQuery 1.4.1 API)-- AJAX----load(url, [data], [callback])
- arcgis api for flex 学习笔记
- ElasticSearch API for JAVA 学习笔记
- 【转】ArcGIS API for Silverlight/WPF 2.1学习笔记(五)
- Android(java)学习笔记143:android提供打开各种文件的API接口:setDataAndType
- 【转】ArcGIS API for Silverlight/WPF 2.1学习笔记(三)
- ArcGIS API for Silverlight 学习笔记
- Kafka 学习笔记(九)producer 和 consumer分别在两个虚拟机上
- Kafka 学习笔记(4) - Consumer和Producer