图3-1 SIP协议栈
SIP协议是IETF多媒体数据和控制体系结构的一部分,与其它协议相互合作,例如:RSVP(Resource ReServation Protocol)用于预约网络资源,RTP(Real-time Transmit Protocol)用于传输实时数据并提供服务质量(QoS)反馈,RTSP(Real-Time Stream Protocol)用于控制实时媒体流的传输,SAP(Session Announcement Protocol)用于通过组播发布多媒体会话,SDP(Session Description Protocol)用于描述多媒体会话。但是SIP协议的功能和实施并不依赖这些协议。
传输层支持:SIP协议承载在IP网,网络层协议为IP,传输层协议可用TCP或UDP,推荐首选UDP。
3.1.4 SIP协议的应用
SoftX3000通过SIP/SIP-T与其它软交换系统互通,以及与其它SIP域设备(如SIP Phone,SIP Softphone等)互通,SIP协议在NGN中的典型应用如图3-2所示:
图3-2 SIP在NGN中的典型应用
3.2 协议消息
3.2.1 消息类型
SIP消息采用文本方式编码,分为两类:请求消息和响应消息。 1. 请求消息
用于客户端为了激活按特定操作而发给服务器的SIP消息,包括INVITE, ACK,OPTIONS,BYE,CANCEL和REGISTER消息等,各消息功能如表3-1所示。
表3-1 请求消息
请求消息 消息含义 发起会话请求,邀请用户加入一个会话,会话描述含于消息体中。对于两方呼叫来说,主叫方在会话描述中指示其能够接受的媒体类型及其参数。被叫方必需在成功响应消息的消息体中指明其希望接受哪些媒体,还可以指示其行将发送的媒体。 如果收到的是关于参加会议的邀请,被叫方可以根据Call-ID或者会话描述中的标识确定用户已经加入该会议,并返回成功响应消息。 ACK BYE CANCEL REGISTER OPTIONS 证实已收到对于INVITE请求的最终响应。该消息仅和INVITE消息配套使用。 结束会话 取消尚未完成的请求,对于已完成的请求(即已收到最终响应的请求)则没有影响 注册 查询服务器的能力 INVITE
2. 响应消息
用于对请求消息进行响应,指示呼叫的成功或失败状态。不同类的响应消息由状态码来区分。状态码包含三位整数,状态码的第一位用于定义响应类型,另外两位用于进一步对响应进行更加详细的说明。各响应消息分类和含义如表3-2所示。
表3-2 响应消息
序号 状态码 信息响应(呼叫进展响应) 100 1xx 180 181 182 成功响应 2xx 200 重定向响应 300 301 3xx 302 303 305 380 客户出错 400 401 402 403 4xx 404 405 406 407 408 410 413 OK 表示需要采取进一步动作,以完成该请求 多重选择 永久迁移 临时迁移 见其它 使用代理 代换服务 表示请求消息中包含语法错误或者SIP服务器不能完成对该请求消息的处理 错误请求 无权 要求付款 禁止 没有发现 不允许的方法 不接受 要求代理权 请求超时 消失 请求实体太大 消息功能 表示已经接收到请求消息,正在对其进行处理 试呼叫 振铃 呼叫正在前转 排队 表示请求已经被成功接受、处理 序号 414 415 416 420 421 423 480 481 482 483 484 485 486 487 488 491 493 状态码 请求URI太大 不支持的媒体类型 不支持的URI方案 分机无人接听 要求转机 间隔太短 暂时无人接听 呼叫腿/事务不存在 相环探测 跳频太高 地址不完整 不清楚 线路忙 终止请求 此处不接受 代处理请求 难以辨认 消息功能 服务器出错 500 501 502 5xx 503 504 505 513 全局故障 600 6xx 603 604 606 表示SIP服务器故障不能完成对正确消息的处理 内部服务器错误 没实现的 无效网关 不提供此服务 服务器超时 SIP版本不支持 消息太长 表示请求不能在任何SIP服务器上实现 全忙 拒绝 都不存在 不接受
请求消息和响应消息都包括SIP头字段和SIP消息字段。
在SIP消息中加入SDP消息正文部分。
3.2.2 消息结构
1. 请求消息 (1) 请求消息结构
如图3-3所示是SIP请求命令的格式,由起始行、消息头和消息体组成。通过换行符区分消息头中的每一条参数行。对于不同的请求消息,有些参数可选。
图3-3 SIP请求消息结构
(2) 请求消息参数
下面仅对几个常用的参数字段进行说明。
?
Call-ID
该字段用以唯一标识一个特定的邀请或标识某一客户的所有登记。
需要注意的是,一个多媒体会议可能会有多个呼叫,每个呼叫有其自己的Call-ID。例如,某用户可数次邀请某人参加同一历时很长的会议。用户也可能会收到数个参加同一会议或呼叫的邀请,其Call-ID各不相同。用户可以利用会