NAT(NAPT)地址转换过程
整理自NAT地址转换过程
注:本文实质讲的是NAPT(Network Address Port Translation),即网络端口地址转换。NAPT与动态地址NAT不同,它将内部连接映射到外部网络中的一个单独的IP地址上,同时在该地址上加上一个由NAT设备选定的TCP端口号。NAPT算得上是一种较流行的NAT变体,通过转换TCP或UDP协议端口号以及地址来提供并发性。除了一对源和目的IP地址以外,这个表还包括一对源和目的协议端口号,以及NAT盒使用的一个协议端口号。
说简单点就是在NAT的基础上增加了一个端口号,使原来单纯的IP地址之间的映射转变为端口的映射,可以使一个公网IP对应多个内网IP,这样内网IP的数量就可以不受限制了。
过程:
- 客户机将数据包发给运行NAT的计算机。
- NAT主机将数据包中的源端口号和源私有IP地址转换成自己的端口号和公网的IP地址,然后将数据包发给外部网络的目的主机。
- NAT主机记录一条跟踪信息在地址转换映像表中,以便向客户机发送响应信息。
- 外部网络发送回送信息给NAT主机。
- NAT主机根据映像表中的记录,将所收到数据包的端口号和公用IP地址转换成目标主机的端口号和内部网络中目标主机的专用IP地址,并转发给目标主机。
举例:
内网机器(192.168.0.5) 访问目标主机(220.181.28.42)
1、客户机发送数据包
目的主机 220.181.28.42目的端口 80源主机 192.168.0.5 (内网的私有IP)源端口 1025 (随机打开)
2、进行地址转换
目的主机 220.181.28.42
目的端口 80
源主机 218.22.192.21 (NAT服务器的公网IP)
源端口 5000 (随机打开)
3、记录映像
192.168.0.5 tcp 1025 ----- 218.22.192.21 tcp 5000
4、外部网络主机向NAT主机发送响应信息
目的主机 218.22.192.21
目的端口 5000
源主机 220.181.28.42
源端口 80
5、查找映像关系将数据包发给客户机
目的主机 192.168.0.5
目的端口 1025
源主机 220.181.28.42
源端口 80
NAT(NAPT)地址转换过程的更多相关文章
- CCNA 之 十一 NAT 子网地址转换
NAT 网络地址转换 全称:Network Address Translation 为什么需要NAT? 因为公网IP(IPv4)地址紧缺,内容地址通过NAT转换成一个公有地址去访问公网资源: 如下图展 ...
- 基于eNSP的NAT/NAPT协议仿真实践
一. 基本原理 eNSP(Enterprise Network Simulation Platform)是一款由华为提供的.可扩展的.图形化 操作的网络仿真工具平台,主要对企业网络路由器.交换机进行软 ...
- 二、NAT(地址转换模式)
刚刚我们说到,如果你的网络ip资源紧缺,但是你又希望你的虚拟机能够联网,这时候NAT模式是最好的选择.NAT模式借助虚拟NAT设备和虚拟DHCP服务器,使得虚拟机可以联网.其网络结构如下图所示: NA ...
- NAT(地址转换技术)学习
一.什么是NAT,NAT产生的背景 NAT通常部署在一个组织的网络出口位置,通过将内部网络IP地址替换为出口的IP地址提供公网可达性和上层协议的连接能力. NAT产生的背景是为了解决IPv4地址不足的 ...
- WireGuard 教程:使用 DNS-SD 进行 NAT-to-NAT 穿透
原文链接:https://fuckcloudnative.io/posts/wireguard-endpoint-discovery-nat-traversal/ WireGuard 是由 Jason ...
- iptables配置——NAT地址转换
iptables nat 原理同filter表一样,nat表也有三条缺省的"链"(chains): PREROUTING:目的DNAT规则 把从外来的访问重定向到其他的机子上,比如 ...
- NAT地址转换原理全攻略
NAT转换方式及原理 在NAT的应用中,可以仅需要转换内部地址(就是“内部本地址”转换成“内部全局地址”),这是最典型的应用,如内部网络用户通过NAT转换共享上网:也可以是仅需要转换外部地址(就是“外 ...
- 分配IP地址的好东西 DHCP以及NAT简单介绍
主机配置协议DHCP 1.DHCP应用场景 2.DHCP基础原理 3.NAT简单介绍 4.配置命令 1.手工配置IP地址,工作量比较大而且不好管理,如果用户自己修改参数,可能会导致ip地址冲突,这个时 ...
- 清除路由器NAT地址转换
首先当你的NAT网络地址转换成功搭建起来,并且测试过网络通信时,此时NAT地址转换表上面是存在转换信息的,你可以通过在特权模式下输入命令"show ip nat translation&qu ...
随机推荐
- Android(java)学习笔记165:Android的Junit调试
编写android应用的时候,往往我们需要编写一些业务逻辑实现类,但是我们可能不能明确这个业务逻辑是否可以成功实现,特别是逻辑代码体十分巨大的时候,我们不可能一行一行检查自己的代码,为了解决这样的问题 ...
- css怎么写链接到图片和地址
- 几个MVC属性
1 用于显示提示字符串 [Required(ErrorMessage="请输入类型名称")] public string ArticleTypeName { get; set; ...
- 【SQL】Update中使用表别名、如何用表中一列值替换另一列的所有值
Update中使用表别名 select中的表别名: select * from TableA as ta update中的表别名: update ta from TableA as ta 如何用表中一 ...
- ISA2006 下建立VPN连接时出现“错误800”时的解决办法
[转载]http://social.microsoft.com/Forums/zh-CN/9cfa0c06-0f46-44cb-9e8f-8eba1c3821ba/vpn-vpn800 重启Routi ...
- android使用广播退出应用程序
由于在(Widget或Service.BroadcastReceiver中)使用startActivity()方法启动activity时需使用FLAG_ACTIVITY_NEW_TASK flag,所 ...
- 自动生成get,set方法
引发的问题: Action中有一个属性名字叫private boolean isHideNumber 用struts2的<s:if test ="isHideNumber"& ...
- 经历:easyui的datagrid没有数据滚动条的显示
今天,一个用户提出一个这样的问题,"查询不到结果时,为什么我看不到后面的标题呢?" 最初,我听到这个问题时,第一反应是:查出来数据不就有滚动条了吗,干嘛非要较真呢? 不过,后来想想 ...
- OC - 12.NSURLRequest与NSURLConnection
##NSURLRequest NSURLRequest封装了一次网络请求所需要的数据,主要封装了以下信息: 请求路径(URL) 请求方法(GET或POST) 请求头 请求体 超时参数 NSURLReq ...
- P1396 营救
P1396 营救 218 通过 571 提交 题目提供者yeszy 标签 二分 图论 并查集 福建省历届夏令营 难度 普及- 题目描述 "咚咚咚--""查水表!" ...