从动态客户端缓存到P2P兴趣网

动态客户端缓存的思路:本来请求网站a的资源,其http cache受a的控制;现在我们改写url,做成请求b,b运行CDN代理服务,这个url可以带一个expires或max-age参数,b直接根据此参数设置cache响应头部,请求原始a并将内容缓存在b上


请注意这个方案,b作为动态缓存代理其受客户端的请求参数控制的,某些js合并打包的cdn web服务可能就是这么做的


也就是说,b上运行某个基于http(s)的特殊代理服务,一般用go语言写最合适了,或者也可以是node.js,或者java类的框架,理论上可以做到脑洞无限大


我们可以让b不再是普通的公网服务器,而是普通的手机,通过google的physicalweb物联网规范,或者像茄子快传那样基于wifi direct的工具,让这种特殊的代理直接由浏览器内核提供,这样就可以做到P2P互联的新web模式了


这里的问题是,android平台可能不允许客户端打开server socket?这个我不是很清楚


假如这种模式可以实施的话,安全性一致性如何得到保证呢?举个简单的case:我们如何保证从另一个客户端B通过p2p得到的web内容与原始的外网服务器上的是一致的?预先得知hash,或者独立地部署p2p下的信任关系,但不是很方便


我们可以引入http协议头部refer的思想:p2p模式下请求b,实际上可以认为不是独立的请求b,而是在a的“上下文提示”下请求b,那也就是说,另一个客户端B上必须同时具有a的内容,这个相当于“公共知识”,可以基于此设计一个临时加密会话,这就部分地保证了安全性、一致性


在p2p KAD网络中,每个内容请求预先只有一个hash值,这个hash值又是下一层hash的聚合,如此这是一颗hash的树,记得好像叫做merkle树的东西,如果不是树形而是线性的话,就是我这里说的“线性上下文”


这个方案虽然一开始只是利用IoT+P2P来加速web访问,但最终可以脱离原始的web环境,同时我们扩展这种“linear context hint”,改成一般的语义网(基于公共知识领域分类的)、或者个体/群体私有定义的“兴趣网”


我相信我这里所说的东西别人都已经想到了,这玩意儿没啥稀奇,可能有些技术难点需要解决,比如内容存在增量更新的情况下,如何保证避免hash冲突、保证p2p传输的效率等等


让我们再考虑一个有趣的情形:茄子快传需要在2台机器上都安装才行,假如一台机器上安装了另外一台没有怎么办?我们可以用物理连接的手段通过usb线安装,不过这是系统外的bootstrap,能不能在系统内部自启动呢?看来唯一能够利用的就是android设备的0day漏洞,不过这个漏洞最好是放在蓝牙模块中,这样必须在物理靠近的环境下才可以完成通过0day漏洞远程渗透安装,这就保证了安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值