h323这套h323协议栈的使用,正常需要多久能掌握

如何成功的运用+OPENH323+来开发商业的H.323+协议栈_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
如何成功的运用+OPENH323+来开发商业的H.323+协议栈
上传于||暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩86页未读,继续阅读
你可能喜欢基于H323的视频会议系统,H.239协议应该怎么实现。求助高手。_百度知道
基于H323的视频会议系统,H.239协议应该怎么实现。求助高手。
悬赏分不是问题,请高手不吝赐教。QQ:
我有更好的答案
323是通信协议H,用基于H,双流协议你要实现什么呀,就是用的H,H,用笔记本发送文档通过双流口.323的终端有双流口.239是双流协议
我们项目上想自己实现H.239双流协议,来完成视频会议中的数据功能,而不是用公司的成品或半成品。
这个是研发的问题,你得找研发的人员沟通了,呵呵,想跟我们厂家合作的可以找我。
其他类似问题
为您推荐:
您可能关注的推广
h323的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁&&&&H323协议学习,真个过程描述的非常清晰
&H323协议学习,真个过程描述的非常清晰
H323协议简介,介绍H323协议部分,从上端开始一直到下端,真个过程描述的非常清晰
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
Q.为什么我点的下载下不了,但积分却被扣了
A. 由于下载人数众多,下载服务器做了并发的限制。若发现下载不了,请稍后再试,多次下载是不会重复扣分的。
Q.我的积分不多了,如何获取积分?
A. 获得积分,详细见。
完成任务获取积分。
论坛可用分兑换下载积分。
第一次绑定手机,将获得5个C币,C币可。
关注并绑定CSDNID,送10个下载分
下载资源意味着您已经同意遵守以下协议
资源的所有权益归上传用户所有
未经权益所有人同意,不得将资源中的内容挪作商业或盈利用途
CSDN下载频道仅提供交流平台,并不能对任何下载资源负责
下载资源中如有侵权或不适当内容,
本站不保证本站提供的资源的准确性,安全性和完整性,同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
课程资源下载排行
您当前C币:2843&&&可兑换 5686 下载积分
兑换下载分:&
消耗C币:0&
立即兑换&&
兑换成功你当前的下载分为 。前去下载资源
你下载资源过于频繁,请输入验证码
如何快速获得积分?
你已经下载过该资源,再次下载不需要扣除积分
H323协议学习,真个过程描述的非常清晰
所需积分:1
剩余积分:0
扫描微信二维码精彩活动、课程更新抢先知
VIP会员,免积分下载
会员到期时间:日
剩余下载次数:1000
H323协议学习,真个过程描述的非常清晰
剩余次数:&&&&有效期截止到:
你还不是VIP会员VIP会员享免积分 . 专属通道极速下载
VIP下载次数已满VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员
你的VIP会员已过期VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员H323协议_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
上传于||暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩1页未读,继续阅读
你可能喜欢1447人阅读
(一)、综述
1.H.323协议简介
2.OPENH323协议栈总体框架
3、OPENH323协议栈主要类之间的关系图
(二)、重要协议过程和体系结构分析
2、H.245控制信令
3、H.225呼叫信令
5、控制协议的实现:
6、编解码器H323Codec
7、逻辑信道:
(三)、运行期分析
2、发现网守并向网守注册:
4、逻辑信道的打开及实时数据传输:
(一)、综述
1.H.323协议简介
H.323是国际电信联盟电信标准部(ITU-T)制定的标准,用于在网间网协议(IP)网络包括英特网上传输音频、视频和数据。如果能够与H.323兼容,供应商的产品和应用系统就可以相互通信和互操作。H.323标准描述了呼叫信令和控制、多媒体传输和控制。点对点带宽控制以及多点会议等业务。H系列标准还定义了综合业务数字网的(IS-DN)H.320和简单老师电话业务(POTS)传输机制的H.324。
H.323标准有下列组建和协议组成:
系统要素包括:终端、网关、网守和多点控制单元()等。
2.OPENH323协议栈总体框架
协议栈的源码是用来完成的,适用于平台和平台,该协议栈描述的是。协议栈的结构非常庞大,包括了实现协议的方方面面(当然,目前协议栈的功能还不是很完整)。然而,主要的是和。这几个类。而在这几个类中,最为重要的是和类。前者是所有基于协议栈的基础。
应用程序一般要创建一个类的派生类的实例。这是因为通过类可以直接或间接的对整个协议栈的各种主要的类进行调用和处理类封装了相当多的方法。当响应用程序实现的派生类时,通常会定义一些在协议栈中没有定义的属性和方法,这些属性和方法用于设定终端的一些初始化的或者基本的属性。比如振铃时播放的音乐文件的名称,缺省的呼叫设置,终端的能力集等。
而在类中,通常都会创建一个或多个类的派生类的实例,每一个实例对应一个后台处理线程(一般普通终端有两个线程,一个用于处理可靠连接还有一个线程用于处理不可靠连接,普通终端的线程可以在设置网守时才建立,也可以在启动时建立)。当检测到一个新的呼入时,就会创建一个类的的实例,负责传输信息。具体过程如下(以公关网守直接选路为例):
在一个应用程序(终端)完成启动过程后,在后台会运行一个处理的侦听线程。然后,如果有一个呼如的话,首先,侦听线程会收到一个连接请求,并建立一个新的传输,用于传输呼叫信令消息。成功建立传输后,该终端会接收到的消息。然后,该终端先返回一个的的消息,再通过传输发送给网守,网守返回给线程后,线程先后发送的和消息给主叫终端。这里所提到的线程既是类的实例。而线程则是类的实例。这两个类都派生于类,而则派生于。
呼叫信息都定义在用于处理两个终端直接的连接的类中,类的实例则负责记录所有这些活动的连接。终端实例会为每一个呼叫建立不同的连接,连接建立后,就开始新的信令协商()过程。
对于类,一般要创建一个类的派生类的实例,使用户根据实际的需要来重载其中的很多虚函数。例如,在收到消息时,可以播放音乐。通过派生和重载类,应用程序可以获得更大的自由度。
的主要协议过程例如主从确定、能力交换、逻辑通道信令等都是在类的派生类中定义的。
在协商的过程中,主叫终端和被叫终端都会创建逻辑信道。的派生类负责处理与此相关的过程。的控制信道是在的呼叫信令过程的后期建立的。在建立了控制信道后,应用程序会先启动该控制信道,然后控制信道才根据需要打开一个或者多个逻辑信道用于传输音频和视频等数据。打开逻辑信道的之前,首先会开始能力集交换过程,在能力集交换过程完成之后,应用程序还可能会有一个主从确定过程(不是任何情况下都需要,但是双向信道中必须要执行此过程)。之后,逻辑信道被打开,开始传输数据。
&3、OPENH323协议栈主要类之间的关系图
协议栈主要类的关系图如下:
信息要素:,消息中的数据单元,不同类型的消息包含着数目、类型不同的信息要素。
侦听对象:类及其派生类的实例。
传输对象:类及其派生类的实例。
端点对象:类及其派生类的实例。
连接对象:类及其派生类的实例。
能力对象:类及其派生类的实例。
逻辑信道对象:类及其派生类的实例。
逻辑信道协议对象:类的实例。
编解码器:类及其派生类的实例。
能力集对象:类的实例。
会话对象:类及其派生类的实例。
(二)、重要协议过程和体系结构分析
R是端点和网守之间执行的协议,基本上是管理功能,它包含以下几个过程:
用于端点搜寻其归属网守,采用多播机制完成。其后所有消息均限定在端点和其归属网守之间传送。
端点登记:用于端点向网守登记其自身信息,主要是别名和呼叫控制信道运输层地址。包括去除登记过程。
端点定位:用于端点或网守向相应的网守询问某一端点的呼叫控制信道的运输层地址。
呼叫接纳:起呼叫时的第一步操作,询问网守是否允许该呼叫发起。
呼叫退出:呼叫结束后通知网守,该端点已经退出呼叫。
带宽管理:支持端点在呼叫过程中提出带宽改变要求,由网守做决定。
状态查询:主要是用于网守询问终端的开机关机状态。
网关资源指示:向网守通告该网关的可用资源。
消息如表:
网守搜寻请求
网守搜寻证实
网守搜寻拒绝
短点登记请求
端点登记证实
端点登记拒绝
去除登记请求
去除登记拒绝
去除登记证实
端点定位请求
端点定位证实
端点定位拒绝
呼叫接纳请求
呼叫接纳证实
呼叫接纳拒绝
呼叫退出请求
呼叫退出证实
呼叫退出拒绝
带宽管理请求
带宽管理证实
带宽管理拒绝
网关资源指示
网关资源可用性指示
网关资源可用性证实
消息过程都比较简单,一般是一端发出一个消息,另一方在收到消息后,如果需要响应,则发送一个响应消息完成一个过程。可以参考下图中的登记和去除登记消息。
RAS消息在呼叫开始和结束的时间都起着非常重要的作用,在呼叫开始时,向网守发送ARQ,当网守确认该呼叫时,将会返回包含端点的H.225信道的TCP地址(如果是网守选路方式,返回网守的H.225信道地址)。终端便可以根据该地址连接呼叫,而在呼叫结束的时候,在H.225和H245信道关闭后,也会发送DRQ/DCF消息以释放占用的带宽等资源。
&&在通话过程中,可能会有带宽的变化,这就需要用到BRQ/BCF消息,至于其如何与H245消息结合起来操作的,请参考下图:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&带宽修改(发送方请求改变)&
&&&&&&&&&&&&&&&&&&&&&&&&&&&带宽修改(接收方请求改变)&
具体的实现:
1、&&创建RAS侦听(处理)线程
在网守初始化函数中,通过调用H323GatekeeperServer:AddListener函数创建RAS侦听线程,便可以开始处理RAS消息了,而普通终端的UDP线程可以在设置网守时(H323EndPoint::SetGatekeeper函数)才建立,也可以启动时即建立(人工创建)。
2、&&处理RAS的PDU的过程
处理RAS的函数,对应不同的类(H323gatekeeper和H323GatekeeperListener),调用的处理函数。在应用程序中,当调用AddListener时,通过调用H.225_RAS::StartRasChnnel()函数创建了后台线程——以HandleRasChannel()函数为主体,而在HandleRasChannel()函数中,有一个不断循环,从RAS信道中读出数据,交由H.225_RAS::HandleRasPDU()函数处理,而后者H.225_RAS::HandleRasPDU()函数则是根据接收到的PDU的类型,转给不同的处理函数。
3、&&如何在应用程序中调用
在应用程序中如果只是实现呼叫或者等待呼叫时,其实根本不需要直接与RAS相关处理类交互。发起呼叫调用终端类的MakeCall过程中,协议栈类库将呼叫涉及到的过程和函数调用已经封装的相当完善,无需开发者干涉。当然,前提是在应用程序开始的时候要先创建RAS侦听线程。
等待呼叫则是只需要保证应用程序已经创建RAS侦听线程即可。在接收到H.225的Setup消息后,应用程序自然会调用RAS线程的相关处理函数,向网守发送ARQ消息。
、控制信令
能力交换过程
这是呼叫建立成功后首先要执行的一个过程,他使通行双方了解对方接受和发送信号的能力。每个逻辑信道限定传送某种媒体信息,采用一定的编码算法,具有一定的带宽,因此在信道建立之前,收发双方必须就这些参数进行协商,确定双方可接受的参数范围,这就是的能力交换过程。
.协议采用接收方控制的原则建立逻辑信道,发送方只能在接收方规定的范围内确定信道特性参数。能力交换的主要功能就是通过适当的消息向对方通告本端的接受能力。该消息也允许通告发送能力,但其作用知识表示本端的一种选择意向,希望对方在确定其接收能力时予以考虑。当获得对方的接受能力后,本端就在此范围内确定其发送方式,启动逻辑信道打开过程。
能力集的主要参数是接受能力,对方(发送方)必须知道本端的接受能力才能建立逻辑信道。如果能力集不含接受能力,表示本端只能发送不能接受。发送能力的作用是供对方(接收方)使用,对方可以在本端给出的发送能力范围内提出它所希望的发送方式。如果本端不希望对方干预自己的发送方式,则可以在能力集中不提供发送能力,这并不表示它不具备发送能力。
描述终端接受能力或发送能力的终端能力集消息不但给出终端可以支持的各种媒体信号的操作模式而且给出终端同时处理多种信号可能的组合操作模式。
消息中包含一个能力表,该表列出了终端所允许的操作模式,每种模式对应能力表中的一个表项,赋予相应的序号。若干个能力号构成了可选能力集()数据结构,表示该终端可以按其中一种方式工作。实际上能力集描述了终端的一个媒体信道的能力。
若个可选能力有构成一个“同时能力()”数据结构,表示该终端可以同事使用一组能力进行工作。最后若干同时能力又可构成一个“能力描述语集”()数据结构,他包括一组能力描述语,每个描述语由一个同时能力和一个能力描述语序号组成。该数据结构给出了终端的总体能力。之所以要定义多个描述语,是因为终端选用多种组合方式工作,在不同的组合方式下,各个信道的允许操作模式可以不一样,以满足所需的要求。
下图终端能力集消息的嵌套式数据结构,其中,序号有有证实消息返回,发送端数据可以确定与该证实消息匹配的终端能力集消息。协议标识指明H.245版本号,复用能力主要指示该终端的多点通信能力,用于会议通信。能力表每个表项的内容不只是简单的编译码标准还包含许多相关的参数。
终端能力集消息至少包含一个能力描述语。在通信过程中,允许终端发送新增或修改描述语,以动态增加或删除终端能力。
主从确定过程
主从确定过程用于避免信令过程中的冲突现象。主要应用于会议通信中的仲裁。由于一个会议呼叫只能有一个,如果两个参会的实体都含有,则必须确定其中一个是主。同样的过程也使用与双向信道的建立时主从终端的确定。在建立信道连接之前必须首先解决主从关系。
每个端点应该即能工作在主机模式也能工作在从机模式。在执行过程时,每个端点需要生成一个随机数称为状态确定号,其取值范围为~(),每个端点对于呼叫只能确定一个随机数。为了确定主从消息,任一个端点可以向对方发送一个主从确定消息,该消息包括两个参数:状态确定号和终端类型。
对方收到确定消息后,执行确定计算过程。确定的规则:首先比较两个端点的终端类型值,大者为主机:如果相同,在比较两个端点的状态确定号,大者为主机。如果仍相同,则判断为不可确定,则回送拒绝消息。再次启动主从确定过程。
如果两个实体为不同类型有功能的高于无功能的实体;若没有,则网关高于终端;若都有,则优先级别自高到低顺序为:、网守、网关、终端。
、逻辑信道信令过程
逻辑信道的信令过程包括逻辑信道的打开和关闭。器设计思路是首先建立连接,确定接收方能够接收并已准备好接受由对方发送来的数据后,才开始媒体数据的传输,在接纳新的逻辑信道时,接受方必须确保原有逻辑信道的通信不受影响。
该协议过程还包括双向信道的打开。为了防止双方终端同时打开信道,引起冲突,需将其中一方定义为主终端,另一方定义为从终端。
逻辑信道的关闭一般也是有发送方发起。
单向信道打开过程
信道打开恒由发送方启动。它向接受方发送打开逻辑信道消息,消息包含前向逻辑信道号和信道参数。其中,信道号必须发送方赋值,证实消息返回此值,以和请求消息匹配。信道参数包括数据类型、媒体信息是否需要确保传送、是否执行静音抑制、目的地终端标记等。如果该信道用来传送封装的实时媒体消息,则信道参数还应该包括会话标记、关联会话标识、媒体信道、媒体控制信道。这样,经过此过程,两端点间建立前向信道和双向信道。
双向信道打开过程
双向信道打开过程和单向信道基本相同,其中主要的差别在与消息中还包含反向信道参数。因此一次消息交换同时建立两个方向的信道。此外,请求方接受到对方的证实消息后,还需回发一个确定消息,表示反向信道的建立成功,可以开始传送信号。
如果对方不能支持本端要求的反向信道,则回送拒绝消息,然后立即启动双向信道打开过程,其反向信道参数等于本端发送的前向信道参数,其前向信道参数取为双方都能支持的参数值。
呼叫释放过程
通信的任何一方都可发起呼叫释放,器信令过程如下图所示。为简单说明,假设呼叫信令和控制信令都采用直接选路方式,其释放步骤为:
&&&端点停止在逻辑信道上传送信息,关闭所有逻辑信道。然后在控制信道上向端点发送结束会话的命令消息,告诉对方要结束该呼叫,其后停止发送消息。
&&&端点收到上述消息后,关闭所有逻辑信道,向端点回送结束会话命令消息。至此,控制信道关闭。
&&&如果呼叫信令信道尚未关闭,端点向端点发送。消息关闭此信道。至此,呼叫已释放。
&&&端点和端点分别向其网守发送消息,告之该呼叫占用的带宽资源可予以释放。
&&&网守向端点回送。其中,端点将不在向网守发送未经过请求的消息。至此,完成全部释放过程。
如果是会议呼叫,则必须首先用“退出会议”消息明确终止会议,然后各个端点等待自动呼叫释放过程。
呼叫释放也可以有网守发起如下图:
、呼叫信令
原理:基本呼叫控制消息取自于和消息。但是由于其本身不承担链接控制的任务,所以许多消息不在中出现。
虽然呼叫信令模型取自于,但不同之处在于,用于,两端分别是用户和网络,一般是不对称的应用,而在系统中,呼叫是对称应用的。
端点之间建立通信关系一般要经过三个过程:
:呼叫接收控制。
执行协议(),控制信道为信道(不可靠信道),网守同意接纳后在端点和网守或端点之间建立起呼叫信令信道,进入呼叫建立。
:呼叫控制
执行呼叫信令协议(),控制信令为信令信道(可靠信道),呼叫建立成功后,在端点之间建立控制信道。
:连接控制
执行控制协议,控制信道为媒体控制信道,简称控制信道(可靠信道),在端点之间建立起具有一定带宽的一个或多个逻辑信道,实时通行的逻辑信道都是不可靠信道。
具体实现:
当一个消息到达后,首先会为侦听线程接受,然后,线程开始解码,解码后才分析出是消息,此时,线程启动相应的处理程序,程序分析此的消息是否完整,所提出的请求能否满足,当所提请求网守可以满足时,网守同意接纳此呼叫,并翻译出被叫终端的呼叫信令信道运输层的地址,有消息回送主叫终端。在回送消息之前,网守还根据网守当前的配置选择网守选路还是直接选路的信令传送方式,作不同的操作,当然,无论信令传送方式,都必须将当前呼叫增加到网守的呼叫表中去。
&& 在直接选路方式中,主叫在接受到ACF后,将建立到被叫的呼叫信令连接,并发送Setup消息,开始H.225呼叫建立过程,被叫在接受到Setup消息后,将回送一个call proceeding消息,同时,向自己的网守发送ARQ消息,在网守返回ACF消息后,在通过H.225发送Alerting消息给主叫,然后发送连接消息给主叫,至此,呼叫建立过程完成。
&&&而在网守选路方式中,主叫在接受到ACF后,将建立到网守的呼叫信道连接,并发送Setup消息,开始H.225呼叫建立过程,网守回送主叫call proceeding消息,同时,向被叫发送Setup消息,被叫在接受到Setup消息后,在通过H.225发送Alerting消息给网守,网守发给主叫,然后发送连接消息给网守,网守转发给主叫,至此,呼叫建立过程完成,此后所有的信令都通过网守转发。
&& 在终端中,发起和接收一个呼叫这两个过程,是有终端类(H323EndPoint)实现的,这两种行为都要经过前述的呼叫接纳控制(RAS),呼叫控制(H.225)和链接控制(H245)三个过程。两者并无很大不同指出,基本类似。以下描述一个终端主动发起呼叫的过程。
&& 终端在完成应用程序初始化过程后,创建继承自EndPoint类的实例,会进行初始化的工作,包括当前呼叫设置,终端能力集设置,打开信道(H323ListennerTCP),打开RAS信道(H323TransportUDP)。然后,终端会立即发起一个呼叫,或者等待呼叫,或者等待用户的操作。假设直接发起一个呼叫,则终端通过调用MakeCall函数实现此过程。然后程序执行以下步骤:
1.H323EndPoint::MakeCall()函数产生一个呼叫。
该函数先检查传输是否为空,是则建立一个传输transport,然后进行一些设置,在调用H323EndPoint::CreateConnection()建立连接。然后通过H323Connection::AttachSignalChannelb绑定。此后再建立一个新的H.225CallThread类(线程)。
2.在H.225CallThread类的主函数(main)只是简单的调用H323Connection::SendSignalSetup()函数,并根据该结果选择H323Connection::ClearCall()失败或者H323Connection::HandleSignallingChannel()成功.
3.在H323Connection::SendSignalSetup()中开始H.225呼叫信令建立过程
4. H323Connection::HandleSignallingChannel()函数:对到来的数据传递给HandleSignalPDU函数处理。
5. H323Connection:: HandleSignalPDU函数,此函数对到来的H.255(Q.931)消息的主要函数,同时也对可能出现的H245隧道数据进行简单的分析,并将之交给由H323Connection::HandleTunelPDU函数处理。如下图所示:
消息有大类,个。分别为呼叫建立消息,呼叫信息阶段消息,呼叫清除消息,其它消息。协议栈中实现只是定义本身需要用到的各种数据结构和基本的消息和信息单元操作函数,编码解码函数。至于具体的各个连接,建立,维护和释放过程的控制,都不在类里实现,而是在实际应用中其它类的函数中实现。
下面是典型通信过程
、控制协议的实现:
.控制协议的基本框架在类中实现,主要包括消息的接收和分发,但协议的状态机由的几个派生类进行了封装,他们是、、、以及,分别描述逻辑信道,主从关系确定、模式优先请求、环路延迟检测以及能力集交换过程,反过来,类又通过定义若干可重载的回调函数供这些子类调用以实现对协议的控制。
下图给出与其派生类之间的层次关系,这一层次基本上和规定的结构相对应。具体的编解码能力类可以直接派生自,也可以派生图中的其他接点,派生类需要根据协议的规定增加对应的参数并实现父类的纯虚函数。
、编解码器
编解码器由抽象类描述,该类及其子类的层次关系如下图。有几个重要的保护成员:为联到编解码器上的指针,指向使用编解码器的逻辑信道对象;为联到编解码器上的指针,指向采集和播放原始媒体数据的设备;为编码器的方向,取和两个值;描述媒体格式,是一个对象,规定了负载类型,采样率,帧长度,会话类型,帧率等参数。
、逻辑信道:
逻辑信道由抽象类描述,该类及其子类的层次关系由下图给出;
逻辑信道的属性主要包括:逻辑信道编号、会话类型标示、传输方向、所属的H.323端点、所属的H.323连接、使用的能力以及使用的编解码器,其,所属连接和使用的能力在逻辑信道对象建立时指定。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:38963次
排名:千里之外
转载:69篇
(9)(1)(2)(4)(14)(1)(3)(1)(1)(3)(4)(5)(1)(2)(2)(3)(1)(1)(1)(4)(7)(6)

我要回帖

更多关于 h323协议 的文章

 

随机推荐