This commit is contained in:
Page Fault
2020-06-21 05:01:11 +00:00
parent f906f21cef
commit b522f3fcee
2 changed files with 5 additions and 5 deletions
@@ -53,9 +53,9 @@ Trojan-Go将所有协议抽象为隧道,每个隧道可能提供客户端,
出站,只能有一条路径
- freedom
- router->freedom
对于入站,你可以描述一条链,一棵树或者一个有向无环图(DAG),对于出站,你只能描述一链。**注意,每条路径,必须以不需要下层提供流或包的隧道开始(transport/tproxy/dokodemo等),必须以能向上层提供包和流的隧道终止(trojan/simplesocks/freedom),且必须确认对应隧道是否可作为出站/入站**
对于入站,从根开始描述多条路径,组成一棵**多叉树**(也可以退化为一条链),不满足树性质的图将导致未定义的行为;对于出站,必须描述一链。**注意,每条路径,必须以不需要下层提供流或包的隧道开始(transport/tproxy/dokodemo等),必须以能向上层提供包和流的隧道终止(trojan/simplesocks/freedom),且必须确认对应隧道是否可作为出站/入站**
要启用自定义协议栈,将```run_type```指定为custom,此时除```inbound```和```outbound```之外的其他选项将被忽略。
+3 -3
View File
@@ -76,7 +76,7 @@ Trojan-Go将所有协议(包括路由功能等)抽象为隧道(tunnel.Tunnel
- 隧道C: freedom
实际上的隧道堆叠的情况会比这个更复杂一些。通常的入站的隧道是一棵树(或有向无环图)的形式,而非一条链。具体解释参考下文。
实际上的隧道堆叠的情况会比这个更复杂一些。通常的入站的隧道是一棵多叉树的形式,而非一条链。具体解释参考下文。
## proxy.Proxy代理核心
@@ -98,7 +98,7 @@ Trojan-Go将所有协议(包括路由功能等)抽象为隧道(tunnel.Tunnel
- http (终端节点)
- socks(终端节点)
- 出站(列表)
- 出站()
- transport (根)
- tls
- websocket
@@ -119,7 +119,7 @@ Trojan-Go将所有协议(包括路由功能等)抽象为隧道(tunnel.Tunnel
- mux
- simplesocks (终端节点)
- 出站(列表
- 出站(
- freedom
注意,代理核心只从隧道构成的树的终端节点抽取流和包,并转送到唯一的出站上。多个终端节点的设计的目的,是使Trojan-Go同时兼容Websocket和Trojan协议入站连接,开启/未开启Mux的入站连接,以及HTTP/Socks5自动识别的功能。每个拥有多个儿子的树上节点,具有精确识别和分发流和包给不同的儿子节点的能力。这符合我们假定每个协议了解其上层承载协议的假设。