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

【Router】路由器中NAT、NAPT、NPT是什么?

参考链接

NAT vs. NAPT: What’s the Difference?

IPv6 Network Prefix Translation (NPt) | pfSense Documentation (netgate.com)

趣谈NAT/NAPT的原理,这篇不可不读! - 知乎 (zhihu.com)

NAT (Network Address Translation) 

NAT说明

        NAT(网络地址转换)的功能主要是通过修改 IP 数据包标头中的网络地址信息来重新映射 IP 地址。它广泛用于路由器中,将私有地址转换为单个公共地址,确保私有网络内多个设备的无缝互联网连接。NAT 是一种工具,用于在每个设备的唯一公有 IP 不切实际或不必要的情况下保留公有 IP 地址。

         NAT 更侧重于转换 IP 地址,而不太关心通过其的流量的具体情况。它在操作方面更简单,并保持了将私有网络地址转换为公共网络地址以进行 Internet 通信的基本要求。NAT 在个人会话差异化不是优先事项的网络中非常有效。

        NAT 的基本原理是转换一对一或多对一 IP 地址。这意味着它可以将多个私有地址转换为单个公共地址,也可以将特定的公共地址分配给特定的私有地址。这是网络中的一项基本技术,可在使用有限的公有 IP 地址池的同时促进外部访问。

NAT工作原理

  • 当内网主机需要访问公网设备时,NAT的设备需要从地址池中挑选一个空闲的公网IP地址,建立与内网主机报文源ip地址间的一个NAT转换表项(正反向)。
  • 根据这个表项然后把报文的私有源IP改成公网IP然后发送出去
  • NAT设备收到公网主机的回应报文后,根据其目的IP地址查找反向的NAT表项,依据查表结果将报文转换后向内网主机的发送

NAPT (Network Address Port Translation)     

NAPT介绍  

         NAPT(网络地址端口转换)是 NAT 的一个子类型,它还通过将端口号与 IP 地址一起转换来扩展此功能。这意味着 NAPT 不仅将私有 IP 地址转换为公共 IP 地址,而且还跟踪端口号以区分多个 Internet 会话。它特别适用于通过单个公有 IP 处理大量设备的流量,管理地址和端口信息以促进互联网连接。

        另一方面,NAPT 更加复杂,因为它同时处理 IP 地址和端口号。这种复杂性允许对 Internet 流量进行更高效、更详细的管理,因为它可以通过使用不同的端口号处理来自单个 IP 地址的多个连接。NAPT 的附加转换层使其在复杂的网络场景中更加通用

       NAPT 的运作更加动态。它不仅执行 IP 地址转换,还修改端口号,从而实现多对多转换功能。NAPT 的这一功能使其能够管理和区分源自同一设备的多个会话或连接,从而更有效地处理复杂的网络流量场景。

       NAPT,网络端口地址转换,它是属于一种多对一的地址转换,它通过使用“ip地址+端口号”的形式进行转换,使多个内网的用户可以共用一个公网的IP地址来访问外网。

NAPT工作原理

  • 当内网主机需要访问公网设备时,NAT设备从地址池中选取一对空闲的“公网ip地址+端口号”,建立与内网报文“源ip地址+源端口号”间的NAPT转换表项(正反向)。
  • 根据表项把报文“源ip和源端口”改成“公网ip和端口”后转发出去。
  • NAT设备收到公网主机的回应报文后,根据其“目的IP地址+目的端口号”查找反向NAPT表项,依据查表结果将报文转换后向私网主机发送。

NAT实现主要包括: Easy IP、地址池NAT(NAPT). NAT Server和静态NAT/NAPT 

Easy IP

       Easy IP方式可以利用访问控制列表来控制哪些内部地址可以进行地址转换。Easy IP方式特别适合小型局域网访问Internet 的情况。这里的小型局域网主要指中小型网吧、小型办公室等环境.一般具有以下特点:内部主机较少、出接口通过拨号方式获得临时公网IP 地址以供内部主机访问Internet。

NAT Server

       当外网用户访问内网服务器时,NAT Server通过事先配置好的“公网IP地址+端口号”与“私网IP地址+端口号”间的映射关系,将服务器的“公网IP 地址+端口号”,根据映射关系替换成对应的“私网IP地址+端口号”。

静态NAT

       是指在进行NAT转换时,内部网络主机的IP 同公网IP 是- -对静态绑定的,静态NAT中的公网IP只会给唯一且固定的内网主机转换使用。

静态NAPT

        是指“内部网络主机的IP+协议号+端口号”同“公网IP+协议号+端口号”是一对一静态绑定的,静态NAPT中的公网IP可以为多个私网IP使用。

Network Prefix Translation (NPT)

       网络前缀转换(简称NPT)的工作方式类似于 1:1 NAT。NPT有几个用途,但许多人质疑它的实际用途。跟 NPT“私有” IPv6 空间 () 可以在 LAN 上使用,并且可以 由 NPT转换为公共的路由 IPv6 前缀,因为它来来去去 一个 WAN。这种做法的效用是值得商榷的。一种用途是避免对 LAN 重新编号 如果外部提供商发生变化,但是由于任何外部查找 旧的前缀也必须进行调整,它的有用性可以是两种方式, 尤其是当配置必须考虑避免 VPN 隧道空间中的冲突时。

IPv6 NPT规则

ip6tables -t nat -A POSTROUTING -o eth0.99 -j NETMAP --to 2607:xxx::/64 -s fda3:xxx::/64
ip6tables -t nat -A PREROUTING -i eth0.99 -j NETMAP -d 2607:xxx::/64 --to fda3:xxx::/64

相关文章:

【Router】路由器中NAT、NAPT、NPT是什么?

参考链接 NAT vs. NAPT: What’s the Difference? IPv6 Network Prefix Translation (NPt) | pfSense Documentation (netgate.com) 趣谈NAT/NAPT的原理,这篇不可不读! - 知乎 (zhihu.com) NAT (Network Address Translation) NAT说明 NAT&#x…...

代码随想录算法训练营第三十九天|背包问题,416. 分割等和子集

背包问题,416. 分割等和子集 背包问题416. 分割等和子集 背包问题 有N件物品和一个最多能背重量为W 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 卡玛网的…...

可调用对象和Lambda

可调用对象: 函数 函数指针 函数对象 Lambda表达式(匿名函数) 01 函数对象 如果一个类实现了"函数调用运算符()"的重载,那么这个类的对象称为函数对象(仿函数) 函数对象的行为,类似于函数,可以被调用 #include …...

华为认证HCIE存储考啥?未来发展方向在哪?一个月就能轻松拿下?

说起HCIE,很多人第一反应都是路由交换、网络安全那些“热门”方向,而存储方向反而成了小众的存在。 其实,存储的江湖地位一点不低,尤其在数据爆炸的时代。 今天咱们就聊聊HCIE存储考什么、为什么要学,以及未来的可能…...

如何让自己的网站,被更多的人搜索到(免费方案)

文章目录 一、要做时间的朋友二、需要独立IP的服务器三、SEO信息如何设置设置网站TDK生成网站地图设置搜索引擎自动提交部署SSL证书加分项:定期更新文章 引言: 许多人都有这样一个问题:做好自己的网站,如何让这个网站被更多的人浏…...

Modbus 协议:工业自动化领域的通信脊梁

一、引言 在当今工业自动化的舞台上,数据的准确传输和设备间的有效通信是实现高效生产、精准控制的关键。Modbus 协议作为一种应用广泛、历史悠久的通信协议,在工业领域发挥着举足轻重的作用。从工厂的生产线到智能建筑的控制系统,从能源管理…...

函数的力量:掌握C语言的基石

目录 前言 标准库:C语言的百宝箱 头文件:库函数的藏宝图 实例分析:计算平方根的sqrt函数 功能描述 头文件包含的重要性 库函数文档的一般格式 自定义函数:释放你的编程创造力 函数的语法形式 函数的比喻 函数的举例 简化…...

U-Boot的移植流程

U-Boot的简化版启动流程: 1、设置状态寄存器 cpsr ,使CPU进入 SVC 特权模式,并且禁止 FIQ 和 IRQ; 2、关闭看门狗、中断、MMU、Cache; 3、初始化部分寄存器和外设(时钟、串口、Flash、内存)&…...

xRDP – 在 Ubuntu 18.04、20.04、22.04、22.10、23.04(脚本版本 1.4.7)上轻松安装 xRDP

最新脚本Repository | c-nergy.be 概述 到目前为止,您应该知道 xrdp-installer 脚本旨在简化 xRDP 在 Ubuntu 操作系统上的安装和配置后操作。xRDP 是一款在 Linux 上启用远程桌面服务的软件。这意味着 Windows 用户可以使用他们的远程桌面客户端 (mst…...

[Linux网络编程]04-多进程/多线程并发服务器思路分析及实现(进程,信号,socket,线程...)

一.思路 实现一个服务器可以连接多个客户端,每当accept函数等待到客户端进行连接时 就创建一个子进程; 核心思路:让accept循环阻塞等待客户端,每当有客户端连接时就fork子进程,让子进程去和客户端进行通信,父进程用于…...

《OpenCV计算机视觉》—— 年龄与性别预测

结合以下链接中的文章有助于理解此篇案例: OpenCV中的 cnn 模块 https://blog.csdn.net/weixin_73504499/article/details/142965441?spm1001.2014.3001.5501 此案例是通过使用OpenCV中的cnn模块来调用别人已经训练好的深度学习模型,此篇案例中用到了…...

详解23种设计模式——第一部分:概述+创建型模式

目录 1. 概述 2. 创建型模式 2.1 简单(静态)工厂模式 2.1.1 介绍 2.1.2 实现 2.2 工厂模式 2.3 抽象工厂模式 2.4 单例模式 2.4.1 饿汉模式 2.4.2 懒汉模式 2.4.3 线程安全的懒汉式 2.4.4 DCL单例 - 高性能的懒汉式 2.5 建造者模式 2.6 原…...

semi-Naive Bayesian(半朴素贝叶斯)

semi-Naive Bayesian(半朴素贝叶斯) 引言 朴素贝叶斯算法是基于特征是相互独立这个假设开展的(为了降低贝叶斯公式: P ( c ∣ x ) P ( c ) P ( x ∣ c ) P ( x ) P(c|x) \frac {P(c)P(x|c)}{P(x)} P(c∣x)P(x)P(c)P(x∣c)​中后验概率 P …...

大语言模型(LLM)入门级选手初学教程

链接:https://llmbook-zh.github.io/ 前言: GPT发展:GPT-1 2018 -->GPT-2&GPT-3(扩大预训练数据和模型参数规模)–> GPT-3.5(代码训练、人类对齐、工具使用等)–> 2022.11 ChatG…...

HTML 实例/测验之HTML 基础一口气讲完!(o-ωq)).oO 困

HTML 基础 非常简单的HTML文档 <!DOCTYPE html> <html><head><title>页面标题(w3cschool.cn)</title></head><body><h1>我的第一个标题</h1><p>我的第一个段落。</p></body> </html> 输出&a…...

c语言基础程序——经典100道实例。

c语言基础程序——经典100道实例 001&#xff0c; 组无重复数字的数002&#xff0c;企业发放的奖金根据利润提成003&#xff0c;完全平方数004&#xff0c;判断当天是这一年的第几天005&#xff0c;三个数由小到大输出006&#xff0c;输出字母C图案007&#xff0c;特殊图案008&…...

火星求生CE修改金钱,无限资金

由于火星求生前期没有资金非常难玩&#xff0c;想通过修改资金渡过前期&#xff0c;网上找了一圈修改器&#xff0c;只有修改无限声望和无限科研&#xff0c;就是没有无限资金&#xff0c;于是自己用CE修改 教程 首先查看自己资金是多少M&#xff0c;如下图我是22430M资金&…...

linux 内存管理-slab分配器

伙伴系统用于分配以page为单位的内存,在实际中很多内存需求是以Byte为单位的,如果需要分配以Byte为单位的小内存块时,该如何分配呢? slab分配器就是用来解决小内存块分配问题,也是内存分配中非常重要的角色之一。 slab分配器最终还是由伙伴系统分配出实际的物理内存,只不过s…...

docker-compose部署gitlab(亲测有效)

一.通过DockerHub拉取Gitlab镜像 docker pull gitlab/gitlab-ce:latest 二.创建目录 mkdir -p /root/tool/gitlab/{data,logs,config} && cd /root/tool/gitlab/ 三.编辑DockerCompose.yaml文件 vim /root/tool/gitlab/docker-compose.yml version: "3&quo…...

Leetcode 赎金信

利用hash map做 java solution class Solution {public boolean canConstruct(String ransomNote, String magazine) {//首先利用HashMap统计magazine中字符频率HashMap<Character, Integer> magazinefreq new HashMap<>();for(char c : magazine.toCharArray())…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中&#xff0c;我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道&#xff0c;它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面&#xff0c;gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress&#xff0c;说明目标所使用的cms是wordpress&#xff0c;访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制

使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下&#xff0c;限制某个 IP 的访问频率是非常重要的&#xff0c;可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案&#xff0c;使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...

C#学习第29天:表达式树(Expression Trees)

目录 什么是表达式树&#xff1f; 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持&#xff1a; 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...