NAT网络工作原理和NAT类型
NAT基本工作流程
通常情况下,某个局域网中,只有路由器的ip是公网的,局域网中的设备都是内网ip,内网ip不具备直接与外部应用通信的能力。
处于内网的设备如何借助NAT来实现访问外网的应用?
对于开启了NAT功能的局域网,其内部设备访问公网的流程大致是这样的:
- 内网设备向公网应用发起应用时,会在报文中携带目的ip+目的端口,同时也会带上自己的局域网ip+端口
- 设备的请求报文首先来到路由器,路由器开启了NAT功能
- 此时NAT程序会改写报文中源ip+源端口为当前路由器自己的ip+端口,同时将这组映射关系写到NAT映射表中,继续发送给公网设备
- 通过NAT映射表来记录这个映射关系,常规情况下,映射表是由设备局域网ip+局域网设备端口+路由器IP+路由器端口组成的
- 当外部应用的响应或请求来到路由器时,NAT程序会根据报文中的目的ip+目的端口,在映射表找到对应的局域网设备,将这个报文继续转发给局域网设备
- 一次完成的网络请求结束

NAT表的映射关系是由内网设备主动向公网设备发起请求而生成的。
公网设备无法主动访问内网设备,因此此时NAT表中不存在映射关系。
NAT打洞
在局域网中p2p设备同样是借助路由器的公网ip来完成数据传输的。
在p2p的通信模式下,每个peer需要知道对方peer的公网ip+端口,因此需要借助外部的服务来完成peer网络信息的交换,这个过程就是NAT打洞。
大致的流程:
- 每个peer向一个公共的服务器发送一个请求
- 服务器会记录下每个peer对应的公网ip,并把对方的公网ip发送给另一方
- 双方peer获取到对应的公网ip+端口,接下来进行p2p通信

NAT类型
现实情况中,NAT并没有理想中的简单,NAT的规则存在不同的差异,因此可以大致可以将NAT的类型分为四种
再强调一遍:
NAT表的映射关系是由内网设备主动向公网设备发起请求而生成的。
公网设备无法主动访问内网设备,因此此时NAT表中不存在映射关系。
完全圆锥形
在NAT表中,每个局域网ip+端口都映射一个公网IP+端口,
当由局域网设备发起的任何请求,不区分目的ip,都会经过同一个公网ip+端口改写,同样,当NAT收到外网的请求或响应时,只要是对应的端口,就转发给对应的局域网设备。

只要外网的请求或响应的目的端口是同一个,那么就会根据NAT映射表转发给对应的局域网设备
即一个局域网设备在NAT映射表中只有一条记录
受限圆锥形
受限圆锥形NAT也叫ip受限型NAT,在NAT表中,处理局域网ip+局域网端口+公网ip+公网端口外,还记录了一条目的ip
因此只有特定的外网ip的请求才能转发给内部局域网设备。
即一个局域网设备每次请求不同的目的ip,都会有一条映射关系在NAT表中

端口受限圆锥形
对于局域网设备的请求的目的ip+端口进行限制,即使同一个目的ip,但端口不一致,也会在NAT中存在一条映射关系。

只有外网设备特定的ip+特定的端口,才能将请求转发给局域网设备。
对称形NAT
前面三种类型的NAT,无论局域网设备的目的ip+目的端口如何变化,都会被映射为同一个的外网ip+外网端口。
但对于对称形NAT,一旦目的ip+目的端口发生变化,那么映射到的公网端口也是不同的。

在对称形NAT网络下,peer设备是无法打洞成功的,因为每次请求不同的ip+不同的端口,都会产生一个新的公网port,peer设备无法准确获取到对方的网络信息。
相关文章:
NAT网络工作原理和NAT类型
NAT基本工作流程 通常情况下,某个局域网中,只有路由器的ip是公网的,局域网中的设备都是内网ip,内网ip不具备直接与外部应用通信的能力。 处于内网的设备如何借助NAT来实现访问外网的应用? 对于开启了NAT功能的局域网…...
wget命令之Tomcat(三)
引言 Tomcat是一个开源的Java Web应用服务器,实现了多个关键的Java EE规范,包括Servlet、JSP(JavaServer Pages)、JavaWebSocket等。由于Tomcat技术先进、性能稳定且免费,它成为了许多企业和开发者的首选Web应用服务器…...
IP地址修改器 5.0 重制版
IP地址修改器是一款由 kn007 大佬编写的一个小工具,可以帮助小白用户方便的进行IP地址,网卡MAC修改等等功能,工具支持多网卡,并且支持管理导入多份配置等。 程序主要原理还是利用了WMI的Win32_NetworkAdapter、Win32_NetworkAdap…...
vscode编译s32ds工程
基本可以参考下面的文章,但是需要注意的是添加完环境变量后需要重启一下vscode。我现在已经能顺利编译。感谢原创 阿隆汽车 MBD_杂谈_使用VSCode编译s32k_vscode s32k-CSDN博客 https://blog.csdn.net/ALongAuto/article/details/134961294...
大数据专业为什么要学习Hadoop课程
在当今信息爆炸的时代,大数据成为了影响各行各业的重要因素,而Hadoop作为大数据处理的核心技术之一,自然成为大数据专业学生需要掌握的一项重要技能。本文将详细探讨大数据专业为何要学习Hadoop课程,帮助读者理解其必要性和实际应…...
Xilinx FPGA的Vivado开发流程
Xilinx FPGA 的 Vivado 开发流程主要包括以下步骤: 创建工程: 启动 Vivado 软件:双击 Vivado 图标打开软件。新建工程向导:在 Quick Start 中选择 Create Project,打开新建工程向导。设置工程信息: 工程名称…...
音频模型介绍
在处理音频数据方面,有多种模型表现出色,它们在不同的音频处理任务上有着各自的优势: 自动编码器:包括多通道变分自动编码器、自回归模型和生成对抗网络等,这些模型在音乐生成领域取得了令人印象深刻的成果。 深度生成…...
《编写沪深两市实时交易数据接收程序全攻略》
《编写沪深两市实时交易数据接收程序全攻略》 一、引言二、获取股票数据的方法(一)使用爬虫框架(二)调用股票接口(三)使用免费数据 API(四)利用 Excel 的 power query 三、数据接口及…...
一文学会easyexcel导入数据,多sheet页、字典转换【附带源码】
文章目录 前言一、业务流程二、实现1、引入easyexcel、fastjson、lombok包2、创建Json工具类3、创建自定义字典转换注解4、创建字典转换实现类5、创建数据对象类6、创建多sheet页封装对象7、创建Excel导入工具类8、创建测试类 三、接口测试1、启用项目2、使用数据导出的文件&am…...
Spring中的 InitializingBean、BeanPostProcessor、@PostConstruct 等初始化动作的执行时机分析
初始化Bean的时序图如下: 小结说明: 1、相同点:InitializingBean 的(afterPropertiesSet方法)、BeanPostProcessor、PostConstruct 都是在bean的属性注入完毕之后才执行,都可以用来进行bean的初始化动作 2、初始化执行顺序优先级…...
如何利用指纹浏览器爬虫绕过Cloudflare的防护?
网络爬虫能够系统地浏览网页并提取所需的数据,通常被用于市场研究、数据分析或者竞争情报。然而,一些反爬虫机制给网络爬虫的工作带来了不少挑战和风险。 其中,Cloudflare提供了多层次的防护机制,包括IP封锁、速率限制、CAPTCHA验…...
idea 基础简单应用(java)
Java IDE(集成开发环境)的使用方法因不同的IDE而异,但通常都包含一些基本的操作和功能。以下以IntelliJ IDEA这一流行的Java IDE为例,介绍Java IDE的基本使用方法与指南: 一、下载与安装 请点击观看 idea免费安装步…...
windows环境下vscode下载安装
vscode官网 1.vscode官网:Visual Studio Code - Code Editing. Redefined 进入官网,点击下载 右键文件,以管理员方式运行,开始安装 第一步:同意此协议 第二步:更改安装位置,可以在d盘新建一个文件夹&…...
Obsidian之与Typora图片格式相互兼容
来源 [Obsidian之与Typora图片格式相互兼容 - 简书 (jianshu.com)](https://www.jianshu.com/p/303433fe82b9) 下载插件customer attachment location,并设置...
美半导体巨头正切断中国供应链,给自己“挖坑”?
美国对华半导体“脱钩断链”政策持续升级,近日开始对半导体产业链进行“去中化”。 据外媒《华尔街日报》11月5日报道,受美国政府最新指令指示,美国半导体巨头应用材料公司(Applied Materials)和泛林集团(L…...
RHCE---搭建lnmp云存储
一、恢复快照后,检查安全性(查看selinux 以及防火墙) 二、搭建LNMP环境 [rootserver ~]# yum -y install nginx mariadb-server php*三、上传软件 1、将nextcloud-25.0.1.zip压缩包传递到根目录下 2、解压缩nextcloud-25.0.1.zip …...
一些 uniapp相关bug
1.当input聚焦时布局未上移 <scroll-view style"height: calc(100vh - 100rpx - 38rpx)" :scroll-y"true"><wd-form ref"formRef" :model"fbObj">....<wd-inputlabel"联系方式"prop"contact"clear…...
操作系统-4.2文件系统的层次结构虚拟文件系统
文章目录 文件系统的层次结构物理格式化open系统调用打开文件的背后过程图中内容解释文件打开的详细步骤操作总结 虚拟文件系统1. **虚拟文件系统的作用**2. **虚拟文件系统的结构**3. **VFS 工作机制**4. **VFS 的优点** 文件系统的层次结构 用一个例子来辅助记忆文件系统的层…...
【深度学习】DreamClear:提升图片分辨率的模型
基于PixArt-XL-2模型,效果很好。 DreamClear:高容量真实世界图像修复与隐私安全数据集构建 在图像修复领域,处理真实世界中的低质量(Low-Quality, LQ)图像并恢复其高质量(High-Quality, HQ)版本一直是一个具有挑战性的任务。今天,我们将介绍一个最新的开源项目——Dr…...
操作系统进程互斥的四种软件实现和三种硬件实现
进程互斥是操作系统中保证多个进程不会同时访问共享资源的一种机制。 进程互斥的四种软件实现方式: 一、单标志法 核心思想:使用一个布尔变量(或称为标志位)来表示临界区的访问权限。该变量为true时表示允许某个进程访问临界区&…...
AI 视频创作系统:新媒体高效增收工具,AI 自动成片,持续输出优质内容
一、新媒体行业增收难,传统创作模式遇瓶颈如今做新媒体账号想要稳定盈利,离不开高频优质内容输出。但多数从业者普遍面临诸多难题:人工写脚本耗时费力,实拍剪辑流程繁琐,长期聘请专职人员开支巨大;内容产出…...
IDE扩展管理套件:实现配置即代码与团队环境同步
1. 项目概述:一个为开发者定制的IDE扩展管理套件如果你和我一样,每天的工作都离不开各种集成开发环境(IDE),比如 Visual Studio Code、IntelliJ IDEA 或者 PyCharm,那你一定对“扩展”或“插件”又爱又恨。…...
开发者必备:极简CLI工具高效管理个人代码片段库
1. 项目概述:一个面向开发者的代码片段管理工具最近在整理自己的开发环境,发现一个挺普遍的问题:那些临时写出来、解决了某个具体问题、但又不够格放进正式项目库的代码片段,到底该放哪儿?它们就像散落在硬盘各处的“知…...
基于SpringBoot的民宿预订与评价系统毕业设计
博主介绍:✌ 专注于Java,python,✌关注✌私信我✌具体的问题,我会尽力帮助你。一、研究目的本研究旨在构建一个基于Spring Boot与Vue框架的民宿预订与评价系统以解决当前旅游住宿服务领域存在的信息不对称问题用户体验碎片化问题以及数据管理分散化问题该…...
别再只用脚本了!用MATLAB面向对象编程重构你的科研数据处理流程(附完整Point类示例)
别再只用脚本了!用MATLAB面向对象编程重构你的科研数据处理流程(附完整Point类示例) 科研数据处理中,你是否经常遇到这样的场景:同一个实验数据需要反复处理,每次都要复制粘贴大段脚本;变量命名…...
5步构建智能建筑通信系统:BACnet4J纯Java协议栈的架构师指南
5步构建智能建筑通信系统:BACnet4J纯Java协议栈的架构师指南 【免费下载链接】BACnet4J BACnet/IP stack written in Java. Forked from http://sourceforge.net/projects/bacnet4j/ 项目地址: https://gitcode.com/gh_mirrors/ba/BACnet4J 在智能建筑和工业…...
从Halo部署到公网访问:手把手教你用Nginx反代搞定域名、HTTPS与安全配置
从Halo部署到公网访问:Nginx反代全流程实战指南 当你成功在本地服务器上部署了Halo博客系统,看着8080端口的测试页面时,是否思考过如何让它成为真正的互联网站点?本文将带你跨越从本地测试到公网可访问的最后一道鸿沟,…...
Chat-with-NeRF:三维场景重建与对话式AI的融合实践
1. 项目概述:当NeRF遇见对话式AI最近在三维视觉和AIGC的交叉领域,一个名为“chat-with-nerf”的项目引起了我的注意。简单来说,它实现了一个听起来很科幻的功能:你上传一张或多张照片,系统会基于这些照片重建出一个三维…...
避坑指南:用TensorFlow 2.x和HuggingFace Transformers搞定中文NER,我踩过的这些坑你别再踩
中文NER实战避坑手册:TensorFlow 2.x与HuggingFace Transformers的进阶技巧 在自然语言处理领域,命名实体识别(NER)一直是核心任务之一。对于中文文本而言,由于语言特性的差异,开发者往往会遇到比英文NER更…...
QMCDump终极指南:快速免费解锁QQ音乐加密文件,重获数字音乐自由 [特殊字符]
QMCDump终极指南:快速免费解锁QQ音乐加密文件,重获数字音乐自由 🎵 【免费下载链接】qmcdump 一个简单的QQ音乐解码(qmcflac/qmc0/qmc3 转 flac/mp3),仅为个人学习参考用。 项目地址: https://gitcode.co…...
