中文請點這裡。
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連接到伺服器。
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。