授权协议 未知
开发语言 Google Go SHELL
操作系统 跨平台
软件类型 开源软件
所属分类 程序开发网络工具包
开源组织
地区 国产
投 递 者 SHFUITCK
适用人群 未知
收录时间 2020-09-17

软件简介

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 指数为
超过 的项目

评论 (1)

加载中
优秀。收藏了。
2020/09/20 23:12
回复
举报
更多评论
发表于开发技能专区
2020/10/15 16:38

spp 0.3 发布,简单强大的双向代理工具

spp 是一个简单强大的网络代理工具。 功能 支持的协议:tcp、udp、rudp(可靠udp)、ricmp(可靠icmp)、rhttp(可靠http)、kcp、quic 支持的类型:正向代理、反向代理、socks5正向代理、socks5反向代理 协议和类型可以自由组合 外部代理协议和内部转发协议可以自由组合 支持shadowsocks插件,spp-shadowsocks-plugin,spp-shadowsocks-plugin-android 更新部分 1.增加QUIC协议支持 2.添加shadowsocks插件的支持...

0
7
发表于AI & 大数据专区
2020/09/17 15:18

spp 0.1 发布,简单强大的双向代理工具

spp spp是一个简单强大的网络代理工具。 功能 支持的协议:tcp、udp、可靠udp(rudp)、可靠icmp(ricmp)、kcp 支持的类型:正向代理、反向代理、socks5正向代理、socks5反向代理 协议和类型可以自由组合 外部代理协议和内部转发协议可以自由组合

0
9
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
2020/07/01 16:50

SPP-Net

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

0
0
发表了博客
2018/07/13 15:47

SPP-net原理解读

转载自:目标检测:SPP-net 地址 https://blog.csdn.net/tinyzhao/article/details/53717136 上文说到R-CNN的最大瓶颈是2k个候选区域都要经过一次CNN,速度非常慢。Kaiming He大神最先对此作出改进,提出了SPP-net,最大的改进是只需要将原图输入一次,就可以得到每个候选区域的特征。 概述 在R-CNN中,候选区域需要进过变形缩放,以此适应CNN输入,那么能不能修改网络结构,使得任意大小的图片都能输入到CNN中呢?作者提出了s...

0
0
发表了博客
2020/05/05 10:10

SPP原理和代码

空间金字塔池化(Spatial Pyramid Pooling, SPP)原理和代码实现(Pytorch) 一、为什么需要SPP 首先需要知道为什么需要SPP。 我们都知道卷积神经网络(CNN)由卷积层和全连接层组成,其中卷积层对于输入数据的大小并没有要求,唯一对数据大小有要求的则是第一个全连接层,因此基本上所有的CNN都要求输入数据固定大小,例如著名的VGG模型则要求输入数据大小是 (224*224) 。 固定输入数据大小有两个问题: 很多场景所得到数据并不是...

0
0
发表了博客
2015/04/09 11:51

Spp 描述语言的语言

基本的部分叫规则:Specification, 描述一门语言的规则有很多,这些规则会组成一个表,在匹配的时候,用于查询。 `````````````` 用于描述匹配数量的 Rept 是前置的,因为这更容易解析: ``` +rule *rule ?rule ``` 匹配字符串和匹配字符是一样的语法,只是长度为 1,是字符: ``` :( \w+ :) :=> token ``` 规则名称隐含了生成语法树的规则: @ 开始的规则,不会对捕获的数据进行命名,只是传递到下一级函数捕获中: _ 下划线开...

1
0
发表了博客
2018/05/23 12:51

SPP(Spatial Pyramid Pooling)详解

一直对Fast RCNN中ROI Pooling层不解,不同大小的窗口输入怎么样才能得到同样大小的窗口输出呢,今天看到一篇博文讲得挺好的,摘录一下,方便查找。 Introduction 在一般的CNN结构中,在卷积层后面通常连接着全连接。而全连接层的特征数是固定的,所以在网络输入的时候,会固定输入的大小(fixed-size)。但在现实中,我们的输入的图像尺寸总是不能满足输入时要求的大小。然而通常的手法就是裁剪(crop)和拉伸(warp)。 这样做总是不...

0
0
2020/05/22 08:11

目标检测算法SPP-Net详解

这一期的文章离不开上一期的R-CNN,因为SPP-Net是基于R-CNN进化而来的,建议先看上期R-CNN,上期链接如下: 目标检测的里程碑R-CNN通俗详解 SPP-Net全称Spatial Pyramid Pooling Networks,翻译过来就是空间金字塔池化网络。为什么这里会插进来一个SPP-Net呢?因为SPP-Net对R-CNN的进化有着比较大的影响。主要改进有以下两点: 特征映射,只需要做一次卷积池化操作。 金字塔池化层,可以适应任意尺寸的输入。 那我们就一起来看一...

0
0
发表了博客
2018/02/15 00:09

读论文系列:Object Detection SPP-net

本文为您解读SPP-net: Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition Motivation 神经网络在计算机视觉方面的成功得益于卷积神经网络,然而,现有的许多成功的神经网络结构都要求输入为一个固定的尺寸(比如224x224,299x299),传入一张图像,需要对它做拉伸或者裁剪,再输入到网络中进行运算。 然而,裁剪可能会丢失信息,拉伸会使得图像变形,这些因素都提高了视觉任务的门槛,因此,如果能...

0
0
发表了博客
2019/05/09 14:42

SPP-Net、Atrous Convolution以及ASPP by Rose

一、简介 SPP-Net是出自2015年发表在IEEE上的论文-《Spatial Pyramid Pooling in Deep ConvolutionalNetworks for Visual Recognition》。在此之前,所有的神经网络都是需要输入固定尺寸的图片,比如224×224(ImageNet)、32×32(LenNet)、96×96等。这样对于我们希望检测各种大小的图片的时候,需要经过crop,或者warp等一系列操作,这都在一定程度上导致图片信息的丢失和变形,限制了识别精确度。而且,从生理学角度出发,人...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
1 评论
44 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部