今年年初,Internet Archive开始倡导分布式网络。如今关于它的声音已经变得愈来愈清晰而又响亮。而IPFS就是在这种环境下出现的一个典型的开源表明。IPFS是点对点协议InterPlanetary File System的简称,它是一个面向全球的、点对点的分布式版本文件系统,试图将全部具备相同文件系统的计算设备链接在一块儿。html
近日,IFPS宣布了一个将来web发展计划,它用基于内容的地址替代基于域名的地址,也就是用户寻找的不是某个地址而是储存在某个地方的内容,不须要验证发送者的身份,而只须要验证内容的哈希,经过这样可让网页的速度更快、更安全、更健壮、更持久。IPFS表示,IPFS将来将替代HTTP(以及其余的许多东西)。git
Web的本意是去中心化,但它却变得愈来愈中心化,今天愈来愈多的人依靠的是少数网站的服务。HTTP变成了一个脆弱的、高度集中的、无效的、过分依赖于骨干网的协议。像美国国家安全局这样的组织,如今只须要在几个点上拦截通讯来进行监视。对政府来讲,阻止网站访问这些高度集中化的资源变得容易。这也使通讯容易遭受DDoS攻击而面临巨大的风险。github
将web进行去中性化,能够下降极少数强大组织的延展性,并提升全部站点的自由度和独立性,同时也下降了因为服务器中断形成数据丢失的风险。web
若是不是成规模的处理数据,将这些数据从中央数据中心分发仍然是很是昂贵的。IPFS可代替老是从数据中心获取内容的HTTP,若是将一个ISP网络上的每一台计算机变成流媒体CDN,这时会怎么样?例如,获取江南Style视频,就能够彻底在ISP网络上下载,而不须要在Internet骨干网上通过大量的传输,从而大大减小数据传输的费用。数据库
当内容过分集中化以后,这让数据中心高度依赖于Internet骨干网。这样除了有利于政府对内容进行封锁和审查,事实上存在不少可靠性问题。即便容许冗余,主要的骨干有时仍是会被损坏,或者出现路由表失控,其后果多是很是严重。Internet骨干网并不健全,其很容易被攻击,同时一些重要的光纤线路被切断时服务很容易遭受影响。浏览器
IPFS从根本上改变了用户搜索的方式。经过IPFS,用户搜索的是内容。经过HTTP浏览器搜索文件的时候,首先找到服务器的位置(IP地址),而后使用路径名称在服务器上查找文件。按照这个设计,只有文件全部者能够判断这是不是用户要找的文件。此时,必须保证托管者不会经过移除文件或者关闭服务器而对文件作任何更改。安全
当文件被添加到IPFS节点上,它获得一个新的名字。这个名字其实是一个加密哈希,它是从文件内容中被计算出来。经过加密保证该哈希始终只表示该文件的内容。哪怕只在文件中修改一个比特的数据,哈希都会彻底不一样。服务器
当下一步向IPFS分布式网络询问哈希的时候,它经过使用一个分布式哈希表,能够快速(在一个拥有10,000,000个节点的网络中只须要20跳)地找到拥有数据的节点,从而检索该数据,并使用哈希验证这是不是正确的数据。网络
IPFS是通用的,而且存储限制不多。它服务的文件可大可小,对于一些大的文件,它会自动将其切割为一些小块,使IPFS节点不只仅能够像HTTP同样从一台服务器上下载文件,并且能够从数百台服务器上进行同步下载。IPFS网络是一个细粒度的、不可靠的、分布式的、易联合的内容分发网络(Content Delivery Network , CDN)。对于全部数据类型都是颇有用的,包括图像、视频流、分布式数据库、操做系统、blockchains等,而对于IPFS来讲,最重要的是静态web网站。分布式
IPFS文件也能够是特殊的IPFS目录对象,它容许用户使用人类可读的文件名,透明地连接到其余IPFS哈希。用户能够经过默认方式加载目录中的index.html,这也是标准的HTTP服务器采用的方式。使用目录对象,IPFS可容许用户采用彻底相同的方式生成静态网站。将web网站添加到IPFS节点中只须要一个简单的命令:ipfs add -r yoursitedirectory
。在此以后,用户能够从任何IPFS节点访问,而不须要连接到HTML上的任何哈希。
IPFS不须要每一个节点存储全部发布到IPFS上的内容。相反,每一个节点只存储本身想要的数据。若是每一个节点托管一点数据,全部数据经过累积就提供了比任何集中式HTTP更多的空间、带宽和可用性。分布式网络将很快成为世界上最快、最可用、以及最大的数据存储。没有人有能力关闭全部的节点,因此数据永远不会丢失。
从其余IPFS节点复制、存储web网站很容易。它只须要一条命令以及网站的哈希值:ipfs pin add -r QmcKi2ae3uGb1kBg1yBpsuwoVqfmcByNdMiZ2pukxyLWD8
。IPFS负责剩下的全部工做。
IPFS哈希表明不可变的数据,这意味着它们是不能被更改的,不然会致使哈希值的变动。这是一件好事,由于它鼓励数据的持久性,但咱们仍然须要一种方法来找到最新的IPFS哈希以表示你的网站。IPFS经过一种特殊的功能来实现,即IPNS。
IPNS容许用户使用一个私有密钥来对IPFS哈希附加一个引用,使用一个公共密钥哈希(简称pubkeyhash)表示你的网站的最新版本。若是用户使用过比特币,可能会对此比较熟悉,一个比特币地址也是一个pubkeyhash。
若是该连接不起做用,不用担忧。可以经过更改pubkeyhash所指向的内容,而pubkeyhash却永远保持不变。这样,网站的更新问题就获得了解决。
接下来,只须要保证这些网站的位置是人类可读的,全部问题就解决了。
IPFS/ IPNS哈希是一些很大的、难看的字符串,并且不容易记住。因此IPFS容许用户使用现有的域名系统(Domain Name System, DNS)来为IPFS/IPNS内容提供人类可读的连接。它容许用户经过在域名服务器上将哈希插入TXT记录来实现这一点(若是你方便使用一个命令行,运行以下命令:dig TXT ipfs.git.sexy
)。具体能够参考这里。
将来,IPFS已计划支持Namecoin,它理论上能够用来建立一个彻底去中心化的、分布式的web,整个环境中不须要一个中心控制。没有ICANN,没有中央服务器,没有“权威”证书,也没有瓶颈。这听起来很疯狂。可现实的确疯狂。由于使用今天的技术这是彻底能够实现的!
经过一个HTTP网关,IPFS能够实现从HTTP到IPFS的过分,浏览器能够彻底实现IPFS以前,如今已经容许当前的web浏览器访问IPFS。用户很快就能够切换到IPFS,完成web网站的存储、分发和服务。
到目前为止,IPFS还处于实验阶段。当网站更新的时候,Neocities将天天发布一个哈希IPFS。这个哈希将指向该网站的最新版本,并经过IPFS HTTP网关能够访问。由于每次更新IPFS哈希都会变动,这也可以为全部网站提供一个存档历史记录。
从长期来看,若是一切顺利的话,Neocities但愿使用IPFS存储全部的网站,并为每一个网站发布IPNS键。这将让用户能够不依赖于Neocities而进行内容发布。若是构建得当,即便Neocities不存在了,用户仍然能够更新本身的网站。经过有效地去除网站对Neocities中央服务器的依赖,这种集中控制环境将被永久性打破。
经过与协议实验室(Protocol Labs)合做,Neocities已经成为产业界实施IPFS第一大网站。从9月8日开始,全部Neocities站点能够为世界上任何IPFS节点提供查看、存档和托管功能。当一个IPFS节点选择从Neocities上托管一个网站的时候,即便Neocities关闭了或中止对它托管,网站的原始版本仍继续可用。使用Neocities网站的IPFS节点越多,Neocities网站越容易访问。
目前,IPFS仍处于alpha开发阶段。它尚未取代现有的网站存储系统。如同任何复杂的新技术,它还存在不少须要的改进地方。但IPFS不是雾件,如今已经能够开始工做,感兴趣的用户能够下载软件安装到电脑上。