From 3cc0792f3f2b89df70ef178710d3413d526ff093 Mon Sep 17 00:00:00 2001 From: p4gefau1t Date: Fri, 8 May 2020 10:41:00 -0400 Subject: [PATCH] update docs --- README.md | 32 +++++++++++++++++--------------- docs/content/advance/mux.md | 10 +++++----- proxy/client/mux.go | 6 ++++++ 3 files changed, 28 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index bde50ab..1fc99e4 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ [![Release](https://img.shields.io/github/v/release/p4gefau1t/trojan-go?include_prereleases)](https://img.shields.io/github/v/release/p4gefau1t/trojan-go?include_prereleases) [![Release Date](https://img.shields.io/github/release-date-pre/p4gefau1t/trojan-go)](https://img.shields.io/github/release-date-pre/p4gefau1t/trojan-go) -[![Docker Image](https://images.microbadger.com/badges/image/p4gefau1t/trojan-go.svg)](https://microbadger.com/images/p4gefau1t/trojan-go "Get your own image badge on microbadger.com") +[![Docker Image](https://images.microbadger.com/badges/image/p4gefau1t/trojan-go.svg)](https://microbadger.com/images/p4gefau1t/trojan-go) [![Commit](https://img.shields.io/github/last-commit/p4gefau1t/trojan-go)](https://img.shields.io/github/last-commit/p4gefau1t/trojan-go) [![Commit Activity](https://img.shields.io/github/commit-activity/m/p4gefau1t/trojan-go)](https://img.shields.io/github/commit-activity/m/p4gefau1t/trojan-go) @@ -67,7 +67,7 @@ Trojan-Go支持并且兼容原版Trojan-GFW的绝大多数功能,包括但不 ## 使用方法 -- 快速证书配置 +1. 快速证书配置 - 自动申请证书 @@ -85,7 +85,7 @@ Trojan-Go支持并且兼容原版Trojan-GFW的绝大多数功能,包括但不 关于证书申请[更详细的说明](#证书申请) -- 快速启动服务器和客户端(简易模式) +2. 快速启动服务器和客户端(简易模式) - 服务端 @@ -99,31 +99,33 @@ Trojan-Go支持并且兼容原版Trojan-GFW的绝大多数功能,包括但不 ./trojan-go -client -remote example.com:443 -local 127.0.0.1:1080 -password your_password ``` -- 使用配置文件启动客户端/服务端/透明代理/中继(一般模式) +3. 使用配置文件启动客户端/服务端/透明代理/中继(一般模式) ```shell ./trojan-go -config 你的配置文件.json ``` -- 使用Docker部署 +4. 使用Docker部署 ```shell docker run\ --name trojan-go \ -d \ - -v $PATH_TO_CONFIG_AND_CERT:/etc/trojan-go \ + -v /etc/trojan-go/:/etc/trojan-go \ + -p 1234:1234 \ p4gefau1t/trojan-go ``` 或者 ```shell - docker run\ - --name trojan-go \ - -d \ - -v $PATH_TO_CONFIG_AND_CERT:$PATH_IN_CONTAINER \ - p4gefau1t/trojan-go \ - $PATH_IN_CONTAINER/config.json + docker run\ + --name trojan-go \ + -d \ + -v /path/to/host/config:/path/in/container \ + -p 1234:1234 \ + p4gefau1t/trojan-go \ + /path/in/container/config.json ``` ## 特性 @@ -239,11 +241,11 @@ Trojan-Go支持使用TLS+Websocket承载Trojan协议,使得利用CDN进行流 -在很差的网络条件下,TLS握手可能会花费很多时间。 +在很差的网络条件下,一次TLS握手可能会花费很多时间。 -Trojan-Go支持多路复用([smux](https://github.com/xtaci/smux))。通过使一个TLS隧道连接承载多个TCP连接的方式,减少TLS握手带来的延迟,以期提升高并发情景下的性能。 +Trojan-Go支持多路复用([smux](https://github.com/xtaci/smux))。通过使一个TLS隧道连接承载多个TCP连接的方式,减少TCP和TLS握手带来的延迟,以期提升高并发情景下的性能。 -启用多路复用并不会增加你测速得到的带宽,但是会加速你有大量并发请求时的网络体验,例如浏览含有大量图片的网页等。 +启用多路复用并不会增加你测速得到的链路速度,但会降低延迟,提升大量并发请求时的网络体验,例如浏览含有大量图片的网页等。 注意,这个特性和原版Trojan**不兼容**,所以出于兼容性考虑,这个特性是默认关闭的。你可以通过设置mux选项中的"enabled"字段启用它。如下 diff --git a/docs/content/advance/mux.md b/docs/content/advance/mux.md index 74c737d..3a53e46 100644 --- a/docs/content/advance/mux.md +++ b/docs/content/advance/mux.md @@ -10,11 +10,11 @@ Trojan-Go支持使用多路复用提升并发性能。 Trojan协议基于TLS。在一个TLS安全连接建立之前,连接双方需要进行密钥协商和交换等步骤确保后续通讯的安全性。这个过程即为TLS握手。 -目前GFW对于TLS握手有审查和干扰,同时由于出口网络拥塞的原因,普通的线路完成TLS握手通常需要将近一秒甚至更长的时间。这可能会使得浏览网页和观看视频的延迟提高。 +目前GFW对于TLS握手有审查和干扰,同时由于出口网络拥塞的原因,普通的线路完成TLS握手通常需要将近一秒甚至更长的时间。这可能导致浏览网页和观看视频的延迟提高。 -Trojan-Go使用多路复用的方式解决这一问题。每个建立的TLS连接将承载多个TCP连接。当新的代理请求到来时,不需要和服务器握手发起一个新的TLS连接,而是尽可能重复使用已有的TLS连接。以此减少频繁TLS握手的带来的延迟。 +Trojan-Go使用多路复用的方式解决这一问题。每个建立的TLS连接将承载多个TCP连接。当新的代理请求到来时,不需要和服务器握手发起一个新的TLS连接,而是尽可能重复使用已有的TLS连接。以此减少频繁TLS握手和TCP握手的带来的延迟。 -启用多路复用功能不会增加你的链路速度(甚至会有所减少),而且可能会增加服务器和客户端的计算负担。但在高并发的情况下,如浏览含有大量图片的网页时,或者发送大量UDP请求时,可以提升使用体验。 +启用多路复用功能不会增加你的链路速度(甚至会有所减少),而且可能会增加服务器和客户端的计算负担。但在高并发的情景下,如浏览含有大量图片的网页时,或者发送大量UDP请求时,可以提升使用体验。 激活```mux```模块,只需要将```mux```选项中```enabled```字段设为true即可,下面是一个客户端的例子 @@ -46,6 +46,6 @@ Trojan-Go使用多路复用的方式解决这一问题。每个建立的TLS连 } ``` -```concurrency```是每个TLS连接最多可以承载的TCP连接数。这个数值越大,TLS连接被复用的比例就更高,握手导致的延迟越低,但服务器和客户端的计算负担也会越大,这有可能使你的网络吞吐量降低。如果你的线路的TLS握手极端缓慢,你可以将这个数值设置为-1,Trojan-Go将只进行一次TLS握手,只使用唯一的一条TLS连接进行传输。 +```concurrency```是每个TLS连接最多可以承载的TCP连接数。这个数值越大,每个TLS连接被复用的程度就更高,握手导致的延迟越低。但服务器和客户端的计算负担也会越大,这有可能使你的网络吞吐量降低。如果你的线路的TLS握手极端缓慢,你可以将这个数值设置为-1,Trojan-Go将只进行一次TLS握手,只使用唯一的一条TLS连接进行传输。 -```idle_timeout```指的是每个TLS连接空闲多长时间后关闭。设置超时时间,**可能**有助于减少不必要的长连接存活确认(Keep Alive)流量传输引发GFW的探测。你可以将这个数值设置为-1,TLS连接将不会因为长时间空闲而被关闭。 +```idle_timeout```指的是每个TLS连接空闲多长时间后关闭。设置超时时间,**可能**有助于减少不必要的长连接存活确认(Keep Alive)流量传输引发GFW的探测。你可以将这个数值设置为-1,TLS连接在空闲时将被立即关闭。 diff --git a/proxy/client/mux.go b/proxy/client/mux.go index a100045..2b7035d 100644 --- a/proxy/client/mux.go +++ b/proxy/client/mux.go @@ -88,6 +88,12 @@ func (m *MuxManager) pickMuxClient() (*muxClientInfo, error) { } } + select { + case <-m.ctx.Done(): + return nil, common.NewError("mux manager closed") + default: + } + //not found info, err := m.newMuxClient() if err != nil {