SIP(Session Initiation Protocol)是一个应用层的信令控制协议。
用于创建、修改和释放一个或多个参与者的会话。这些会话可以是Internet多媒体会议、IP电话或多媒体分发。会话的参与者可以通过组播(multicast)、网状单播(unicast)或两者的混合体进行通信。
SIP 会话使用多达四个主要组件:SIP 用户代理、SIP 注册服务器、SIP 代理服务器和 SIP 重定向服务器。
SIP协议的亮点却不在于它的强大,而是在于:简单!
SIP协议是一个Client/Sever协议,因此SIP消息分两种:请求消息和响应消息。
请求消息是SIP客户端为了激活特定操作而发给服务器端的消息。
常用的SIP请求消息如下:
-
INVITE:表示主叫用户发起会话请求,邀请其他用户加入一个会话。也可以用在呼叫建立后用于更新会话(此时该INVITE又称为Re-invite)。
-
ACK:客户端向服务器端证实它已经收到了对INVITE请求的最终响应。
-
PRACK:表示对1xx响应消息的确认请求消息。
-
BYE:表示终止一个已经建立的呼叫。
-
CANCEL:表示在收到对请求的最终响应之前取消该请求,对于已完成的请求则无影响。
-
REGISTER:表示客户端向SIP服务器端注册列在To字段中的地址信息。
-
OPTIONS:表示查询被叫的相关信息和功能。
SIP协议中的响应消息用于对请求消息进行响应,指示呼叫的成功或失败状态。
常用的一些响应消息:
-
100试呼叫(Trying)
-
180振铃(Ringing)
-
181呼叫正在前转(Call is Being Forwarded)
-
200成功响应(OK)
-
302临时迁移(Moved Temporarily)
-
400错误请求(Bad Request)
-
401未授权(Unauthorized)
-
403禁止(Forbidden)
-
404用户不存在(Not Found)
-
408请求超时(Request Timeout)
-
480暂时无人接听(Temporarily Unavailable)
-
486线路忙(Busy Here)
-
504服务器超时(Server Time-out)
-
600全忙(Busy Everywhere)
SIP通过以下逻辑功能来完成通信:
-
用户定位功能:确定参与通信的终端用户位置。
-
用户通信能力协商功能:确定参与通信的媒体终端类型和具体参数。
-
用户是否参与交互功能:确定某个终端是否加入某个特定会话中。
-
建立呼叫和控制呼叫功能:包括向被叫“振铃”、确定主叫和被叫的呼叫参数、呼叫重定向、呼叫转移、终止呼叫等。