Skip to content

【提案】穿梭器 Hyper #234

@Gaubee

Description

@Gaubee

介绍

在现有的桌面上新增一个原生应用:Hyper。
和 Browser 类似,它也是一个解释 Http 的浏览器,
但是不同的是,它不使用传统 https 协议来解释域名甚至内容。

比如浏览器中的链接是 https://example.com ,在穿梭器中的链接则是 http3://example.com

目的是以一种更加去中心的方式来解析 example.com,
比如“穿梭器”中,允许同时自定义多个服务商,
比如我有 https://http3.a.comhttps://http3.b.com 两个服务商,
在访问的 http3://example.com 的时候,会同时询问 https://http3.a.comhttps://http3.b.comhttps://http3.example.com 是否能够提供数据源,
如果没有,就会自动转化成访问传统 https://example.com。
如果要强制供应商,可以使用 http3+a.com://example.com ,这样就能强制使用 http3.a.com 作为服务供应商了。

关于供应商的技术实现方案

方案一:使用 http 协议来提供查询

查询行为,就是通过请求 https://http3.example.com/query?host=example.com:443

这里要不要携带端口,有待商榷

查询请求返回的内容,大概是这样的格式:

type: "http"
uri: "https://ipfs.io/ipns/k51qzi5uqu5dlj8n09qhjk7czfmqqlsbkuzyn5xp6a2qoti8u6pypk1ibise1y" # 这是传统 https 链接,任何 example.com:443 都会转发到这个入口来

也可以是:

type: "ipfs", # https://ipfs.tech/
uri:"QmdpDCxkKZT68pjr9rQvqPRUiGDkCVUYDC9P4NuT1FkF11" # 这是IPFS的CID,默认使用网关:https://dweb.link/ipfs/$CID 就可以进行访问,用户可以在 穿梭器的设置里,配置ipfs的网关

或者是:

type: "bare", # https://dat-ecosystem.org/
uri:"QmdpDCxkKZT68pjr9rQvqPRUiGDkCVUYDC9P4NuT1FkF11" # 这是IPFS的CID,默认使用网关:https://dweb.link/ipfs/$CID 就可以进行访问,用户可以在 穿梭器的设置里,配置ipfs的网关

方案二:使用 DNS TXT 记录来提供查询

  1. 首先确定供应商是否支持 dweb-http3 协议,如果支持,加入到供应商列表中
dig +noall +answer TXT http3.dweb.xin
# http3.dweb.xin.		600	IN	TXT	"dweb-http3"
  1. 这个用来向供应商查询即将要访问的域名是否有 http3 的记录
dig +noall +answer TXT example.com.http3.dweb.xin
# example.com.http3.dweb.xin. 600	IN	TXT	"dweb-http3://ipfs/QmdpDCxkKZT68pjr9rQvqPRUiGDkCVUYDC9P4NuT1FkF11"

总结两种方案

  1. http3 over https
    1. 优点是灵活性好,可以高度动态,可以继承混合聚合其它服务。
    2. 缺点是成本高,需要动态服务器提供查询服务;性能低,容易被攻击。
  2. http3 over dns
    1. 优点是性能好,且由传统域名服务商提供查询服务,没有额外成本,符合开发人员的思维和习惯
    2. 缺点是动态特性低,想要做动态开发,需要对接服务商的API

安全设计

不同于传统的 https 服务,是一个大型的统一的分布式网络。这些根域名服务器之间彼此同步,有些根域名服务器属于国家,有些根域名服务器属于组织,但是他们都在努力避免 DNS 污染的问题。

dweb-http3 是将这个事情完全开放出来,利用现代网络的能力,本地设备同时发起数十个 dns 查询,成本很低。
用户可以在本地安装配置多个 服务商,来同时做查询。
这里其实就变成了一个“域名搜索引擎”。访问之后,首先展示的是一个 “搜索结果”的界面。
界面上需要明确标明服务商,界面上会列出有响应的服务商,进一步地,可以根据响应,预取 title、icon、description 等信息。
然后用户可以点击进入到具体的服务商的页面。

进入页面后,并不是像传统浏览器一样展示 example.com 这样的域名,而是展示 http3+a.com://example.com 这样的域名。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions