中文请点击这里。
rsock 既不是加速器,也不是 VPN。它只是将一个 udp 连接变成多个假 tcp 连接,或多个正常 udp 连接,或两者兼而有之。它与udp很相似,因为它不可靠,没有流量控制、超时重传算法等。它是跨平台的。它应该与 kcptun 或其他带有 ARQ 的 udp 客户端一起使用。 rsock 的目的是防止来自 ISP 的 udp 的 qos(如果有)。它支持Windows、Mac 和 Linux 。要查看 kcptun 的介绍和用法,请单击此处。还有shadowsocks,请点击这里。
重复:rsock 的数据传输不可靠。可靠的数据传输应由应用程序级别(kcptun)负责。
下图简述了原理
有适用于 64 位 Linux、64 位 Mac 和 x86/x64 Windows 的预编译二进制文件。它们可以从这里下载。
对于Windows用户,您必须先安装 winpcap。温普卡
对于其他平台,您可以下载源码并自行编译。编译指南在这里
如果启用了防火墙,请记住添加防火墙规则。
以Linux为例:
# port=10000
# while [ $port -le 10010 ]
do
sudo ufw allow $port
port=$[ $port + 1]
done
表示允许客户端从端口10000到10010连接到服务器。( rsock默认使用端口范围10001-10010。如果要更改默认值,请查看参数说明部分。 )
sudo ./server_rsock_Linux -t 127.0.0.1:9999
参数解释:
127.0.0.1:9999,目标地址,又称kcptun服务器工作地址。
以mac为例:
sudo ./client_rsock_Darwin --taddr=xxxx -l 127.0.0.1:30000
参数解释:
-t xxxx , rsock 服务器地址。注意。这与服务器不同。它只包含ip。
-l ,本地监听的udp地址,又名kcptun客户端的目标地址(-t指定的地址)。
如果rsock不起作用,你必须检查你的网卡是否支持winpcap。路由器也可能会过滤数据包,尤其是当您使用 Windows 时。
对于Windows用户来说,速度远比mac/Linux上的rsock慢。 (我测试时为500-800KB/s)例如在Mac/Linux上,rsock可以支持流畅观看1080P youtube视频。对于Windows用户,rsock只能支持720P的youtube视频。
ps axu|grep rsock
sudo kill -SIGUSR1 pid # pid is id of rsock. It's 72294 in image above.
-t, --taddr=[addr] target address. e.g. 8.8.8.8:88,7.7.7.7. Required.
-l, --ludp=[addr] local listened udp address. Only valid for client. Required by client.
-d, --dev=[device] name of network interface card of Internet.e.g,eth0, en0. rsock can auto detect right device to work on. Use this when the default can't work.
-h, --help Display help menu. Not available now.
-f json config file
--lcapIp=[ip] Internet IP. Can omit the -d if this parameter sepcified. rsock can auto detect right device to work on. Use this when the default can't work.
--unPath Local unix domain socket. Not available now.
-p, --ports=[...] tcp/udp port list for rsock server. e.g.10001,10010(2 ports); 10001-10010(11 ports); 80,443,10001-10010(12 ports). **NO** white spaces allowed. Default value: 10001-10010
--duration=[timeSec] Time for app connection to persist if no data is transfered in the app connection. unit: seconds. defalt 30s
--hash=[hashKey] Not for encryption. Only for judgement if data belong to rsock. REPEAT: rsock don't encrypt data. Encryption is done by kcptun.
--type=[tcp|udp|all] type of communication. One of tcp, udp or all. Default is tcp.
--daemon=[1|0] Run as daemon. 1 yes. 0 no. default 1.
-v verbose mode. (Better not change default value. There is an unsolved bug that will cause slow speed right now)
--log=[path/to/log] Directory of log. Will create if not exist. Default: /var/log/rsock
--cap_timeout timeout of libpcap. Don't change this value if know what it really means.
在 tcp 模式下,由于我们不从套接字发送/接收数据,因此它会发送一个长度为 0 的 ack,告诉对等方它期望的下一个 seq。这是由于标准。这会浪费带宽。
比较对象:rsock、kcptun
digitalocean 纽约 vps。 1G内存
rsock(仅 TCP,11 个端口)。 1.25M
rsock(仅限 udp,11 个端口)。 1.5M
rsock(doc/tcp 和 udp, 各 11 个端口。1.1M
kcptun。最快的,大约1.5MB。
rsock(仅 TCP,11 个端口)。 1.4M
rsock(仅udp,11个端口。1.7M
rsock(udp和tcp,各11个端口)900K。我测试过两次,速度比较慢。
kcptun。非常快。大约2MB。
注意:没有证据表明 rsock 使用的端口越多,速度就越快。主要是由你的带宽决定的。
rsock 的速度只有 kcptun 的 70%-90%。
如果发现没有网络连接,请检查 rsock 和 kcptun 是否仍在运行。
您可以运行以下命令来检查:
ps axu|egrep 'kcptun|rsock'
强烈建议 kcptun 服务器和 rsock 服务器在后台运行。对于 kcptun 服务器,运行
nohup sudo -u nobody ./server_linux_amd64 -r ":port1" -l ":port2" -mode fast2 -key aKey >/dev/null 2>&1 &
对于rsock服务器,只需要指定参数--daemon=1
如果服务器运行正常,请尝试重新启动kcptun客户端(打开/关闭shadowsocks,这将重新启动kcptun)。
rsock 不加密数据。加密发生在应用程序级别(kcptun)。
udp2raw 隧道
kcptun-原始
icmp隧道
重构代码。
添加随机端口监听。
添加空闲模式。如果一段时间内没有数据,请勿重复连接服务器。
添加其他假连接。例如 ICMP、DNS。