ICN的目的是把内容与终端位置剥离,通过发布/订阅范式(Publish/Subscribe Paradigm)来提供存储和多方通信等服务。
什么是发布/订阅范式(Publish/Subscribe Paradigm)
发布/订阅范式是消息队列范例的一种,是一个更大的消息中间件系统的一部分。发布者只负责发布信息,订阅者可以订阅多个发布者所发布的信息,两者之间不用理会是谁发布和谁订阅,而通过一个信息管理器来处理两者之间的发布/订阅逻辑。
分布/订阅系统模型依赖于“事件服务”来为事件的订阅和高效传输提供存储和管理。订阅者通过“订阅操作”来注册其感兴趣的事件,而无需了解这些事件的有效源。发布者通过“发布操作”来产生事件。“事件服务”将事件传送给所有相关订阅者,每个符合需求的事件都将通知到订阅者。“事件服务”将信息的产生和消费进行解耦,消除了参与者间的依赖,增强了可扩展性。这极大地减少了协调工作,使不同实体实现同步,并使所产生的通信基础设施能够很好地适应异步的分布式环境,如移动环境。
ICN体系结构:
ICN的本质是在网络层将内容和终端进行了剥离,ICN的体系结构可以概括为四方面:对内容进行命名、路由、传输和缓存内容
ICN相比TCP/IP的几个不同:
1. ICN节点是以基于内容的名字进行路由,而不是基于终端位置,这将带来两个改变:
a.以识别内容取代了识别终端
b.内容文件的位置与其名字剥离,在TCP/IP体系中,IP地址既是身份识别也是位置信息。
正是因为进行了剥离,ICN在进行内容命名和路由时不存在位置依赖,摆脱了移动性问题
2.ICN采用发布/订阅范式或系统作为主要传输模型,内容发布者发布一个内容文件,用户可以以内容名字来索取这份文件内容。在TCPIP体系中,用户需要知道哪个数据源持有这些文件,并且用户和数据源终端在整个数据传输过程中需要保持关联。ICN通过发布订阅系统,将内容的产生、使用在时间和空间上进行分离,从而使内容传输效率更高,可扩展性更好。
3.数据的合法性可以方便 地经过公钥加密来进行认证,在TCP/IP体系中,用户所看见的终端地址与内容名字不相干,这将导致钓鱼攻击和网络交接攻击,ICN采用扁平化的命名方法来进行内容命名或对数据包进行签名,从而大大提高了安全性。
ICN的命名方法:
1.分层命名(Hierarchical, Human-readable naming):
CCN和TRIAD采用了分层命名方法对内容进行命名。这种命名是自由形态的层级,人可读的字符串序列。便于理解和记忆,加密算法变化时名字可以保持不变,这种命名与Web URL相似,并且是可聚合的,因此能够方便地与URL相匹配,这意味着在当前网络环境上进行部署较为容易。如下图所示:
如上图所示,如果所有内容的名字都是以www.nrc.nl开始并存储在一个节点上,那么这些内容就只需要一个路由入口。
2.扁平命名Flat, self-certifying naming
DONA、PSIRP和 NetInf 采用了扁平命名方法进行内容命名,其格式是 P : L,P 是内容发布者公钥的加密哈希,L 是标签 。这样的命名是没有语义的哈希串,具有较好的稳定性和唯一性,但也带来了不便于理解、记忆,加密算法升级后其名字将