当前位置: 首页 > 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…...

从‘听不清’到‘听得准’:深入FunASR的VAD模型,教你调参优化语音识别在嘈杂环境下的表现

从‘听不清’到‘听得准’:深入FunASR的VAD模型,教你调参优化语音识别在嘈杂环境下的表现 在工业巡检的轰鸣声中,工程师的语音指令频繁被机器噪音淹没;车载语音助手总在高速风噪下错误触发;户外采访录音里的对话被风声…...

PPO-Lag在Velocity-Walker2d任务中周期性震荡的原因分析与解决方案

PPO-Lag在Velocity-Walker2d任务中周期性震荡的机制解析与调优实践 当你在Velocity-Walker2d环境中观察到训练曲线像心电图一样规律起伏时,很可能正遭遇PPO-Lag算法的经典震荡问题。这种周期性波动不仅影响策略收敛效率,更可能掩盖算法在安全约束处理上的…...

告别枯燥数据:用Rerun给你的NDT-SLAM算法做个酷炫的实时调试界面

告别枯燥数据:用Rerun给你的NDT-SLAM算法做个酷炫的实时调试界面 在激光SLAM算法的开发过程中,调试环节往往是最令人头疼的部分。想象一下,当你正在优化NDT(正态分布变换)算法的参数时,眼前只有终端不断刷新…...

B站成分检测器深度解析:5大革新特性重塑评论区交互体验

B站成分检测器深度解析:5大革新特性重塑评论区交互体验 【免费下载链接】bilibili-comment-checker B站评论区自动标注成分油猴脚本,主要为原神玩家识别 项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-comment-checker 在B站的海量评论互…...

C++新手避坑指南:从‘恶魔轮盘赌‘代码看常见编程误区

C新手避坑指南:从"恶魔轮盘赌"代码看常见编程误区 当你第一次尝试用C复刻一个像"恶魔轮盘赌"这样的小游戏时,很容易陷入一些典型的编程陷阱。让我们通过分析这个游戏的实现代码,来揭示那些C初学者常犯的错误,…...

【新手必看】鼎利测试软件Pilot Pioneer-② 工具栏与菜单栏功能详解

1. Pilot Pioneer工具栏全解析 刚接触鼎利测试软件Pilot Pioneer时,最让我头疼的就是密密麻麻的工具栏图标。但用久了才发现,这些看似复杂的按钮其实是提升效率的"快捷键"。先说说最上方的自定义快速访问工具栏,这个区域就像手机桌…...

数据结构之字典树(Trie)

字典树(Trie)详解 1. 引言 字典树(Trie),也称为前缀树或单词查找树,是一种特殊的树形数据结构,用于高效地存储和检索字符串集合。它特别适用于需要快速查找前缀匹配的场景,如自动补全…...

AI音频分离效率提升指南:Demucs多轨道提取技术实战

AI音频分离效率提升指南:Demucs多轨道提取技术实战 【免费下载链接】demucs Code for the paper Hybrid Spectrogram and Waveform Source Separation 项目地址: https://gitcode.com/gh_mirrors/de/demucs 在数字音频处理领域,高质量音频分离技术…...

嵌入式Linux学习(Day05)C 语言(第二天)核心语法:运算符与流程控制(超详细笔记)

本文整理 C 语言运算符和流程控制语句核心知识点,结合表格梳理语法规则、搭配代码示例 实战练习,零基础友好,适合入门巩固、刷题备考,可直接用于 C 语言基础学习参考。一、运算符补充C 语言运算符是编程基础,本节重点…...

【C++笔记】STL详解: stack 和 queue 的使用

前言:在 C 的标准模板库 (STL) 中,stack(栈)和 queue(队列)是非常重要且常用的数据结构。它们都属于“容器适配器”,这意味着它们不是从零开始构建的,而是封装了其他底层容器&#x…...