[喵咪开源软件推荐(6)]TCP链路加速技术KcpTun

[喵咪开源软件推荐(6)]TCP链路加速技术KcpTun

今天有给大家带来新的东西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

1.了解Kcp - KcpTun

Kcp是一个快速可靠协议,能以比 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.gz
tar -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.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}"\n"  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}"\n"  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}"\n"  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 可以得到比较好点效果

3 总结

利用KcpTun链路加速技术能够解决在使用中的各种网络,比如海外网络加速, Shadowsocks,OpenVpn加速等,如果大家喜欢可以自己体验一下!

注:笔者能力有限有说的不对的地方希望大家能够指出,也希望多多交流!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

揭秘:充电宝是如何盗取你的个人隐私的?

中午吃完饭,看到一个微博中别人转的央视新闻《别被改装充电宝盗取隐私》觉得又是啥高大上的东西上了央视,看完后才知道是数字公司的某研究员做的伪装充电宝盗取隐私的玩意...

26070
来自专栏帘卷西风的专栏

cocos2dx使用TiledMap创建斜45度地图场景

做游戏,场景是一个很重要的部分,如果缺少这一步,很难做出好的游戏,对于cocos2dx来说,有很多2D的地图编辑器可以用,效果都还可以,其中Tiled是支持的...

21720
来自专栏Python小白进阶之旅

Android离Linux越来越遥远了,Google的Android真的是开源的吗?

32090
来自专栏魏艾斯博客www.vpsss.net

添加 CNAME 记录提示和 A 记录冲突如何解决

群友遇到问题:为了上 CDN,添加 CNAME 时提示和 A 记录冲突,不知道怎么办了过来问。这问题稍微有点经验的人都知道如何解决,可偏偏就是一个新手遇到了,老...

4.8K40
来自专栏IT技术精选文摘

全渠道客服中心聊天机器人实战

本文要点 客服中心的渠道多种多样,而且数量一直在增长。 企业需要支持所有这些渠道,可以自己开发服务,也可以向CPaaS供应商购买服务,或者集成已有的服务。 自研...

43270
来自专栏Spark学习技巧

spark源码导读一

1,业务需求,现有框架满足不了项目需要,需要对源码的一部分进行修改或者叫做二次开发,需要阅读部分源码。那么这个针对性就很强了,修改不符合需求的部分。

15010
来自专栏开源项目

【码云周刊第 9 期】前方高能,Discuz 官方携神秘干货归来!

每周为您推送最有价值的开源技术内参! 一周热门资讯回顾 1、GitLab 8.17 发布,社区版也支持 GitLab Pages 了 ? GitLab 8.17...

35360
来自专栏云计算D1net

云服务存在局限性,你如何找到最合适的解决方案

云计算不仅仅代表着近乎无限的资源,我们也需要了解其中可能存在的种种性能问题。 以Amazon AWS与微软Azure为代表的公有云服务属于基于控制台的编排方案,...

33530
来自专栏Java技术栈

腾讯,排行前10的开源项目

1、Tars Tars是腾讯从2008年到今天一直在使用的后台逻辑层的统一应用框架TAF(Total Application Framework),目前支持C+...

45150
来自专栏Debian社区

微软发布基于 Debian 的交换机操作系统

OCP 峰会刚刚轻松的结束了,但是让我们惊讶的发现微软发布了一个基于 Debian Linux 的操作系统,这个操作系统主要运行在网络交换机之上。该软件被称为 ...

20320

扫码关注云+社区

领取腾讯云代金券