NDN的作用:替代TCP/IP框架,用数据内容替代管道的地位
要点:
1.用户只需提供数据名字,无需地址
2.无需从服务器拿数据,可以从就近的缓存拿,数据可以来自任何节点
3.所有数据包都要有数字签名
TCP/IP
只提供一个通讯管道,重视管道的维护,不关心内容的传输
存在的问题:1.效率低,单个管道进行数据通信,容易造成堵塞
2.安全性低,重视管道保护,建立信任连接后,不能确保数据的安全性,哪怕发送恶意代码也照常
IP数据包和NDN数据包区别
IP数据包核心是地址
NDN包含兴趣包和数据包两种,没有地址,核心是名字
NDN数据包命名:
命名由程序应用产生,包括1.数据包大小,2.多层级(类似文件夹的地址分层)3.签名(和名字,密钥紧密相关)
NDN路由机制
命名驱动
服务端需要注册名字前缀,例如BAIDU注册BAIDU/
路由器根据名字建立路由表,计算出到达名字前缀的所有路径
用户端拿名字发送兴趣包来请求数据,路由器根据名字匹配路由表转发数据
路由缓存
每个节点都可以缓存数据
用户请求兴趣包后,服务端返回的数据包是没有收货地址的,那怎么给用户呢?其实路由器有一个兴趣包缓存表(PIT)
,每一次用户请求的数据都记录在案,路由器根据兴趣包缓存表反向传输给用户。
路由转发
IP数据包路由转发的劣势:
1.单向的,数据包可能有去无回
2.路由器无状态:不关心报文流,处理数据效率低(报文:完整的数据块,因为长短不一,传输过程中被封装成组,包,帧)
3.不会缓存数据数据,太慢
NDN的优势就是上面的反面(双向传输,有请求才有数据,一一对应)
数据包和兴趣包
cs:content store
fib:Forwarding Interest Base
pit:Pending Interest Table
用户发送兴趣包-----CS查询是否有缓存------PIT查询是否有人请求过相同的名字,如果有,就不需要向服务端再次请求,数据包返回时给所有人发一份就行了
--------FIB如果没有,查询哪条路径对应名字,把数据包转发下去‘
返回数据包--------PIT查询是否有该数据的请求,有的话给所有请求列表分发,若没有则丢弃---------CS缓存一份,继续转发