今天有給大家帶來新的東西KcpTun,KcpTun是利用Kcp技術對Tcp鏈路傳輸進行加速,大家熟知的網路協議一般是UDP和TCP,UDP傳輸快但是沒有狀態訊息不可靠,TCP雖然穩定也有重試機制但是因為機制複雜三次握手等機制速度會稍微比較慢,大名鼎鼎的谷歌就基於UDP重新開發過QUIC協議,Kcp協議也是基於UDP上進行演算法封裝的快速可靠協議,我們就一同來看看基於KCP的開源軟體KcpTun有什麼神奇的吧!
附上:
Kcp-Github地址:https://github.com/skywind3000/kcp
KcpTun-Github地址:https://github.com/xtaci/kcptun
1.了解Kcp - KcpTunKcp是一個快速可靠協議,能以比 TCP浪費10%-20%的頻寬的代價,換取平均延遲降低 30%-40%,且最大延遲降低三倍的傳輸效果,純演算法實現.
基於Kcp之後就有了KcpTun也就是我們今天的主角TCP轉發開源程式,有的童鞋會問了 “為什麼要轉發TCP啊 ??? ” , 當然是為了提高訪問速度啊. 比如如下兩個場景
自己搭建的Shadowsocks伺服器, 希望可以更快的訪問,可以通過KcpTun進行加速伺服器在國內,海外使用者訪問自己的服務比較慢,也可以使用KcpTun進行加速遊戲加速器,網遊加速,玩海外遊戲加速一句話總結只要是TCP協議的東西都可以通過KcpTun進行加速,我們一起來看下圖就能簡單了解KcpTun起到了什麼作用
正常情況下的訪問都只直接通過Tcp進行的, 其中握手,丟包重傳等機制都會比較慢
當我們換成了KcpTun正常訪問的都是離自己比較近的Kcp-Client端,然後通過Kcp鏈路中轉到Kcp-Server端,在請求到最終的伺服器
2.安裝使用這裡以liunx為例子,選用系統centos
安裝KcpTun :
wget https://github.com/xtaci/kcptun/releases/download/v20170930/kcptun-linux-amd64-20170930.tar.gztar -zxvf kcptun-linux-amd64-20170930.tar.gz
在國內伺服器開啟server端:
./server_linux_amd64 -t "IP:80" -l ":4000" -mode fast3
在國外伺服器開始client端:
./client_linux_amd64 -r "serverIP:4000" -l ":80" -mode fast3
通過俄羅斯訪問國內時間消耗:
curl -s -w ---code:%{http_code}:time:%{time_total}:dns:%{time_namelookup}:connect:%{time_connect}:starttransfer:%{time_starttransfer}"\\n" xxxx.sunmi.comxxxx---code:200:time:0.568:dns:0.004:connect:0.212:starttransfer:0.568curl -s -w ---code:%{http_code}:time:%{time_total}:dns:%{time_namelookup}:connect:%{time_connect}:starttransfer:%{time_starttransfer}"\\n" localhost:8080xxxx---code:200:time:0.289:dns:0.004:connect:0.004:starttransfer:0.289
時間消耗從0.568秒縮短到了0.289秒節約時間0.279秒幾乎節約100%的時間
通過新加坡訪問國內
curl -s -w ---code:%{http_code}:time:%{time_total}:dns:%{time_namelookup}:connect:%{time_connect}:starttransfer:%{time_starttransfer}"\\n" xxxx.sunmi.comxxxx---code:200:time:0.148:dns:0.001:connect:0.002:starttransfer:0.148curl -s -w ---code:%{http_code}:time:%{time_total}:dns:%{time_namelookup}:connect:%{time_connect}:starttransfer:%{time_starttransfer}"\\n" localhostxxxx---code:200:time:0.084:dns:0.001:connect:0.001:starttransfer:0.084
時間從0.148秒縮短到了0.084秒 節約時間0.064秒
kcptun有多種加速模式對應的速度排序如下(default: "fast"):
fast3, fast2, fast, normal, manual
如果使用預設模式”fast”新加坡響應時間0.110 俄羅斯響應時間0.357 消耗時間會有所增加,一般推薦使用 fast2 可以得到比較好點效果
3 總結利用KcpTun鏈路加速技術能夠解決在使用中的各種網路,比如海外網路加速, ss,OpenVpn加速等,如果大家喜歡可以自己體驗一下!
注:筆者能力有限有說的不對的地方希望大家能夠指出,也希望多多交流!