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

内网穿透入门

内网穿透

  • 内网穿透(英文:Port Forwarding)是一种网络技术,用于将公共互联网(外网)的请求转发到私有局域网(内网)中的特定设备或服务。在许多情况下,设备或服务位于一个局域网中,而无法直接从外部网络访问,这可能是因为网络防火墙、路由器配置或其他网络限制等原因。内网穿透允许你在这种情况下仍然能够通过公共互联网访问这些设备或服务。
  • 通俗来说,就是在世界的任意一个地方都可以直接访问局域网的某台设备或服务。

IP

既然每个互联网用户都拥有 IP 地址,为什么某些用户无法直接访问部署在个人PC上的服务呢?
结论:因为找不到。

  • IP 地址分为两种:公网 IP 和内网 IP
  • 内网 IP : 内网通常使用私有 IP 地址范围,这些地址在全球范围内不是唯一的。内网 IP 是用户在使用局域网时,由局域网的网关所分配的 IP 地址,每一个内网 IP 实际上都可以映射到当前所在局域网网关的某一端口,拥有内网 IP 可以被同一局域网下的其他设备所访问到;
  • 公网 IP : 内网的设备想要访问非同一局域网下的资源则必须通过公网 IP ,公网 IP 是没有经过 NAT 转换的由互联网供应商(ISP)提供的最原始的 IP 地址,每一个公网 IP 都可以直接在互联网中被直接定位到。公网使用全球唯一的公共 IP 地址。

综上,只有公网IP才能在互联网上路由到,内网 IP 地址仅在当前局域网下可以被定位并访问到,无法跨域访问内网IP。

NAT(网络地址转换)技术

由于IPV4的数量是有限的,所以无法满足全世界人人手一个公网IP。在2019年,IPV4地址已经全部分配完毕,为什么我们依然可以正常上网?
结论:因为有NAT

  • 网络地址转化技术的核心作用在于实现对公网 IP 地址的复用,即所有的内网主机共用同一个 IP 地址,NAT 的实现方式共有三种
    在这里插入图片描述
    其中,PAT使用最为广泛。
  • 三种 NAT 实现方式共同点在于:对于内网用户来说自己对应的公网 IP 是不可知的。
  • 因此,内网IP跨域访问的方法是:内网IP的访问请求则需要先映射为公网 IP 然后访问到另一局域网的公网 IP ,最后由另一局域网的网关将其映射到相应的局域网设备,但如果我们访问的地址属于局域网中的内网 IP ,就无法定位到其相应的公网 IP。

结论

  • 前提:NAT 并不保证每次转换得到的公共 IP 地址都是一样的,特别是在动态 IP 地址分配的情况下。
  • 所以如果我们想要实现在世界的任何地方都可以访问某局域网的设备或服务就需要一个公网IP服务器,并固定该公网IP服务器的某一端口映射到相应局域网主机。
    在这里插入图片描述

FRP

  • frp是一个开源的内网穿透工具,它允许在内网的计算机或设备通过NAT(Network Address Translation,网络地址转换)和防火墙连接到公共网络,从而使得外部设备可以访问内部设备提供的服务。
  • frp使用客户端-服务器架构,其中frps是服务器端,负责接受来自外部设备的连接请求,而frpc是客户端,负责将内部服务映射到服务器上,实现内网穿透的功能。

答疑解惑

  • 问:用户想通过frp访问局域网的设备,服务端是如何找到局域网设备的?
    答:在使用frp进行内网穿透时,服务端(frps)如何找到局域网设备取决于两个关键部分:客户端(frpc)的配置和网络环境。在内网穿透过程中,frpc会主动连接到frps服务器。frpc主动连接到frps服务器时,它们之间的通信使用的是WebSocket协议。WebSocket是一种在单个TCP连接上进行持久性双向通信的协议。
  • 问:永久连接的过程中,NAT不会给客户端重新分配公网ip和端口号吗?
    答:在长连接或永久连接的过程中,NAT(Network Address Translation,网络地址转换)设备通常不会给客户端重新分配公网IP地址和端口号,因为在持久连接中,NAT设备会维护一个NAT映射表,将内部设备的IP地址和端口号映射到公网IP地址和端口号上。

相关文章:

内网穿透入门

内网穿透 内网穿透(英文:Port Forwarding)是一种网络技术,用于将公共互联网(外网)的请求转发到私有局域网(内网)中的特定设备或服务。在许多情况下,设备或服务位于一个局…...

Pickle pyhton反序列化

参考文章 Python pickle反序列化浅析 Pickle包含四种方法 pickle.dump(obj, file) 将obj对象进行封存,即序列化,然后写入到file文件中 注:这里的file需要以wb打开(二进制可写模式) pickle.load(file) 将file这个文件进行解封,即反序列化 …...

动静分离技术

一、HAproxy 动静分离 1、概念: HAproxy 动静分离技术是一种用于优化 Web 服务器性能和提高用户体验的策略,它通过将动态内容和静态内容分别路由到不同的后端服务器来实现,减轻服务器负载,提高网站的响应速度。 动态内容包括由…...

STM32单片机智能小车一PWM方式实现小车调速和转向

目录 1. 电机模块开发 2. 让小车动起来 3. 串口控制小车方向 4. 如何进行小车PWM调速 5. PWM方式实现小车转向 1. 电机模块开发 L9110s概述 接通VCC,GND 模块电源指示灯亮, 以下资料来源官方,具体根据实际调试 IA1输入高电平&#xff…...

灰狼优化算法(GWO)python

目录 一、灰狼优化算法的python实现 二、灰狼优化算法与遗传算法的对比分析(python) 2.1 GWO1.py 2.2 GA1.py 2.3 GWO_vs_GA.py 2.4 运行结果 ​三、基于莱维飞行改进的灰狼优化算法的python实现 一、灰狼优化算法的python实现 import numpy as …...

项目知识点总结-住房图片信息添加-Excel导出

(1)住房信息添加 Controller: RequestMapping("/add")public String add(Home home, Model model) throws IOException{String sqlPath null;//定义文件保存的本地路径String localPath"D:\\AnZhuang\\Java项目\\选题\\Xin-…...

第三届iEnglish全国ETP大赛决赛即将启动

如今,寓教于乐的学习方式越来越受到家长和孩子的欢迎,“玩中学”成为一种既能培养兴趣又有助于孩子成长的学习趋势。 以“玩转英语,用iEnglish”为活动主题的第三届全国ETP大赛即将于本周五(11月3日)迎来总决赛的抽签仪式。据主办方iEnglish智能英语学习解决方案相关负责人称,…...

创造产业链协同优势后,凌雄科技在DaaS行业转动成长飞轮

企业服务领域,一直存在一种共识:做好很难,但一旦服务模式跑通了,得到了市场的认可,要滚起雪球就会事半功倍。 重资产、重运营的DaaS(设备及服务)赛道,是个非常典型的细分领域。在这…...

【protobuf】protobuf自定义数据格式,CMake编译C++文件读写自定义数据

protobuf自定义数据格式,CMake编译文件读写自定义数据 1.protobuf安装2.定义.proto文件3.编写main.cpp4.编写CMAkeLists配置文件5.运行 1.protobuf安装 protobuf库链接 2.定义.proto文件 新建一个Person.proto文件和一个Animal.proto文件,内容如下&…...

解决:http://localhost:8080 不在以下 request 合法域名列表中

在搭建资源服务器时,遇到了微信开发者工具中无法访问本地资源服务器的情况,报错如下: 参考一篇博文的方法,完美解决 【解决】http://localhost:8080 不在以下 request 合法域名列表中_localhost不在以下 request 合法域名列表中-…...

Linux普通用户提权(sudo)

文章目录 Linux普通用户提权(sudo)1、在sudoers文件添加普通用户2、测试 Linux普通用户提权(sudo) 1、在sudoers文件添加普通用户 正常来说,普通用户初始是不具备提权的能力的,比如执行sudo ls会出现报警告…...

链表指定节点的插入

向现有链表中插入结点,根据插入位置的不同,可分为以下 3 种情况: 插入到链表的头部,作为新的链表中第一个存有数据的结点(又称为”首元结点”);插入到链表中某两个结点之间的位置;插…...

解决问题Conda:CondaValueError: Malformed version string ‘~’ : invalid character(s)

解决问题Conda:CondaValueError: Malformed version string ‘~’ : invalid character(s) 背景 今天使用Conda构建项目运行环境的时候报错::CondaValueError: Malformed version string ‘~’ : invalid character(s) ##报错问题 在安装te…...

Sci Immunol丨Tim-3 适配器蛋白 Bat3 是耐受性树突状细胞

今天和大家分享一篇发表于2022年3月的文章,题目为“Tim-3 adapter protein Bat3 acts as an endogenous regulator of tolerogenic dendritic cell function”,发表在《Sci Immunol》杂志上。文章主要研究了Tim-3和其适配蛋白Bat3在调节免疫应答中的作用…...

天软特色因子看板(2023.10 第14期)

该因子看板跟踪天软特色因子A05005(近一月单笔流通金额占比(%),该因子为近一个月单笔流通金额占比因子,用以刻画股票在收盘时,主力资金在总交易金额中所占的比重。 今日为该因子跟踪第14期,跟踪其在SW801160 (申万公用事业) 中的表…...

Photoshop(PS)2021版 安装教程(图文教程超详细)

软件:PS版本:2021语言:简体中文大小:2.26G安装环境:Win11/Win10(1809以上版本)硬件要求:CPU2.0GHz 内存4G(或更高,不支持7代以下CPU)下载通道①百度网盘丨64位…...

详解React:Props构建可复用UI的基石

React是一种流行的JavaScript库,用于构建用户界面。它的组件化架构使得开发人员能够轻松地构建可复用的UI元素,从而提高开发效率。在本文中,我们将探讨React中的组件和Props的重要性,以及如何利用它们来构建可复用的UI。 引言 在…...

【Unity】【VR开发疑难】Unity运行就报无法启动XR Plugin

【现象】 连接Link后运行Unity的VR项目Link也无反映,Unity控制台报:无法启动XR Plugin,并说是由于Oculus头盔未连接导致。 【分析】 打开Oculus PC客户端,发现状态是连接正常。重启机器后,提示Oculus没有出于RunTim…...

本地启动Elasticsearch(docker启动)

一、es版本7.17.0 docker run -p 9200:9200 -p 9300:9300 -e "discovery.typesingle-node" -e ES_JAVA_OPTS"-Xms256m -Xmx256m" -d --name ES01 elasticsearch:7.17.0进入容器,修改/usr/share/elasticsearch/config/elasticsearch.yml 添加如…...

JVM修炼印记之初识

文章目录 JVM认识JVM的功能常见JVMHotSpot的发展历程 JVM认识 Java虚拟机(Java Virtual Machine,JVM)是一个用于执行Java字节码的虚拟计算机。它是Java语言的核心,可以在不同的操作系统和硬件平台上运行Java程序。 JVM负责将Java…...

OneNet + openssl + MTLL

1.OneNet 使用的教程 1.在网络上搜索onenet,注册并且登录账号。 2.产品服务-----物联网服务平台立即体验 3.在底下找到立即体验进去 4.产品开发------创建产品 5.关键是选择MQTT,其他的内容自己填写 6.这里产品以及开发完成,接下来就是添加设…...

SpringAI(GA):Nacos2下的分布式MCP

原文链接地址:SpringAI(GA):Nacos2下的分布式MCP 教程说明 说明:本教程将采用2025年5月20日正式的GA版,给出如下内容 核心功能模块的快速上手教程核心功能模块的源码级解读Spring ai alibaba增强的快速上手教程 源码级解读 版…...

windows10搭建nfs服务器

windows10搭建nfs服务器 Windows10搭建NFS服务 - fuzidage - 博客园...

QUIC——UDP实现可靠性传输

首先我们要知道TCP存在什么样的痛点问题 TCP的升级很困难TCP建立连接的延迟网络迁移需要重新建立连接TCP存在队头阻塞问题 QUIC就是为了解决以上的问题而诞生了, 下面我会介绍QUIC的一些特性和原理 QUIC对比TCP优势: 握手建连更快 QUIC内部包含了TLS, 它在自己的帧会携带TL…...

前端面试五之vue2基础

1.属性绑定v-bind(:) v-bind 是 Vue 2 中用于动态绑定属性的核心指令,它支持多种语法和用法,能够灵活地绑定 DOM 属性、组件 prop,甚至动态属性名。通过 v-bind,可以实现数据与视图之间的高效同…...

Android LinearLayout、FrameLayout、RelativeLayout、ConstraintLayout大混战

一、为什么布局性能如此重要? 在Android应用中,布局渲染耗时直接决定了界面的流畅度。根据Google官方数据,超过60%的卡顿问题源于布局性能不佳。本文将彻底解析三大传统布局的性能奥秘,并提供可直接落地的优化方案。 二、三大布局…...

二元函数可微 切平面逼近 线性函数逼近

二元函数 f ( x , y ) f(x, y) f(x,y) 在某点可微 的含义,可以从几何直观、严格数学定义、与一阶偏导数的关系三个层面来理解: 🔹1. 几何直观上的含义(最易理解) 二元函数 f ( x , y ) f(x, y) f(x,y) 在点 ( x 0 …...

蒲公英盒子连接问题debug

1、 现象描述 2、问题解决 上图为整体架构图,其中左边一套硬件设备是放在机房,右边是放在办公室。左边的局域网连接了可以访问外网的路由器,利用蒲公英作为旁路路由将局域网暴露在外网环境下。 我需要通过蒲公英作为旁路路由来进行远程访问&…...

C#使用MindFusion.Diagramming框架绘制流程图(2):流程图示例

上一节我们初步介绍MindFusion.Diagramming框架 C#使用MindFusion.Diagramming框架绘制流程图(1):基础类型-CSDN博客 这里演示示例程序: 新建Windows窗体应用程序FlowDiagramDemo,将默认的Form1重命名为FormFlowDiagram. 右键FlowDiagramDemo管理NuGet程序包 输入MindFusio…...

【C/C++】algorithm清单以及适用场景

文章目录 algorithm清单以及适用场景1 算法介绍1.1 分类1.2 非修改序列算法1.3 修改序列算法1.4 排序与堆算法1.5 集合操作算法&#xff08;要求有序&#xff09;1.5 查找算法1.6 二分查找算法&#xff08;有序区间&#xff09;1.7 去重与分区算法1.8 数值算法 <numeric>…...