协议简介:
会话初始化协议SIP(session initiation protocol,RFC3261).是一个基于文本的处于应用层的控制协议,可以用来创建、修改、终止会话。具有简练、开放、兼容和可扩展等特性。
SIP只是整个多媒体架构中的一部分,可以和实时数据传输协议(RTP)、实时流协议(RSTP)、会话描述协议(SDP)等其他协议一起组成一个完整的多媒体结构。SIP在这个多媒体架构中充当一个交通工具的作用,并不提供具体服务。
SIP是基于TCP/IP协议进行数据传输的,因此可以通过UDP传输(较常用),也可以同TCP传输。
从结构上来说,SIP协议由一组相对无关的处理层次组成,这些层次之间只有松散的关系。
常用术语概述:
会话(session):就是一个多媒体发送和接收方组合的集合。可以理解为一次打电话从摘机、拨号、通话、挂机等一系列信号动作。
对话(dialog):一个对话是持续一段时间的两个UA之间的端到端的SIP关系。用call-ID,local tag ,remote tag(对方tag)来标志一个对话。
事务(transaction):实在客户端和服务器端的事件,包含了从第一个有客户端发送到服务器端的请求, 通过branch和cseq参数标志一个事务。
用户代理UA(User Agent):一个逻辑实体的概念,包含UAC和UAS,仅存在于事物中。
UAC(user agent client):用户代理客户端,用于发送SIP请求。
UAS(user agent server):用户代理服务器,用于对SIP请求做响应的。
背靠背的用户代理B2BUA(back-to-back user agent
):是直接的UAC和UAC串联,要接受和处理请求,为了解决如何处理这个请求,又要发出一个请求,同时需要维持对话状态。
呼叫(call):它是指在断点之间一些通信行为,用于建立多媒体对话。
请求(request):一个由客户端发到服务器端的sip信息,用于执行特定的功能。
应答(response):一个由服务器发到客户端的SIP信息,用来标志从客户端发往服务器端的请求处理的情况。
方法(method):是向服务器请求处理的主要功能。
SIP消息简介
SIP核心规范定义了6中不同的方法:
6种应答消息
Sip请求实例
其中Request line包括方法名,Request URL,协议版本号,下面的为头域部分,域名+”:“+域值。头域后面加一个空行,然后是消息体部分。
一个合法的SIP请求的头域部分必须至少包含如下6个头域:Via,From,To,Call-ID,Cseq,Max-Forwards。
•
整个消息中每行都是以回车换行(CRLF)结束。 头域的域名是大小写不敏感的,一般习惯第一个字母大写;域值也是大小写不敏感的,除非用引号引起来。 冒号左右对加多少空格没有限制,一般建议在冒号和值之间加一个空格(SP)即可。 在没有body时,头域的后面也要加一个空行
sip应答模式
呼叫流程
注册流程
呼叫流程
呼叫未建立时终止呼叫流程