微信号:weixin888
今天有给大家带来新的东西KcpTun,KcpTun是利用Kcp技术对Tcp链路传输进行加速,大家熟知的网络协议一般是UDP和TCP,UDP传输快但是没有状态消息不可靠,TCP虽然稳定也有重试机制但是因为机制复杂三次握手等机制速度会稍微比较慢,大名鼎鼎的谷歌就基于UDP重新开发过QUIC协议,Kcp协议也是基于UDP上进行算法封装的快速可靠协议,我们就一同来看看基于KCP的开源软件KcpTun有什么神奇的吧!
附上:
喵了个咪的博客:w-blog.cn
Kcp-Github地址:https://github.com/skywind3000/kcp
KcpTun-Github地址:https://github.com/xtaci/kcptun
Kcp是一个快速可靠协议,能以比 TCP浪费10%-20%的带宽的代价,换取平均延迟降低 30%-40%,且最大延迟降低三倍的传输效果,纯算法实现.
基于Kcp之后就有了KcpTun也就是我们今天的主角TCP转发开源程序,有的童鞋会问了 “为什么要转发TCP啊 ? ” , 当然是为了提高访问速度啊. 比如如下两个场景
一句话总结只要是TCP协议的东西都可以通过KcpTun进行加速,我们一起来看下图就能简单了解KcpTun起到了什么作用
正常情况下的访问都只直接通过Tcp进行的, 其中握手,丢包重传等机制都会比较慢
当我们换成了KcpTun正常访问的都是离自己比较近的Kcp-Client端,然后通过Kcp链路中转到Kcp-Server端,在请求到最终的服务器
这里以liunx为例子,选用系统centos
安装KcpTun :
wget https://github.com/xtaci/kcptun/releases/download/v20170930/kcptun-linux-amd64-20170930.tar.gz
tar -zxvf kcptun-linux-amd64-20170930.tar.gz
在国内服务器开启server端:
https://zhuanlan.zhihu.com/p/server_linux_amd64 -t "IP:80" -l ":4000" -mode fast3
在国外服务器开始client端:
https://zhuanlan.zhihu.com/p/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}"\
" xxxx.sunmi.com
xxxx---code:200:time:0.568:dns:0.004:connect:0.212:starttransfer:0.568
curl -s -w ---code:%{http_code}:time:%{time_total}:dns:%{time_namelookup}:connect:%{time_connect}:starttransfer:%{time_starttransfer}"\
" localhost:8080
xxxx---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}"\
" xxxx.sunmi.com
xxxx---code:200:time:0.148:dns:0.001:connect:0.002:starttransfer:0.148
curl -s -w ---code:%{http_code}:time:%{time_total}:dns:%{time_namelookup}:connect:%{time_connect}:starttransfer:%{time_starttransfer}"\
" localhost
xxxx---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 可以得到比较好点效果
利用KcpTun链路加速技术能够解决在使用中的各种网络,比如海外网络加速, Shadowsocks,OpenVpn加速等,如果大家喜欢可以自己体验一下!
注:笔者能力有限有说的不对的地方希望大家能够指出,也希望多多交流!