(1)SIP消息基于文本,因此SIP对于开发设计人员来说是十分友好的,可以用通用的编程语言轻松读取、调试,易于创建应用程序。 (2)底层协议无关性,因此
(1)SIP消息基于文本,因此SIP对于开发设计人员来说是十分友好的,可以用通用的编程语言轻松读取、调试,易于创建应用程序。
(2)底层协议无关性,因此SIP协议不和任何传输层协议捆绑,既可以用TCP协议,也可以用UDP协议,使用户间的连接更加灵活。
(3)可拓展性,由于SIP协议是基于文本的,因此它的拓展工作也变得非常容易,IETF对SIP协议的拓展一直在继续,为提高可靠性和安全性,发布了许多RFC增补版本,如RFC3262、RFC3263等。
(4)媒体无关性,因此使用SIP协议的设备,比如固定电话、电脑、手机等,只要通过媒体协商,协调一下不同设备的编码方式,就能实现不同媒体间的通话。
2.2 SIP消息格式
SIP客户端和服务器的通信是借助SIP消息来传递的,它使用了UTF-8编码中的字符集,用空格作为间隔符,用回车换行符作为行结束符,SIP消息总体分为两类:请求消息和状态消息,请求消息是客户端发出的请求,状态消息是服务器对客户端请求返回的响应。一个SIP消息由一个起始行、任意个头部、和任意的消息体组成[15]。
请求消息是以请求起始行作为起始行,而状态消息是以状态起始行作为起始行,下面对两种消息进行详细介绍:
SIP请求消息的标准格式:请求起始行(Request-Line)=方法(Method)+空格+请求地址(Request-URL)+空格+SIP版本号(SIP-Version)+回车换行符。
SIP响应消息的标准格式:状态起始行(Status-Line)=SIP版本号(SIP-Version)+空格+状态码(Status-Code)+空格+原因短语(Reason-Phrase)+回车换行符。SIP协议规定使用三位整数的状态码和原因短语来进行识别做出相对的响应,其中状态码的第一位整数表示了响应的类型,后面两位数表示具体的响应方式。