77范文网 - 专业文章范例文档资料分享平台

基于SIP的视频会议终端及其与H.323终端 -(8)

来源:网络收集 时间:2018-12-25 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

发送请求或接受响应;第三层为事务层,用来描述SIP请求及其响应的一系列过程。事务层之上的称为为事务用户(Transaction User TU)。每个SIP实体,除了无连接的代理服务器之外,都是一个TU。当TU希望发送请求,就生成一个客户机事务实例,向事务实例传递请求和IP地址,端口,并用来发送请求的传输机制。一个TU既能生成客户机事务也能够删除它。当客户机取消一个事务时,它请求服务器停止进一步的处理,将状态恢复到事务初始化之前,并且生成特定的错误响应到该事务。这由CANCEL请求完成,它构成自己的事务,但涉及要取消的事务。如在图3.6中,对UAC和P1而言,UAC执行的是客户事务,P1执行的是服务器事务。但对于P1和P2而言P1执行的是客户事务,而P2执行的是服务器事务,P2与UAS之间的关系也类似。因此对UA和有状态代理服务器(Stateful Proxy)而言,一端执行的是客户事务,而另一端执行的是服务器事务。

RequestRequestRequestCResponseCSResponseCSResponseSUACC= Client TransactionS= Server TransactionProxy1Proxy2UAS

图3.6 SIP实体间的事务关系

2. oSIP的分析

GNU oSIP Library是自由软件基金会成员针对RFC3261写的核心协议栈,它包含三大模块功能,解析器模块,状态机模块和工具模块,其中工具模块为可选,在本文中将具体分析解析器模块和状态机模块的功能:

(1)解析器模块

该模块主要完成对SIP消息(INVITE、ACK、OPTIONS、CANCEL、BYE、REGISTER)、SDP消息以及URI结构的剖析;另外该模块还可以解析一部分SIP头域。SIP向上层应用程序提供了灵活控制多媒体会话的接口。

1)SIP URI的解析。在oSIP中提供了比较多的操作函数,主要有对host,port,username,password及其相应的函数操作get()和set()。其数据结构定义如下:

typedef struct osip_uri osip_uri_t; struct osip_uri {

char *scheme; //URI的类型(SIP URI或SIPS URI) char *username;

第 26 页

char *password; char *host; char *port; osip_list_t *url_params; osip_list_t *url_headers;

char *string; //为其它类型的URL(http,mailto…)预留空间 };

2)SIP消息的解析。SIP的UA,要想完成一个简单的SIP呼叫,必须能够解析SIP消息。如果向对方发起一个SIP呼叫,应该产生一个INVITE消息,并包含必要的头域,接收到发来的SIP请求后,必须能够产生必要的响应。oSIP的解析器将收到的SIP文本消息解析成一个SIP消息结构体,同样也可以将一个SIP消息结构体还原成SIP的文本消息。在SIP的消息结构体中包含了各类SIP头字段以及SIP消息体。这些解析后的头字段本身也是一些结构体,解析器在解析整个消息的同时也将消息中的头字段分别解析成对应的结构。解析的作用在于方便应用程序内部对消息及各个头字段进行操作。下面是SIP消息结构体的部分内容:

typedef struct osip_message osip_message_t; struct osip_message {

char *sip_version;

osip_uri_t *req_uri; // Request-Uri (仅用于SIP请求) char *sip_method;

int status_code;

char *reason_phrase; //Reason Phrase (仅用于SIP应答) osip_list_t *accepts;

osip_list_t *accept_encodings; //Accept-Encoding 头字段 osip_list_t *accept_languages;

… … };

3)SIP消息并没有提供多媒体会话中媒体类型能力集的协商机制,因此SIP需要SDP协议的协同工作,一个完善的SIP协议栈,应当能够解析SDP消息。对SDP的解析流程如图3.7:

第 27 页

接收到SDP文本文本行数是否≤3是结束返回第一行v=0否结束返回是能否取得文本数据是否结束返回第一个字符是o是对会话描述进行解析否第一个字符是t是对时间类型进行解析读取下一行否第一个字符是m否是对媒体类型进行解析该行为不可识别行结束返回

图3.7 解析器中SDP的解析流程图

(2)状态机模块

SIP中是以事务为单位来描述各种请求和响应的交互过程。该模块主要完成对某个SIP事务(注册过程,呼叫过程等)状态记录,并在特定状态下触发相应的事件或回调函数(call back)。回调函数为上层应用程序控制SIP会话提供了丰富的接口。

该模块共有四类状态机,分别是客户端事务的两个状态机(ICT和NICT)和服务器端的两个状态机(IST和NIST)。

typedef enum _state_t {

//ICT的状态 ICT_CALLING, ICT_PROCEEDING, ICT_COMPLETED, ICT_TERMINATED, //NICT的状态 NICT_PRE_TRYING,

第 28 页

ICT_PRE_CALLING,

NICT_TRYING, NICT_PROCEEDING, NICT_COMPLETED, NICT_TERMINATED, … … }state_t;

1)ICT(Invite Client Transaction),完成用户代理的INVITE请求的相关事件处理。其数据结构为:

typedef struct osip_ict osip_ict_t; struct osip_ict {

int timer_a_length; struct timeval timer_a_start; int timer_b_length; struct timeval timer_b_start; int timer_d_length; struct timeval timer_d_start; char *destination; int port; };

2)NICT(Non-Invite Client Transaction),完成用户代理的非INVITE (BYE、CANCEL、OPTIONS和REGISTER)请求的相关事件处理。

3)IST(Invite Sever Transaction),完成用户代理的INVITE请求响应的相关事件处理。

4)NIST(Non-Invite Sever Transaction),完成用户代理的非INVITE请求响应的相关事件处理。对于非INVITE的请求的响应,所有的状态都需要经过超时定时器延时处理终止响应。

(3)工具模块

该模块为可选项,主要是提供一些处理SDP协商及会活的一些工具,可以满足上层应用程序较高层次的需求。

oSIP目前支持多种操作系统[37],例如: ? GNU/Linux

? Windows NT/95/2000 (VC++6.0 or cygwin)

? Solaris (SUN微系统公司开发的一种网络操作系统)

第 29 页

? HP-Unix.

? Some embedded systems with Linux. ? WinCE

目前oSIP已发展到V2.2.2(2005年11月24日),本文中采用了V2.2.0(2005年2月3日),在Windows 2000平台,VC++6.0下编译通过。

3.3 基于SIP的视频会议终端的实现

3.3.1 SIP视频会议的基本流程

SIP视频会议从会议开始到结束,至少要经过四个过程:会议初始化,发起会议,多媒体通信,结束会议。我们设计的SIP视频会议终端将是这样工作的:一位用户准备发起会议,率先登陆,他将成为会议的主持人;当他准备就绪后(完成初始化),则通过SIP协议栈模块发起会议;对方响应确立连接后,进行多媒体通信,通信完毕后结束会议,用户退出登陆。图3.8给出了这一基本过程的流程图。

会议初始话否就绪是发起会议否进行多媒体通信是多媒体通信否通信完毕是结束会议 图3.8 视频会议终端的基本流程

1. 会议初始化

会议初始化包括三个部分的初始化:多媒体模块、SIP协议栈和传输模块的初始化过程。初始化为各模块分配了必须的内存资源,创建各模块对象,调用相应的驱动程序初始函数,同时开启了后台监听线程,准备从固定端口接收SIP请求。初始化各模块函数如下:

osip_init( ); // SIP协议栈初始化

AVcodec_init( ); //音视频编解码器初始化

第 30 页

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于SIP的视频会议终端及其与H.323终端 -(8)在线全文阅读。

基于SIP的视频会议终端及其与H.323终端 -(8).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/389734.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: