FastTunnel-内网穿透原理
之前写了一篇关于GVP开源项目FastTunnel的一篇介绍 《FastTunnel-开源内网穿透框架》,只简单介绍了使用方法,不少伙伴对其原理表示好奇,今天画抽空了一下其内部实现原理流程。
不知道其他穿透软件实现是什么样子的,FastTunnel是于2020年开始编写,经过几次尝试,最终采取一种实现方案,自认是最容易理解和去实现的。
FastTunnel内网穿透实现原理图
揭开内网穿透的神秘面纱
1270端口为http监听端口,1271为客户端通信端口
- 客户端登录,将子域名web1注册到服务端,此socket一直保持在线,维持客户端和服务端的连接
- 服务端收到注册请求,创建Map集合,进行登记,此时登录完成,后面该客户端不断发起心跳互相检测
- 此时用户发起一次Http请求到1270端口,socket1
- 监听1270端口的Socket收到该请求,并为该次http请求分配全局唯一的guid,后面会用到guid;
- 读取socket1所有header,解析host内容,解析为
web1.abc.com
,去查找哪个客户端注册了这个host,找不到,则客户端不在线,否则对客户端发送Swap指令,表示通知该客户端,有人要请求你内网的服务啦,请求的域名为web1; - 本次请求保存到一个KV集合中,等待客户端建立Swap连接
- 客户端收到Swap指令,创建2个临时socket分别连接本地服务SokcetY和服务端1271端口SocketZ,SocketZ连接后发送一条Swap应答指令携带guid,服务端收到此应答便知道该scoket是用于数据交换的
- SocketY与SocketZ开始接收数据,并把接收的数据互相发给对方
- 服务端收到Swap应答请求,根据guid查找KV集合,寻找等待接收响应数据的Sockt1,一旦找到,Socket1将与SocketZ进行数据互相转发。
- Socket1接收到SocketZ发来的内容,根据第5步我们知道了,SocketZ发来的内容为SocketY给发的内容,而SocketY的内容来自内网服务,经过两次数据转发,浏览器最终得到了来自内网站点的数据。
- 端口转发的实现不做介绍,其原理与以上类似。
本实现或许不是最好的实现,但是这种是我感觉最好实现和理解的一种方案,如果你有更好的实现方案,欢迎一起交流。通过以上的原理介绍,再读FastTunnel源码应该十分顺畅,项目还有很多地方需要优化,欢迎大家一起进行完善,打造.net平台最优秀的内网穿透工具。
仓库地址
FastTunnel-GitHub
FastTunnel-Gitee
SuiDao(免费使用内网穿透)
走过路过的点个star支持一下
有兴趣的可加qq群
声明
开源项目及文章皆为原创内容,转载或摘抄请附 原文链接
FastTunnel-内网穿透原理相关推荐
- 内网穿透原理和实现思路介绍
内网穿透技术,简单理解就是将内网的服务映射到公网中,这样可以随时随地访问. 那什么是内网?什么是公网?先从这个基本概念来简单介绍吧 1. 公网.内网和外网 首先声明,公网.内网和外网这几个概念,不是专 ...
- ngrok内网穿透原理分析和实现
转载: ngrok内网穿透原理分析和实现 在互联网终端急剧增长的今天,公网ip已经成为稀缺资源,对于国内垄断的电信运营商来讲,更是不可能随便免费给你一个公网ip,许多家庭宽带都无法分配到 公网ip,又 ...
- frp内网穿透原理及配置应用
1 Frp介绍 frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP.UDP.HTTP.HTTPS 等多种协议.可以将内网服务以安全.便捷的方式通过具有公网 IP 节点的中转暴露到公网. ...
- 内网穿透原理,以及用花生壳实现内网穿透
在做自学项目部署nginx的时候,nginx部署在阿里云服务器上,项目在本地,阿里云的nginx无法访问到本地的ip,所以需要做一下内网穿透.记录一下 什么是内网穿透? 内网和外网的概念: 内网:即所 ...
- 大白话告诉你内网穿透原理和验证
内网穿透到底干啥的这里不做详述,这篇文章主要是讲这玩意怎么做的 分析 网上有很多原理图,但是说实话鄙人天资愚钝没咋看懂,在网上疯狂百度和个人的验证之后,得出如下简图 其实很简单 想让我们内网的服务能被 ...
- FastTunnel Win10内网穿透实现远程桌面
目录 一.需求 二.购买公网服务器 三.远程公网服务器 四.FastTunnel 的使用 1.下载 FastTunnel 2.启动服务器端 3.启动客户端 五.测试 六.安装服务 结束 一.需求 Fa ...
- 内网穿透实现原理及三种实现方式
1.操作系统 Deepin - 基于Linux的开源国产操作系统(软件生态好,缺点不够流畅) 官网 Ubuntu | 全球领先的用于个人电脑.平板及手机的操作系统 我使用的版本 Ubuntu乌班图-桌 ...
- ZEROTIER ONE实现内网穿透
原文链接:https://post.smzdm.com/p/741270/ 原文链接:https://www.jianshu.com/p/77abb0a64a82 传统的内网穿透: 内网设备<- ...
- 手把手教你内网穿透(Windows环境)
内网穿透原理知识 一.传统NAT穿透 传统的NAT技术是通过将专用的网络地址(如企业内部网Internet)转换为公用地址(如互联网Internet),从而对外隐藏了内部管理的IP地址.这样,通过在内 ...
- 树莓派mjpg-streamer+内网穿透
树莓派mjpg-streamer+内网穿透 一.背景 二.你需要的材料 三.视频传送 四.内网穿透 五.应用及效果 一.背景 我相信很多小伙伴和我一样,对物联网很感兴趣,就算你的专业.工作不是物联网方 ...
最新文章
- iOS WebviewJavascriptBridge 源码研读笔记
- Science论文:诺奖经济学家的经典决策模型,被AI挑战
- python3 byte int string 互转 转换
- C# 5.0中新增特性
- 华为Mate 30系列后摄相机模组曝光:圆形三摄各有不同
- 搭建高性能计算环境(七)、应用软件的安装之MS
- 爬虫 知识点 总结。
- Dockerfile 中的命令
- const 和 非const函数重载
- bfc -- 块级格式化上下文
- Android 广播学习笔记
- 虚拟机的三种网络连接方式
- 瀚高数据库php连接,HighGo瀚高数据库4.3版本安装说明
- td中的块元素居中问题
- smartforms设备类型CNSAPWIN不支持页格式ZXXX
- Android 欢迎引导页的魅力
- Android 真正的3D Gallery
- python doc 转docx
- 15.正则表达式以及Data以及Calendar
- 图像处理之Lanczos采样放缩算法