一.H.323协议简介
H.323协议簇是ITU的一个标准协议栈,它是一个有机的整体,根据功能可以将它分为4类协议,也就是说该协议从系统的总体框架(H.323)、视频编解码(H.263)、音频编解码(G.723.1)、系统控制(H.245)、数据流的复用(H.225)等各方面作了比较详细的规定。
H323系统中的信息流是视频、音频和控制消息的组合。系统控制的协议包括H.323、H245和H225.0,而Q.931和RTP/RTCP是H225.0的主要组成部分。整个系统控制由H.245控制信道、H225.0呼叫信令信道和RAS(注册、许可、状态)信道提供。
H.225它主要处理传输路径问题,描述了如何操作网络包上的视频、音频、数据和控制信息使其提供H.323 装备会话服务。H.225 主要有两个部分:呼叫信令和RAS (注册、接入允许和状态)。H.225 详细定义了Q.931 信令信息的使用和支持。在IP 网络的TCP 端口1720需要创建一个可靠的TCP 呼叫控制信道,该端口完成Q.931 呼叫控制信息的初始化,从而实现连接、维持和呼叫分离功能。
H.245 是H.323 多媒体通信体系中的控制信令协议,其主要用于处于通信中的H.323 终点或终端间的端到端H.245 信息交换。H.245制定了一个控制信道分段和重新装配的协议层(CCSRL,Control Channel Segmentation and Reassembly Layer),它可以在易出错环境下保证应用的可靠性。H.245提供了一种功能交换的功能,它支持两端设备通过协商确定一组通用的功能集。
二.防火墙H.323 ALG功能简介
当内部网络的H.323终端穿越防火墙与公网上的H.323终端进行通信时,由于NAT功能只能将传输层的IP及端口进行转换,无法对H.323协议应用层携带的内部数据进行转换,应用层中内部数据直接被转发至公网,后续协议信息处理时会出现问题;而H323 ALG则可以实现应用层数据转换,协议数据发至Internet时,将其应用层内部信息转换成公网信息,实现完全隐藏内部终端达到通信正常的目的。
另外,应用防火墙一般只开放特定端口的数据进入内部网络,H.323协议属于多通道协议,控制连接使用端口1720,数据交换使用端口为临时协商,无法事先预知,若无ALG功能,协商出数据交换通道所用端口后,外部网络终端尝试对内部终端数据交换的端口进行连接时,防火墙会对其进行阻断,从而数据传输通道无法建立;开启H.323 ALG功能后,会在对应用层转换的IP地址及端口进行转换的同时,将其信息进行记录,使其在外部网络终端尝试对内部终端数据交换的端口进行连接时,防火墙进行协议识别,对后续相关协议报文执行放通策略,从而成功建立传输通道。
三.H.323 ALG的典型应用组网
四.一次基本的H323协议连接过程及防火墙处理流程
1. 客户端与服务器建立TCP三次握手连接
2.建立TCP连接之后,主叫终端通过H.225协议发送setup消息至被叫终端,表示主叫方希望建立通话(FW开启了H323 ALG功能)
1)内网主叫终端抓包报文
2)外网被叫终端抓包报文
由上面2个报文可以明显看出ALG对协议应用层的数据进行了处理。
3.被叫终端返回CallProceeding给主叫终端,表示被叫终端正在处理。
4.被叫终端返回Alerting报文给主叫终端,表示被叫用户已被振铃。1)内网主叫终端抓包报文
2)外网被叫终端抓包报文
5.被叫终端返回Connect报文给主叫终端,表示被叫用户已摘机并告知被叫终端已开放特定端口来进行下一阶段的协议协商过程。
1)内网主叫终端抓包报文
2)外网被叫终端抓包报文