SIP协议与多媒体会议系统_第1页
SIP协议与多媒体会议系统_第2页
SIP协议与多媒体会议系统_第3页
SIP协议与多媒体会议系统_第4页
SIP协议与多媒体会议系统_第5页
已阅读5页,还剩10页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、sip协议与多媒体会议系统摘要:sip协议是tetf提出的在ip网络上进行多媒体通信的应用层控制协议, 主要目的是为了解决ip网中的信令控制,以及同softswitch的通信,从 而构成下一代的增值业务平台,所以越来越得到业界的重视。本文通过sip 协议的背景、功能、网络元素、实现机制、以及sip消息的组成等儿个方 面对sip协议做的概要性介绍,以及在多媒体会议屮是怎么采用sip协议 來实现的。关键字:sip (session initiationprotocol,起始会话协议);url (uniformresoure locator:统一资源定位器);user agent (用户代理);pr

2、oxy server(代理服务器);redirect server (重定向服务器);register server(登记服务器);location server(位置服务器);h. 323协议;一.sip简介sip (session initiation protocol,起始会话协议)是 ietf 提出的在 1p网络上进行多媒休通信的应用层控制(办议,sip是一个客户/服务器协议,可 用于建立,修改,终结多媒体会话和呼叫。sip协议釆用基于文木格式的客户- 服务器方式,以文本的形式表示消息的语法、语义和编码,客户机发起请求,服 务器进行响应。可以承载ip地址、端口信息、媒体能力和编码方式等

3、会话相关 的信息。sip独立于低层协议一tcp或udp ,而采用自己的应用层可靠性机制来 保证消息的可靠传送。sip协议的详细内容可参见ietf rfc2543 (1999)。sip的特点是简单、便于扩展和扩充,而且重要的是sip概念与internet 的出发点一致,sip借鉴了许多已有的internet协议,因而是实现新的增值综 合业务的理想手段。sip协议可以很好地配合web和email工作,其原因是:1) sip消息数据及格式与web消息数据是同样类型的数据。2) sip采用url地址格 式来进行消息路由和定位用户,url可以嵌入web网页,可以利用任何其它类型 的uri,如web等。3

4、)采用dns选路技术进行路由选择。由于sip协议具有上述特点,因此它能够很容易地开发与web结合的综合 应用,可以降低开发成本并缩短开发周期。由于ip网络的发展,sip将变得愈来愈重要,将来人们可以用sip来构筑 一个基本的框架,在这个框架上用简单且单一的invite-accept"消息结构方 式來为pc终端、移动终端和固定网终端用户提供语咅、多媒体、电了商务的综 合业务。目前对sip协议的更新是rfc2543bis,与原有版本兼容。同样,ietf sip 工作组也制定了一个文档,提出了一个方法可以将isup信令消息封製在sip的 消息体内,该方法参照了 sip for teleph

5、ony(s1p-t)草案。目前已有众多的包扌舌 3c0m、lucent、level (3) communication、ericsson 在 内的设备供应商和运营商宣布支持sipo microsoft曾经发布过基于ii. 323的 netmeeting客户机,而最近又宣布将在windows xp客户机和服务器平台上增 加sip功能,这将引起sip客户机数量的迅速增加。口前相关设备供应商和业务供应商联合成立了一个关于sip的论坛: www. sipforum, org,为stp的发展提供一个自曲讨论、展现新思维的发展平台。1.2 sip消息总体描述sip消息由一个起始行(start-line)、

6、一个或多个字段(field)组成 的消息头、一个标志消息头结束的空行(crlf)以及作为可选项的消息体 (message body )组成,其中描述消息体(message body),的头称为实体头 entity hcadcrosip定义的sip消息的一般格式为:sip-般消息二起始行*消息头部(一个或者多个头部)crlf (空行) 消息体s1p的消息机制采用了 client/server请求和响应的应答机制,消息有两 种:客户机到服务器的请求(request),服务器到客户机的响应(response)。在上述stp -般消息的格式中,启始行分请求行(request-line)和状态 行(st

7、atus-line)两种,其中请求行是请求消息的启始行,状态行是响应消息 的启始行。在请求行中给出sip版本、调用的请求操作(方法)、被邀用户的当 前地址。在响应行中给岀sip版本、状态码和相关的文字说明。消息头部分为4 类:通用头部(general-header)请求头部(request-header)响应头部 (response-header)和实体头部(entity-header )四种。sip2. 0 版本共定义 了 36种头部消字段。空行表示消息头部字段的结束。消息体主要是sdp会话描 述,在响应消息小述可能是原因和进展指示文本。上而描述屮的符号“*”表示 该字段可有多个。sip消息

8、的语法基木上和http相同,头部字段也和http基木相同。但是它 可以在udp上传送。包括头部字段在内的udp数据包长度不应该超过路径的最人 允许传输单元(mtu),如果mtu未知,则最大长度可取为1500字节(以太网mtu 典型值)。下面进一步说明s1p请求消息格式和响应消息格式。1.3 sip请求消息格式描述请求消息的格式如下:sip请求消息二请求起始行* (通用头部 请求头部 i实体头部)crlf (空行)消息体请求起始彳亍(request-line)以方法(method)标记开始,后面是request-uri 和协议版本(sip-version),最后以m车键结束,各个元素间用空格键字

9、符间隔。request-line = method sp request-uri sp sip-version crlf其中sp符号代表空格。方法就是请求执行的操作,stp用术语“method"来对方法部分作以描述, method标识是区分大小写的。sip定义了以下几种方法。邀请(invite)、证 实(ack)、选择(options)、再见(bye)、取消(cancel)、登记(register) > 信息(info),所有方法必须大写。请求-uri (request-uri)是被邀请用户的 当前地址。sip版木号现设定为sip/2. oo方法描述:(1) inviteinv

10、ite方法用于邀请用户或服务参加一个会话。在invite请求的消息体 中可对被叫方被邀请参加的会话作以描述,如主叫方能接收的媒体类型、发出的 媒体类型及其-些参数;对invite请求的成功响应必须在响应的消息体屮说明 被叫方愿意接收哪种媒体,或者说明被叫方发出的媒体。服务器可以口动地用200 (0k)响应响应会议邀请。(2) ackack请求用于客户机向服务器证实它己经收到了对invite请求的最终响 应。ack只和invite请求一起使用。对2xx最终响应的证实由客户机用户代理 发出,对其它最终响应的证实由收到响应的第一个代理或第一个客户机用户代理 发出。ack请求的to、from、call

11、-id, cseq字段的值由对应的invite请求的 相应字段的值复制而来。(3) options用于向服务器查询其能力。如果服务器认为它能与用户联系,则可用一个 能力集响应options请求;对于代理和重定向服务器只要转发此请求,不用显 示其能力。options的from> to分别包含主被叫的地址信息,对options请求的响应 中的from. to (可能加± tag参数)、call-id字段的值由options请求中相应 的字段值复制得到。(4) bye用户代理客户机用bye请求向服务器表明它想释放呼叫。bye请求可以彖invite请求那样被传发,可由主叫方发出也可由被

12、叫方发 岀。呼叫的一方在释放(挂断)呼叫前必须发出bye请求,收到bye请求的这 方必须停止发媒体流给发出bye请求的这方。(5) cancelcancel请求用于取消一个call-id, to, from和cscq (仅序列号)字段 值相同的正在进行的请求,但取消不了已经完成的请求(如果服务器返回一个最 终状态响应则认为请求己完成)ccancel请求中的call-id, to, cseq的数字部分及from字段和原请求的 对应字段值相同,从而使cancel请求与它要取消的请求匹配。(6) registerregister方法用于客户机向sip服务器注册列在列在to字段屮的地址信 息。regi

13、ster请求消息头屮各个字段的含义定义如下:to:含要创建或更新的注册的地址记录。from:含提出注册的人的地址记录。request-uri:注册请求的目的地址,地址的域部分的值即为主管注册者所 在的域,而主机部分必须为空。一般,request-uri屮的地址的域部分的值和 to中的地址的域部分的值相同。call-id:用于标识特定客户机的注册请求。来门同个客户机的注册请求至 少在相同重启周期内call-id字段值应该相同;用户可用不同的call-1d值注 册不同的地址,后面的注册请求将替换前面的所有请求。cseq: call-id字段值相同的注册请求的cseq字段值必须是递增的,但次 序无关

14、系,服务器并不拒绝无序请求。contact:此字段是可选项;用于把以后发送到to字段中的uri的非-注 册请求转到contact字段给出的位置那里。如果请求屮没冇contact字段,那 么注册保持不变。expires:表示注册的截止期。(7) tnfoinfo方法是对sip协议的扩展,用于传递会话中产生的与会话相关的控制 信息,如1sup和isdn信令消息,冇关此方法的使用述冇待标准化,详细内容参 见 ietf rfc 2976o有关消息头和消息头各个字段的说明在下面章节将进一步描述。1.4 sip响应消息格式描述响应消息的格式如下:sip响应消息二状态起始行* (通用头部 响应头部 i实体头

15、部)crlf (空行) 消息体状态行(status-line)以协议版本开始,接下来是用数字表示的状态码 (status-code)及相关的文本说明,最后以冋车键结束,各个元素间用空格字 符(sp)间隔,除了在最后的crlf序列屮,这一行别的地方不许使用回车或换 行字符。status-line 二 sip-version sp status-code sp reason-phrase crlf 其中sp符号代表空格。sip协议中用三位整数的状态码(status code)和原因值(reason code) 来表示对请求的作出的回答,状态码用于机器识别操作,原因短语 (reason-phrase

16、)是对状态码的简单文字描述用于人工识别操作,便于便用者 理解。在stp/2. 0中状态码共分为6类,其中第一位数字指示响应类别,后两位 数字表示该类中的具体响应。status-code = lxx (informational)2xx (success)3xx (redirection)4xx (client-error)5xx (server-error) 6xx (global-failure) extension-code(1) lxx:信息响应,即呼叫进展响应。表示请求已经收到,继续处理请 求。100:试呼中180:振铃181:呼叫正在前转182:排队(2) 2xx:成功响应,表示行动

17、已经成功地收到,理解和并接受。200: 0k(3) 3xx:重定向响应,表示为完成呼叫请求还须采取进一步的动作。300:多重选择301:永久迁移302:临时迁移303:见其他305:使用代理380:替换服务(4) 4xx:客户出错,表示请求有语法错误或不能被服务器执行。客户机 需修改请求,然后再重发请求。(5) 5xx:服务器出错,表示服务器出错不能执行合法请求。(6) 6xx:全局故障,表示任何服务器都不能执行请求。 其中lxx响应为暂吋响应,其它响应为最终响应。stp响应码是口j扩展的。不要求stp应用程序理解所冇已经注册响应码的含 义,但是它必须理解所有响应码的类别。不能识别的响应码则作

18、为x00处理,此 时,用户代理应向用户显示该响应的消息体,该消息体一般含冇能解释该异常状 态的可读信息。上面我们介绍了 sip协议的消息头分为通用头部、请求头部、响应头部和 实体头部四种、下面我们介绍一下stp协议的消息头。1.5 sip消息头格式描述sip协议的消息头定义与http在语法规则和定义上很相似。每个头字段都 遵循以下格式:首先是字段名(fieldname),字段名不分人小写,后面是冒号, 然后是字段值,字段值与冒号间可有多个前导空格(lws)。下面为sip消息头格 式:message-header = field-name : field-value crlffield-name

19、 二 tokenfield-value = *( field-content | lws )(1) 通用消息头 general-header 通用头字段适用于请求消息和响应消息,包含的字段有: general-header = accept| accept-encoding| accept-language call-id| contact| cseq date| encryption| expires from| organization|record-route| timestamp| to| user-agent| via其中,accept, accept-encoding, accep

20、t-language 字段用于客户机在请 求消息中给出其可接受的响应的媒体类型,编码方式,以及描述语言;用于服务 器在415响应屮表明其可理解的请求消息的媒体类型,编码方式,以及描述语call-id:用于唯一标识特定邀请或某个客户机的注册请求,一个多媒体会 议可产生多个call-1d不同的呼叫。contact:给出一个url,用户可以与此url建立进一步的通信。cseq:用于标识服务器发出的不同请求,若call-id值相同,那么cseq值 必须各不相同。date:反映首次发出请求或响应消息的时间,重发的消息与原先的消息有 相同的data字段值。encryption:表明内容经过了加密处理,这种

21、加密为端到端的加密。expire:给出消息内容截止的日期和吋间。from:此字段给出请求的发起者,所有消息中都必须有。organization:给出发出请求或响应消息的实体所屈的组织的名称。record-route:给出一个全局可到达的request-urjl,用于标识代理服务器。 time-stamp:给出客户机向服务器发出请求的时间。to:此字段给出请求的口的收方,所有消息中都必须有。user-agent:含有与发起请求的用户代理客户机有关的信息。via:给出请求消息迄今为止经过的路径。(2) 实体消息头 entity-header实体头字段用于定义与消息体相关的信息,包含的字段有:ent

22、ity-header 二 contentencoding| contentlength| contenttypecontent-encoding:表明消息体上添加应用的内容编码方式。content-length:表明消息体的大小。content-type:表明消息体的媒体类型。(3) 请求消息头 request-header请求头字段用于客户机上传附加信息到服务器,其屮包括有关请求和客户 机本身的信息。包含的字段有:request-header = authorization| contact hide| max-forwards| priority| proxy-authorization|

23、 proxy-require| route| require response-key| subjectauthorization:用于用户代理向服务器鉴定自身身份。hide:用于客户机表明具希累向后面的代理服务器或用户代理隐藏由via 字段构成的路径。max-forwards:表明请求消息允许被转发的次数。priority:用于客户机表明请求的紧急程度。priority-authorization:用于客户机向要求身份认证的代理服务器表明 自身身份。proxy-rcquirc:用于标识出代理必须支持的代理墩感特征。route:决定请求消息的路由。require:用于客户机告诉代理服务器为了正

24、确让服务器处理请求,客户机 希望服务器支持的选项。response-key:用于给出被叫方用户代理加密响应消息所采用的密钥需满 足的要求。subject:提供对呼叫的概述或表明呼叫的性质,可用于呼叫过滤。(4) 响应消息头 response-header响应头字段用于服务器向request-urt指定的地址传送冇关响应的附加信 息。包含的字段有:response-header = allow| proxy-authenticatel retry-after| server unsupported| warning| www-authenticateproxy-authenticate:必须为4

25、07响应的一部分,字段屮的值给出适用于 request-urt的代理的认证体制和参数。retry-after:可用于503响应中,向发出请求的客户机表明服务预计多久 以后可以启用,用于404, 600, 603响应屮表明被叫方何时再冇空。server:含用户代理服务器处理请求所使用的软件信息。unsupported:字段列出服务器不支持的特征。warning:用于传递与响应状态有关的附加信息。www-authenticate:含于401响应中,扌旨出适用于request-uri的认证体 制和参数。由于消息体的内容由sdp协议定义,我们在这里不作介绍。1.6 sip网络框架描述sip协议采用的是

26、客户/服务器(c/s)控制方式,呼叫控制请求发出方称为 客户,请求接收和处理方为服务器。s1p的网络框架为下图:sip网络组成redirect serverregistrar serverlocatio nserver图2. 1 sip网络框架其组成包括:user agent -用户代理proxy server -代理服务器redirect server 一重定向服务器register server -登记服务器location server -位置服务器下面我们根据上面讲述s1p的知识,举一个例子来使大家更清楚的理解sip 协议。jlocationserver竺怛也竺 inv

27、ite ! | ! "02 moved temporarily"" 塔;con tact: :i: ack i !© invite hq 200 okel *a*® ack 图2.1 一个sip呼叫例子卜血再给出一个具体invite消息:invite sip:schulzrinnecs.columbiaedu s1p/2.0from: christian zahl &

28、lt;sip:czcs. tu-betlin. de>to: henning schulzrinne <sip:schulzrinnecs. columbia. edu>via: stp/2. o/udp 131.215. 131. 131, stp/2. 0 foo. comcall-id: 3678134014cloud9. cs. tu-berlin. decontent-type: application/sdpcontentlength: 187cseq: 8348 invitesubject: new error codesv=0c=ln ip4 128. 59.

29、 16. 191m二audio 1848 rtp/avp 0其屮消息屮的各个字段及其含义我们在前面已经一一介绍过了,消息最后三行的 内容是用sdp协议定义的消息体的内容。二、sip的多点会议扩展sip扩展方法及消息头子项:conf方法:主要更新会议屮参与者列表。当一个用户加入或离开会议吋需要发 送此请求。此方法不应该包含任何消息体。participant 子项: participant :(name-addr | addr-spec) *(“;”participant-params)其中: name-addr | addr-spec:参与者的 uri participant-params:参与

30、者的状态,缺省值:active r active,参与者处于激活状态 参与者状态v invited,参与这正被邀请到会议屮 joining,参与者试图加入到会议中chair,主席身份1. end system mixinguser auser buser cinvite binvite c with a'sdpa200 okackartp mediaa200 ok with c'sdpconfacka200 okartp mediaa说明:a和b在通话过程中,a决定邀请c加入到会议中,b与c的信号号 和媒体信息在a处汇合。a对c发出邀请后,c有权利决定是否愿意加入到此会 议中。

31、由于在a向c发出的invite中带有participant子项,c能够获知此会 议中参与者的标识。假设c接受了邀请,向a回复200 0k响应。a收到后向b 发送c0nf方法,用以通知b冇个新参与者c加入了会议,如果b不想与c对话, 那么b可以向a发送bye退出会议。a分别向b、c发出了两个邀请,这两个call-id以及from. to 'p的tag是 不同的。2. dial-in conference server在拨入会议模式中,想要加入会议的用户向会议服务器发送invite请求, 当会议服务器允许用户加入时,向所有其它用户发送conf消息告知当前会议冇 个参与者要加入,在会议服务器

32、向此用户回复200 0k的应答消息中耍携带 participant子项告知此用户当前会议的用户状态列表。2. 1,初始化会议user auser buser cconference serverinvite200 okinviteainviteaackconf200 oka说明:在拨入会议屮,要求加入到此会议屮的每个参与者都要知道该会议标 识(sip url)。假设a、b、c三个参与者同吋向conference server发出invite邀请,先 看conference server对a的反应。回复200 ok,在此应答中带有participant, a可获知b、c用户状态joining,试

33、图加入到会议中。同样,b和c也会收到带 有participant子项的200 0k应答。当conference server收到从各参与者发 来的ack,会议初始化过程完毕。向a、b、c分别发送conf,用意更新当前会议 各参与者的状态(joining->active)02.2,新用户加入会议中a、b、c通过拨入会议服务器进行会议,a想要d加入到会议中,需要用到 refer方法。refer方法:用于指示参与者(参与者用rcqucst-uri标识)加入到一会议中。 refer-to 子项:refer-to: name-addr | addr-specname-addr | addr-spe

34、c:会议标识。user auser buser cuser dconferenceserverreferinvite>200 ok*confconfconf200 ok200 ok200 oka歹200 okackconfconfconfconf说明:a向d发送refer方法,如果d想要加入则向a发送200 ok,并且向 conference server发出invite邀请。(d从收到的refer屮的ref er-to子向获 得会议服务器的url)。conference server检验d的身份,若允许d加入,则分别向a、b、c发送 c07f方法,用以告知有个新用户要加入。如果有参与者

35、不想和d交谈可以发出 bye离开会议。在收到了所有参与者对conf的答复后,conference server向d 回复200 ok, d发送ack。最后conference server再向会议屮的每个参与者发 送c0mf,用以更新各个参与者的状态。如果会议屮的参与者没有必要被通知新用户的加入(joining状态),那么 为了减少网络中信号流量,第一个conf方法可以不用要。3. ad-hoc centralized conference两方在通话,某一方决定加入第三方,首先,将两方通话转移到在 conference server上的两方会议,然后第三方通过refer方法被邀请到此会议 中c与拨入会议大体相似,在refer方法中指明会议标识,新用户加入后,用 conf方法通知会议屮的每一成员。4. dial-out conference server在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论