SIP 协议学习
1初识SIP
1.1 SIP定义
Session Initiation Protocol会话初始协议是基于文本的信令协议。是一个在IP网络上进行多媒体通信的应用层控制协议。用来创建、修改和终结一个或多个参与者参加的会话进程。
SIP协议可用于发起会话,也可用于邀请成员加入已经用其他方式建立的会话。
SIP基于文本编解码。采用事务机制,每一个请求出发Server的操作方法,请求和响应构成一个事务。事务间彼此独立。
SIP独立于底层传输协议。SIP协议承载在IP网,传输层协议可用TCP或UDP,推荐首选UDP。
SIP支持5方面功能:
1.用户定位:确定通信所用的端系统位置
2.用户能力交换:确定所用的媒体类型和媒体参数
3.用户可用性判定:确定被叫方是否空闲和是否愿意加入通信
4.呼叫建立:邀请和提示被叫,在主被叫之间传递呼叫参数
5.呼叫处理:包括呼叫终结和呼叫转移等
1.2 SIP特点
1.一个正在发展和不断研究中的协议。
2.简练、开放、兼容和可扩展等原则。
3.充分注意到因特网开放而复杂的网络环境下的安全问题。
4.充分考虑了对PSTN的各种业务,包括IN(Intelligent Network智能网)业务和ISDN业
务(Integrated Services Digital Network综合业务数字网)的支持。
2SIP协议
2.1 SIP协议结构
1.最底层的是它的语法和编码层。编码方式是采用扩展的Backus-Naur Form grammar(BNF
范式)。
2.第二层是传输层。定义了一个客户端如何发送请求和接收应答,以及一个服务器如何接
收请求和发送应答。所有的SIP要素都包含一个通讯层。
3.第三层是事务层。事务层处理应用服务层的重发,匹配请求的应答,以及应用服务层的
超时。任何一个用户代理客户端(user agent client UAC)完成的事情都是由一组事务构成的。有状态的代理服务器包含一个事务层;无状态的代理服务器不包含事务层。
4.事务层之上是事务用户TU。每个SIP实体,除了无状态代理,都是一个事务用户。TU
可以创建客户事务,也可以取消客户事务。
2.2 SIP网络结构
User Agent Client (UAC) 用户代理客户端:是一个逻辑的概念,是请求的创建方。UAC 角色只在事务中存在。
User Agent Server(UAS) 用户代理服务器:是一个逻辑的实体,对SIP请求做出接受、拒绝或者转发的响应。UAS角色在事务中存在。
注:UAC和UAS,是在串行事务处理的原理上定义的。当主叫方A发出INVITE请求的
时候,A作为UAC创建一个呼叫动作,当接收到被叫方B的BYE请求的时候,A作为UAS 响应。UAC和UAS都可重定向。
Proxy Server代理服务器:是中间实体,即作为客户端也作为服务端,为客户端提供请求的转发服务。代理服务器首先提供的是路由服务。
Location Server 定位服务器:是Internet中的公共服务器,查询可采用多种协议,如LDAP 或基于多播的协议。
Redirect Server重定位服务器:产生3xx应答的UAS服务器,指示客户端连接别的URI。
2.3 SIP协议要素
SIP要素:包含用户代理客户端和服务器,无状态和有状态代理服务器和注册服务器,以及互相区别的核心Cores。
Cores:除了无状态代理服务器,都是事务用户。UAC(用户代理客户端)和UAS(用户代理服务端)的cores的行为依赖于实现,对所有的实现都有几个公共原则。对UAC来说,这些规则约束请求的建立;对UAS来说,这些规则约束请求的处理和应答。
UAC Core:在事务层和传输层之上实现的功能集合。
UAS Core:在事务层和传输层之上实现的功能集合。
2.3.1 服务器类型
Server服务器:用来接收请求、处理请求并且发送回应给请求方。典型的服务器有代理服务器,重定向服务器,登记服务器。
Proxy Server代理服务器:是中间实体,即作为客户端也作为服务端,为客户端提供请求的转发服务。代理服务器首先提供的是路由服务。
Redirect Server重定向服务器:产生3xx应答的UAS服务器,指示客户端连接别的URI。
Registrar Server登记服务器:接收REGISTER请求的服务器。将请求的信息放到定位服务器中,以便定位服务器方便查找位置信息。
2.3.2 常用术语
Call呼叫:非正式的术语,指在端点之间的通讯行为,通常用于建立多媒体对话。
Dialog对话:持续一段时间的两个UA之间的端到端的SIP连接。一个对话由SIP 消息建立,例如对INVITE请求回应的2xx响应。用Call-id,local tag,remote tag来唯一标志一个对话。
Session会话:一个多媒体会话是一个由多媒体发送方和接受方组成得集合,并且包括在发送方和接受方之间的数据流。一个多媒体会议是一个典型的多媒体会话。SDP 中定义的会话可由一个或多个RTP(实时传输协议)组成。一个被叫方可被多次邀请,被不同的呼叫方邀请到同一个会话。一个会话可由SDP用户名,session id, 网络类型,地址类型和地址元素的连接组成。
事务:客户端和服务端的事件,包括了从第一个由客户端发送到服务端的请求,到最后一个(非1xx)服务端向客户端发出得终结应答。如果请求是一个INVITE请求,并且终结应答是非2xx的应答,则事务还包括一个ACK给服务器做应答。给INVITE请求的2xx应答的ACK回应,是一个独立的事务。
Message消息:SIP元素之间传送的协议数据。SIP消息可以是请求或者应答。
Method方法:在服务器请求处理的主要功能。REGISTER用于登记联系信息,INVITE,ACK, CANCEL用于建立会话,BYE用于结束会话,OPTIONS用于查询服务器负载。
Request请求:客户端发到服务端的SIP信息,用于执行特定得功能。INVITE、ACK、OPTION、BYE、CANCEL都是请求消息。
Response应答:服务端发到客户端的SIP信息,用来标志从客户端发往服务端的请求处理得情况。
Provisional Response临时应答:服务器用来标志正在处理的应答,本应答并不结束一个SIP事务。1xx应答就是临时的,其他应答标志着事务的结束。
Final Response终结响应:终止SIP事务的应答。所有的2xx,3xx,4xx,5xx,6xx 响应都是终结响应。
2.3 SIP协议消息
SIP消息采用文本方式编码,分两类:请求消息和应答消息。
请求消息和响应消息的格式,一般由起始行、若干消息头和消息体构成。
SIP一般消息= 起始行*消息头CRLF(空行)[消息体]
起始行= 请求行/状态行(SIP请求消息起始行是请求行RL,响应消息起始行是状态行SL)
每一个头域都由一个域名加上冒号(“:”)和域值组成。
Field-name:Field-value
2.3.1 请求消息
Request请求消息:客户端发到服务端的SIP信息,用于执行特定得功能。INVITE、ACK、OPTION、BYE、CANCEL都是请求消息。