整理自NAT地址转换过程


注:本文实质讲的是NAPT(Network Address Port Translation),即网络端口地址转换。NAPT与动态地址NAT不同,它将内部连接映射到外部网络中的一个单独的IP地址上,同时在该地址上加上一个由NAT设备选定的TCP端口号。NAPT算得上是一种较流行的NAT变体,通过转换TCP或UDP协议端口号以及地址来提供并发性。除了一对源和目的IP地址以外,这个表还包括一对源和目的协议端口号,以及NAT盒使用的一个协议端口号。
        说简单点就是在NAT的基础上增加了一个端口号,使原来单纯的IP地址之间的映射转变为端口的映射,可以使一个公网IP对应多个内网IP,这样内网IP的数量就可以不受限制了。

过程:
  1. 客户机将数据包发给运行NAT的计算机。
  2. NAT主机将数据包中的源端口号和源私有IP地址转换成自己的端口号和公网的IP地址,然后将数据包发给外部网络的目的主机。
  3. NAT主机记录一条跟踪信息在地址转换映像表中,以便向客户机发送响应信息。
  4. 外部网络发送回送信息给NAT主机。
  5. 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)地址转换过程的更多相关文章

  1. CCNA 之 十一 NAT 子网地址转换

    NAT 网络地址转换 全称:Network Address Translation 为什么需要NAT? 因为公网IP(IPv4)地址紧缺,内容地址通过NAT转换成一个公有地址去访问公网资源: 如下图展 ...

  2. 基于eNSP的NAT/NAPT协议仿真实践

    一. 基本原理 eNSP(Enterprise Network Simulation Platform)是一款由华为提供的.可扩展的.图形化 操作的网络仿真工具平台,主要对企业网络路由器.交换机进行软 ...

  3. 二、NAT(地址转换模式)

    刚刚我们说到,如果你的网络ip资源紧缺,但是你又希望你的虚拟机能够联网,这时候NAT模式是最好的选择.NAT模式借助虚拟NAT设备和虚拟DHCP服务器,使得虚拟机可以联网.其网络结构如下图所示: NA ...

  4. NAT(地址转换技术)学习

    一.什么是NAT,NAT产生的背景 NAT通常部署在一个组织的网络出口位置,通过将内部网络IP地址替换为出口的IP地址提供公网可达性和上层协议的连接能力. NAT产生的背景是为了解决IPv4地址不足的 ...

  5. WireGuard 教程:使用 DNS-SD 进行 NAT-to-NAT 穿透

    原文链接:https://fuckcloudnative.io/posts/wireguard-endpoint-discovery-nat-traversal/ WireGuard 是由 Jason ...

  6. iptables配置——NAT地址转换

    iptables nat 原理同filter表一样,nat表也有三条缺省的"链"(chains): PREROUTING:目的DNAT规则 把从外来的访问重定向到其他的机子上,比如 ...

  7. NAT地址转换原理全攻略

    NAT转换方式及原理 在NAT的应用中,可以仅需要转换内部地址(就是“内部本地址”转换成“内部全局地址”),这是最典型的应用,如内部网络用户通过NAT转换共享上网:也可以是仅需要转换外部地址(就是“外 ...

  8. 分配IP地址的好东西 DHCP以及NAT简单介绍

    主机配置协议DHCP 1.DHCP应用场景 2.DHCP基础原理 3.NAT简单介绍 4.配置命令 1.手工配置IP地址,工作量比较大而且不好管理,如果用户自己修改参数,可能会导致ip地址冲突,这个时 ...

  9. 清除路由器NAT地址转换

    首先当你的NAT网络地址转换成功搭建起来,并且测试过网络通信时,此时NAT地址转换表上面是存在转换信息的,你可以通过在特权模式下输入命令"show ip nat translation&qu ...

随机推荐

  1. C# 解决DrawImage绘制图片拉伸产生渐变

    ImageAttributes ImgAtt = new ImageAttributes(); ;                 ImgAtt.SetWrapMode(System.Drawing. ...

  2. find which process occupy the PORT

    mac :   lsof -i:8080 linux : netstat -anltp | grep 8080

  3. CSS实现背景透明,文字不透明(各浏览器兼容) (转)

    /*CSS*/ .waps{ background:url(07158.bmp) no-repeat top center fixed; width:1004px; text-align:center ...

  4. Android测试分析3

    一个基本的测试用例-- 如果是在eclipse中开发,那么需要在AndroidManifest.xml中加入如下两段代码:    <uses-library android:name=" ...

  5. 安卓获取Assets目录下的资源

    获取Assets目录下的资源 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 ! ...

  6. js获得文件根目录

    function getRootPath(){ //获取当前网址,如: http://localhost:8083/proj/meun.jsp var curWwwPath = window.docu ...

  7. php session_id()函数介绍及代码实例

    session_id()功能: 获取设置当前回话ID. 函数说明: string session_id ([ string $id ] ) 参数: 如果指定了参数$id,那么函数会替换当前的回话id. ...

  8. Google Maps API 调用实例

    本实例介绍如何调用Google Maps API,并实现用鼠标标注地图,保存进数据库,以及二次加载显示等. 1.需要新建一个自定义控件(如:Map.ascx),用于显示Google地图: <%@ ...

  9. PAT_1026 程序运行时间

    问题描述: 要获得一个C语言程序的运行时间,常用的方法是调用头文件time.h,其中提供了clock()函数,可以捕捉从程序开始运行到clock()被调用时所耗费的时间.这个时间单位是clock ti ...

  10. Qt 操作Excel

    Qt对Excel的数据读/写操作没有现存的类,需要使用QAxObject,下面是从网上下载下来的一个封装好的类,感觉还可以,一般情况下够用,拿来给大家分享. 头文件: #ifndef EXCELENG ...