计算机网络:网络层 —— 网络地址转换 NAT

news2024/11/5 18:18:53

文章目录

    • 网络地址转换 NAT 概述
    • 最基本的 NAT 方法
      • NAT 转换表的作用
    • 网络地址与端口号转换 NAPT
    • NAT 和 NAPT 的缺陷

网络地址转换 NAT 概述

尽管因特网采用了无分类编址方法来减缓 IPv4 地址空间耗尽的速度,但由于因特网用户数量的急剧增长,特别是大量小型办公室和家庭网络接入因特网的需求不断增加,IPv4地址空间即将耗尽的危险仍然没有解除(实际上,因特网号码分配管理局 IANN 于 2011 年 2 月 3 日宣布,IPv4 地址已经分配完毕)。

网络地址转换(NetworkAddress Translation,NAT)技术于 1994 年被提出,用来缓解 IPv4 地址空间即将耗尽的问题。

NAT 能使大量使用内部专用地址的专用网络用户共享少量外部全球地址来访问因特网上的主机和资源。

这种方法需要在专用网络连接到因特网的路由器上,安装 NAT 软件。装有 NAT 软件的路由器称为NAT路由器,它至少要有一个有效的外部全球地址 I P G IP_G IPG。所有使用内部专用地址的主机在和外部因特网通信时,都要在NAT路由器上将其内部专用地址转换成 I P G IP_G IPG

最基本的 NAT 方法

在这里插入图片描述

基本流程:

  1. 主机A 向 主机B 发起连接请求

    • 主机A 有一个专用地址 I P A IP_A IPA,它试图与具有全球地址 I P B IP_B IPB 的主机B建立连接。
    • 主机A 生成一个 IP 数据报,该数据报的源地址为 I P A IP_A IPA,目标地址为 I P B IP_B IPB
  2. NAT路由器修改源地址

    • 当IP数据报通过NAT路由器时,路由器将其源地址由 I P A IP_A IPA​ 修改为全局可访问的地址 I P G IP_G IPG

    • 修改后的IP数据报的源地址变为 I P G IP_G IPG,而目标地址仍然是 I P B IP_B IPB

  3. IP 数据报通过因特网到达 主机B:修改后的 IP 数据报通过因特网传递给主机B。

  4. 主机B 响应:主机B收到请求后,生成一个响应的IP数据报,源地址为 I P B IP_B IPB​,目标地址为 I P A IP_A IPA​。

  5. NAT路由器再次修改目标地址

    • 当响应的 IP 数据报返回并通过 NAT 路由器时,路由器将其目标地址由 I P A IP_A IPA​ 修改回 I P G IP_G IPG
    • 修改后的IP数据报的目标地址变为 I P G IP_G IPG,而源地址仍然是 I P B IP_B IPB
  6. IP 数据报返回至 主机A:修改后的 IP 数据报通过因特网返回至 主机A。

上述最基本的 NAT 方法有一个缺点:如果 NAT 路由器拥有 n(n比较小) 个全球 IP 地址,那么专用网内最多可以同时有 n 台主机接入因特网。若专用网内的主机数量大于 n,则需要轮流使用 NAT 路由器中数量较少的全球 IP 地址。

NAT 转换表的作用

  • NAT 路由器维护一张转换表,记录内网地址 I P A IP_A IPA​ 和外网地址 I P G IP_G IPG​ 的对应关系。
  • 当数据报通过 NAT 路由器时,路由器会查询此表来确定如何修改 源/目标地址

通过这种机制,NAT 允许多台拥有专用地址的计算机共享同一个全球可访问的 IP 地址,从而节省了公网 IP 资源,并且增加了内网的安全性,因为外部网络看不到内网的真实地址。

网络地址与端口号转换 NAPT

由于目前绝大多数基于 TCP/IP 协议栈的网络应用,都使用运输层的传输控制协议 TCP 或用户数据报协议 UDP,为了更加有效地利用NAT路由器中的全球 IP 地址,现在常将NAT转换和运输层端口号结合使用

这样就可以使内部专用网中使用专用地址的大量主机共用NAT路由器上的1个全球IP地址,因而可以同时与因特网中的不同主机进行通信。

NAT 和运输层端口号结合使用,称为网络地址与端口号转换(Network Address and Port Translation,NAPT

现在很多家用路由器将家中各种智能设备(手机、平板、笔记本电脑、台式电脑、物联网设备等)接入因特网,这种路由器实际上就是一个NAPT路由器,但往往并不运行路由选择协议。

主机A、主机B 向服务器发送 IP 数据报

![[网络地址与端口号转换1.png]]

  • 修改后的源端口号是由 NAPT 路由器动态分配的

  • 主机 B 与主机 A 选择的源端口号相同,这纯属巧合(端口号仅在本主机中才有意义)。特意这样举例,就是为了能更好地说明NAPT路由器还会对源端口号重新动态分配

  1. 设备A 和 设备B 分别尝试连接到 服务器C:

    • 设备A 的本地 IP 地址是 192.168.0.6,它尝试连接到 服务器C 的 IP 地址 218.75.230.30 上的端口 80。

    • 设备B 的 本地IP 地址是 192.168.0.9,也尝试连接到同一 服务器C 的相同端口80。

  2. NAPT 路由器修改源地址和源端口号:

    • 对于 设备A 的数据包,NAPT 路由器将其源地址从 192.168.0.6 修改为 113.218.175.235,并为其分配一个新的源端口号 50001

    • 对于 设备B 的数据包,NAPT 路由器同样将其源地址从 192.168.0.9 修改为 113.218.175.235,但为其分配不同的源端口号 50002

  3. 数据包通过因特网到达服务器C:修改后的数据包通过因特网传递给 服务器C。

![[网络地址与端口号转换2.png]]

  1. 服务器C 响应:服务器C 接收到请求后,生成响应的数据包,源地址为 218.75.230.30,目标地址为 113.218.175.235,目标端口号分别为 5000150002

  2. NAPT 路由器再次修改目标地址和目标端口号:当响应的数据包返回并通过 NAPT 路由器时,路由器会根据之前保存的映射表,将目标地址和目标端口号还原为各自的本地地址和端口号。

这样,NAPT 就完成了双向的地址和端口转换,使内网设备能够通过有限的公有IP地址访问互联网。

NAT 和 NAPT 的缺陷

尽管 NAT(和NAPT) 的出现在很大程度上缓解了 IPv4 地址资源紧张的局面,但 NAT(和NAPT) 对网络应用并不完全透明,会对某些网络应用产生影响

NAT(和NAPT) 的一个重要特点就是通信必须由专用网内部发起,因此拥有内部专用地址的主机不能直接充当因特网中的服务器

![[NAT和NAPT的缺陷.png]]

对于目前 P2P 这类需要外网主机主动与内网主机进行通信的网络应用,在通过 NAT 时会遇到问题,需要网络应用自身使用一些特殊的NAT穿透技术来解决。

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

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

相关文章

从零开始的c++之旅——继承

1. 继承 1.继承概念及定义 继承是面向对象编程的三大特点之一,它使得我们可以在原有类特性的基础之上,增加方法 和属性,这样产生的新的类,称为派生类。 继承 呈现了⾯向对象程序设计的层次结构,以前我们接触的…

用 Vue.js 打造炫酷的动态数字画廊:展示学生作品的创意之旅

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

在AI面试面前,你就不要再装了!

金九银十校招季,人在卷,AI也在卷。 AI面试所带来的影响,远非只是在求职招聘环节。对于AI面试的讨论,事关效率与公平,也指向了让不少打工人都“细思极恐”的话题:我们的组织管理是否正被AI重塑&#xff0c…

AUTOSAR CP MCAL微控制器抽象层介绍

AUTOSAR(Automotive Open System Architecture)即汽车开放系统架构,它将汽车电子控制单元(ECU)的软件底层做了一个标准的封装,使得开发者能够共用一套底层软件,并通过修改参数来匹配不同的硬件和应用层软件。AUTOSAR CP(Classic Platform)是AUTOSAR架构中的一个重要组…

yoloV5实战笔记—环境搭建(一)

一、安装miniconda 从清华源进行下载 https://mirrors.tuna.tsinghua.edu.cn/ 具体命令参考,注意修改pip国内镜像地址 https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/ 创建环境,指定python版本 conda create -n demo python3.9激活环境 conda acti…

【贪心】【可行范围内最大边界】SCNU习题 P25.跳跃游戏

算法思想&#xff1a; 每次迭代更新可行至的最大范围r(r必保证>原位置&#xff09;&#xff0c;至到迭代结束&#xff0c;若r>length of array则说明可以跳跃至此 #include <iostream> #include <vector> #include <string> #include <sstre…

29.2 golang实战项目log2metrics架构说明

本节重点介绍 : 需求分析流程说明log2metrics架构设计 架构图 需求分析 算qps 比如统计 nginx日志中code200的qps对应就是 每隔10秒grep一下日志文件 &#xff0c;用增量/时间差 算出qps 日志关键字告警 错误类型的关键字举例 如应用连接mysql报错dial mysql host error…

基于 Spring Boot 和 Vue 的门票销售创新系统

作者介绍&#xff1a;✌️大厂全栈码农|毕设实战开发&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 &#x1f345;获取源码联系方式请查看文末&#x1f345; 推荐订阅精彩专栏 &#x1f447;&#x1f3fb; 避免错过下次更新 Springboot项目精选实战案例 更多项目…

沃德校园助手系统源码

沃德校园助手系统&#xff0c;专为校园团队量身打造&#xff0c;提供了一站式的技术系统与运营解决方案&#xff0c;目前该系统已深度适配微信小程序平台&#xff0c;旨在助力校园团队轻松构建属于自己的线上助手平台。 在功能性方面&#xff0c;沃德校园助手系统涵盖了多种校…

Qt QCheckBox、QPushButton和QRadioButton详解

QCheckBox&#xff08;复选框&#xff09; 功能&#xff1a;QCheckBox用于创建一个复选框控件&#xff0c;允许用户从多个选项中选择多个。 属性&#xff1a; checkable&#xff1a;决定复选框是否可以被选中或取消选中。checked&#xff1a;表示复选框当前的选中状态&#…

DDR5内存售价暴降80%,终于到了无脑下手的时候

DDR5 内存刚面世那会儿&#xff0c;大家吐槽最多的便是频率低、延迟高、价格还死贵死贵。 前两年首批 DDR5 内存频率多集中在 4800、5200、5600MT/s 等入门水平。 延迟高、游戏性能不如高频 DDR4 内存的同时&#xff0c;单条 16G 售价普遍来到 1000 元开外&#xff0c;部分 3…

Jenkins找不到maven构建项目

有的可能没有出现maven这个选项 解决办法&#xff1a;需要安装Maven项目插件 输入​Maven Integration plugin​

基于大数据的热门旅游景点数据分析系统的设计与实现

作者主页&#xff1a;编程千纸鹤 作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验&#xff0c;被多个学校常年聘为校外企业导师&#xff0c;指导学生毕业设计并参…

计算机网络:网络层 —— 移动 IP 技术

文章目录 移动性对因特网应用的影响移动 IP 相关基本概念移动IP技术的基本工作原理代理发现与注册固定主机向移动主机发送IP数据报移动主机向固定主机发送IP数据报同址转交地址方式三角形路由问题 移动性对因特网应用的影响 我们列举如下三个应用场景说明移动性对因特网应用的…

ssm校园二手交易管理系统+vue

系统包含&#xff1a;源码论文 所用技术&#xff1a;SpringBootVueSSMMybatisMysql 免费提供给大家参考或者学习&#xff0c;获取源码看文章最下面 需要定制看文章最下面 目 录 1 绪论 1 1.1 选题背景 1 1.2 选题意义 1 1.3 研究内容 2 2 系统开发技术 3 2.1 MySQL数…

CCS下载安装(以12.3.0版本为例)

Code Composer Studio 是一个集成开发环境 (IDE)&#xff0c;简称CCS软件。支持 TI 的微控制器和嵌入式处理器产品的开发。Code Composer Studio 包含一整套用于开发和调试嵌入式应用程序的工具。 CCS9.3.0及以上版本不需要License文件&#xff0c;但是CCS旧版本比如CCS5.5.0需…

短视频时代的崛起:TikTok为何如此受欢迎?

在数字媒体日益发展的今天&#xff0c;短视频已成为一种主流的传播形式&#xff0c;而TikTok则是这一趋势的代表性平台。自2016年上线以来&#xff0c;TikTok迅速崛起&#xff0c;吸引了全球数亿用户的关注和参与。究竟是什么让这款应用如此受欢迎&#xff1f;以下是对TikTok成…

SAP财务凭证冲销接口代码实现

SAP提供了标准的BAPI(BAPI_ACC_DOCUMENT_REV_POST)进行凭证冲销,但是由于很多参考过程不可以用标准BAPI进行冲销,所以我们不得不采用其它的方式来进行冲销的实现。 该示例是采用三个功能模块来实现凭证冲销的接口程序: POSTING_INTERFACE_START 内部预订界面启动信息 POS…

Vagrant使用教程:创建CentOS 8虚拟机

目录 简介准备工作下载配置Vagrant修改环境变量创建VAGRANT_HOME环境变量修改virturalBox新建虚拟机文件的默认生成路径修改Vagrant配置支持VirtualBox7.1.x版本创建Vagrant文件添加镜像 初始化并开机初始化开发环境开机 其他配置项宿主机的交换目录修改虚拟机内存修改 访问方式…

虚拟机 Ubuntu 扩容

文章目录 一、Vmware 重新分配 Ubuntu 空间二、Ubuntu 扩容分区 一、Vmware 重新分配 Ubuntu 空间 先打开 Vmware &#xff0c;选择要重新分配空间的虚拟机 点击 编辑虚拟机设置 &#xff0c;再点击 硬盘 &#xff0c;再点击 扩展 选择预计扩展的空间&#xff0c;然后点击 扩展…