前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >IPFS - 一个点对点的超媒体协议

IPFS - 一个点对点的超媒体协议

原创
作者头像
FloatSheep
发布2022-05-04 08:44:57
1.1K0
发布2022-05-04 08:44:57
举报
文章被收录于专栏:yetonwooyetonwoo

本文章首发于语雀!

通过各种高科技功能同步到Hajeekn的博客

IPFS's Author

IPFS's Author 是 Juan Benet

Juan Benet在 2014 年创建了 Protocol Labs (协议实验室)

协议实验室旗下的项目:

  • IPFS
  • FileCoin

协议实验室旨在如何构建下一代互联网

What's IPFS?

依照官网的介绍,总的来说,IPFS 就是一种点对点超媒体协议,它可以使网络更快、更安全、更开放

本质上来说,它就是一种去中心化互联网(Peer to Peer) ≈ P2P

没错,就是孽种 P2P 下载器

这么牛的项目怎么是 P2P 下载器呢? P2P 下载器只是个披着羊皮的狼

P2P(Peer to Peer)依靠用户群交换信息

以 number.exe 为例

当你上传后,无数个 Node(用户) 会瓜分你的 number.exe

他们将你的文件分成许多分片,瓜分分片

他们在瓜分的同时会获得奖励

是不是听起来很神奇?对的,你没有付出任何东西,别人却能获得奖励,而且你既满足储存文件的需求,储存你文件的人也能得到金钱.这种机制,叫做FileCoin.你可以把它想象成Bittorrent+BitCoin的结合物,实际上他就是这样的.当然不完全是,但核心理念就是这样的.只不过,BitCoin付出的是算力,而FileCoin付出的是硬盘.

摘自 ChenYFanのBlog

这是 IPFSの不权威原理图(来自 ChenYFanのBlog)

所以,IPFS 相对于响应式请求(HTTP(S) / FTP)不同

传统的响应式请求由一个主服务器(或主集群)处理每一个请求,并贡献内容

而 IPFS 基于 Peer to Peer 技术,让每个 Node 都贡献,没有中心服务器(去中心化)

更细致的解释

IPFS 是一个基于 Git 模型版本管理 & DHT & CBA & Hash 等的产物

它基于 DHT(分布式哈希表) 进行寻址

而传统的响应式请求由 LBA(基于位置的寻址)

而这样,响应式请求的缺点就暴露了出来

LBA(基于位置的寻址) 它在查找时所看重的信息是位置,就好比一个网址 https://blog.slqwq.cn/link/如果这个位置被删除了,链接位置转移了,他就会暴露出

404 Not Found 错误

而 IPFS 所采用的 DHT(CBA 基于内容的寻址)就没有这个缺点

它在查找时所看重的信息是内容,不管你位置在哪里,只要找到的内容符合要查找的信息,那他就是正确的

最后

基于响应式请求(中心化网络)还有一个超级大大大大的弊端

那就是

非常容易引入审查

也就是类似于我们国家的 Great Firewall of China (GFW是一个分布式的入侵检测系统,并不是一个严格意义上的防火墙)

每个国家的 gov 可以很方便的 BAN 掉某个网站或者应用

引入一个具体事例

在 2017 年, Turkey's GOV******就用国家安全的理由禁掉了维基百科**

当然,去中心化也不能避免掉 Firewall 的屏蔽,只是不那么容易屏蔽掉罢了

Use IPFS - IPFS Client

进入 IPFS-DesktopのReleases

找到需要的客户端下载并安装

弹出防火墙警报请一定要允许

在文件处可以上传文件

上传点击导入即可

接下来,重点来了!

ipfs分享文件有两种方式,是ipfs和ipns,前者采用文件hash辨别文件,文件内容一旦改变,原来的链接无法更新,链接格式为 https://ipfs.io/ipfs/QmZCvMHrE56VqsejmG53xd9bW4RZjtFpLz46QMQjA81orL ;后者采用用户id辨别,内容允许更新,但是用户在线时间过短会导致无法同步,并且有可能暴露用户信息,后者格式为: https://ipfs.io/ipfs/QmQQKZphgJdEGhTp18NRvVdSJ3RJArRst2keKk3tZvmfPz?filename=index.html .

如果你只是单个文件网页,此处比较建议使用ipfs,ipns可能离线时间过长导致无法下载。具体看个人所好。

ipfs链接获取:点击 ··· ,选择复制哈希,在前面加上网关域名即可。

ipns连接获取:点击 ··· ,选择分享,复制链接即可。

在善用技术上网的前提下访问 https://ipfs.io/ipfs/QmZCvMHrE56VqsejmG53xd9bW4RZjtFpLz46QMQjA81orL 显示目标界面

请注意,每次上传后一定要先访问一遍资源,否则文件是不会上传到ipfs服务器的!

摘自 ChenYFanのBlog

Use IPFS - IPFS Gateway

JSProxy - IPFS Gateway

因为 IPFS 默认的网关被 FW 了

所以我们可以通过 Worker JSProxy 的方式解锁你自己的网关

代码语言:javascript
复制
addEventListener(
  "fetch",event => {
    let url=new URL(event.request.url);
    url.hostname="werevless.herokuapp.com";
    let request=new Request(url,event.request);
    event. respondWith(
      fetch(request)
    )
  }
    ) 

粘贴进去,访问 Worker 地址就能看到 404 了

然后在 IPFS Client 里复制地址,接在后面就能打开你上传的文件了

JSProxy - Cloudflare IPFS Gateway

我们可以通过 Worker JSProxy 的方式解锁你自己的 CNAME

代码语言:javascript
复制
addEventListener(
  "fetch",event => {
    let url=new URL(event.request.url);
    url.hostname="cloudflare-ipfs.com";
    let request=new Request(url,event.request);
    event. respondWith(
      fetch(request)
    )
  }
    ) 

粘贴进去,就变成了基于 CIG 的你自己的 IPFS 网关

Use IPFS - Build Blog

dnslink绑定

这个方法无论你的dns服务商在哪都能绑定,只不过不在CloudFlare托管的用户要多一步。

1.将需要绑定的域名,以CNAME形式指向 www.cloudflare-ipfs.com ,比如我需要让 showtime.cyfan.top 成为ipfs出口,则这么设置。

2.使用txt记录绑定ipfs hash,新建txt记录,名字是 _dnslink.yourwebsite 一定要加上yourwebsite!比如我绑定的是 showtime.cyfan.top ,则名称一行填上 _dnslink.showtime !接着内容是 dnslink=/ipfs/ 后面接上hash,比如showtimehtml的hash是: QmWAvNck7QBhUAYAEgBFvbvvsMxDC9s55NXVJXeJTjTM1Y 则大概这么填:

3.如果你本来就是托管在CloudFlare上的,到此为止就可以了,如果不是托管在Cloudflare上,类似dnspod\alicdn之类的,那还要获取证书,进入https://www.cloudflare.com/distributed-web-gateway/ 拉到最底下

输入域名,获取证书即可。

但问题是,www.cloudflare-ipfs.com 已经被dns污染了,你用cname绑定是无法正常访问的啦!所以只能用Workers绕路啦!

JSProxy反代ipfs.io

老办法,Workersjsproxy反向代理ipfs网关,解决

依然来自 ChenYFanのBlog

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • IPFS's Author
  • What's IPFS?
    • 更细致的解释
      • 最后
      • Use IPFS - IPFS Client
      • Use IPFS - IPFS Gateway
        • JSProxy - IPFS Gateway
          • JSProxy - Cloudflare IPFS Gateway
            • dnslink绑定
            • JSProxy反代ipfs.io
        • Use IPFS - Build Blog
        相关产品与服务
        X-P2P
        自研新一代P2P 技术,友好地利用用户网络闲置带宽,优化网络资源调度,降低全网整体负载,既显著地降低分发成本,又提供等同于CDN的视听体验。通过简单集成SDK,轻松应对大流量突发,控制灵活,适用于直播、点播、短视频、大文件下载、游戏安装包升级等业务场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档