2.SIP的消息格式
SIP消息用于会话连接的建立及修改。SIP的消息格式与HTTP协议的格式很相像。SIP消息分为REQUEST和RESPONSE两类,REQUEST消息有6个基本类型,包括:INVITE(发起呼叫)、ACK(对应答做出回应)、BYE(拆除连接)、CANCLE(中途取消)、OPTIONS(查询对方的能力)、REGISTER(注册),SIP协议的制订者还在根据需要定义新的类型。RESPONSE消息有多种编码,指示会话接受方所做出的具体响应。
SIP消息包括三个部分:
起始行,位于消息的最开始,包含消息的类型和协议版本等基本内容。
消息头,描述消息的属性,类似于HTTP消息头的语法和语义,其中某些是完全照搬。格式为:,在一个消息中,头可以有多行。
消息体,消息体主要是对消息所要建立的会话的描述。典型的消息体为SDP(会话描述协议)格式,用来对所要建立的会话进行描述,例如建立一个多媒体会话的消息体中包含音频、视频编码及取样频率等信息的描述。消息体的类型采用MIME(多目的互联网邮件扩展)所定义的代码进行标识,如SDP的类型标识为application/SDP。除了SDP,消息体也可以是其他各种类型的文本或二进制数据。
以下是一个请求消息的例子:
消息 描述
INVITE sip:bob@acme.com SIP/2.0 向sip:bob@acme.com发起呼叫,协议版本号
Via: SIP/2.0/UDP alice_ws.radvision.com 通过proxy: alice_ws.radvision.com
From: Alice A. 发起呼叫的用户标识
T Bob B. 所要呼叫的用户,
Call-ID:2388990012@alice_ws.radvision.com 对这一呼叫的唯一标识
CSeq: 1 命令的序列号,标识一个事件
Subject: Lunch today. 呼叫的名字或属性
Content-Type: application/SDP 消息体的类型
Content-Length: 182 消息体的字节长度
一个空白行标识消息头结束,消息体开始
v=0 SDP协议版本号
o=Alice 53655765 2353687637 IN IP4 128.3.4.5 会话建立者和会话的标识,会话版本,地址的协议类型,地址
s=Call from Alice. 会话的名字
c=IN IP4 alice_ws.radvision.com 连接的信息
M=audio 3456 RTP/AVP 0 3 4 5 对媒体流的描述:类型、端口,呼叫者希望收发的格式
通过以上的例子,可以对SIP协议有一个基本认识。其它类型的REQUEST消息及响应消息,这里不一一描述。
除了在建立会话时进行各种消息交互外,SIP终端还可以在会话过程中,发出消息改变或添加会话的某些属性。例如,用户在进行语音通话的过程中,想增加视频通信,他可以在不中断通话的情况下,发送新的INVITE消息,打开双方的视频媒体,使通话变成可视电话。这为用户的使用带来很大的灵活性。
二、SIP的技术特点
如前面所说,下一代网络的一个重要目标是建立一个可管理的融合、高效、可不断扩展的业务平台。SIP作为应用层信令协议正很好地满足这一系列要求。
SIP具有很强的包容性,它可以建立如音频、视频、多方通话等各种会话,也可以被用来传送即时消息和文件,这得益于它对HTTP等协议的吸收借鉴。这使运营商能通过统一的业务平台提供综合业务,实现网络的融合。SIP在灵活、方便提供业务方面具有多方面优点:
1.协议的可扩充性
SIP协议处于不断丰富的过程之中。SIP的设计者在保持其核心协议简洁的同时,为其建立了强大的扩充机制。协议扩充主要是在消息上做文章,消息的三个基本部分:消息类型、消息头、消息体都可以被不断扩充。SIP基于文本的方式,使各种扩充工作变得十分简便。
(1)消息类型的扩充
前面介绍了6种基本消息类型。SIP工作组在增加新的功能时,更愿意定义新的消息类型,而不是修补原有类型,以保持每种类型目的单纯,语义清晰。定义新的类型的工作很简单,只需定义一个新的字符串即可,现已有几个新的类型被定义。
一个被广泛接受的新的类型是INFO消息。INFO消息被用来在会话参加者之间传递各种信息。INFO消息可以用来传送通话中随机产生的各种信号,也可以被用来在会话双方间传递即时消息。