NAT、NAPT(PAT)的基本概念和工作原理及区别
转自:http://blog.sina.com.cn/s/blog_5d302bd20100gprv.html
近年来,随着 Internet 的迅猛发展,连入 Internet 的主机数量成倍增长。由于最初设计 Internet 的时候并没有考虑到需要支持这么大的规模,因而 Internet 使用的 Ipv4 协议中 IP 地址的长度选择了 32 位,它可以使 IP 包的格式很好地对齐;但是,目前 IP 地址的短缺已经成为 Internet 面临的最大问题之一。
为了解决 IP 地址短缺的问题,人们提出了许多解决方案,Internet 能够支持到新一代 IP 协议 Ipv6 的出台。在众多的解决方案中,网络地址转换 NAT(Network Address Translation)技术提供了一种完全将私有网和公共网隔离的方法,从而得到了广泛的应用。图 1 NAT 工作原理示意图 1 NAT 技术
NAT 技术的基本功能就是,用 1 个或几个 IP 地址来实现 1 个私有网中的所有主机和公共网中主机的 IP 通信。NAT 技术可为 TCP、UDP 以及 ICMP 数据包提供透明转发。
1.1 NAT 工作原理
NAT 的基本工作原理是,当私有网主机和公共网主机通信的 IP 包经过 NAT 网关时,将 IP 包中的源 IP 或目的 IP 在私有 IP 和 NAT 的公共 IP 之间进行转换。
如图 1 所示,NAT 网关有 2 个网络端口,其中公共网络端口的 IP 地址是统一分配的公共 IP,为 202.204.65.2;私有网络端口的 IP 地址是保留地址,为 192.168.1.1。私有网中的主机 192.168.1.2 向公共网中的主机 166.111.80.200 发送了 1 个 IP 包(Des = 166.111.80.200, Src = 192.168.1.2)。当 IP 包经过 NAT 网关时,NAT 会将 IP 包的源 IP 转换为 NAT 的公共 IP 并转发到公共网,此时 IP 包(Des = 166.111.80.200,Src = 202.204.65.2)中已经不含任何私有网 IP 的信息。由于 IP 包的源 IP 已经被转换成 NAT 的公共 IP,响应的 IP 包(Des = 202.204.65.2, Src = 166.111.80.200)将被发送到 NAT。这时,NAT 会将 IP 包的目的 IP 转换成私有网中主机的 IP,然后将 IP 包(Des = 192.168.1.2,Src = 166.111.80.200)转发到私有网。对于通信双方而言,这种地址的转换过程是完全透明的。
1.2 NAPT 技术
由于 NAT 实现是私有 IP 和 NAT 的公共 IP 之间的转换,那么,私有网中同时与公共网进行通信的主机数量就受到 NAT 的公共 IP 地址数量的限制。为了克服这种限制,NAT 被进一步扩展到在进行 IP 地址转换的同时进行 Port 的转换,这就是网络地址端口转换 NAPT(Network Address Port Translation)技术。
NAPT 与 NAT 的区别在于,NAPT 不仅转换 IP 包中的 IP 地址,还对 IP 包中 TCP 和 UDP 的 Port 进行转换。这使得多台私有网主机利用 1 个 NAT 公共 IP 就可以同时和公共网进行通信。
如图 2 所示,私有网主机 192.168.1.2 要访问公共网中的 Http 服务器 166.111.80.200。首先,要建立 TCP 连接,假设分配的 TCP Port 是 1010,发送了 1 个 IP 包(Des = 166.111.80.200:80, Src = 192.168.1.2:1010), 当 IP 包经过 NAT 网关时,NAT 会将 IP 包的源 IP 转换为 NAT 的公共 IP,同时将源 Port 转换为 NAT 动态分配的 1 个Port。然后,转发到公共网,此时 IP 包(Des = 166.111.80.200:80,Src = 202.204.65.2:2010)已经不含任何私有网 IP 和 Port 的信息。由于 IP包的源 IP 和 Port 已经被转换成 NAT 的公共 IP 和 Port,响应的 IP 包(Des = 202.204.65.2:, Src = 2010166.111.80.200:80)将被发送到 NAT。这时 NAT 会将 IP 包的目的 IP 转换成私有网主机的 IP,同时将目的 Port 转换为私有网主机的 Port,然后将 IP 包(Des = 192.168.1.2:1010,Src = 166.111.80.200:80)转发到私网。对于通信双方而言,这种 IP 地址和 Port 的转换是完全透明的。
NAT、NAPT(PAT)的基本概念和工作原理及区别的更多相关文章
- Android 基于Netty的消息推送方案之概念和工作原理(二)
上一篇文章中我讲述了关于消息推送的方案以及一个基于Netty实现的一个简单的Hello World,为了更好的理解Hello World中的代码,今天我来讲解一下关于Netty中一些概念和工作原理的内 ...
- LVM基本概念及工作原理
LVM基本概念及工作原理 背景知识: 一直困惑于LVM,特地找资料查了查,终于对LVM的概念和工作原理有了深入的理解.接下来记录下.新的技术出来必定是为了改变现有的不足,所以LVM的出现是由于对现有磁 ...
- zabbix监控的基础概念、工作原理及架构(一)
zabbix监控的基础概念.工作原理及架构 转载于网络 一.什么是zabbix及优缺点 Zabbix能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制以让系统管理员快速定位/解决存在的 ...
- Elasticsearch系列---Elasticsearch的基本概念及工作原理
基本概念 Elasticsearch有几个核心的概念,花几分钟时间了解一下,有助于后面章节的学习. NRT Near Realtime,近实时,有两个层面的含义,一是从写入一条数据到这条数据可以被搜索 ...
- SaltStack 的基本概念与工作原理 架构设计
随着云计算技术的快速普及与发展,越来越多的企业开始学习和搭建自己的云平台代替传统的 IT 交付模式,企业的 IT 环境也随之越来越复杂,常规的运维方法与技术已经无法满足现在云环境中系统的配置与变更.基 ...
- zabbix监控的基础概念、工作原理及架构
一.什么是zabbix及优缺点(对比cacti和nagios) Zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题.是一个基于WE ...
- VRRP概念、工作原理
VRRP是一种路由容错协议,也可以叫做备份路由协议,可以把一个虚拟路由器的责任动态分配到局域网上的 VRRP 路由器中的一台. 控制虚拟路由器 IP 地址的 VRRP 路由器称为主路由器, 它负责转发 ...
- Hibernate和Mybatis的工作原理以及区别
一.Mybatis的工作流程图 (1).原理详见: MyBatis应用程序根据XML配置文件创建SqlSessionFactory,SqlSessionFactory在根据配置,配置来源于两个地方,一 ...
- WebService 概念和工作原理(一)
今天我们一起来学习WebService.它到底是干啥用的? Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集) ...
随机推荐
- POJ 1651 Multiplication Puzzle 区间dp(水
题目链接:id=1651">点击打开链 题意: 给定一个数组,每次能够选择内部的一个数 i 消除,获得的价值就是 a[i-1] * a[i] * a[i+1] 问最小价值 思路: dp ...
- UVA-10163 Storage Keepers DP
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- mystr = '{}{}{}'.format(mystr, random.randint(0, 9), adurl)
mystr = '{}{}{}'.format(mystr, random.randint(0, 9), adurl)
- 第二次PHP面试题
昨天下午翘班去参加了人生中第二次PHP面试.是一家相对第一家更加专业的互联网公司.效果不如第一家理想,笔试题有点难,而且偏高理论,面试时面试官也还不错,一起探讨,可是他的问题我还是很多都不知道,果然是 ...
- ngnix 详解
4 Nginx的rpm软件包安装 4.1 安装包在位置 D:\讲课内容--\新巴巴运动网\nginx高并发解决\nginx安装包 4.2 此种安装方式不用安装gcc等编译工具 4.3 安装命令如下 r ...
- CPU卡的读写【转】
本文转载自:http://blog.csdn.net/logaa/article/details/7465226 一般来说,对存储卡和逻辑加密卡操作,使用接触式IC卡通用读写器:对CPU卡使用CPU卡 ...
- Vue.js实战 5.5章 购物车
<!DOCTYPE html> <html lang="en"> <head> <title>购物车示例</title> ...
- Java实现日期时间对象的使用
利用类对象计算日期 在利用Java语言进行信息系统开发中,经常需要对日期进行计算和转换,比如,设置了某活动的开始日期和结束日期,系统需要判断当前是否是该活动时间,在Java开发的信息系统中,通常日期以 ...
- 图片预览------photoswipe 使用
photoswipe 使用 预览图片后,需要点击关闭按钮才能关闭,点击图片事件效果是放大图片,和微信的效果不一致,最后改用微信预览图片的接口了,但是例子可以用,记录一下!! http://www.cn ...
- Linux系统编程---文件I/O(open、read、write、lseek、close)
文件描述符 定义:对内核而言,文件描述符相当于一个文件的标识,它是一个非负整数,当打开(open)一个现有文件或者创建(creat)一个新文件时,内核会向进程返回一个文件描述符 在unix中(文件描述 ...