端口转发器

功能:

支持本机和远程ip端口tcp数据转发。

支持tcp短连接(http等)和长连接(基于tcp大容量(GiB以上)文件传输)。

工作流程简述:

转发器建立监听端口p1,接收到新连接请求后,建立新连接s1,再建立与目标地址端口p2新连接s2,然后s1、s2组合为一条新转发线路。最后开始转发数据。

基于go语言开发,使用go默认net库。Go 语言层面采用阻塞+多协程模式,进行网络通信。

网络模型:

因为go的默认net库,底层基于非阻塞+多路复用模型(windows iocp、linux epoll),

所以转发器实质模型为非阻塞+多路复用模型。保证了转发器的高性能。

性能:

与之前的python版本相比,性能提高200-300倍。因为python版本,网络模型采用阻塞+多线程轮询模式,并非python的高性能网络模型。这样的性能差异与编程语言的执行效率并无太大关联。如果python使用异步多路复用模型,两者的性能差应该在10-20倍之间。

基于http代理端口转发性能测试,python版本典型cpu占用为20%-30%,go版本典型cpu占用为0.05%-1%。

性能测试硬件平台:

Cpu  i3  2核心,4线程

内存 12GiB

硬盘 三星固态硬盘 120GiB

开源协议:

项目基于GPLv3协议开源。

项目代码:

项目网址:https://github.com/ypcd/Forwarder

使用说明:

使用者,需要设定两个address。

一个是转发器的监听address,一个是目标的address。

这些设定都需要在源代码中设定。

源代码forwarder.go -> main() -> service(第一个设定监听address) -> service(第二个设定目标address)

两个service 同名,行数不同。

设定好后,请在命令行中使用”go install timerm”,安装必要的包。

然后使用”go build forwarder.go” 获得forwarder可执行程序。

或者采用”go run forwarder.go” 直接运行。

时间: 2024-12-25 17:09:43

端口转发器的相关文章

利用asyncore.dispatcher写的端口转发器

创建三个继承类,PortForwarder用于监听本地,Receiver与PortForwarder套接字相连,用于接受本地请求,发给数据给远程主机,Sender与Receiver相互包含,用于接受远程主机数据和发送数据到本地.大致形成这样的关系:本地主机---PortForwarder---Receiver---Sender---远程主机 1 #!/usr/bin/env python 2 #-*- coding:utf-8 -*- 3 4 import argparse 5 import a

AP是什么

百度链接: AP---http://baike.baidu.com/link?url=_mC-Wkgl8j1_awpuicoZk3i4MWVcLaio1nm9XRt60F9QD4V_lJ-kE7J4CqmP86EWjJwajT5ZaHb4HupXeIA6YK HUB--http://baike.baidu.com/link?url=35I6DysaZWjGEGSuvsnVQTTEPa0YfMP049UyJ_-8v0w4L8TyzujKM9EBuE08XA5bvHG2fH76_0Vana6T4pZ

网络基础 : OSI参考模型

Overview OSI规范的作用之一就是帮助在不同的主机之间传输数据. OSI模型包含7层,它们分为两组. 上面3层指定了终端中的应用程序如何彼此通信以及如何与用户交流: 下面4层指定了如何进行端到端的数据传输. 上三层对联网和网络地址一无所知,那是下面4层的职责. 下面4层定义了数据是如何通过物理电缆.交换机和路由器进行传输的,它们还定义了如何重建从发送方主机到目标主机的应用程序的数据流. 下面的网络设备都运行在OSI模型的全部7层上: NMS(Network Management Stat

Android-Using DDMS

原文:http://developer.android.com/tools/debugging/ddms.html#how-ddms-works Android提供了一个debug工具叫做:DDMS,它提供了端口转发服务,设备截屏,设备线程和堆信息,日志,进程,模拟接打电话,模拟收发短信,模拟位置数据等功能.本文主要是对DDMS特性的简单阐述,它不是对DDMS所有特性和功能的一个全面的挖掘. 运行DDMS DDMS被集成到了Eclipse里面,同时在SDK的tools目录下面也有一份.DDMS同

rinetd的安装步骤。

摘要: 环境描述:公司有一台web服务器,对外提供服务.因为以前只用了一条电信的宽带,后面好多人反馈说用联通的网络访问公司网站非常慢,于是公司又拉了条联通的光纤.(其实我觉得在阿里或者腾讯租个服务器最好了,什么事都解决了,可是领导说不.)那弄个bgp协议?也没弄.可是一台服务器只能有一个网关如何让联通的数据走联通的,电信的数据走电信的呢.这个时候端口转发器rinetd就可以派上用场了. 把web服务器的网关设置成电信10.0.0.1的这样电信的用户访问过来就没有任何问题,然后另外加一台rinet

一个简易的Http请求转发器

这两天一直再看微信开发,临时在我的电脑搭了个IIS服务器做微信开发,外网也能访问了,关键是,调试太麻烦了!! 我写完代码,要将代码发布到IIS才能接收微信消息,可是在这个过程中,我不知道微信发过来的是什么,出现Bug调试麻烦, 我得 找到是哪里 出现Bug了,修改代码再发布! 有没有办法让我能够像平时那样,设个断点就行了? 于是我就写了一个简易的Http请求转发器 原理是这样:微信先请求我的IIS服务器,IIS服务器通过下面这个module 将请求 转发 到 Vs 的 IIS Express,I

DNS的主从架构、子域委派、转发器

为了保证服务能够稳定的进行,避免只有一台服务器的时候发生宕机而无法提供DNS服务:所有会有DNS主从服务器架构 主从DNS服务器:(主辅)需要注意的细节:1.主服务器和辅助服务器都是域级别的概念:2.必须保证主辅服务器之间的网络通信的顺畅以及时间同步:3.为了确保所有的名称服务器都能被识别和使用,需要在区域数据库中为所有的名称服务器添加NS资源记录:4.区域数据库中每条NS资源记录都必须有A记录与之对应:5.从服务器上可以默认将复制而来的数据库文件保存至/var/name/slaves目录中:6

转发器、集线器、网桥、交换机、路由器和网关简介(转)

转自https://blog.csdn.net/u012243115/article/details/47008903 物理层中继系统:中继器(转发器).集线器(hub):数据链路层:网桥或交换机:网络层:路由器:网络层以上:网关 转发器.集线器.网桥.交换机.路由器和网关都是网络互连设备. 转发器 转发器(Repeater)又被称为中继器或放大器,执行物理层协议,负责第一层(物理层)的数据中继,实现电气信号的“再生”.用于互连两个相同类型的网段,主要功能是延伸网段和改变传输媒体,从而实现信息位

gps卫星信号转发器的工作原理介绍

GPS信号转发器技术利用现有GPS信号来提高定位能力,这些新技术的使用,使接收机在不良GPS信号区域工作时,依旧可以提供可靠的定位结果.本文提到的卫星导航信号转发器广泛应用于测试系统中,方便客户在室内放置多台卫星接收设备测试时使用,同时支持GPS,GLONASS,北斗和 Galileo四种全球卫星导航系统的信号转发,为卫星信号导航测试系统解决了室内无法收到卫星信号的问题.卫星导航信号转发器主要是由CNSS室外接收天线,低损耗电缆(一般为同轴线缆),GNSS卫星信号转发器,室内GNSS发射天线四大