NAT和内网穿透

NAT(Network Address Translation,网络地址转换)是一种广泛应用于计算机网络的技术,其主要目的是为了解决IPv4地址空间的短缺问题,并且增强网络安全。NAT技术允许一个私有网络内的多个设备共享一个或几个全局唯一的公共IP地址访问互联网。

1 地址划分

在 A、B、C 分类地址,实际上有分公有 IP 地址和私有 IP 地址 。

2 NAT

当一个私有网络中的设备需要访问互联网时,NAT设备(通常是路由器)会将其私有IP地址和端口号转换为一个公有IP地址和一个新的端口号;对于进入私有网络的数据包,NAT设备会根据其维护的转换表,将数据包的目的地址和端口转换回对应的私有IP地址和端口。

类型

  • 静态NAT:一对一的转换,一个私有IP地址永久映射到一个固定的公有IP地址。适用于需要从外部直接访问内部服务器的情况。(好像没什么意义?)

  • 动态NAT:临时分配一个公有IP地址给私有IP地址,当私有IP不再需要访问互联网时,这个公有IP可以被释放并分配给其他设备。

  • NAPT(Network Address Port Translation,网络地址端口转换):最常用的NAT形式,不仅转换IP地址,还转换端口号,使得多个私有IP地址可以共享一个公有IP地址。这是解决IPv4地址短缺问题的关键技术。

NAPT白话总结就是:通过路由器把局域网的私有地址和端口转化为公有地址和端口(修改IP首部中的源IP),并记录在转换表中;同时根据转换表把进入局域网的公有地址和端口转换回去(修改IP首部中的目的IP)。

主要问题

由于 NAT/NAPT 都依赖于自己的转换表,因此会有以下的问题:

  • 外部无法主动与 NAT 内部服务器建立连接,因为 NAPT 转换表没有转换记录。

  • 转换表的生成与转换操作都会产生性能开销。

  • 通信过程中,如果 NAT 路由器重启了,所有的 TCP 连接都将被重置。

3 内网穿透

也叫NAT穿透或NAT打洞,是一种网络通信技术,旨在解决私有网络(内网)中的设备与互联网上的其他设备直接通信的问题。由于大多数家庭和企业网络都配置在私有IP地址空间内,并通过NAT设备(如家庭路由器)连接到互联网,这些内网设备通常无法从外部网络直接访问。内网穿透技术就是为了克服这一限制的。

白话就是,内网中设备通过客户端和中继服务器(穿透服务器)建立连接,中继服务器提供一个公网地址,并将外部请求转发到内网中的设备。

基本原理

内网穿透的核心在于如何让外部网络的数据包能够穿越NAT设备,准确地找到并到达内网中的目标设备。主要有以下几种实现方式:

  1. UDP打洞:利用UDP协议的无连接特性,两台位于不同内网的设备先通过一个有公有IP的中继服务器建立初步连接。一旦双方知道了对方的公有IP地址和端口号,它们尝试直接发送UDP数据包给对方。如果NAT设备允许外部未建立连接的UDP数据包进入,并且记录了之前的外出连接信息,那么数据包就能成功穿透NAT到达对端。

  2. TCP中继/反向代理:对于TCP连接,由于其面向连接的特性,直接打洞较为困难。此时可以通过一个具有公有IP的服务器作为中继,内网设备先与中继服务器建立连接,之后外部设备通过连接该中继服务器间接与内网设备通信。这种方式牺牲了一定的通信效率,但适用性更广。

  3. STUN/TURN/ICE协议:这些是VoIP和P2P应用中常用的协议,用来帮助实现NAT穿越。STUN(Session Traversal Utilities for NAT)帮助客户端发现自己的公网地址和NAT类型;TURN(Traversal Using Relays around NAT)作为一种备份方案,提供中继服务;而ICE(Interactive Connectivity Establishment)则是结合STUN和TURN,自动选择最优的通信路径。

  4. 第三方服务和软件:如Ngrok、花生壳、FRP、ZeroTier等,提供了易于使用的内网穿透服务,用户只需简单配置即可将自己的内网服务暴露给互联网访问,无需深入了解底层技术细节。

应用场景

  • 远程访问:如远程桌面控制、文件共享,允许用户从任意位置安全地访问内网资源。

  • 个人服务器:让运行在家庭网络中的Web服务器、游戏服务器等可以被外部用户访问。

  • IoT设备管理:便于远程管理和监控物联网设备。

  • P2P通信:支持点对点的直接连接,如视频会议、即时通讯软件等。

注意事项

  • 安全性:内网穿透增加了潜在的安全风险,需要采取适当的安全措施,如使用加密通信、访问控制等。

  • 性能:通过中继或代理的通信可能会增加延迟和减少带宽效率。

  • 兼容性:不同的NAT类型(如完全圆锥型、地址限制型、端口限制型等)对内网穿透的支持程度不同,可能会影响技术的实施效果。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Python实战因果推断】2_因果效应异质性2

目录 CATE with Regression Evaluating CATE Predictions CATE with Regression 我想你可能已经预料到了:与应用因果推理中的大多数情况一样,答案往往从线性回归开始。但在走这条路之前,让我们把事情变得更具体一些。假设你在一家遍布全国的…

nuxt3项目打包后获取.env设置的环境变量无效的解决办法

问题描述 在nuxt3项目开发过程中,设置了开发环境变量和生产环境变量,在本地开发时都能正常获取,但打包部署时获取不到,设置如下: //.env.development文件示例 SERVER_API_PATHhttp://192.168.25.100//.env.productio…

Shell (一)Ubuntu的网络配置及软件安装

Ubuntu的配置及软件安装 网络配置 虚拟机提供的网络类型 桥接模式 主机和虚拟机分别拥有不同的ip地址,可以实现和外界设备通信 NAT模式 也可以联网,但是和主机共用同一个ip地址,外界无法识别虚拟机和主机发送的信息 仅主机模式 虚拟机不可…

【Chapter9】设备与IO管理,计算机操作系统教程,第四版,左万利,王英

文章目录 [toc]零、设备管理的功能和目标0.1 设备管理的功能0.2 设备管理的目标 一、设备的分类1.1 输入输出型设备和存储型设备(用途)1.2 独占型设备和共享型设备 二、设备的物理特性2.1 IO设备的物理特性2.2 存储型设备的物理特性2.2.1 磁带的物理特性…

nest.js关键笔记

Nest.js 介绍核心功能设计模式:IOC 控制反转 DI 依赖注入前置知识:装饰器前置知识装饰器-实现一个GET请求 Nestjs脚手架Nestjs cli 常用命令 RESTful 风格设计Nestjs 控制器控制器中常见的参数装饰器 Session 实例Nestjs 提供者工厂模式异步模式 Nestjs …

高中数学:不等式-常用不等式知识点汇总

一、基本性质 比较大小的常用两种方法:作差法,作商法 等式性质 不等式性质 二、基本(均值)不等式 扩展 三、二次函数与一元二次方程不等式 定义 解的对应关系 一元二次不等式的求解过程 四、二元一次不等式(组)与线性规划 关键在于求多个不等…

vite-ts-cesium项目集成mars3d修改相关的包和配置参考

如果vite技术栈下使用原生cesium,请参考下面文件的包和配置修改,想用原生创建的viewer结合我们mars3d的功能的话。 1. package.json文件 "dependencies": {"cesium": "^1.103.0","mars3d": "^3.7.18&quo…

pytorch为自己的extension backend添加profiler功能

pytorch为自己的extension backend添加profiler功能 1.参考文档2.your-extension-for-pytorch需要增加的代码3.pytorch demo及如何调整chrome trace json文件4.[可视化](https://ui.perfetto.dev/) 本文演示了pytorch如何为自己的extension backend添加profiler功能 背景介绍 …

Verilog进行结构描述(二):Verilog基本单元(primitives)

目录 1.Verilog基本单元2.基本单元的引脚 (pin)的可扩展性3.带条件的基本单元4.基本单元实例化 微信公众号获取更多FPGA相关源码: 1.Verilog基本单元 Verilog基本单元提供基本的逻辑功能,也就是说这些逻辑功能是预定义的,用户不需要再定义…

后端之路第三站(Mybatis)——JDBC跟Mybatis、lombok

一、什么是JDBC JDBC就是sun公司研发的一套通过java来操控数据库的工具,对应不同的数据库系统有不同的JDBC,而他们统称【驱动】,这就是上一篇我们提到创建Mybatis项目时要引入的依赖、以及连接数据库四要素里的第一要素。 JDBC有自己一套原始…

应用案例 | 如何监测高价值货物在物流运输过程中受到的振动和冲击?全面保障货物安全

一、货物运输 不同种类的货物对运输的要求不同,钢铁、煤炭、矿石等大宗物资通常对运输要求较低,而电子产品、IT 产品、家电等高价值敏感类货物则更强调运输的安全性和时效性,往往希望能尽可能安全和快速送达这类货物,使之尽快进入…

使用nvm命令进行node和npm版本下载以及切换

下载以及安装nvm方式 https://blog.csdn.net/ppz8823/article/details/130862191 1.查看nvm版本 nvm -v2.查看node 和 npm版本 node -v npm -v3.使用nvm查看已下载的node版本 nvm ls4.使用nvm 查看可使用的在线node版本 nvm list available4.下载想要使用的node版本&#x…

探索 LLMs 在数据标注中的应用潜力:观察、思考与前景展望

编者按: 目前,LLMs 在机器翻译、文本生成、多轮问答等任务上已表现得非常出色了。人们开始思考它们是否也可以用于数据标注工作。数据标注是训练和评估各种机器学习模型的基础,一直是一项昂贵且耗时的工作。是否能够借助 LLMs 的强大能力来为…

OpenAI将终止对中国提供服务,国内模型接棒

说起来,OpenAI自始至终就没有对中国提供过服务,OpenAI官方支持的国家和地区:https://platform.openai.com/docs/supported-countries 列表里面没有“Chinese”的选项,那为什么又要明令禁止呢,国类IT高手们&#xff0…

来给大家推荐得10个有效磁力导航链接(好用搜资料找资源)

都2024现在网上找资源像流水得鱼一样,抓一大把结果很难吃,我通宵特意整理的网站,网上有许多磁力导航网站可以提供海量的磁力链接资源,以下是一些有效的磁力导航网站推荐: 磁力搜索 网站地址:www.chiliso…

我国氮化硼市场规模逐渐扩大 市场集中度有望不断提升

我国氮化硼市场规模逐渐扩大 市场集中度有望不断提升 氮化硼(BN)俗称为白石墨,是由硼原子和氮原子所构成的一种晶体材料,在常温条件下多表现为一种棕色或暗红色晶体。氮化硼具有导热性好、硬度大、熔点高、抗化学侵蚀性等优点&…

flex 与 overflow 冲突

问题场景&#xff1a; 父盒子高度会变化&#xff0c;可能会比子盒子大&#xff0c;也可能会比子盒子小。 比子盒子大的时候&#xff0c;希望子盒子垂直居中&#xff1b;比子盒子小的时候&#xff0c;能够正常滚动&#xff1b; <body><div class"outer">…

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第49课-机器人自动跳舞

【WEB前端2024】3D智体编程&#xff1a;乔布斯3D纪念馆-第49课-机器人自动跳舞 使用dtns.network德塔世界&#xff08;开源的智体世界引擎&#xff09;&#xff0c;策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界引擎…

vscode下无法识别node、npm的问题

node : 无法将“node”项识别为 cmdlet、函数、脚本文件或可运行程序的名称 因为node是在cmd安装的&#xff0c;是全局安装的&#xff0c;并不是在这个项目里安装的。 解决方案&#xff1a; 1.在vscode的控制台&#xff0c;针对一个项目安装特定版本的node&#xff1b; 2.已经…

SAP标准报表 S_ALR_8701XXXX是没有export to excel的 或者禁用 %PC也禁用了,如何开回来

以 s_alr_87012172为例子 系统-状态 进入程序 搜索 XXL 做下替换