H.323与SIP分别是ITU和IETF制定的多媒体通信的应用控制协议,目前主要使用在IP电话上.
H.323协议提出的较早,它的主要设计思想也是基于传统的电话模式.而SIP协议则提出的较晚,它借鉴了HTTP协议的设计思想. 目前IP电 话中大量采用H.323协议,但是从长远的来看,SIP取代H.323已成必然,所以在目前过渡时期H.323和SIP两大协议的互通变显得重要起来. 虽然它们分别来自两个不同的组织,有着不同的设计思想,但是内容都是差不多的,始终都是围绕着电话的各种信令,只是实现方式不同罢 了.本文降介绍一种H.323与SIP互通网关的开发思路.
既然是H.323与SIP互通的网关,它一定要同时支持H.323和SIP两种协议,网关的主要任务就是负责H.323和SIP信令的转换.所以网关主要 由3个部分组成:h.323 endpoint,sip ua,translator.
例如:H.323呼叫SIP电话的流程(针对网关内部): h.323 ep部分收到一个呼叫setup消息,然后把这个setup消息交给 translator,translator在这个setup消息中提取一些重要参数,例如:源地址,目的地址,序号,标识符等,由这个重要的参数交给sip ua产 生一个invite消息,并发送到目的地.
当然这只是最简单的一种模式,一个网关设计出来应该支持以下4种模式:
下面详细来说明:
下图是两个无代理服务器的SIP终端通话流程.
下图是两个无注册网守的H.323终端通话流程.
这一个由H.323终端发起呼叫.
下面再来看SIP终端发起通过网关的呼叫.
通过观察上面这个流程图可以容易的看出,GW在收到INVITE消息后立即发送SETUP消息,反之亦然.
所以可以得到如下的H.323和SIP的消息对应关系:
H.323 消息 SIP 消息
Setup Invite
Call Proceeding 100 Trying
Alerting 180 Ringing
Connect 200 OK
Release Complete BYE
值得注意的是在非快速呼叫的情况下Setup和Invite不是一一对应的,事实上上述对应关系只能在某些时刻对应,例如在SIP UA发送完180 Ringing后,操作者决定接电话发出的200 OK才对应的是Connect.
所以依此类推,考虑最复杂的情况两边分别加入Proxy和GK,呼叫流程如下:
转贴自http://blog.csdn.net/wffy