【I2P】
I2P（Invisible Internet Project即“隐形互联网计划”），是一项混合授权的匿名网络项目。
I2P网络是由I2P路由器以大蒜路由方式组成的覆盖网络，建立于其上的应用程序可以安全匿名的相互通讯。它可以同时使用UDP及TCP协议，支援UPnP映射。其应用包括匿名上网、聊天、搭建暗网服务和文件分享。
== 系统简介 ==
I2P是可伸缩性强，具有自我组织与恢复能力的基于消息的匿名网络。其上运行有多种不同的匿名安全程序，各程序可以自行决定匿名性、延迟、流量平衡而不用考虑混淆式路由网络的具体实现。它们的数据活动可以与现有的I2P用户的匿名数据相混合。目前的用途包括全部典型的Internet应用 - 匿名网页浏览（Outproxy），匿名网站（Eepsite），匿名博客与内容聚合（ Syndie），匿名聊天（通过IRC、Jabber、I2P-QTMessanger），匿名文件传输（I2PSnark，Robert），匿名文件分享（I2Phex, iMule），匿名电子邮件（I2PMail+susiMail），匿名新闻组，及其他开发中的程序。与自由网或GNUnet上内容发布网络不同，I2P所提供的服务具有更强的交互性 - 从常规的Web搜索引擎，到论坛，博客，数据站点再到无需安装Tor / 自由网即可访问其中内容的网关。
I2P做为消息机制为基础的中间件与这些匿名性程序协同工作 - 程序要求发送数据给某一加密标识（目标），I2P来处理并保证数据安全匿名的到达#目标。I2P还带有易用的流封装库，可将I2P匿名消息转换为可靠有序的数据流传输，提供基于TCP协议和QUIC协议（于SSU2）的拥堵控制算法解决网络程序的宽带延迟问题。I2P同时有简易的SOCKS代理接口可以将现有的网络程序绑定于I2P网络中。为了方便使用，I2P为提供了一系列API，从而充分利用I2P的资源。
== I2P应用程序 ==
I2P被设计为其他程序可以使用的匿名网络层。这些运行于I2P上的程序有的被捆绑在I2P的安装包中，有的需要自行下载。I2P路由控制台是一个Web界面，可以通过浏览器管理I2P路由器的运行，类似于现在大多数家用路由器的管理方式。
=== I2PTunnel ===
I2PTunnel是I2P的内置程序，它可以通过#隧道将远程计算机上的端口映射为本地主机端口，从而允许任意TCP/IP程序通过I2P进行通信。
=== SAMV3 ===
SAM协议允许任意语言编写的程序通过Socket接口使用I2P路由器。
=== BOB（已废弃） ===
BOB比SAM更简单的TCP类型的桥协议。
=== I2CP ===
I2P 客户端协议 (I2CP) 使客户端应用程序能直接控制隧道数量、跳跃长度和目的地标识符等信息，使程序和I2P路由紧密结合。目前主要用于BiglyBT I2PHelper
=== BitTorrent ===
I2P网络中有多个客户端支持BitTorrent功能，每种客户端都支持Web界面的远程控制。这些客户端不允许下载含I2P外部Tracker的种子或连接I2P以外的用户，也不允许I2P外部的用户连接进来。由于匿名性的原因，目前I2P内部还没有Tracker站点开放对公网IP的支持。
I2PSnark，包含于I2P安装包中，是BitTorrent客户端Snark的移植版。
BiglyBT基于I2CP，提供了Tor和I2P插件，支持纯暗网和混合下载/做种。
=== eDonkey iMule ===
iMule（隐身骡）是全平台客户端aMule的I2P移植版。
与eDonkey不同，iMule只使用Kademlia连接因此没有服务器。iMule自1.2.3版起携带内置的GCJ编译的I2P路由器，由于I2P的GCJ编译版效率低下版本滞后，内置路由器被I2P开发者叫停
===Gnutella I2Phex ===
I2Phex是Gnutella客户端Phex的I2P移植版。
=== I2P-Messanger ===
通过I2P进行匿名通信的无服务器即时聊天程序。
=== MuWire ===
MuWire 是一个匿名文件共享程序。它使用 I2P进行所有通信，使您的 IP地址和活动保持私密。
* 搜索文件：您可以搜索其他 MuWire 用户共享的文件。
* 共享文件：您可以与其他MuWire用户共享您自己的文件，通过多种方式：
** 您可以将文件发布为 自动提要 ，例如博客。
** 您可以评论共享文件。
** 您可以为您共享的文件颁发证书 ，以向其他人证明您拥有该文件。
* 消息和聊天：您可以其他 MuWire用户交流通过消息和实时聊天。
* 信任：您可以选择 信任或不信任 其他 MuWire 用户。
=== Susimail ===
I2P免费的假名Email服务，由'Postman'维护。邮件传输服务器为pop.mail.i2p（POP3）及smtp.mail.i2p（SMTP）。可以通过I2PTunnel利用普通的Email客户端访问。
Susimail被编写来处理隐私问题，普通的Email客户端可能在与SMTP服务器的通信中发送用户的主机名。Susimail是Web界面的Email客户端，最初被设计来与配合Postman的邮件服务，设计中考虑到匿名性与安全性，是I2P默认安装包的一部分。可以通过I2P路由控制台访问。（注意SusiMail仅仅被设计来进行邮件的读写，邮件账户的管理需要访问www.mail.i2p。）
=== Syndie ===
Syndie是I2P的博客程序可以同时使用Tor网络，目前开发停滞仍处于Alpa阶段。
== I2P术语 ==
I2P用户在I2P的网站及路由界面中会遇到如下术语：
=== I2P匿名站点 ===
I2P匿名站点（eepsite）是I2P网络内的网站。I2P站点的名称以.i2p结尾，例如ugha.i2p或forum.i2p. I2P代理（eepProxy）可以通过I2P文件夹下hosts.txt中的加密识别密钥找到这些站点。通常，必须通过I2P才能访问这些站点。对于使用加密赁集的I2P匿名网站/出口代理-{只}-有持有该站点密钥的路由器才能访问。
=== I2P代理 ===
I2P代理（eepProxy）程序处理浏览器与#I2P匿名站点间的所有通信。它以HTTP代理服务器的形式工作，适于绝大多数浏览器。
.i2p是一个虚拟的顶级域名（eppsite），只在I2P表层网络内有效。.i2p域名由浏览器提交给eepProxy进行解析，eepProxy查询到I2P用户密钥后处理数据的传输，从而使浏览器可以透明浏览I2P网络。
=== 用户/节点 ===
用户/节点（Peer），I2P网络中的其他计算机。I2P网络中的每台计算机都会共享带宽对拆分后加密的数据包进行路由及中转。
=== 隧道 ===
每10分钟，用户的I2P路由就会与新的节点建立连接，将本机数据包与其他I2P节点中转的数据包一并通过这些隧道中转传递，令数据包最终到达最终的#目标。
=== 目标 ===
I2P中将可到达的匿名端点（EndPoint）称为目标（Destination）在I2PTunnel中体现为主机+端口，每个I2P程序都可以创建自己的目标与其他目标间进行通信。
== 对比其他的匿名网络 ==
=== Tor /洋葱路由 ===
Tor和I2P之间的两个主要区别 是威胁模型和外代理设计（虽然 Tor也支持隐藏服务）。此外，Tor采用基于目录的方法-提供一个中心化的目录服务器，以收集和报告统计数据，而不是I2P的分布式网络数据库和对等选择 。 Tor 确实有一些针对某些攻击者的重大弱点 - 一旦通信离开网络，全球对手可以更轻松地进行流量分析。此外，出口节点可以访问明文双向传输的数据，以及很容易被滥用。
然而，很多人不必担心这些情况，因为这超出了他们的威胁模型。这也在 I2P 的（正式）功能范围之外（你当然可以构建出口代理，但I2P并不为此而生）。
==== Tor 和 I2P 术语的比较 ====
虽然 Tor 和 I2P 在很多方面都很相似，但大部分术语是不同的。
==== Tor 相对 I2P 的优势 ====
* 大许多的用户群；在学术和黑客群体中得到较多关注； 基于正式研究的匿名性、抵抗性和性能优势；有一个非匿名的，来自大学的领导者
* 解决了一些 I2P 尚未解决的规模问题（但现在I2P至少拥有3万以上的活跃节点和一万八千左右的公网IP，Tor拥有6000左右的中继和2000左右的网桥）
* 有可观的资金
* 有更多的开发者，其中有些是全职的
* 由于具有基于 TLS 的传输和网桥，对国家级封锁有更强的抵抗
* 为出口流量设计和优化，有大量的出口节点
* 更好的文档，拥有正式文件和规范， 更美观的网页，多许多的翻译
* 内存使用更高效（试试I2Pd？）
* Tor 客户端节点的带宽开销非常低，在Tor中，客户端节点不需要太多带宽，他们没有完全参与网络。
* 集中控制降低了每个节点的复杂性，并能有效应对 Sybil 攻击
* 高容量节点提供更高的吞吐量和更低的延迟
* C，而不是Java
==== I2P 相对 Tor 的优势 ====
* 专为隐藏服务设计和优化，在这方面比Tor快许多
* 完全分布式和自组织
* 通过不断分析和比较性能，而不是根据目录声称的带宽来选择节点
* 洪泛节点（“目录服务器”）是持续变化并且不被信任的， 而不是硬编码写入
* 足够小以至于它还没有被大量（或者根本没有）封锁或拒绝服务
* P2P 友好
* 消息交换而不是线路交换
* 消息的隐式透明负载平衡跨越多个对等点，而不是单一路径
* 单向隧道而不是双向隧道线路，使对等点必须的节点数量增加一倍以获得相同的信息。
* 防止检测客户端活动，甚至当攻击者参与隧道时，如隧道不仅仅在终点结束消息（例如 netDb、隧道管理、 隧道测试）
* I2P 中的隧道是短暂的，减少了攻击者可以用来挂载的样本，不像 Tor 中的线路，它们通常长寿。
* I2P API 专为匿名和安全性，而 SOCKS 是为功能而设计的。
* 基本上所有节点都参与为其他人的路由
* 使用TCP和UDP传输
* Java，而不是C（I2Pd使用C++）
=== 自由网(Freenet) ===
Freenet是一个完全分布式的P2P匿名发布网络，提供安全的数据存储方式，以及一些试图解决洪泛负载的方法。虽然Freenet的设计目的是分布式的数据存储，但是人们也在Freenet之上建立了一些应用程序，使得更通用的匿名通信成为可能，如静态网站和留言板等。
相比于I2P，Freenet提供了一些实质性的好处——它是一个分布式数据存储，而I2P并不是，Freenet允许用户检索即便内容的发布者已经离线了的已发布内容。此外，Freenet应该能够高效地分发热门数据，I2P本身不提供此功能。另一方面，对于那些只想通过网站、留言板、文件共享程序等方式匿名交流的用户来说，两者有重叠。I2P也进行了一些尝试以支持分布式数据存储（最近的是Tahoe-LAFS的移植) ，但还没有准备好全面使用。