NAT技术的原理、和实现方式介绍

news2024/11/18 15:31:36

目        录

一、关于内外网的网络问题

1、内网

2、外网

3、如何实现内网访问外网

4、外网如何访问公司内部的一个服务器?

二、NAT技术简介

三、NAT技术的基本原理。

四、内部网实现NAT的常用方式

1.静态转换

2.动态转换

3.端口多路复用(Port address Translation,PAT)

(1)情况一

(2)情况二


一、关于内外网的网络问题

        我们在实际工作过程中,经常会提到内网、外网,那么何谓内网,何为外网呢?

1、内网

        内网,也称为局域网,是一种在小范围内组成的网络,一般指的是特定环境下组成的网络,如一个家庭的多台计算机互联成的网络,或学校和公司的大型局域网。内网的IP地址通常是私有的,比如192.168.1.xx192.168.0.xx172.16.1.xx等。内网不能直接连接外网,比较封闭,但在内网内部可以实现文件管理、应用软件共享、打印机共享等服务。

2、外网

        外网,也称为互联网,是连接不同地区局域网或者城域网的远程网络,通常可以跨接很大的物理范围,覆盖的范围可以是几十公里到几千公里,能连接多个地区、城市和国家,提供远距离通信,形成全球性的互联网络。外网的IP地址是公有的,是全球唯一的IP地址。

3、如何实现内网访问外网

       一般情况内网不能直接连接外网,比较封闭,但是我们现在知道的是,我们只要有一个运营商的宽带网络,我们就可以访问外网。那么是如何做到的呢?

4、外网如何访问公司内部的一个服务器?

       前面也提到过,内网的地址都是私有的,比如192.168.1.xx192.168.0.xx172.16.1.xx等,我们也知道,其他人可以通过外网来访问内网的一个服务器,这是怎么做到的呢?

       比如,内网有一个视频监控平台AS-V1000,有人可以通过互联网,来访问这个AS-V1000平台,从而浏览AS-V1000上接入的监控视频。

        关于上面提到的两个问题,是通过一种叫NAT的技术来实现的,本文就主要讲述这个技术。

二、NAT技术简介

        随着网络的发展,网络地址转换(NAT,Network Address Translation)在网络建设中正发挥着不可替代的作用。

        NAT是一种网络地址转换技术,它的主要功能是将私有IP地址转换为公网IP地址,实现多台计算机或设备共享一个公网IP地址访问外部网络。NAT技术最初是为了解决IPv4地址短缺而开发的,它可以将多个私有IP地址映射到一个公网IP地址,从而实现多用户共享少量公网IP地址访问外部网络。NAT技术的实现需要NAT设备(如路由器或防火墙等)在数据传输过程中进行地址转换,将内网IP地址和端口号转换为公网IP地址和端口号,以便在外部网络中传输数据。

        NAT技术有多种应用场景,其中最常见的是在家庭用户和小型企业网络中实现共享上网。通过NAT技术,可以将多个私有IP地址转换为一个公网IP地址,使得多台计算机或设备可以通过这个公网IP地址访问外部网络。NAT设备通常部署在网络的出口处,如家庭路由网关的NAT功能可以将家庭内部网络的计算机或设备的私有IP地址转换为公网IP地址,以便用户通过这个公网IP地址访问互联网。

        除了实现共享上网外,NAT技术还有其他应用场景,如实现虚拟专用网络(VPN)、网络地址转换-过载(NAT-Traversal)等。通过NAT-Traversal技术,可以实现在没有公网IP地址的情况下,多台内网计算机或设备进行语音、视频等多媒体通信。

        在流媒体和视频监控软件应用领域,由于经常涉及到内网、外网等情况,所以NAT也得到广泛的使用。

三、NAT技术的基本原理。

        随着接入Internet的计算机数量的不断猛增,IP地址资源也就显得愈加紧张。在实际应用中,一般用户几乎申请不到整段的C类和B类IP地址。当我们的企业向ISP申请IP地址时,所分配的地址也不过只有几个或十几个IP地址。显然,这样少的IP地址根本无法满足网络用户的需求。为了缓解供给和需求不可调和的矛盾,使用NAT技术便成为了企业和ISP的必然选择。

        企业使用NAT时,一般认为应当使用RFC1918规定的三段私有地址部署企业内部网络,三段私有地址为:

  1. A类私有地址范围:10.0.0.0至10.255.255.255(即10.0.0.0/8)
  2. B类私有地址范围:172.16.0.0至172.31.255.255(即172.16.0.0/12)
  3. C类私有地址范围:192.168.0.0至192.168.255.255(即192.168.0.0/16)

        当企业内部设备试图以私有地址为源,向外部网络(Internet)发送数据包的时候,NAT可以对IP包头进行修改,先前的源IP地址-私有地址被转换成合法的公有IP地址(前提是,该共有IP地址应当是企业已经从ISP申请到的合法公网IP),这样,对于一个局域网来说,无需对内部网络的私有地址分配做大的修改,就可以满足内网设备和外网通信的需求。由于设备的源IP地址被NAT替换成了公网IP地址,设备对于外网用户来说就显得“不透明”,达到了保证设备安全性的目的。在这种情况下,内部私有地址和外部公有地址是一一对应的。甚至,我们只需使用少量公网IP地址(甚至是1个)即可实现私有地址网络内所有计算机与Internet的通信需求。

四、内部网实现NAT的常用方式

        在企业网络中,NAT的实现方式有三种,即静态转换NAT、动态转换NAT 以及 端口多路复用(PAT)。下面的章节里将一一介绍。

        我们以一个例子进行介绍,如下图,左边有内网的两个PC,地址分别是:10.1.3.2(下面称为PC2)和10.1.3.3(下面称为PC3),现在要访问internet上的服务器100.0.33.1.

1.静态转换

        静态转换是指将内部网络的私有IP地址转换为公有IP地址,IP地址对是一对一的,是一成不变的,某个私有IP地址只转换为某个公有IP地址。私有地址和公有地址的对应关系由管理员手工指定。借助于静态转换,可以实现外部网络对内部网络中某些特定设备(如服务器)的访问,并使该设备在外部用户看来变得“不透明”。

        根据上面的网络图,PC2要访问公网服务器100.0.33.1,先要发送数据包给服务器。通过Nat协议,数据包的源地址变为200.22.0.2,是NAT路由器的wan口的公网地址。正是有了这个地址,服务器收到这个数据包,要返回数据包给PC2,目的地址就是200.22.0.2,通过NAT路由器的转换,200.22.0.2又变成了10.1.3.2,这样,服务器发给PC2的数据包,也被正确的接收到了。

        这样,就完成了数据的发送和接收,能够实现正常的数据通信。

2.动态转换

        动态转换是指将内部网络的私有IP地址转换为公用IP地址时,IP地址对并不是一一对应的,而是随机的。所有被管理员授权访问外网的私有IP地址可随机转换为任何指定的公有IP地址。也就是说,只要指定哪些内部地址可以进行转换,以及用哪些合法地址作为外部地址时,就可以进行动态转换。每个地址的租用时间都有限制。这样,当ISP提供的合法IP地址略少于网络内部的计算机数量时,可以采用动态转换的方式。

        原理同上,只是200.22.0.2的地址不固定,可能变成其他地址,这种情况,需要企业有多个公网地址。

3.端口多路复用(Port address Translation,PAT)

        通过使用端口多路复用,可以达到一个公网地址对应多个私有地址的一对多转换。在这种工作方式下,内部网络的所有主机均可共享一个合法外部IP地址实现对Internet的访问,来自不同内部主机的流量用不同的随机端口进行标示,从而可以最大限度地节约IP地址资源。同时,又可隐藏网络内部的所有主机,有效避免来自internet的攻击。因此,目前网络中应用最多的就是端口多路复用方式。

        这种方式在视频监控接入平台,包括国标28181视频平台上用的比较多,特别是涉及到穿网的时候。

(1)情况一

(2)情况二

        PC2 和 PC3通过同一个公网地址做NAT上网,如果PC2访问www.baidu.com用了公网地址的60005端口,则PC3访问www.baidu.com时只能使用60005后的随机端口例如60006,但如果是PC2此时访问www.163.com就可以使用60005端口。

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

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

相关文章

人工智能主流技术详解

人工智能(Artificial Intelligence,简称AI)是当今科技领域发展最迅速、最令人振奋的分支之一。本文将带您深入了解人工智能的主流技术,探索AI如何影响我们的生活、工作以及未来的发展。 一、什么是人工智能? 人工智能&…

SpringBoot+SSM项目实战 苍穹外卖(11) Apache ECharts

继续上一节的内容,本节学习Apache ECharts,实现营业额统计、用户统计、订单统计和销量排名Top10功能。 数据统计效果图: 目录 Apache ECharts入门案例 营业额统计用户统计订单统计销量排名Top10 Apache ECharts Apache ECharts 是一款基于 …

微信小程序(一)简单的结构及样式演示

注释很详细&#xff0c;直接上代码 涉及内容&#xff1a; view和text标签的使用类的使用flex布局水平方向上均匀分布子元素垂直居中对齐子元素字体大小文字颜色底部边框的宽和颜色 源码&#xff1a; index.wxml <view class"navs"><text class"active…

Leetcode3002. 移除后集合的最多元素数

Every day a Leetcode 题目来源&#xff1a;3002. 移除后集合的最多元素数 解法1&#xff1a;贪心 可以将数组去重后分为三个部分&#xff1a;nums1 独有的&#xff0c;nums2 独有的&#xff0c;nums1 与 nums2 共有的。 求集合 S 时&#xff1a; 先选择两个数组独有的。…

vcs makefile

主要参考&#xff1a; VCS使用Makefile教程_vcs makefile-CSDN博客https://blog.csdn.net/weixin_45243340/article/details/129255218?ops_request_misc%257B%2522request%255Fid%2522%253A%2522170524049516800227431373%2522%252C%2522scm%2522%253A%252220140713.1301023…

强化学习应用(四):基于Q-learning的物流配送路径规划研究(提供Python代码)

一、Q-learning算法简介 Q-learning是一种强化学习算法&#xff0c;用于解决基于马尔可夫决策过程&#xff08;MDP&#xff09;的问题。它通过学习一个值函数来指导智能体在环境中做出决策&#xff0c;以最大化累积奖励。 Q-learning算法的核心思想是使用一个Q值函数来估计每…

12AOP面向切面编程/GoF之代理模式

先看一个例子&#xff1a; 声明一个接口&#xff1a; // - * / 运算的标准接口! public interface Calculator {int add(int i, int j);int sub(int i, int j);int mul(int i, int j);int div(int i, int j); }实现该接口&#xff1a; package com.sunsplanter.prox…

c#异形窗体遮罩效果

c#异形窗体遮罩效果&#xff0c;移动&#xff0c;关闭&#xff0c;最大化&#xff0c;最小化&#xff0c;还原操作 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Drawing2D…

Java 8 中的 Stream 轻松遍历树形结构

直接上代码 测试实体类 /*** Menu** author lcry*/ Data Builder public class Menu {/*** id*/public Integer id;/*** 名称*/public String name;/*** 父id &#xff0c;根节点为0*/public Integer parentId;/*** 子节点信息*/public List<Menu> childList;public Me…

浮点数的表示

文章目录 一、基本介绍二、IEEE 754标准浮点数三、浮点数的运算3.1 浮点数的加减法3.2 浮点数的乘法3.3 浮点数的除法 四、demo参考 一、基本介绍 浮点数是与定点数相对的概念&#xff0c;计算机中的定点数约定小数点的位置不变。 由于计算机字长的限制&#xff0c;当需要表示…

几种mq实现延迟队列的方式

文章目录 rocket mq&#xff1a;延时消息rabbit mq&#xff1a;死信队列kafka方案&#xff1a;多级分区举例优点 rocket mq&#xff1a;延时消息 rabbit mq&#xff1a;死信队列 消息设定一段时间未消费就进入死信队列&#xff0c;然后消费者监听死信交换机。 kafka kafka自身…

【MySQL】mysql集群

文章目录 一、mysql日志错误日志查询日志二进制日志慢查询日志redo log和undo log 二、mysql集群主从复制原理介绍配置命令 读写分离原理介绍配置命令 三、mysql分库分表垂直拆分水平拆分 一、mysql日志 MySQL日志 是记录 MySQL 数据库系统运行过程中不同事件和操作的信息的文件…

vue的element ui使用el-table组件实现懒加载树、默认自动展开层级(一层,二层)、并且解决新增、删除、修改之后树节点不刷新问题

1.整体思路 问题&#xff1a;数据量太大了&#xff0c;导致接口返回数据时间较长。解决: 将ElementUi中Table组件加载改为懒加载&#xff08;查看文档&#xff09;。思路&#xff1a;初始化打开页面时只显示第一级菜单,用户点击展开菜单之后往后端发送请求,然后加载出一级子菜…

13 | 使用代理ip爬取安居客房源信息

这是一个简单的Python爬虫代码,用于从安居客网站爬取房地产信息。该爬虫使用了代理IP来绕过可能的封禁,并提供了一些基本的信息抽取功能。 如果访问过多,那么可能出现了验证码 对此,最好的方法就是换ip。 使用代理IP的主要目的是保护爬虫的稳定性和隐私。以下是一些常见的原…

使用docker搭建LNMP架构

目录 环境准备 下载安装包 服务器环境 任务分析 nginx部分 建立工作目录 编写 Dockerfile 脚本 准备 nginx.conf 配置文件 生成镜像 创建自定义网络 启动镜像容器 验证nginx MySQL部分 建立工作目录 编写 Dockerfile 准备 my.cnf 配置文件 生成镜像 启动镜像…

优先级队列(Priority Queue)

文章目录 优先级队列&#xff08;Priority Queue&#xff09;实现方式基于数组实现基于堆实现方法实现offer(E value)poll()peek()isEmpty()isFull() 优先级队列的实现细节 优先级队列&#xff08;Priority Queue&#xff09; 优先级队列是一种特殊的队列&#xff0c;其中的元素…

基础命令继续

1&#xff1a;创建目录命令 mkdir命令 注意&#xff1a;创建文件夹需要修改权限&#xff0c;请确保操作均在HOME目录内&#xff0c;不要在Home外操作&#xff0c;涉及到权限问题&#xff0c;HOME外无法识别 小结&#xff1a; 练习: 2&#xff1a;touch创建文件 2&#xff1a;c…

统计学-R语言-4.5

文章目录 前言多变量数据多维列联表复式条形图并列箱线图R语言中取整运算主要包括以下五种&#xff1a; 点带图多变量散点图重叠散点图矩阵式散点图 练习 前言 本篇文章将继续对数据的类型做介绍&#xff0c;本片也是最后一个介绍数据的。 多变量数据 掌握描述多变量数据的分…

pytorch集智4-情绪分类器

1 目标 从中文文本中识别出句子里的情绪。和上一章节单车预测回归问题相比&#xff0c;这个问题是分类问题&#xff0c;不是回归问题 2 神经网络分类器 2.1 如何用神经网络分类 第二章节用torch.nn.Sequantial做的回归预测器&#xff0c;输出神经元只有一个。分类器和其区别…

安装nodejs出现问题

Error: EPERM: operation not permitted, mkdir… 全局安装express模块进行测试时&#xff1a; npm install express -g出现&#xff1a; 表示nodejs的安装目录无权限&#xff0c;根据错误日志的信息&#xff0c;定位到安装目录下&#xff1a; 点击属性&#xff1a; 点击编…