授权协议: 未知
开发语言: Google Go SHELL
操作系统: 跨平台
收录时间: 2020-09-17
提 交 者: shitfuck

spp是一个简单强大的网络代理工具。

功能

  • 支持的协议:tcp、udp、可靠udp(rudp)、可靠icmp(ricmp)、kcp
  • 支持的类型:正向代理、反向代理、socks5正向代理、socks5反向代理
  • 协议和类型可以自由组合
  • 外部代理协议和内部转发协议可以自由组合

使用

服务器

  • 启动server,假设服务器ip是www.server.com,监听端口8888
# ./spp -type server -proto tcp -listen :8888
  • 也可以同时监听其他类型的端口与协议
# ./spp -type server -proto tcp -listen :8888 -proto rudp -listen :9999 -proto ricmp -listen 0.0.0.0
  • 也可以使用docker
# docker run --name my-server -d --restart=always --network host esrrhs/spp ./spp -proto tcp -listen :8888

 

客户端

  • 启动tcp正向代理,将www.server.com的8080端口映射到本地8080,这样访问本地的8080就相当于访问到了www.server.com的8080
# ./spp -name "test" -type proxy_client -server www.server.com:8888 -fromaddr :8080 -toaddr :8080 -proxyproto tcp
  • 启动tcp反向代理,将本地8080映射到www.server.com的8080端口,这样访问www.server.com的8080就相当于访问到了本地的8080
# ./spp -name "test" -type reverse_proxy_client -server www.server.com:8888 -fromaddr :8080 -toaddr :8080 -proxyproto tcp
  • 启动tcp正向socks5代理,在本地8080端口开启socks5协议,通过server访问server所在的网络
# ./spp -name "test" -type socks5_client -server www.server.com:8888 -fromaddr :8080 -proxyproto tcp
  • 启动tcp反向socks5代理,在www.server.com的8080端口开启socks5协议,通过client访问client所在的网络
# ./spp -name "test" -type reverse_proxy_client -server www.server.com:8888 -fromaddr :8080 -toaddr :8080 -proxyproto tcp
  • 其他代理协议,只需要修改client的proxyproto参数即可,例如
代理udp
# ./spp -name "test" -type proxy_client -server www.server.com:8888 -fromaddr :8080 -toaddr :8080 -proxyproto udp

代理可靠udp
# ./spp -name "test" -type proxy_client -server www.server.com:8888 -fromaddr :8081 -toaddr :8081 -proxyproto rudp

代理可靠icmp
# ./spp -name "test" -type proxy_client -server www.server.com:8888 -fromaddr :8082 -toaddr :8082 -proxyproto ricmp

同时代理上述三种
# ./spp -name "test" -type proxy_client -server www.server.com:8888 -fromaddr :8080 -toaddr :8080 -proxyproto udp -fromaddr :8081 -toaddr :8081 -proxyproto rudp -fromaddr :8082 -toaddr :8082 -proxyproto ricmp

  • client和server之间的内部通信,也可以修改为其他协议,外部协议与内部协议之间自动转换。例如
代理tcp,内部用可靠udp协议转发
# ./spp -name "test" -type proxy_client -server www.server.com:8888 -fromaddr :8080 -toaddr :8080 -proxyproto tcp -proto rudp

代理tcp,内部用可靠icmp协议转发
# ./spp -name "test" -type proxy_client -server www.server.com -fromaddr :8080 -toaddr :8080 -proxyproto tcp -proto ricmp

代理udp,内部用tcp协议转发
# ./spp -name "test" -type proxy_client -server www.server.com:8888 -fromaddr :8080 -toaddr :8080 -proxyproto udp -proto tcp
  • 也可以使用docker
# docker run --name my-client -d --restart=always --network host esrrhs/spp ./spp -name "test" -type proxy_client -server www.server.com:8888 -fromaddr :8080 -toaddr :8080 -proxyproto tcp

 

性能测试

  • 使用benchmark/local_tcp目录的iperf脚本,在单机测试,在cpu跑满的情况下,测试最大带宽速度。代理协议是tcp,采用各种中转协议转发的结果如下:
代理方式 速度
直连 3535 MBytes/sec
tcp转发 663 MBytes/sec
tcp转发(加密) 225 MBytes/sec
tcp转发(加密压缩) 23.4 MBytes/sec
rudp转发 5.15 MBytes/sec
rudp转发(加密) 5.81 MBytes/sec
rudp转发 5.05 MBytes/sec
ricmp转发 3.34 MBytes/sec
ricmp转发(加密) 3.25 MBytes/sec
ricmp转发 3.46 MBytes/sec
kcp转发 18.2 MBytes/sec
kcp转发(加密) 18.6 MBytes/sec
kcp转发(加密压缩) 14.7 MBytes/sec
  • 使用benchmark/remote_tcp目录的iperf脚本,在多机测试,服务器位于腾讯云,客户端位于本地,测试最大带宽速度。代理协议是tcp,采用各种中转协议转发的结果如下:
代理方式 速度
直连 2.74 MBytes/sec
tcp转发 3.81 MBytes/sec
tcp转发(加密) 3.90 MBytes/sec
tcp转发(加密压缩) 4.02 MBytes/sec
rudp转发 3.33 MBytes/sec
rudp转发(加密) 3.41 MBytes/sec
rudp转发 3.58 MBytes/sec
ricmp转发 3.21 MBytes/sec
ricmp转发(加密) 2.95 MBytes/sec
ricmp转发 3.17 MBytes/sec
kcp转发 3.58 MBytes/sec
kcp转发(加密) 3.58 MBytes/sec
kcp转发(加密压缩) 3.75 MBytes/sec
  • 注:测试数据是centos.iso,已经被压缩过了,所以压缩转发的效果不明显
  • 如果想直接测试下网络的各协议带宽,使用多协议带宽测试工具connperf
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

spp 的相关博客

SPP-Net

https://www.cnblogs.com/chaofn/p/9305374.html

SPP-net原理解读

转载自:目标检测:SPP-net 地址 https://blog.csdn.net/tinyzhao/article/details/53717136 上文说到R-CNN的最大瓶颈是2k个候...

SPP-net论文总结

  SPPNet方法来自《Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition》 ,是大神何凯明201...

SPP原理和代码

空间金字塔池化(Spatial Pyramid Pooling, SPP)原理和代码实现(Pytorch) 一、为什么需要SPP 首先需要知道为什么需要SPP。...

蓝牙spp协议分析

基本概念 蓝牙串口是基于 SPP 协议(Serial Port Profile),能在蓝牙设备之间创建串口进行数据传输的一种设备。 蓝牙串口的目...

Spp 描述语言的语言

基本的部分叫规则:Specification, 描述一门语言的规则有很多,这些规则会组成一个表,在匹配的时候,用于查询。 用于描述匹...

SPP(Spatial Pyramid Pooling)详解

一直对Fast RCNN中ROI Pooling层不解,不同大小的窗口输入怎么样才能得到同样大小的窗口输出呢,今天看到一篇博文讲得挺好的,...

目标检测算法SPP-Net详解

这一期的文章离不开上一期的R-CNN,因为SPP-Net是基于R-CNN进化而来的,建议先看上期R-CNN,上期链接如下: 目标检测的里程碑R...

论文翻译—SPP-Net(目标检测)

SPPNet论文翻译 《Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition》 Kaiming He 摘要: 当...

读论文系列:Object Detection SPP-net

本文为您解读SPP-net: Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition Motivation 神经网络...

spp 的相关问答

还没有任何问答,马上提问

评论 (1)

加载中
优秀。收藏了。
09/20 23:12
回复
举报
更多评论
1 评论
22 收藏
分享
在线直播报名
返回顶部
顶部