mirror of
https://github.com/monero-project/monero-site.git
synced 2024-12-26 13:39:44 +00:00
dd822f1880
Co-authored-by: WooKey-Aurora <jack.zheng.md@hotmail.com> Co-authored-by: lwf <lwf@one.cafe> Co-authored-by: Muge Niu <mugeniu12138@gmail.com>
35 lines
2.8 KiB
Markdown
35 lines
2.8 KiB
Markdown
---
|
||
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) 页面。
|