1.kcp简介
KCP是一个快速可靠协议,能以比 TCP浪费10%-20%的带宽的代价,换取平均延迟降低 30%-40%,且最大延迟降低三倍的传输效果。纯算法实现,并不负责底层协议(如UDP)的收发,需要使用者自己定义下层数据包的发送方式,以 callback的方式提供给 KCP。 连时钟都需要外部传递进来,内部不会有任何一次系统调用。本文传输协议之考虑UDP的情况。
详情可以看一下:https://github.com/skywind3000/kcp
2.frp使用kcp加速
首先,我们在服务端frps.ini中的[common]添加
# frps.ini [common] bind_port = 7000 # kcp 绑定的是 udp 端口,可以和 bind_port 一样 kcp_bind_port = 7000
然后在客户端frpc.ini中修改
# frpc.ini [common] server_addr = x.x.x.x # server_port 指定为 frps 的 kcp_bind_port server_port = 7000 protocol = kcp#该处最好用TCP,否则http有可能无法访问
分别运行服务端与客户端
我们会发现frps多打开了一个udp端口,连接上后web服务正常使用就大功告成了
3.遇到的问题并解决
1)网页访问速度没有提升
尝试一下修改协议把http修改为tcp(tcp类型要单独添加一个远程端口)
2)修改tcp后连接成功但无法访问(IE内核可以访问,谷歌火狐内核浏览器无法访问)
因为谷歌与火狐浏览器认为你开放的远程端口不安全,会自动关闭链接,修改浏览器设置就可以了。如果你开发web服务,也可使用nginx进行转发。
3)tcp连接了一会儿就出现故障
可以尝试一下给服务端安装bbr。
你还可以看一下我的相关教程