概述
SIP(Session Initiation Protocol)中文名为初始会话协议,是一个在IP网络上进行多媒体通信的应用层控制协议,它被用来创建、修改、和终结一个或多个参加者参加的会话进程。是一种通信协议,定义了如何在通信设备(计算机,电话,手机,PDA等)之间相互连接和信息交换。
SIP 是为Internet 制定设计的协议,像HTTP协议一样是基于文本UTF-8字符集;采用事务机制(请求/应答机制),每一个请求触发Server的操作方法,请求 和响应构成一个事务,事务间彼此独立;SIP协议承载在IP网,网络层协议为IP,传输层协议可用TCP或UDP,一般使用比较多的为UDP协议。
SIP协议在TCP/IP的位置
2.SIP协议基本概念
•事务(transations):一个SIP 事务由一个单个请求和这个请求的所有应答组成,这些应答包括了零个或者多个临时应答以及一个终结应答。如何标识一个事务?可以根据FROM 、TO 的tag 与 CALL-ID、 CSEQ的信息来确定一个事务。也可以根据VIA头域中的branch的值来确定一个事务。
•对话(dialog):对话是表现为两个用户代理(UA)之间的持续一段时间的点对点的SIP关系。一个对话中可以有多个事务,比如一个对话中可以有invite与bye事务。如何标识一个对话?一个对话由CALL-ID,本地tag与远程的tag来标识,保证点对点之间的对话是唯一的。
•会话(session):一个会话由INVITE建立的时候,每一个由不同UAS的1xx或者2xx的应答创建一个对话,并且当完成了会话描述的请求/应答(offer/answer)交互之后,它也就创建了一个会话。也就是说会话是端对端的概念。使用BYE请求结束一个会话。
三者的区别?
事务、对话与会话的区别
3.SIP方法(method)
INVITE:用于发起一个新的会话
ACK:用于完成会话的建立
BYE:用于结束一个会话
CANCEL:用于取消一个请求(一般是针对INVITE)
OPTIONS:用于查询服务器的能力
REGISTER:用于发送注册请求消息
以上方法以外,还有其他扩展的方法,如INFO、NOTIFY等等.
4.SIP响应(respones)
响应消息的起始行为状态行(Status-Line),状态行由协议版本、状态码和状态原因短语组成,各个部分之间用一个空格字符进行分隔。
SIP协议中共定义了6类状态码,其中状态码的第1位数字用于指示响应类型,后两位数字表示具体响应。下面用“1xx”标识状态码为“100-199”之间的响应。
1xx:临时响应,表示请求消息正在被处理;
2xx:成功响应,表示请求已被成功接收,完全理解并被接受;
3xx:重定向响应,表示需采取进一步以完成该请求;
4xx:客户机错误,表示请求消息中包含语法错误信息或服务器无法完成客户机请求;
5xx:服务器错误,表示服务器无法完成合法请求;
6xx:全局故障,表示任何服务器无法完成该请求;
5.SIP头域(heads)
From头域包含了请求发起者的逻辑标志,可能是用户的address-of-record。就像To头域一样,From头域也包含一个URI并且可以包含一个显示的姓名(sip display info);
–To头域是第一个并且也是最先指定请求的”逻辑”接收地( “第一”是因为可能会refer to到另外一个接受地 );
Call-ID是一个在一系列消息中,区分一组消息的唯一标志。在dialog的任一UA的所有请求和所有应答的Call-ID必须一致;
Cseq由顺序号码和一个方法(method)组成。方法(method)必须和请求的方法一致。用来区分和作为事务(Transaction)的顺序;
Via头域是标志了用于事务(Transaction)传输的传输设备,并且也标志了应答送回的地址。只有当需要通过选择传输设备到达下一个节点(hop)的时候,才需要在头域中包含Via域;
Contact头域提供了访问后续请求的特定UA实例的联系方法;
6. SIP基本流程
1 发起呼叫流程
SIP 发起呼叫的基本流程
2 结束呼叫流程
SIP结束呼叫流程
3 取消呼叫流程
SIP取消呼叫流程
4 一个完整的SIP会话流程
一个完整的SIP会话流程
SIP协议在互联网VOIP系统中应用广泛,希望本文能给读者对SIP协议有基本的了解,下文介绍SIP协议的灵魂——路由机制。