NAT ALG原理与应用
1NAT ALG简介
普通NAT实现了对UDP或TCP报文头中的的IP地址及端口转换功能,但对应用层数据载荷中的字段无能为力,在许多应用层协议中,比如多媒体协议(H.323、SIP等)、FTP、SQLNET等,TCP/UDP载荷中带有地址或者端口信息,这些内容不能被NAT进行有效的转换,就可能导致问题。而NAT ALG(Application Level Gateway,应用层网关)技术能对多通道协议进行应用层报文信息的解析和地址转换,将载荷中需要进行地址转换的IP地址和端口或者需特殊处理的字段进行相应的转换和处理,从而保证应用层通信的正确性。
例如,FTP应用就由数据连接和控制连接共同完成,而且数据连接的建立动态地由控制连接中的载荷字段信息决定,这就需要ALG来完成载荷字段信息的转换,以保证后续数据连接的正确建立。
2NAT ALG特点
NAT ALG为内部网络和外部网络之间的通信提供了基于应用的访问控制,具有以下优点:
(1)ALG统一对各应用层协议报文进行解析处理,避免其它模块对同一类报文应用层协议的重复解析,可以有效提高报文转发效率。
(2)可支持多种应用层协议:FTP、H.323(包括RAS、H.225、H.245)、SIP、DNS、ILS、MSN/QQ、NBT、RTSP、SQLNET、TFTP等。
3NAT ALG技术实现
动态通道:当应用层协议报文中携带地址信息时,这些地址信息会被用于建立动态通道,后续符合该地址信息的连接将使用已经建立的动态通道来传输数据。
下面以多通道应用协议FTP在NAT组网环境中的ALG应用来具体说明报文载荷的转换过程。
3.1ALG与FTP的应用
FTP的两种不同工作模式:PORT(主动模式)与PASV(被动模式)。
FTP需要用到两个连接:控制连接与数据连接,控制连接专门用于FTP控制命令及命令执行信息传送;数据连接专门用于传输数据(上传/下载)。
3.1.1主动模式(PORT)的连接过程
如图1所示,位于内部网络的客户端以PORT方式访问外部网络的FTP服务器,经过中间的设备进行NAT转换,该设备上使能了ALG特性。
(1)私网主机和公网FTP服务器之间通过TCP三次握手成功建立控制连接。
(2)控制连接建立后,私网主机向FTP服务器发送PORT报文,报文中携带私网主机指定的数据连接的目的地址和端口,用于通知服务器使用该地址和端口和自己进行数据连接。
FTP客户端发出的PORT报文经过NAT设备后对应FTP服务器端上抓的第13个报文,私网地址192.168.1.2转换成公网地址8.8.8.11,端口1084转换成12487,如图5所示:
3.1.2被动模式(PASV)的连接过程
如图6所示,位于外部网络的FTP客户端以PASV方式访问内部网络的FTP服务器,经过中间的设备进行NAT转换,该设备上使能了ALG特性。
图2中的NAT设备上配置了私网地址192.168.1.1到公网地址8.8.8.2的映射,实现地址的NAT转换。整个通信过程包括如下四个阶段:
客户端向服务器发送TCP连接请求。TCP连接建立成功后,服务器和客户端进入用户认证阶段。若TCP连接失败,服务器会断开与客户端的连接。
3.2ALG与H323/SIP的应用
3.2.1ALG与H323的应用
H.323协议用于发起会话,它能控制多个参与者参加的多媒体会话的建立和终结,并能动态调整和修改会话属性,如会话带宽要求、传输的媒体类型(语音、视频等)、媒体的编解码格式、广播的支持等。
H.323协议采用Client/Server模型,如在图9所示的语音组网中,主要通过网关(Gateway)与网守(Gatekeeper)之间的通信来完成用户呼叫的建立过程。
网关(Gateway):用于连接H323电话终端;
网守(Gatekeeper):注册/位置/代理服务器,管理各gateway
(1)UDP RAS报文:gatekeeper、registar、admission的request和confirm报文
(2)TCP H.225报文:setup、alerting、connect报文
(3)TCP H.245报文:open logical chanel、open logical chanel ACK报文
RAS连接:网关与网守之间的UDP连接,源目的端口均是1719。
H.225连接:routed模式建立在网关与网守之间,redirect模式建立在网关与网关之间的TCP连接。源端口一般是发起方随机分配的,目的端口是1720。
H.245连接:routed模式建立在网关与网守之间,redirect模式建立在网关与网关之间的TCP连接。源端口一般是发起方随机分配的,目的端口通过H.225的connect报文协商。
RTP/RTCP连接:建立在网关与网关之间的UDP连接。源和目的通过H.245连接里的open logical chanel及其ACK报文协商。
3.2.2ALG与SIP的应用
SIP消息采用文本方式编码,包括请求消息与响应消息两类。SIP请求消息包括如下六种。
(6)REGISTER:用于向SIP注册服务器登记用户位置等信息。
SIP响应消息用于对请求消息进行响应,指示呼叫或注册的成功或失败状态。在请求与响应报文中需要进行ALG处理的地址字段类型主要有:Via、Record_Route、Contact、SDP。
首先,ALG根据会话标识的协议类型对报文进行解码,若解码发现报文为不需要做ALG或解码发现为错误字段时退出,解码发现需进行字段转换时进一步处理;
其次,ALG查找接口上的NAT配置,根据NAT配置转换报文中的IP地址、端口、call-id等信息并建立关联表,关联表记录了载荷地址的转换关系;
NAT ALG原理与应用相关推荐
- NAT 网络地址转换技术(一)NAT原理介绍:静态NAT、动态NAT、NAPT、Easy IP、NAT ALG、NAT服务器、双向NAT技术
文章目录 出现原因 基本概念 NAT技术基本原理 源NAT技术 静态NAT 动态NAT NAPT Easy IP NAT ALG NAT服务器 双向NAT技术 域间双向NAT(NAT Server+源 ...
- NAT ALG与ASPF
一,NAT ALG NAT ALG(Application Level Gateway)应用级网关,支持对应用层信息进行相应转换.通常情况下,NAT只对报文的IP头部的地址信息喝TCP/UDP头部的端 ...
- 通过NAT ALG实现FTP服务器的访问【实例】
[注:本实验和相关理解限于本人知识水平,难免有错误,如有前辈发现,谢谢批评指正] 本实例拓扑的实现是在华为eNSP模拟器上进行的,使用了一台客户端.一台FTP服务器和两台华为AR2240路由器.相关的 ...
- P2P之UDP穿透NAT的原理
关键词: P2P UDP NAT 原理 穿透 Traveral Symmetric Cone 原始作者: Hwycheng Leo(FlashBT@Hotmail.com) 源码下载: http:// ...
- 通俗易懂:快速理解ipv4的NAT穿透原理
NAT基础 IPv4由于最初的设计原因,长度只有32位,所以只提供了大约40亿个地址.这造成了地址耗尽危机. NAT(Network Address Translation,网络地址转换),也 ...
- vmware nat模式原理探究,实现虚拟机跨网段管理
vmware nat模式原理探究: 理解nat模式,我们能更加了解主机与虚拟机之间如何通信,以及虚拟机如何实现上网. 以及便于我们分析虚拟机与主机无法通信和无法上外网的问题. 下面通过实战:虚拟网络拓 ...
- UDP用打洞技术穿透NAT的原理与实现
首先先介绍一些基本概念: NAT(Network Address Translators),网络地址转换:网络地址转换是在IP地址日益缺乏的情况下产生的,它的主要目的就是为了 ...
- P2P之UDP穿透NAT的原理与实现(转)
论坛上经常有对P2P原理的讨论,但是讨论归讨论,很少有实质的东西产生(源代码).呵呵,在这里我就用自己实现的一个源代码来说明UDP穿越NAT的原理. 首先先介绍一些基本概念: NAT(Netw ...
- Cisco IOS Unicast NAT 工作原理 [一]
NAT技术的出现源于对私有网络安全性的要求以及IPv4地址不够用的现状.Cisco IOS所支持的常用NAT技术有以下几种.今天发现公司同事对Cisco NAT的实现理解的不好,导致配置出问题.这里就 ...
- P2P之UDP穿透NAT的原理与实现
作者:Dipper 文章来源:http://herald.seu.edu.cn/blog/dipper/articles/7781.aspx 声明:原文来自P2P中国网,C#实现是作者做的,供参考 关 ...
最新文章
- 如何修改Cypress 测试代码中默认的超时时间(timeout)
- 交换两个数组 差最小 java_如何交换两个等长整形数组使其数组和的差最小(C和java实现)...
- 【程序员自救指南】一个证书,让我哄好了小师妹
- amd黑苹果万能显卡驱动_22款显卡乱战《赛博朋克2077》:AMD 4K败走麦城-显卡,赛博朋克2077,AMD,NVIDIA ——快科技(驱动之家旗下媒体)-...
- 万网m3 windows linux切换,万网主机怎么做首页内页301重定向
- 每日算法之三十五:Wildcard Matching
- 10.Swoole 运行流程
- 【Java基础教程】用Java实现猜数字小游戏
- opencv 二值化图像详解 一文看懂各种二值化方法
- 电力巡检系统无人机模块
- 用cheatengine实现街头霸王的无限生命
- 机器人视觉系统分为哪几种,主要包括哪些关键技术?
- Vue packages version mismatch
- Windows系统设置定时任务
- Google Earth Engine python ——从谷歌地球引擎(GEE)上的点提取栅格值的实现
- 智云通CRM:销售人员说太多,对吗?
- 黑马程序员Python学习一预备
- mac电脑安装python_-mac电脑怎么安装python
- 总线数据传输速率详解
- 创建Liunx系统虚拟机