H323学习笔记四之呼叫流程的建立

前一篇文章提到:H323系统中的一次完整的点到点呼叫通信由五个阶段组成:呼叫建立通信初始化和能力交换视听通信的建立呼叫服务呼叫终止。他们有各自的特点和功能,接下来按序介绍:

呼叫建立
  1. 任何通信都要有一个呼叫建立的过程,往往是通信的第一步。这个与自己以前接触的SIP协议是保持一致的。在这里也简单回顾一下整个SIP协议下会话建立的流程:
      发起SIP会话之前,往往需要向服务器发起注册,所以先发送REGISTER信令,然后集成的服务器会进行鉴权或者不进行鉴权,然后这个时候发起INVITE信令来建立会话,会话过程中会有100tring、180ringing等信令的交互,还有基于SDP协议的携带了媒体参数的200OK回应,对应在媒体参数进行协商,最后进行ACK确认会话,配置媒体层编解码器。可以说与上述的五个阶段也是保持吻合的。在呼叫建立时有INVITE,然后初始化和能力交换对应就是媒体参数的协商,视听通信的建立就是最后协商成功后的ACK确认,呼叫服务可以对应SIP通信中的RE-INVITE、INFO、MESSAGE等信令,最后的呼叫终止对应为BYE的阶段。

  这个和SIP协议基本是吻合的。那带着这样的判断往下看,需要探究具体H323呼叫建立的过程是怎么样呢?

  H323协议中描述了呼叫建立的信令过程,根据具体情况不同,呼叫建立信令过程形式多样。根据参与的实体情况,可以分为:基本呼叫建立(只存在两个端点)、有网守参与的呼叫建立、通过网关的呼叫建立、含有MCU的呼叫建立、转发型呼叫的建立、广播型呼叫建立等。其中,基于呼叫建立和网守参与的呼叫建立是最基础和常用的方式。对于SIP协议中的SIP服务器就是这里的网守,基本自己在使用SIP协议建立会话时,也就是这两种应用场景,一个是端对端的直接呼叫,一个就是通过SIP服务器建立会话。基本呼叫建立的信令过程的具体步骤为:
在这里插入图片描述

①端点1根据端点2的网络层地址和呼叫信令信道公认的传输服务访问点,建立至端点2的呼叫信令信道,并在此信道上向端点2发送Setup消息,消息中包含端点1分配的本地呼叫信令信道和将要建立的H.245控制信道的传输层地址。
②如果端点2同意建立呼叫,此时建立至端点1的呼叫信令信道,发送(2) (3) (4)消息,在这三个消息中都可以包含端点2分配的H.245控制信道的传输层地址。
③端点1接受Connect消息后,呼叫建立,H.245控制信道同时建立,这时候可以释放呼叫信令信道,也可以保留它,直到整个呼叫结束时再释放。
为了对比H.323会话建立和SIP会话建立的区别,我特意去抓了SIP建立会话的包,在信令层上与之前所写的SIP通信的过程是保持一致的。
在这里插入图片描述
  由于现在手头上,并没有找到支持H.323协议通信的终端,所以暂时没抓包观察。但是从流程上来分析,应该也需要遵循一定的协议,通过信令层的交互来建立会话。这个等找到合适的软终端来模拟该过程以后再来验证。

倘若在呼叫建立的过程中有网守的参与,暂时先考虑只有一个网守参与的情况,不考虑级联之类的更为复杂的情况。此时信令的交互过程为:
在这里插入图片描述
能看到,这里的网守特别像SIP协议中的代理服务器的功能。也就是两个端点向网守注册,注册完成以后,端点1(主叫)在RAS信道上向网守发送ARQ消息,请求发起到端点2(被叫)的呼叫。如果网守同意发起此呼叫,则根据端点2的注册信息,得到端点2的呼叫信令信道传输层地址,包含在ACF消息中回送端点1。端点1建立至端点2的呼叫信令信道,在此信道上发送Setup消息。端点2回送Callproceeding消息,通知端点1呼叫已经收到,正在处理之中。如果端点2统一接受此呼叫,在在RAS信道上向网守发送ARQ消息,请求接受此呼叫。如果网守同意端点2接受此呼叫,则回送ACF消息。端点2向端点1回送Alerting和Connect消息,消息中可以包含端点2的H.245控制信道的传输层地址。端点1接受Connect消息后,呼叫建立,H245控制信道同时建立。另外,如果网守不同意端点1发起呼叫,则回送ARJ消息给端点1,呼叫结束。如果网守不同意端点2接受呼叫,则回送ARJ消息给端点2,此时端点2向端点1发送Release Complete,呼叫结束。呼叫建立完成后,H.245控制信道必然建立,它是以后通信控制的主要信道。

通信初始化和能力交换

H.245控制信道可以由被叫端点在收到SetUp消息及主叫端点收到CallProceeding或者Alerting消息后建立。如果没有收到Connect消息,或某端点发送Release Complete,H.245控制信道必须关闭。
如果H.245控制信道建立,则端点系统在此信道上互相发送的第一条消息是H.245的terminalCapabilitySet,进行能力交换,目的是为了是双方了解对方接收和发送信号的能力。
如果两个端点都有MC能力,将通过主从确定过程来决定主MC,然后,主MC可以发送mcLocationIndication消息。此处理过程也指示了如何进行双向数据信道的主从确定。另外,如果最初的能力交换或主从确定失败,应当至少重试两次后才能放弃连接尝试,进行第五阶段的呼叫终止。

视听通信的建立

在能力交换和主从确定之后,端点可以根据对方的接收能力建立相应的逻辑信道。这一阶段的主要任务就是用来为不同的信息流打开逻辑信道。根据前面所述,由于传送信息的不同,逻辑信道有不可靠逻辑信道和可靠逻辑信道之分。不可靠信道就是单向信道,音频和视频流在单向信道中传输,可靠信道是双向信道,传输数据信号。单向信道的打开有发送方发起,发送方在H245控制信道上发送OpenLogicalChannel消息,消息中包含前向逻辑信道号和信道参数,接收方回送OpenLogicalChannelAck消息,消息中包含接收方分配给该逻辑信道的传输层地址。
双向信道的打开过程与单向信道类似,主要差别是消息中还包含反向信道的参数,另外请求方收到OpenLogicalChannelAck消息后,还要回复一个OpenLogicalChannelConfirm消息,指示反向信道建立,可以发送信号。
如果关联的音频和视频信道都建立了,发送方还需要发送H2250MaxinmumSkewIndication消息,指示这对视听信号间的最大同步偏差。逻辑信道建立后,就可以在信道中传送用户信息了。根据上述的这些信息,其实在实际应用中,可能会有所阉割,完整的最为复杂的过程,往往在实际应用中,不需要如此复杂的过程。这个后续再考虑。

任一端点都可以提出终止呼叫

在这里插入图片描述
 &emsp整个终止的过程如图所示,端点1停止在逻辑信道上传输信号,并且关闭所有的逻辑信道。端点1在H245控制信道上向端点2发送H245的EndSessionCommand消息,告诉对方要终止此呼叫,然后停止发送H245消息。然后关闭H245控制信道。端点2收到此消息后,也停止传输信号,关闭所有的逻辑信道,并向端点1回送EndSessionCommand消息。然后关闭H245控制信道。如果呼叫建立完成是H225的呼叫信令信道没有关闭,那么端点1还需发送H225的ReleaseComplete消息以关闭呼叫信令信道。至此呼叫终止。注意,终止一个呼叫可以不终止会议,需要用H245的DropConference消息明确终止会议,此时,端点必须等待MC按照以上步骤终止呼叫。如果呼叫时有网守参与,则还需进行呼叫清理工作,端点1和2分别向所在网守发送DRQ和RAS消息,提示网守可以释放呼叫时占有的呼叫带宽。最后网守回送DCF消息,至此呼叫清理完成。另外,呼叫终止也可以由网守提出。这种形式后续再研究。先能够实现最基本的基于网守的通信。

通信过程中异常情况的处理

  H245控制信道的底层可靠协议利用适当的开销在信道上传输和接收数据,以监测协议是否失败。如果报告信道上协议失败,H245控制信道和所有相关的逻辑信道都必须关闭。并按照呼叫终止阶段的步骤进行,就好像其他的端点已经发送了H245的EndSessionCommand消息。这些步骤包括向网守发送DRQ消息和关闭呼叫信令信道。在多点会议中,如果有MC检测到协议失败,MC必须向剩余的端点发送TerminalLeftConference消息。在没有用户干预时,由具体应用产品决定是否再尝试建立呼叫,但是这对于其它端点和网守都是一次新的呼叫。所以这个具体的决策由具体的产品来决定,并不在协议本身的规定和限制内。

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值