【NAT】NAT:实现网络地址转换

news2024/11/17 7:20:28

目录

  • 什么是NAT?
  • NAT的功能
  • NAT的弊端
  • NAT的工作原理
  • NAT分类
    • SNAT(源NAT)
    • DNAT(目的NAT)
    • 双向NAT


什么是NAT?

NAT是一种在IP数据包传输过程中,将源IP地址或目标IP地址在私有网络和公有网络之间进行转换的技术

通过NAT,私有网络中的设备可以使用私有IP地址进行内部通信,同时能够借助公有IP地址与互联网上的设备进行通信。这种方式不仅解决了IP地址不足的问题,还增强了网络的安全性。


NAT的功能

主要功能有以下几点:

  1. 节省公网IP地址:通过地址复用,多个私有IP地址可以共享一个公网IP地址进行通信。
  2. 增强安全性:NAT隐藏了内部网络的真实IP地址,使得外部网络难以直接访问内部设备,从而提高了网络的安全性。
  3. 控制访问:NAT可以控制哪些内部设备可以访问外部网络,以及哪些外部设备可以访问内部网络。

NAT的弊端

尽管在表面上看,NAT似乎真的没有缺点,除了节约公网IP资源外,它还可以保护我们内部网络的安全。但是,完美无缺的事物是不存在的。在享受了NAT所带来的便利后,NAT技术的缺陷也逐渐引起了人们的重视。

  1. 增加了网络的复杂性和不可预测性

    NAT打破了IP网络的端到端通信模型,使得内部网络中的设备无法直接暴露给外部网络,这就导致该过程无法参与高层网络的一些协议,比如说非常重要的传输层协议——TCP和UDP,这对于需要建立稳定、持久连接的应用(如VoIP、视频会议等)来说,可能会引入额外的延迟、丢包或连接中断问题。

  2. 不能处理嵌入式IP地址或端口

    由于NAT设备只能修改正常位于IP头部,它只能翻译那些正常位于IP首部中的地址信息和TCP/UDP首部中的端口信息。不能翻译那些嵌入到应用数据部分的IP地址或端口信息。

尽管IPv6提供了充足的地址空间,但在IPv4到IPv6的过渡期内,NAT仍然扮演着重要角色。然而,这种过渡并非一帆风顺,需要解决大量的兼容性和互操作性问题。即便在IPv6全面普及之后,NAT可能仍然会在某些特定场景下继续使用,比如出于安全考虑或为了简化网络管理等。但这并不意味着NAT是一个完美的解决方案,它仍然需要与其他技术和策略相结合,以提供更全面、更可靠的网络服务。


NAT的工作原理

NAT的工作原理可以概括为两个过程:地址转换和会话建立。

  1. 地址转换:当数据包从内网发往外网时,NAT会更改数据包的源IP地址为公网IP地址;当数据包从外网回复内网时,NAT会更改数据包的目标IP地址为对应的私有IP地址。
  2. 会话建立:NAT维护一个会话表,记录每个会话的源IP地址、目标IP地址、源端口号和目标端口号等信息。通过会话表,NAT能够正确地将数据包转发给目标设备。

NAT分类

根据NAT转换是对报文中的源地址进行转换还是对目的地址进行转换,NAT可以分为源NAT、目的NAT和双向NAT。

SNAT(源NAT)

源NAT在NAT转换时,仅对报文中的源地址进行转换,主要应用于私网用户访问公网的场景。

根据转换时是否同时转换源端口号,源NAT可以细分为如下几种类型,详见下图。

在这里插入图片描述

  • NAPT在进行地址转换的同时还进行端口转换,可以实现多个私网用户共同使用一个公网IP地址上网。NAPT根据端口来区分不同用户,真正做到了地址复用。

DNAT(目的NAT)

目的NAT在NAT转换时,仅对报文中的目的地址和目的端口号进行转换,主要应用于公网用户访问私网服务的场景。当公网用户主机发送的报文到达NAT设备后,设备通过目的NAT技术将报文中的公网IPv4地址转换成私网IPv4地址,从而使公网用户可以使用公网地址访问私网服务。

根据转换前后的地址是否存在一种固定的映射关系,目的NAT可以细分为如下几种类型,详见下图。

在这里插入图片描述

  • 使用NAT Server时,需要先在设备上配置公网地址和私网地址的固定映射关系。配置完成后,设备将会生成Server-Map表项,存放公网地址和私网地址的映射关系。该表项将一直存在除非NAT Server的配置被删除。

双向NAT

双向NAT指的是在转换过程中同时转换报文的源信息和目的信息。双向NAT不是一个单独的功能,而是源NAT和目的NAT的组合。双向NAT是针对同一条流,在其经过设备时同时转换报文的源地址和目的地址。双向NAT主要应用在同时有外网用户访问内部服务器和私网用户访问内部服务器的场景。

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

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

相关文章

芯片设计五部曲之四 | 电磁玄学宗师——射频芯片

去年我们发布的《芯片设计五部曲》,还挺受欢迎的: 芯片设计五部曲之一 | 声光魔法师——模拟IC 芯片设计五部曲之二 |‍ 图灵艺术家——数字IC 芯片设计五部曲之三 | 战略规划家——算法仿真 不少人辗转问过我们下一集什么时候出。 放心,…

U盘不小心格式化了怎么恢复?别慌!教你快速恢复

在日常工作和生活中,U盘已成为我们存储和传输数据的重要工具。然而,有时由于误操作或其他原因,我们可能会不小心格式化U盘,导致重要数据的丢失。这时,如何恢复这些数据就显得尤为重要。下面,我们将介绍几种…

JS笔记

9.3 1.数据类型 1.1.Object 对象 对象:一切皆对象 面向过程:按照时间的发生顺序,从上往下依次执行 对象对象:指挥对象做某件事 1.2.数据类型的检测 1.3.数据类型转换 1.自动转换:js会通过关系运算符&#xff0c…

基于asp.net的简单的留言板管理系统附源码

今天给大家分享一个基于asp.net的留言板管理系统源码,SQLserver数据库,VS开发,具体的模块如下: 需要的盆友可以自己下载哈,链接放在下面了 链接:https://pan.quark.cn/s/12021e583fd7

使用豆包 MarsCode 编程助手,兑换 4090 显卡!

关于豆包 MarsCode 编程助手 豆包 MarsCode 编程助手是一个智能化的编程工具,通过与 AI 的对话,用户可以轻松获取编程建议、解决问题并提高编程效率。无论您是编程新手还是经验丰富的开发者,MarsCode 都能为您提供极具价值的帮助。 点击直达…

三非渣本前端成功转行AI绘画:我的学习历程与心得分享

大家好,我是一名普通的前端程序员,毕业于一所名不见经传的“三非”院校。在编程这条路上,我一直觉得自己平平无奇,直到有一天,我接触到了AI绘画,从此开启了一段全新的转行之旅。以下是我的学习经历、学习路…

vs2022 的wpf应用,需要生成的WpfApp1\bin\Debug\WpfApp1.exe添加图

在Visual Studio 2022中为WPF应用程序的生成的WpfApp1.exe添加图标,您可以按照以下步骤进行: 1. 准备图标文件 图标格式: 需要准备一个.ico格式的图标文件。确保图标文件符合标准的尺寸(通常是32x32像素或更大)。路径: 将图标文…

mybatis 出错:java.lang.NumberFormatException: For input string: “A“

GetMapping("/generateOldCarModelRanking") ApiOperation("老旧车车型排名") public Result generateOldCarModelRanking(RequestParam(value "year")String year,RequestParam(value "isCommercial")boolean isCommercial ,Reques…

FineBI与FineReport的区别

在企业信息化的浪潮中,数据分析和报表工具的需求日益增加。FineBI与FineReport是帆软公司旗下两款常见的数据分析和报表工具,它们各自有着不同的特点和应用场景。本文将从功能、适用场景和用户体验等方面分析FineBI与FineReport的区别。 一、功能对比…

【漏洞复现】蜂信物联 FastBee 开源物联网平台 download 任意文件读取漏洞

【漏洞复现】蜂信物联 FastBee 开源物联网平台 download 任意文件读取漏洞、 01 漏洞描述 蜂信物联 FastBee 开源物联网平台 download 接口存在任意文件读取漏洞,未经身份验证攻击者可通过该漏洞读取系统重要文件(如数据库配置文件、系统配置文件&…

python中.之后的圈c、圈v分别代表什么意思?

python中.之后的圈c、圈v分别代表什么意思? Python中,.之后的圈c表示类的实例方法,而圈v表示类的成员变量。 在面向对象编程中,类是一种抽象的数据类型,实例方法是定义在类中的函数,用于操作类的实例变量…

C++11新增特性:列表初始化(std::initializer_list) decltype、auto、nullptr、范围for

C11新增特性:列表初始化(std::initializer_list)& decltype、auto、nullptr、范围for 一、C11新增统一初始化方式1.1 新增方式1.2 初始化容器底层原理(std::initializer_list) 二、新增声明2.1 decltype2.3 auto &…

零基础 Tomcat 环境搭建(图解)

目录 介绍 下载 安装 环境配置 启动服务 无法正常启动的可以去更改端口号 显示乱码的可以去更改为BGK 正常启动 ​编辑 浏览器URL测试 关闭服务 静态项目测试 创建部署 创建任意文件夹 编写测试内容 浏览器URL测试 介绍 Tomcat是Apache 软件基金会&#xff08…

如何整理自己的电脑桌面?桌面整理怎么设置更高效?一文详细解答

在数字化时代,电脑已成为我们日常生活和工作中不可或缺的工具。然而,随着时间的推移,电脑桌面上往往会堆积起各种文件、快捷方式、文件夹,使得原本整洁的桌面变得杂乱无章。这不仅影响了我们的工作效率,还可能对心情造…

骨传导耳机哪个牌子最好?硬核测评五大热门王牌骨传导耳机!

在当今快节奏的生活中,音乐和音频内容已成为许多人日常生活中不可或缺的一部分。无论是在健身房锻炼、户外跑步,还是在办公室工作,一款优质的耳机都能提供沉浸式的听觉体验,同时确保安全和舒适。骨传导耳机,作为一种创…

深入学习电路基础:从理论到实践

引言 电路是电子学的核心,也是现代科技的基石。从简单的灯泡开关到复杂的计算机处理器,电路在各类电子设备中都起到了至关重要的作用。深入学习电路知识不仅有助于理解电子设备的工作原理,还能够为实际设计和开发电子产品打下坚实的基础。 …

JVM下篇:性能监控与调优篇-02-JVM监控及诊断工具-命令行篇

文章目录 2. JVM 监控及诊断工具-命令行篇2.1. 概述2.2. jps:查看正在运行的 Java 进程2.3. jstat:查看 JVM 统计信息2.4. jinfo:实时查看和修改 JVM 配置参数2.5. jmap:导出内存映像文件&内存使用情况2.6. jhat:J…

将弹性 IP 地址绑定到 EC2 实例

在本文中,九河云将带你了解如何将弹性 IP 地址绑定到 Amazon Elastic Compute Cloud (EC2) 实例。绑定弹性 IP 可以为您的实例提供一个固定的公共 IP 地址,有助于保持外部访问的稳定性。 准备工作 在开始之前,请确保您已完成以下准备工作&a…

Context-Aware Depth and Pose Estimation for Bronchoscopic Navigation翻译

文章目录 摘要1.引言2. 相关工作3. 方法概述3.1. 基于CT数据的虚拟深度生成3.2. 基于视频帧的上下文感知深度估计3.3. 方法概述3.3.1. 从CT数据生成虚拟深度图3.3.2. 基于上下文感知的深度估计从视频帧中3.3.3. 相机姿态估计通过 2D/3D 配准 4. 实验4.1. 数据集和基线4.2. 实现…

【无标题】【Datawhale X 李宏毅苹果书 AI夏令营】批量归一化

1、批量归一化的作用 批量归一化(Batch Normalization,BN)的把误差曲面变得平滑,使训练能够得到快速收敛; 训练过程的优化:使用自适应学习率等比较进阶的优化训练方法; 训练对象的优化&#xf…