内网穿透入门

news2024/11/26 15:39:23

内网穿透

  • 内网穿透(英文: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地址和端口号上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1160895.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

负载均衡深度解析:算法、策略与Nginx实践

引言 如今,网站和应用服务面临着巨大的访问流量,如何高效、稳定地处理这些流量成为了一个亟待解决的问题。负载均衡技术因此应运而生,它通过将流量合理分配到多个服务器上,不仅优化了资源的利用率,还大大提升了系统的…

下载树莓派对应的64位Ubuntu系统步骤

说点废话:因为ros2需要安装在64位Ubuntu上面,所以安装64位最合适; 第一步打开https://cn.ubuntu.com/ 网站;选择下载--->iot----> 选择这个镜像文件下载。我觉得镜像文件是img格式的,跟iso文件区别是&#xff…

牛客网刷题-(9)

🌈write in front🌈 🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流. 🆔本文由Aileen_0v0🧸 原创 CSDN首发🐒 如…

VisualSVN initialization failed, For more details see Output window.

VisualSVN initialization failed, For more details see Output window. 通过输出窗口查看详细日志地址: 打开日志,发现报错信息为:Cannot get image ‘742477e2-c767-429f-b906-6c553b7cd1d1:12, 9x16’ from the image service. 原因&a…

Java17-20新特性

目录 一、Java17新特性 1、switch语法的变化(预览) 2、Sealed Classes 3、伪随机数的变化 4、去除了AOT和JIT 二、Java18新特性 1、默认使用UTF-8字符编码 2、简单的web服务器 3、将被移除的方法 4、snippet注解 三、Java19新特性 1、Virtual Threads(Preview)虚拟…

vue图书馆书目推荐数据分析与可视化-计算机毕业设计python-django-php

建立本图书馆书目推荐数据分析是为了通过系统对图书数据根据算法进行的分析好推荐,以方便用户对自己所需图书信息的查询,根据不同的算法机制推荐给不同用户不同的图书,用户便可以从系统中获得图书信息信息。 对用户相关数据进行分析&#xff…

Flutter 05 组件状态、生命周期、数据传递(共享)、Key

一、Android界面渲染流程UI树与FlutterUI树的设计思路对比 二、Widget组件生命周期详解 1、Widget组件生命周期 和其他的视图框架比如android的Activity一样,flutter中的视图Widget也存在生命周期,生命周期的回调函数体现在了State上面。组件State的生命…

python自动化测试(九):EcShop添加商品功能

前置条件: 本地部署:ECShop的版本是3.0.0、Google版本是 Google Chrome65.0.3325.162 (正式版本) (32 位) py的selenium版本是3.11.0 目录 一、前置代码 二、添加商品操作 2.1 点击添加商品 2.2 添加名称、分类、品牌 2…

Java基础知识梳理(万字解析)

目录 数据类型 变量和常量 变量的命名规范 局部变量 类变量 实例变量 常量 运算符 java程序流程控制 Scanner类简单用法 方法 数组 面向对象Object-Oriented Programming(OOP) 类 对象 封装 继承 extends 多态 抽象 abstract 接口 i…

CSS3弹性布局

2009年,W3C提出一种崭新的布局方案—弹性盒(Flexbox)布局,使用该模型可以轻松地创建自适应窗口的流动布局,或者自适应字体大小的弹性布局。W3C的弹性盒布局分为旧版本、新版本及混合过渡版本3种不同的设计方案,其中混合过渡版本主…

「专题速递」数据驱动赋能、赛事直播优化、RTC技术、低延时传输引擎、多媒体处理框架、GPU加速...

点击文末阅读原文, 免费报名【抖音背后的体验增长实战揭秘】专场 随着全行业视频化的演进,营销、知识、商业和空间的交互体验正在被重塑。这种变化不仅仅是一种抽象的趋势,更是关系到用户留存和业务增长的关键因素。面对这样的挑战&#xff0…

技术报告模板:2023年全国大学生电子设计竞赛:运动目标控制与自动追踪系统(E题)

2023年全国大学生电子设计竞赛 运动目标控制与自动追踪系统(E题) 2023年8月4日 摘要:针对本题目的各项要求,本研究采用软硬件结合的方法设计了一套运动目标控制与自动追踪系统。该系统由OpenMV嵌入式计算机视觉平台、STM32单片机控…

[PHP]pearProject协作系统 v2.8.14 前后端

pearProject是一款轻量级的在线项目/任务协作系统,远程办公协作。 概述 PearProject 不支持 IE8 及以下版本,建议使用基于Webkit内核的现代浏览器访问 PearProject 为前后端分离架构,因此安装分为后端和前端两大部分,需要分别进…

定时器PWM输出

目录 介绍 PWM占空比 框图 输出比较 通道 1 输出比较功能为例 PWM 输出模式 PWM 边沿对齐模式 hal库代码 标准库代码 介绍 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微 处理器的数字输出来对模…

Android启动优化-全文详细

一个应用App的启动速度能够影响用户的首次体验,通常用户期望app响应和加载速度越快越好。一个启动速度慢的app很可能会给用户留下不好的印象,除了导致用户在应用市场上的打分低之外,很有可能导致致用户直接卸载。这种糟糕的体验可能会导致用户…

[译]CSS Animations 与 CSS Transitions

本文译者为 360 奇舞团前端开发工程师原文标题:CSS Animations Versus CSS Transitions原文作者:Kirupa Chinnathambi原文出处:《Creating Web Animations: Bringing Your UIs to Life》 在 CSS 中有两种设置动画的方式即 CSS animations 和 …

Modelsim 使用教程(3)——Projects

目录 一、概述 二、设计文件及tb 2.1 设计文件 counter.v 2.2 仿真文件 tcounter.v 三、操作流程 3.1 Create a New Project(创建一个新的工程) 3.2 Add Objects to the Project(把代码加入项目) 3.3 Compile the …

vue+vant图片压缩后上传

vuevant图片压缩后上传 vue文件写入 <template><div class"home"><van-field input-align"left"><template #input><van-uploaderv-model"fileList.file":after-read"afterRead":max-count"5":…

电子沙盘数字沙盘地理信息开发教程第17课

M3DGIS电子沙盘数字沙盘地理信息开发教程第17课新增加属性在MTGIS3d控件 public bool ShowFLGrid;//是否显 示方里网格。 public bool Atmosphere;//是否显示大气圈。&#xff08;因为WPF不支持shader功能&#xff0c;所以效果嘛。。。&#xff09; 在SDK中提供底层的模型访问接…

美观且可以很方便自定义的MATLAB绘图颜色

函数介绍 主函数是draw_test&#xff0c;用于测试函数。 draw_h是函数&#xff0c;用于给Matlab提供美观且可以很方便自定义的绘图颜色。 draw_h函数介绍 这是一个带输入输出的函数&#xff0c;输入1/2/3&#xff0c;输出下面三种颜色库的配色&#xff0c;每种库均有五种颜色…