当前位置: 首页 > news >正文

内网穿透原理,免费内网穿透(简单使用),公网主动访问内网。

内网穿透的本质就是流量转发,把一个电脑的网卡上的流量数据,转发到另一个网卡的流量数据。

实现原理

  1. 网络协议分层就是,物理层,数据链路层,网络层,传输层,应用层。我简单解释一下这些分层协议,
  1. 物理层就是规定数据流通的物理硬件,比如网线,光纤,wifi,物理层就是规定这些不同的物理设备怎么传输交换物理设备的。
  2. 数据链路层,就是以太网帧数据转发的,作用是一个包必须要包含电脑的mac目的地址,将数据转发到一个指定的物理电脑,mac就是物理的地址。
  3. 网络层,比数据链路层更高级点,这个协议的作用是把数据转到到特定的ip所在的电脑,一个电脑是可以有多个ip的,但是只有一个,mac地址,网络层并不知道应该把包转发给谁,只是把数据解析成以太网帧,由更底层的协议找到ip和mac的对应关系,找到这个ip在这个局域网内的mac地址并转发。
  4. 传输层,就是我们的socket,在tcp/ip写就两个协议,udp和tcp。网络层只是电脑和电脑之间的数据转发,传输层还要加上端口,我们写代码,肯定会接触到端口,所以这一层开始在网上,都可以用来开发应用软件了。
  5. 应用层,就是http,ws等协议。没什么好说的。
  1. 有了前面的网络协议知识前提,那内网穿透是网卡之间的流量转发,那具体是什么呢。一个网卡叫做一个网络适配器,其实就叫做tun,处于网络层的一个设备,在数据链路层,一般叫做tap,如果是想在一个主机上虚拟网络,类似docker的网络虚拟能力,也许会用到tap层。内网穿透使用到tun就行了。
  2. 具体实现内网穿透,过程就是,在两个电脑上分别创建两个虚拟网卡,然后这两个虚拟网卡其实就是个服务层序,他们可以使用普通的网络通信api,如果设备能上网,就可以向中心服务器发送流量数据,中心服务器再把数据包转发到另一个连接到中心的电脑的适配器上,这个适配器程序再把流量数据,写入到网卡中。操作系统的协议栈,会继续转发这个包,到运输层给相应的程序。

有哪些工具可以实现

太多了,花生壳,frp,natapp。等。有些需要自己部署服务器,有些像花生壳这样的不需要部署。这些穿透工具有的还会限制协议。
我觉得太麻烦了,自己做了个小工具,集成到了我的文件管理项目中。https://github.com/xiaobaidadada/filecat;
打开这个网址,下载完发布包后,简单配置一下就可以流量转发工具,前提是要有一台自己的公网服务器,不需要买很贵的,因为内置了p2p功能,这样流量就不用转发了,而是两个电脑直连。使用操作也是非常简单。傻瓜操作一下就行了。
这个工具还可以实现,你有一台公网服务器,但是性能不好,你想让自己的电脑上的程序被公网服务器调用,自己的电脑又没有功能,你可以在公网服务器上设置服务器模式,自己电脑设置客户端模式,不管是p2p还是流量转发都可以实现这个功能。
在这里插入图片描述

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【Python机器学习】利用AdaBoost元算法提高分类性能——在数据集上应用AdaBoost
  • 【EI会议征稿通知】第六届光电科学与材料国际学术会议 (ICOSM 2024)
  • Unity补完计划 之Tilemap
  • 白骑士的Matlab教学基础篇 1.2 MATLAB基础语法
  • 常见VPS服务器附加组件一览
  • 牛客JS题(二十五)Symbol
  • 【OpenCV C++20 学习笔记】给图片加边框-copyMakeBorder
  • Flink开发语言使用java还是Scala合适
  • C#中的Hangfire和Quartz.NET 任务调度的区别
  • Android 13修改蓝牙默认名称
  • 【计算机网络】[第二章][自用]
  • vue动态规则
  • 萌新的Java入门日记18
  • C++编程:使用Nanomsg实现高效的文件和图片传输
  • 2-56 基于matlab的图像融合增强技术
  • 【译】JS基础算法脚本:字符串结尾
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • jQuery(一)
  • Lucene解析 - 基本概念
  • Mysql5.6主从复制
  • PAT A1092
  • Python十分钟制作属于你自己的个性logo
  • Vue ES6 Jade Scss Webpack Gulp
  • 阿里研究院入选中国企业智库系统影响力榜
  • 关于springcloud Gateway中的限流
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 设计模式(12)迭代器模式(讲解+应用)
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • nb
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • 阿里云ACE认证学习知识点梳理
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • ​flutter 代码混淆
  • ### RabbitMQ五种工作模式:
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • (13):Silverlight 2 数据与通信之WebRequest
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (libusb) usb口自动刷新
  • (Note)C++中的继承方式
  • (补充):java各种进制、原码、反码、补码和文本、图像、音频在计算机中的存储方式
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (回溯) LeetCode 78. 子集
  • (万字长文)Spring的核心知识尽揽其中
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (转)程序员技术练级攻略
  • (转)负载均衡,回话保持,cookie
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .bat批处理(一):@echo off
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Standard 的管理策略
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args