1      NAT ALG简介

普通NAT实现了对UDP或TCP报文头中的的IP地址及端口转换功能,但对应用层数据载荷中的字段无能为力,在许多应用层协议中,比如多媒体协议(H.323、SIP等)、FTP、SQLNET等,TCP/UDP载荷中带有地址或者端口信息,这些内容不能被NAT进行有效的转换,就可能导致问题。而NAT ALG(Application Level Gateway,应用层网关)技术能对多通道协议进行应用层报文信息的解析和地址转换,将载荷中需要进行地址转换的IP地址和端口或者需特殊处理的字段进行相应的转换和处理,从而保证应用层通信的正确性。

例如,FTP应用就由数据连接和控制连接共同完成,而且数据连接的建立动态地由控制连接中的载荷字段信息决定,这就需要ALG来完成载荷字段信息的转换,以保证后续数据连接的正确建立。

2      NAT ALG特点

NAT ALG为内部网络和外部网络之间的通信提供了基于应用的访问控制,具有以下优点:

(1)    ALG统一对各应用层协议报文进行解析处理,避免其它模块对同一类报文应用层协议的重复解析,可以有效提高报文转发效率。

(2)    可支持多种应用层协议:FTP、H.323(包括RAS、H.225、H.245)、SIP、DNS、ILS、MSN/QQ、NBT、RTSP、SQLNET、TFTP等。

3      NAT ALG技术实现

先介绍ALG涉及到的两个概念:

会话:记录了传输层报文之间的交互信息,包括源IP地址、源端口、目的IP地址、目的端口,协议类型和源/目的IP地址所属的VPN实例。交互信息相同的报文属于一条流,通常情况下,每个会话对应出方向和入方向的两条流。

动态通道:当应用层协议报文中携带地址信息时,这些地址信息会被用于建立动态通道,后续符合该地址信息的连接将使用已经建立的动态通道来传输数据。

下面以多通道应用协议FTP在NAT组网环境中的ALG应用来具体说明报文载荷的转换过程。

3.1      ALGFTP的应用

FTP的两种不同工作模式:PORT(主动模式)与PASV(被动模式)。

FTP需要用到两个连接:控制连接与数据连接,控制连接专门用于FTP控制命令及命令执行信息传送;数据连接专门用于传输数据(上传/下载)。

3.1.1      主动模式(PORT)的连接过程

图1所示,位于内部网络的客户端以PORT方式访问外部网络的FTP服务器,经过中间的设备进行NAT转换,该设备上使能了ALG特性。

图1 FTP PORT方式报文载荷的ALG处理图

图1中私网侧的主机要访问公网的FTP服务器。NAT设备上配置了私网地址192.168.1.2到公网地址8.8.8.11的映射,实现地址的NAT转换,以支持私网主机对公网的访问。组网中,若没有ALG对报文载荷的处理,私网主机发送的PORT报文到达服务器端后,服务器无法根据私网地址进行寻址,也就无法建立正确的数据连接。整个通信过程包括如下四个阶段:

(1)    私网主机和公网FTP服务器之间通过TCP三次握手成功建立控制连接。

(2)    控制连接建立后,私网主机向FTP服务器发送PORT报文,报文中携带私网主机指定的数据连接的目的地址和端口,用于通知服务器使用该地址和端口和自己进行数据连接。

(3)    PORT报文在经过支持ALG特性的NAT设备时,报文载荷中的私网地址和端口会被转换成对应的公网地址和端口。即设备将收到的PORT报文载荷中的私网地址192.168.1.2转换成公网地址8.8.8.11,端口1084转换成12487。

(4)    公网的FTP服务器收到PORT报文后,解析其内容,并向私网主机发起数据连接,该数据连接的目的地址为8.8.8.11,目的端口为12487(注意:一般情况下,该报文源端口为20,但由于FTP协议没有严格规定,有的服务器发出的数据连接源端口为大于1024的随机端口,如本例采用的是wftpd服务器,采用的源端口为3004)。由于该目的地址是一个公网地址,因此后续的数据连接就能够成功建立,从而实现私网主机对公网服务器的访问。

NAT ALG原理的更多相关文章

  1. NAT ALG原理与应用

    1  NAT ALG简介 普通NAT实现了对UDP或TCP报文头中的的IP地址及端口转换功能,但对应用层数据载荷中的字段无能为力,在许多应用层协议中,比如多媒体协议(H.323.SIP等).FTP.S ...

  2. [p2p]UDP用打洞技术穿透NAT的原理与实现

    首先先介绍一些基本概念:            NAT(Network Address             Translators),网络地址转换:网络地址转换是在IP地址日益缺乏的情况下产生的, ...

  3. 【转】P2P之UDP穿透NAT的原理与实现(附源代码)

    作者:shootingstars (有容乃大,无欲则刚)  日期:2004-5-25 出处:P2P中国(PPcn.net) P2P 之 UDP穿透NAT的原理与实现(附源代码)原创:shootings ...

  4. 深入学习NAT工作原理

    深入学习NAT工作原理 我们单位中的电脑很多,组成了一个局域网,网络中只有一个电脑和外网(Internet)相连,当然有一个外网地址,但仅仅一个.我以前一直不明白,我们局域网的电脑均能上网,几台同时上 ...

  5. NAT alg 和 ASPF

    NAT alg 和 ASPF 参考:https://handbye.cn/719.html 来源:https://www.jianshu.com/p/8a8eb36eef7d NAT的部署已经在企业网 ...

  6. LVS负载均衡NAT模式原理介绍以及配置实战

    LVS基本原理 流程解释: 当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间 PREROUTING 链首先会接收到用户请求,判断目标 IP 确定是本机 IP ...

  7. [转]UDP穿透NAT的原理与实现(UDP“打洞”原理)

    NAT(The IP Network Address Translator) 的概念和意义是什么? NAT, 中文翻译为网络地址转换.具体的详细信息可以访问RFC 1631 - http://www. ...

  8. 网络基础篇之NAT(原理)

    一.NAT的产生 由于网络的飞速发展和网络应用的极速增多,致使IPv4可用地址空间逐渐枯竭.尽管IPv6可以在根本上解决地址枯竭问题,但IPv4发展到IPv6还需要一个过渡,而这便产生了NAT. 二. ...

  9. 手写内网穿透服务端客户端(NAT穿透)原理及实现

    Hello,I'm Shendi. 这天心血来潮,决定做一个内网穿透的软件. 用过花生壳等软件的就知道内网穿透是个啥,干嘛用的了. 我们如果有服务器(比如tomcat),实际上我们在电脑上开启了服务器 ...

随机推荐

  1. WPF Popup 置顶问题

    原文 WPF Popup 置顶问题 问题: 使用wpf的popup,当在popup中弹出MessageBox或者打开对话框的时候,popup总是置顶,并遮住MessageBox或对话框. 解决: 写如 ...

  2. 性能测试之LoardRunner 结果分析

    性能结果分析是性能测试中的重中之重,也是难点所在,以下总结了看图的一些顺序: 1.首先可以检查Analysis模块提供的Summary Report,整个测试过程中我们所关心的各业务 2.首先关注性能 ...

  3. 论文阅读笔记 - YARN : Architecture of Next Generation Apache Hadoop MapReduceFramework

    作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...

  4. 【VBA研究】VBA通过HTTP协议实现邮件轨迹跟踪查询

    作者:iamlasong 1.接口说明 通过互联网訪问,运单跟踪信息查询接口基于HTTP协议开发,接口为RESTFul风格的Web Service,信息交互过程为用户按我方提供的web service ...

  5. Android手势识别(单击 双击 抬起 短按 长按 滚动 滑动)

    对于触摸屏,其原生的消息无非按下.抬起.移动这几种,我们只需要简单重载onTouch或者设置触摸侦听器setOnTouchListener即可进行处理.不过,为了提高我们的APP的用户体验,有时候我们 ...

  6. 国际化之MessageFormat与占位符

    如果一个字符串文本中包含了多个与国际化相关的数据,可以使用MessageFormat类对这些数据进行批量处理. 例如: 在2016年1月9日的时候,一场台风导致了500间房屋的摧毁和¥1000000元 ...

  7. Ubuntu 无法拖拽复制

    首先确定 在ubuntu 下,vmware tools 已经安装成功 有些时候会出现vmware tools 已经安装成功,但是却无法实现拖拽和复制 1.首先在虚拟机设置里面勾选共享剪切板 2.然后重 ...

  8. uva 11212

    非原创!!! 原作者地址:http://www.hardbird.net/?p=238

  9. 如何在使用摩托罗拉上的RSS阅读器应用进行一次订阅

    订阅一个CSDN的RSS为例. 1.打开RSS阅读器. 2.设置->新增订阅->手动新增 订阅URL:输入http://articles.csdn.net/api/rss.php?tid= ...

  10. C语言数据结构----递归的应用(斐波拉契数列、汉诺塔、strlen的递归算法)

    本节主要说了递归的设计和算法实现,以及递归的基本例程斐波拉契数列.strlen的递归解法.汉诺塔和全排列递归算法. 一.递归的设计和实现 1.递归从实质上是一种数学的解决问题的思维,是一种分而治之的思 ...