SIP 协议详解

这里来详细了解一下Sip协议 。以下内容大致分为以下几个部分:

  • 协议简介
  • 两种Sip会话模式Session Model与Pager Model;
  • Sip 消息体结构
  • Sip 消息举例
一、Sip协议简介:SIP(Session Initiation Protocol , 会话初始协议)是由IETF(Internet Engineering Task Force , 因特网工程任务组)制定的多媒体通信协议 。广泛应用于CS(Circuit Switched , 电路交换)、NGN(Next Generation Network , 下一代网络)以及IMS(IP Multimedia Subsystem , IP多媒体子系统)的网络中 , 可以支持并应用于语音、视频、数据等多媒体业务 , 同时也可以应用于Presence(呈现)、Instant Message(即时消息)等特色业务 。可以说 , 有IP网络的地方就有SIP协议的存在 。
SIP是类似于HTTP , SIP可以减少应用特别是高级应用的开发时间 。由于基于IP协议的SIP利用了IP网络 , 固定网运营商也会逐渐认识到SIP技术对于他们的原意义 。
二、Sip消息的两种会话模式在Sip IM通信应用过程中 , 一般存在着两种会话模式:
  • Session Model
  • Pager Model
2.1、Session Model会话中 , 对于消息体内容大于1300字节时 , 一般采用Session Model 。其会话建立过程如下图所示:
SIP 协议详解

文章插图
 
主叫方A呼叫被叫方B:
  • 步骤1:主叫方A发送INVITE请求到代理服务器;
  • 步骤2:代理服务器发送100 Trying 响应主叫方A;
  • 步骤3~6:代理服务器搜索被叫方B的地址 , 获取地址后转发INVITE请求;
  • 步骤7~9:被叫方B生成的180 振铃响应 , 返回给主叫方A;
  • 步骤10~12:被叫方B生成的200 OK响应 , 返回给主叫方A;
  • 步骤13~17:主叫方A收到被叫方B200 OK响应后 , 向被叫方B发送一个ACK , 会话建立;
  • 步骤18~20:会话结束后 , 任何参与者(A或B)都可以发送一个BYE请求来终止会话;
  • 步骤21~23:主叫方A发送200 OK响应来确认BYE , 会话终止 。
注:以上的整个流程称之为一个Dialog
2.2、Pager Model在Sip消息中 , 对于消息体不大于1300字节时 , 一般采用Pager Model 。Sip消息通信中采用MESSAGE方法 , MESSAGE方法本身并不建立Dialog , 在多数应用中 , 每条IM消息都是独立的 , 颇似分页消息 。
2.2.1 MESSAGE方法的由来RFC3428对Sip协议进行了扩展 , 在Sip协议中增加了MESSAGE请求方法 。采用Pager Model进行通信 , 传递不超过1300字节的数据 。MESSAGE方法详细可参考 “SIP-RFC3428”
https://tools.ietf.org/html/rfc3428 。
2.2.2 MESSAGE方法消息体当User1想给User2发送IM消息时 , 只需构造一个MESSAGE , 发出去即可 。
对于其消息体body可以是任何MIME格式 。但必须支持plain/text格式 , 可以选择支持message/cpim、message/sdp格式 , 可能用message/cpim会好一点 , 因为已有的IM系统标准是message/cpim格式 。


    推荐阅读