【网络原理】网络地址转换----NAT技术详解
💐个人主页:初晴~
📚相关专栏:计算机网络那些事
我们在 IP协议 一文中介绍过,由于IPv4协议中 IP地址只有32位,导致最多只能表示 42亿9千万个IP地址。但我们需要通过IP地址来标识网络上的每一个设备,因此我们期望 IP地址是唯一的。这样,42亿9千万放在现在这个万物互联的时代已经捉襟见肘了。为了缓解这一问题,NAT协议就应运而生了。
一、NAT技术是什么?
NAT(Network Address Translation,网络地址转换)是一种用于重新映射一个IP地址空间到另一个IP地址空间的技术,通常用于将多个私有或内部IP地址转换为单一的公有或外部IP地址。这使得使用私有IP地址的设备可以连接到互联网上。
即以一当千,通过一个 IP 代表一大波设备
将 IP地址分为两大类:
- 内网IP/私网IP
- 外网IP/公网IP
要求公网 IP必须是唯一的,但是私网 IP在不同的局域网中是允许重复的
这样运营商的公网 IP,不是服务一个设备,而是服务一个片区,可能有上万个设备。此时一个 IP 就代表了上万个设备,此时 IP 的利用率就大大提高了。
二、NAT IP转换过程
- NAT路由器将源地址从 10.0.0.10 替换成全局的IP 202.244.174.37
- NAT路由器收到外部的数据时,⼜会把⽬标IP从 202.244.174.37 替换回 10.0.0.10
- 在NAT路由器内部,有⼀张⾃动⽣成的,⽤于地址转换的表
- 当 10.0.0.10 第⼀次向 163.221.120.9 发送数据时就会⽣成表中的映射关系
这里NAT路由器为其内部网络分配IP地址时有两种分配方式:
静态NAT:为内部网络中的每个主机固定分配一个全球唯一的 IP地址。这意味着内部主机总是映射到相同的全局IP地址。
动态NAT:为内部网络中的主机提供一组全球唯一 IP地址池。当内部主机需要与外部网络通信时,会从这个池中分配一个全局IP地址给它。
三、NAPT/PAT
但这样还是出现很多问题的,如果局域⽹内,有多个主机都访问同⼀个外⽹服务器,那么对于服务器返回的数据中,⽬的IP都是相同的。NAT路由器该如何判定将这个数据包转发给哪个局域⽹的主机?
这时候 NAPT 来解决这个问题了。
这是最常用的NAT形式之一,它不仅改变了IP地址,还改变了传输层的端口号。NAPT允许大量的内部主机共享同一个或少数几个公网IP地址,通过跟踪每个会话的端口号来区分不同的内部主机。使⽤IP+port来建⽴这个关联关系:
这种关联关系也是由NAT路由器⾃动维护的。
例如在TCP的情况下,建⽴连接时,就会⽣成这个表项;在断开连接后,就会删除这个表项
四、NAT技术的优缺点
由于NAT依赖这个转换表,所以有诸多限制:
- ⽆法从NAT外部向内部服务器建⽴连接
这也是为什么我们在自己电脑上开发的网站,别人无法直接进行访问的原因。因为我们设备处于一个私网,处于其它私网的设备也就无法直接使用了。需要将我们的网站部署在公网上,获得一个公网IP,其它用户才能正常进行访问
- 装换表的⽣成和销毁都需要额外开销
- 通信过程中⼀旦NAT设备异常,即使存在热备,所有的TCP连接也都会断开
NAT 的优势:
- 解决IP地址短缺问题:
NAT通过允许内部网络使用私有IP地址(如10.x.x.x, 172.16.x.x至172.31.x.x, 或192.168.x.x),然后在这些地址和有限的公共IP地址之间进行转换,有效地缓解了IPv4地址的耗尽问题。
- 节省公网IP地址资源:
由于NAT可以允许多个设备共享一个或少数几个公网IP地址,因此它有助于节省宝贵的公网IP地址资源。
- 提高网络安全性:
NAT隐藏了内部网络的结构,因为外部观察者只能看到转换后的IP地址,而看不到内部网络的实际地址。这种隐蔽性增加了黑客攻击内部网络的难度。
- 简化网络管理:
使用私有地址段意味着组织可以自由地重新配置其内部网络,而无需担心外部影响。此外,当内部主机的数量增加或减少时,管理员只需要管理较少数量的公网IP地址。
- 易于扩展:
由于内部地址是私有的并且不会与其他网络冲突,所以可以轻松地添加或更改内部网络结构,而不会影响外部连接。
- 支持服务发布:
通过端口地址转换(PAT),NAT可以用来将特定的服务发布到互联网,例如Web服务器、邮件服务器等,同时仍然保持内部网络的安全性。
并且 NAT 有⼀个最⼤的优点:
- 不需要更新硬件设备,只更新软件,就可以解决 IP 地址不够⽤的问题!
也正是这一优点,几乎阻断了 IPv6 协议的发展。因为IPv6与IPv4并不兼容,需要重新部署硬件设备,更新成本更高,也就迟迟不能得到普及了。
那么本篇文章就到此为止了,如果觉得这篇文章对你有帮助的话,可以点一下关注和点赞来支持作者哦。如果有什么讲的不对的地方欢迎在评论区指出,希望能够和你们一起进步✊
相关文章:
【网络原理】网络地址转换----NAT技术详解
💐个人主页:初晴~ 📚相关专栏:计算机网络那些事 我们在 IP协议 一文中介绍过,由于IPv4协议中 IP地址只有32位,导致最多只能表示 42亿9千万个IP地址。但我们需要通过IP地址来标识网络上的每一个设备&#x…...
React怎么创建虚拟dom和挂载到页面
1、🍟你可以直接下载本节配套的资源代码,然后导入vscode看效果,也可以跟着教程一点一点敲,都是没问题的。 2、🤔怎么运行本节代码? 很简单,随便找个浏览器打开index.html即可。💕 代…...
kafka-console-ui的简介及安装使用
kafka-console-ui的简介及安装使用 一、kafka-console-ui的简介二、安装kafka-console-ui2.1 源码安装2.2 docker安装 三、kafka-console-ui功能使用3.1、功能特性3.2、 功能介绍3.2.1 集群3.2.2 topic3.2.3 消费组3.2.4 Acl3.2.5 运维 一、kafka-console-ui的简介 kafka-cons…...
git 的分支管理详解
Git 的分支管理是其强大功能之一,允许开发者在同一代码库中并行开发多个特性或修复 bug,而不干扰主分支的代码。下面是对 Git 分支管理的详解: 1. 查看分支 查看所有分支 git branch # 查看本地分支 git branch -r # 查看远程分支 git br…...
w003基于Springboot的图书个性化推荐系统的设计与实现
🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文…...
医院信息化与智能化系统(6)
医院信息化与智能化系统(6) 这里只描述对应过程,和可能遇到的问题及解决办法以及对应的参考链接,并不会直接每一步详细配置 如果你想通过文字描述或代码画流程图,可以试试PlantUML,告诉GPT你的文件结构,让他给你对应的…...
前端学习---(6)js基础--4
Promise Promise 是异步编程的一种新的解决方案和规范。 Promise优点: 1、可以很好地解决ES5中的回调地狱的问题(避免了层层嵌套的回调函数)。 2、统一规范、语法简洁、可读性和和可维护性强。 3、Promise 对象提供了简洁的 API,使得管理异步…...
241026-RHEL如何以root身份卸载Docker
在 RHEL 8.8 中,以 root 身份卸载 Docker 可以通过以下步骤完成: 停止 Docker 服务(如果已启动): sudo systemctl stop docker删除 Docker 包: 运行以下命令卸载 Docker 引擎及其依赖包(docker-…...
iPhone当U盘使用的方法 - iTunes共享文件夹无法复制到电脑怎么办 - 如何100%写入读出
效果图 从iPhone复制文件夹到windows电脑 步骤windows 打开iTunes通过USB连接iPhone和电脑手机允许授权iTunes中点击手机图标,进入到点击左边“文件共享”,在右边随便选择一个App(随意...)写入U盘:拖动电脑的文件&am…...
jenkins ssh 免密报错Host key verification failed.
jenkins 发布项目,ssh连接远程服务器时报错:Host key verification failed. 解决: 原因是生成的sshkey不是用的jenkins用户,所以切换用户到:jenkins重新生成sshkey su jenkins ssh-keygen -t rsa ssh-copy-id -i ~/…...
智能科学与技术(一级学科)介绍
智能科学与技术:探索智能的边界与未来 智能科学与技术的起源与发展学科定位与内涵学科范围与研究方向培养目标相关学科 在当今这个信息爆炸的时代,人工智能(AI)已经成为科技创新的重要驱动力。随着技术的不断进步,智能…...
iOS调试真机出现的 “__llvm_profile_initialize“ 错误
一、错误形式: app启动就崩溃,如下: Demo__llvm_profile_initialize:0x1045f7ab0 <0>: stp x20, x19, [sp, #-0x20]!0x1045f7ab4 <4>: stp x29, x30, [sp, #0x10]0x1045f7ab8 <8>: add x29, sp, #0x100x1…...
Android SELinux——neverallow问题处理(十六)
上一篇我们介绍了通过添加允许策略处理问题,这里我们主要来看一些 neverallow 策略问题该怎么处理。 一、neverallow介绍 遇到 neverallow 规则问题,千万别急着去注释/剔除里面原有的规则(原生的尽量别动)。增加 allow 规则是常见的解决办法,但是随着 android 版本的升级…...
Vue 关于路由
关于路由 路由的模式与区别 路由的两种模式: hashhistory 区别: 表象不同 hash 模式中,在地址里以 /#/ 分隔;history 模式中,地址里以 / 分隔。关于找不到当前页面发送请求的问题 history 模式会给后端发送一次请…...
香港海洋投资启动创新海洋牧场,领航全球海洋经济
香港,这座国际大都市,以其独特的地理位置和深厚的海洋文化底蕴,再次站在了全球海洋经济发展的前沿。近日,香港海洋投资发展有限公司(以下简称“香港海洋投资”)在万众瞩目中,正式宣布启动其创新…...
C/C++ 每日一练:二分查找
二分查找是一种高效的查找算法,用于在有序数组中定位目标元素的位置。它的核心思想是每次查找时将范围缩小一半。 题目要求 实现一个二分查找算法。给定一个递增排序的整型数组 arr 和一个目标值 target,编写一个函数 binarySearch,若 targe…...
Linux基础IO--重定向--缓冲区
1,为什么语言喜欢做封装? 我们先知道一个概念,显示器叫做字符设备,根据ACSLL码来打印数据,所以我们从键盘输入的 1234,在显示器看来就是一个一个的字符(1,2,3,4)而不是一千两百三十四: 下图输入字符类型数…...
Conda 安装与使用指南
Conda 是一个开源的软件包管理和环境管理系统,主要解决一个系统上同时要使用python2,python3等等多个python环境的切换问题,支持多种编程语言(如 Python、R 等),可以在 Windows、macOS 和 Linux 上运行。它…...
C++中获取硬盘ID的方法
在C++中,直接获取硬盘的ID(通常是硬盘的序列号或唯一标识符)并不是一项简单的任务,因为这通常涉及到低级的硬件访问,这通常是由操作系统或特定的硬件驱动程序管理的。标准C++库并没有提供直接访问硬盘ID的功能。 然而,可以通过以下几种方法来获取硬盘的ID: 操作系统特定…...
OpenRTP 传输增加OpenRTPServer
开源地址 最近增加了OpenRTPServer, 已经修改完成一版放在了目录下,window和linux下编译都成功了,不过由于修改代码CMakefile 需要修改,先放放 OpenRTP开源地址 vlc得纠错传输方式 我发现我代码写错以后,vlc 依然能…...
使用vue3+cesium+earthsdk+supermap实现通视分析(有版本报错问题)
main.js: 这个文件是项目的入口文件,主要进行了以下操作: 使用Vue 3的createApp创建应用实例。加载了element-plus UI 组件库。加载了router和store,以及axios用于发送HTTP请求。将@turf/turf和自定义的bus.js注册到全局属性中,便于在组件中使用。环境配置需求: 你需要安…...
python 轮子是什么
此一词语的由来是因为轮子由人类所发明,且在各方面都带来许多便利。既然轮子已被发明,而且在使用上没有什么缺陷,重新再发明一次轮子是没有意义的,只是浪费时间,分散研究者的资源,使其无法投入更有意义及价…...
农作物大豆病虫害识别分类数据集(猫脸码客第227期)
农作物大豆病虫害识别分类数据集 大豆,作为全球重要的粮食作物之一,不仅承载着人类饮食中的重要角色,还深刻影响着农业经济的发展。然而,大豆的生长过程中,常常面临着来自病害和虫害的双重威胁。这些病虫害不仅会影响…...
如何在算家云搭建GPT-SOVITS(语音转换)
一、模型介绍 GPT-SOVITS是一款强大的小样本语音转换和文本转语音 WebUI工具。它集成了声音伴奏分离、自动训练集分割、中文ASR和文本标注等辅助工具。 具有以下特征: 零样本 TTS: 输入 5 秒的声音样本并体验即时文本到语音的转换。少量样本 TTS&…...
ThinkPad T480拆机屏幕改装:便携式显示器DIY指南
ThinkPad T480拆机屏幕改装:便携式显示器DIY指南 本文记录了将旧笔记本电脑 T480 拆机屏幕改装为便携式显示器的全过程。作者在决定升级设备后,选择通过 DIY 方式利用原有的屏幕资源。文章详细介绍了屏幕驱动板的安装、螺丝孔的剪裁、排线连接及固定的步…...
C++ (8) C++11及更新特性:探索魔法新领域
C11及更新特性:探索魔法新领域 随着C语言的不断进化,C11及其后续版本带来了许多激动人心的新特性,它们就像是魔法世界中新发现的领域,充满了无限的可能性。这些新特性不仅提高了编程的效率和灵活性,还为程序员提供了更…...
【vue】Mammoth.js的使用:将.docx和doc 文件转换成HTML
mammoth.convertToHtml(input, options) :把源文档转换为 HTML 文档 mammoth.convertToMarkdown(input, options) :把源文档转换为 Markdown 文档。 mammoth.extractRawText(input) :提取文档的原始文本。这将忽略文档中的所有格式…...
HarmonyOS介绍 第一课习题答案
一、判断题 1. “一次开发,多端部署”指的是一个工程,一次开发上架,多端按需部署。为了实现这一目的,HarmonyOS提供了多端开发环境,多端开发能力以及多端分发机制。 正确(True)错误(False) 正确(True)回答正确 2. 《鸿蒙生态应用开发白皮书》全面阐释了鸿蒙生态下应…...
c/c++ stdcall cdel fastcall等函数调用约定说明
调用约定(Calling Conventions)是编程中定义函数如何接收参数、返回值以及如何管理堆栈的协议。主要的调用约定包括 __cdecl、__stdcall、__fastcall 和 __thiscall 等。下面将详细介绍这些调用约定的特点及其适用场景。 1. __cdecl 调用约定 定义&…...
【ROS概述】概念及环境搭建
学习途径: 教程:Introduction Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 课程视频:https://www.bilibili.com/video/BV1Ci4y1L7ZZ 机器人体系 要完全实现一个机器人的系统研发,几乎是“全栈”开发,…...
wordpress html编辑器插件/seo网站推广经理招聘
写在前面作为理工科出身的直男,不仅仅自己喜欢折腾一些科技数码产品,在培养孩子的过程中似乎也潜移默化的影响。所以再给孩子购买玩具时总是喜欢和科技沾上一点边,所以妈妈总是觉得买的玩具不是给孩子的,而是给我自己的。不过现在…...
刘涛做的婴儿玩具网站/线下推广怎么做
为什么80%的码农都做不了架构师?>>> MySQL安装文件分为两种,一种是msi格式的,一种是zip格式的。如果是msi格式的可以直接点击安装,按照它给出的安装提示进行安装(相信大家的英文可以看懂英文提示ÿ…...
wordpress 侧边栏跟随/现在广告行业好做吗
js图片上传组件:基本要求:1.上传的图片可预览,可删除,可被覆盖更新2.要求图片格式为jpg和png,大小不能超过2M新加需求:1.模拟回显,可用本地存储(实际上的回显是通过后台传过来的url&…...
携程网站建设目的/在哪个平台做推广比较好
简介:SaltStack是 一个服务器基础架构集中化管理平台,具备配置管理、远程执行、监控等功能,一般可以理解为简化版的puppet和加强版的func。SaltStack基 于Python语言实现,结合轻量级消息队列(ZeroMQ)与Pyth…...
wordpress主题可以更改主页布局/网络营销的推广
createWriteStream是Node.js中的一个方法,可以用来创建一个可写流。可写流是一种用于写入数据的流。它允许我们在不断写入数据的同时将数据写入文件或其他目标。可写流是流的一种,流是Node.js中的一种抽象概念,表示一个数据流的生成器。可写流…...
wordpress孵化器主题/济宁百度推广开户
事务是作为单个逻辑工作单元执行的一系列操作。一个逻辑工作单元必须有四个属性,称为 ACID(原子性、一致性、隔离性和持久性)属性,只有这样才能成为一个事务。事务管理特性,强制保持事务的原子性和一致性。事务启动之后…...