前几讲的承载、QoS这些内容,实际上都是VoLTE语言业务的管道。从这一讲开始,我们就开始了解在这些承载之上的SIP信令和流程。本节首先了解一些IMS域的概念和消息。
IMS用户标识
类似于传统终端用户的IMSI和电话号码,IMS用户也包括两种用户标识,如下表:
英文 | 作用 | 格式 | 和传统号码的对应 | |
用户私有标识 | IM Private Identity | 全球唯一标识。用于用户接入IMS网络的注册、鉴权、认证和计费。 | username@ims.mnc<MNC>.mcc<MCC>.3gppnetwork.org 没有专门的username时,username=imsi | 类似于IMSI |
用户公有标识 | IM Public Identity | 用于和其他用户的通信, 相当于别名。 SIP格式相当于用户的SIP电话号码,用于和IMS用户进行互通;TEL格式相当于用户的传统电话号码,用于和现在的CS域互通。 | SIP URI格式:SIP:username@domain, 例如:xiaohong@chinamobile TEL URI格式:电话号码,例如13900011234 | 类似于MSISDN |
IMPI和IMPU的对应关系:
一对多:通常情况下,一个用户有一个IMPI,对应两个IMPU,一个是SIP格式IMPU,一个是TEL格式IMPU。相当于一机多号。
多对一:一个用户的多个终端设备共享相同的IMPU,相当于一号多机。
每一个IMPU有对应的签约数据中的service profile。
SIP协议
SIP(Session Initiation Protocol)是一个应用层的信令控制协议。用于创建、修改和释放一个或多个参与者的会话。这些会话可以是Internet多媒体会议、IP电话或多媒体分发。
SIP协议栈为:
SIP |
TCP/UDP |
IP |
链路层(以太网) |
SIP协议是一个Client/Sever协议,因此SIP消息分两种:请求消息和响应消息。SIP 消息是基于文本的消息,消息构建方式类似于 HTTP。
请求消息是SIP客户端为了激活特定操作而发给服务器端的消息。请求消息的起始行为请求行,请求行的格式由方法名(Method)、请求URL(Request-URI)和协议版本(SIP-Version)组成,各部分之间均用一个空格字符进行分隔。除此之外,请求行必须用回车换行(CRLF)字符表示行终结。
Request-Line = Method[ ] Request-URI [] SIP-Version CRLF
1、常用的SIP请求消息如下:
方法 | 应用场景 |
INVITE | 表示主叫用户发起会话请求,邀请其他用户加入一个会话。也可以用在呼叫建立后用于更新会话(此时该INVITE又称为Re-invite) |
ACK | 客户端向服务器端证实它已经收到了对INVITE请求的最终响应 |
BYE | 表示终止一个已经建立的呼叫。 |
CANCEL | 表示在收到对请求的最终响应之前取消该请求,对于已完成的请求则无影响。 |
REGISTER | 表示客户端向SIP服务器端注册列在To字段中的地址信息 |
OPTIONS | 表示查询被叫的相关信息和功能。 |
2、Request URI:指示被邀请用户的当前地址,URI可以是sip或tel格式。
3、版本号用于定义协议的当前版本号,为SIP/2.0。
SIP协议中的响应消息用于对请求消息进行响应,指示呼叫的成功或失败状态。
常用的一些响应消息:
1xx:临时应答-请求已经接收,正在处理这个请求。
2xx:成功处理-请求已经成功接收,并且正确处理了这个请求。
3xx:重定向-还需要附加的操作才能完成这个请求,本请求转发到其他的服务器上处理。
4xx:客户端错误--请求包含错误的格式或者不能在这个服务器上完成。
5xx:服务器错误-服务器不能正确的处理这个显然合法的请求。
6xx:全局错误-请求不能被任何服务器处理。