GNUnet是用于分散式对等网络的软件框架,是官方的GNU软件包。该框架提供了链接加密,对等发现,资源分配,通过多种传输进行的通信以及用于路由,多播和网络大小估计的各种基本对等算法。GNUnet的基本网络拓扑是网状网络的拓扑。
GNUnet 是用于分散式对等网络的软件框架,是官方的 GNU 软件包。该框架提供了链接加密,对等发现,资源分配,通过多种传输进行的通信以及用于路由,多播和网络大小估计的各种基本对等算法。GNUnet 的基本网络拓扑是网状网络的拓扑。
GNUnet 包括一个分布式哈希表(DHT),它是 Kademlia 的一个随机变体,仍然可以在小世界网络中有效地路由。GNUnet 提供了“ F2F 拓扑 ”选项,用于仅将连接限制为用户的可信任朋友。然后,用户的朋友自己的朋友(等等)可以与用户的计算机间接交换文件,而无需直接使用其 IP 地址。
GNUnet 使用统一资源标识符(未经 IANA 批准,尽管已提出申请)。GNUnet URI 由两个主要部分组成:模块和模块特定的标识符。GNUnet URI 的格式为,
gnunet://module/identifier 其中 module 是模块名称,标识符是模块特定的字符串。
主要代码库使用 C 编写,但是其他语言中也存在绑定,以产生用于开发这些语言扩展的 API。GNUnet 是 GNU 项目的一部分。在 PRISM 揭露之后,它已经引起了黑客社区的关注。
GNUnet 由几个子系统组成,其中必不可少的是 Transport 和 Core 子系统。传输子系统提供不安全的链路层通信,而核心提供对等发现和加密。在核心子系统之上,构建了各种应用程序。
GNUnet 在框架的主要发行版中包括各种 P2P 应用程序,包括文件共享,聊天和 VPN;以及 另外,一些外部项目(例如 secushare)也在扩展 GNUnet 基础结构。
GNUnet 与较早的 Gnutella P2P 协议无关。Gnutella 不是 GNUnet 的官方 GNU 项目。
运输
最初,GNUnet 使用 UDP 进行基础传输。现在,GNUnet 传输子系统提供了多个选项,例如 TCP 和 SMTP。
在 IANA 上正式注册的通信端口为 2086(tcp + udp)。
信任系统
GNUnet 提供基于超额经济模型的信任系统。采用经济体制的想法来自 MojoNation 网络。
GNUnet 网络没有可信任的实体,因此无法维持全球声誉。相反,每个对等方都为其每个本地链接维护自己的信任。
当资源(例如带宽和 CPU 时间)过剩时,对等方会将其提供给所有请求的邻居,而不会降低信任度或以其他方式收费。当节点处于压力之下时,它会丢弃来自其内部信任值较低的邻居节点的请求。但是,当对等方的资源不足以满足每个人的请求时,它会拒绝那些邻居的请求,即它对信任的信任度较低,并通过降低对他人的信任度来向他人收费。
文件共享
这时的主要应用程序是匿名的,可防止检查的文件共享,允许用户匿名发布或检索各种信息。提供匿名性的 GNUnet 协议称为 GAP(GNUnet 匿名性协议)。GNUnet FS 可以另外使用 GNU libextractor 来自动注释具有元数据的共享文件。
GNU 名称系统
GNUnet 包括 GNU 名称系统(GNS)的实现,它是 DNS 的分散且不受审查的替代。在 GNS 中,每个用户都可以管理自己的区域,并且可以将子域委派给其他用户管理的区域。使用 GNUnet 的 DHT 执行其他用户定义的记录的查找。
协议翻译
GNUnet 可以在对等网络上建立 IP 流量隧道。如有必要,GNUnet 可以在此过程中执行 IPv4-IPv6 协议转换。GNUnet 提供了 DNS 应用程序级网关来代理 DNS 请求,并根据需要将地址映射到所需的地址族。这样,GNUnet 提供了一种可能的技术来促进 IPv6 过渡。此外,结合 GNS,GNUnet 的协议转换系统可用于访问隐藏服务-基于 IP 的服务,这些服务在网络中的某个对等方本地运行,并且只能通过解析 GNS 名称来访问。