--- tags: ["kovri"] terms: ["Tunnel", "Tunnels"] summary: "Uni-directional virtual paths that pass messages through a defined sequence of I2P routers" --- ### 基础知识 当您通过@I2P进行通信时(访问@eep站点 /使用@大蒜服务),首先需要使用@传输连接到对等节点,然后构建虚拟的“隧道”。这些虚拟隧道是临时的单向路径,通过定义的@I2P路由器序列将信息传递到您的@目标。隧道是通过分层的@大蒜加密构建并使用的,它是用于传输所有@I2NP @消息的通用机制。 每个对等节点至少构建*两个*单向隧道:一个用于**出站流量**,另一个用于**入站流量**。这些隧道分为**入站隧道** (其中@消息朝隧道创建者而来)和 **出站隧道** (其中隧道创建者向外发送@消息)。因此,一个往返@消息和对@目标的回复,需要*4条*隧道 (两个用于您的@消息,两个用于您的目标)。 ### 深度信息 来自 @Java-I2P: > 在I2P中,@消息通过对等节点的虚拟隧道在一个方向上传递,使用任何可用的方法将@消息传递到下一跃点。消息到达隧道的网关,捆绑起来和/或分散成固定大小@隧道 @消息,然后转发到下一跃点的隧道, 处理和验证@消息的有效性并将其发送到下一跃点,依此类推,直到它到达@隧道端点。该端点接收由网关打包的消息,并按照指示将其转发到另一个路由器、或另一个路由器上的另一条隧道或本地。 > 隧道的工作原理都是一样的,但可以分为两种——入站隧道和出站隧道。入站隧道有一个不受信任的网关,该网关将消息向下传递给隧道创建者,后者作为隧道端点。对于出站隧道,隧道创建者充当网关,将消息传递到远程端点。 > 隧道的创建者精确地选择哪些对等节点将参与隧道,并为每个对等节点提供必要的配置数据。它们可能有任意数量的跃点。它的意图是让参与者或第三方很难确定隧道的长度,甚至勾结参与者以确定他们是不是相同的隧道的一部分(除非勾结的对等节点他们在隧道中彼此相邻)。 ### 备注 来自 @Java-I2P: > @I2P本质上是一个包交换网络,即使有了这些隧道,它也可以利用多个并行运行的隧道,提高弹性和平衡负载。尽管I2P内的隧道与电路交换网络相似,但I2P内的所有内容都严格基于消息——隧道仅仅是帮助组织消息传递的会计技巧。对于消息的可靠性或顺序没有做任何假设,重传留给更高的层级(例如I2P的客户端层流媒体库)。 ### 文件 有关规范和详细文档,请访问 [隧道-路由](https://geti2p.net/en/docs/how/tunnel-routing) 和 [隧道-实现](https://geti2p.net/en/docs/tunnels/implementation) 页面。