摘要: 本节描述了结束由SIP建立的会话的步骤。会话的状态和对话的状态是密切相关的。当一个会话由INVITE建立的时候,每一个不同UAS的1xx或者2xx应答会创建一个对话,而当完成了会话描述的请求/应答(offer/answer)交互之后,也就创建了一个会话。也就是说,每一个会话都和单个对话”相关”-会话是对话所创建的。如果初始化的INVITE产生了非2xx的终结应答,它也终结了由本次请求创建的任何会话(如果有的话),并且终结了所有的本次请求创建的对话(如果有的话)。由于事务完整性的保证,一个非2xx的终结应答同样也防止了本次INVITE以后可能创建的会话。BYE请求用于终结指定的会话或者尝试建立的 阅读全文
posted @ 2012-11-06 21:23 坐看风起云涌 阅读(343) 评论(0) 推荐(0) 编辑
摘要: 13.1概览当UAC希望初始化一个会话(比如,audio,video或者游戏),它首先构造一个INVITE请求。这个INVITE请求一个服务器来建立一个会话。这个请求可能会由proxy层层转发,最后到达一个或者多个可能能够处理这个邀请的UAS。这些UAS需要反复查看用户是否接收这个邀请。然后UAS可以接收这个请求(也就是会话建立了),通过发送2xx应答。如果邀请被拒绝,根据拒绝的原因,3xx,4xx,5xx或者6xx应答将会发送。在发送终结应答之前,UAS可以发送一些临时应答(1xx)应答给UAC,以便UAC能够掌握建立会话的进度。当收到了一个或者多个临时应答,UAC可能收到一个或者多个2xx 阅读全文
posted @ 2012-11-06 21:22 坐看风起云涌 阅读(325) 评论(0) 推荐(0) 编辑
摘要: 一个UA的核心概念就是对话。对代表了两个用户代理(UA)之间的持续一段时间的点对点的SIP关系。对话(Dialog)使得用户代理之间的消息顺序传递和两个用户代理之间的请求正确路由更加容易。对话(Dialog)可以认为是对SIP消息解释的上下文关系。第8节讲述了方法无关的UA处理和响应对话(Dialog)外的请求。本节将讨论如何通过请求和应答来创建一个对话(Dialog),并且在对话(Dialog)中如何发起和响应后续的请求。一个对话在参与对话的UA中都有一个dialogID作为标记,这个ID由Call-ID、一个本地tag和远程tag组成。各个UA的dialogID在对话中是不一样的。特别是, 阅读全文
posted @ 2012-11-06 21:21 坐看风起云涌 阅读(318) 评论(0) 推荐(0) 编辑
摘要: 前边几节讲述了UA对所有方法的请求和处应答的通用处理过程。在本节中,我们讨论一个通用的方法,CANCEL。CANCEL请求,就像名字所说的,是用来取消客户端发起的上一个请求的。特别是,它请求UAS去终止上一个请求并且对上一个请求产生一个错误的应答。CANCEL对UAS已经给出最终应答的请求无效。所以,CANCEL请求的最大用处是取消需要服务器长时间处理的请求。也就是说,CANCEL最常用来处理取消INVITE请求,因为INVITE通常需要花费很长时间来产生一个最终应答。在这种使用中,UAS接收到对一个INVITE请求的CANCEL请求,当这个INVITE还没有得到终结应答的时候,UAS会”停止 阅读全文
posted @ 2012-11-04 19:25 坐看风起云涌 阅读(388) 评论(0) 推荐(0) 编辑
摘要: 一个用户代理代表了一个终端系统。它包含一个用户代理客户端(UAC),用来产生请求;以及一个用户代理服务端(UAS),用来响应请求的。UAC可以由一些外部的触发来发出请求并处理应答(比如用户按了一个按钮,或者按下了电话键产生一个音频信号等等)。UAS能够接收请求,并且产生应答,它可以根据用户输入,外部触发,程序执行结果或者其他什么机制来产生应答。UAC发送一个请求,这些请求可能通过一些PROXY(代理服务器)传递到UAS上。当UAS产生一个应答,那么这个应答就会同样的被传送到UAC。UAC和UAS的处理流程强烈的基于两个要素。第一,基于请求或者应答是否在一个对话内,第二,基于请求的方法。对话的详 阅读全文
posted @ 2012-11-04 18:48 坐看风起云涌 阅读(518) 评论(0) 推荐(0) 编辑
摘要: SIP是一个基于文本的协议,使用UTF-8字符集(RFC2279[7])。一个SIP消息既可以是一个从客户端到服务器端的请求,也可以是一个从服务器端到客户端的一个应答。请求(7.1)和应答(7.2)消息都基于RFC2822格式,只是在字符集上和语法细节上有所不同。(比如SIP允许头域不是标准的RFC2822头域)。这两种消息类型都由一个起始行,一个或者多个头域,一个标明头域结束的回车换行,一个可选的消息体组成。一般消息= 起始行*头域CRLF[消息体]起始行= 请求行/状态行起始行、每一个头域字段行,空行都必须由回车换行组成(CRLF)。即使没有消息体,也必须有一个空行标明头域的结束。除了在字 阅读全文
posted @ 2012-10-31 22:15 坐看风起云涌 阅读(497) 评论(0) 推荐(0) 编辑
摘要: 以下名词对SIP有着特定的含义: Address-of-Record: AOR是一个SIP或者SIPS URI,它指向了一个位置服务的域,该位置服务可以把URI映射成为用户真正物理位置的URI。通常情况下,位置服务器是通过注册服务来实现的。一个AOR经常被认为是一个用户的”公共地址”。 Back-to-Back UserAgent:背靠背用户代理(B2BUA)是一个逻辑实体,它就像用户代理服务器(UAS)一样接收和处理请求。为了决定该如何应答一个请求,B2BUA就像UAC一样工作,并且发出请求。但是它不像代理服务器proxy,它维持对话状态,并且参与已建立对话中的所有请求。由于它是兼具UAC和 阅读全文
posted @ 2012-10-28 21:56 坐看风起云涌 阅读(482) 评论(0) 推荐(0) 编辑
摘要: SIP是一个分层的协议,也就是说SIP协议由一组相对无关的处理层次组成,这些层次之间只有松散的耦合。协议分成不同层次来描述是为了能够更清晰的表达,在同一个小节里对功能的公共要素进行交叉描述。本协议并没有规定一个具体的实现。当我们说一个要素”包含”某一个层,我们的意思是这个要素符合这个层定义的规则。不是SIP的每一个要素都包含所有层。此外,SIP定义的元素是逻辑上的,而非物理元素。一个物理的实现可以实现不同的逻辑元素,甚至是针对每个事务。SIP最底层是它的语法和编码层。编码方式是采用扩展的Backus-NaurFormgrammar(BNF范式)。完整的BNF描述在25节;第7节有简要的SIP消 阅读全文
posted @ 2012-10-22 22:48 坐看风起云涌 阅读(415) 评论(0) 推荐(0) 编辑
摘要: 这节通过简单的示例介绍了SIP的基本操作。本节实际上是一个指导手册,没有包含任何的标准状态。第一个例子说明了SIP的基本功能:终端定位、通信意愿、待建立会话的协商、已建立会话的关闭。图一表示一个典型的两个用户(Alice和Bob)间的SIP消息交易交换例子.(每一个消息采用字母”F”和一个用来指向正文的一个数字做标记)。在这个例子里,Alice使用她PC上的一个SIP的应用程序(比如说一个软的电话),通过Internet呼叫Bob的SIP电话。这个例子也演示了两个SIP代理之间,怎样为Alice和Bob建立会话。这种典型的应用通常被称为"SIP四边形",在图1中采用虚线画出 阅读全文
posted @ 2012-10-22 22:47 坐看风起云涌 阅读(531) 评论(0) 推荐(0) 编辑
摘要: SIP是一个应用层的控制协议,可以用来建立、修改、和终止多媒体会话(或者会议),例如Internet电话。SIP可以邀请参与者加入已经存在的会话,比如多方会议。媒体可以在一个已经存在的会话中方便的增加(或者删除)。SIP显示的支持名字映射和重定向服务,这个用于支持个人移动业务-用户可以使用一个形式上容易理解的标志来替代他们的网络地址。SIP在建立和终止多媒体通信上,支持5个方面的应用:用户定位:检测要通讯的终端用户的位置。用户有效性:检测被呼叫用户参与会话的意愿程度。用户能力:检测通信使用的媒体和媒体参数。建立会话:”ringing”,呼叫方和被叫方之间回话参数的确立。会话管理:包括发送和终止 阅读全文
posted @ 2012-10-22 22:42 坐看风起云涌 阅读(527) 评论(0) 推荐(0) 编辑