diff --git a/docs/content/advance/customize-protocol-stack.md b/docs/content/advance/customize-protocol-stack.md index 769e68f..0ab4ee6 100644 --- a/docs/content/advance/customize-protocol-stack.md +++ b/docs/content/advance/customize-protocol-stack.md @@ -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```之外的其他选项将被忽略。 diff --git a/docs/content/developer/overview.md b/docs/content/developer/overview.md index c57c9b3..90205f3 100644 --- a/docs/content/developer/overview.md +++ b/docs/content/developer/overview.md @@ -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自动识别的功能。每个拥有多个儿子的树上节点,具有精确识别和分发流和包给不同的儿子节点的能力。这符合我们假定每个协议了解其上层承载协议的假设。