1. SIP消息格式:
SIP
协议是一个基于文本的协议,使用
UTF-8
字符集(
RFC2279[7]
)。
一个
SIP
消息既可以是一个从客户端到服务器端的请求,也可以是一个从服务器端到客户端的一个应答。
这两种消息类型都由一个起始行,一个或者多个消息头,一个可选的消息正文组成。
消息=
起始行
*
消息头
CRLF
(空行,不可缺少)
[
消息正文
]
其中,起始行=
请求行
/
状态行
起始行、每一个消息头行,空行、都必须由回车换行组成(
CRLF
)。即使没有消息正文,也必须有一个空行。
除了在字符集上的区别以外,很多
SIP
的消息和包头域的格式都同
HTTP/1.1
一样。
2. 请求
SIP
请求是根据起始行中的
Request-Line
来区分的。一个
Request_line
包含方法名字,
Request
-
URI
,用单个空格(
SP
)间隔开的协议版本。
Request-Line
由
CRLF
结束。除了用作行结束标志以外,不允许
CR
或者
LF
出现在其他地方。在其他域中,不允许出现线形的空白(
liner whitespace LWS
)
Request-Line = Method SP Request-URI SP SIP-VERSION CRLF
Method:
这个规范规定了
6
中方法:
REGISTER
用于登记联系信息,
INVITE
,
ACK,CANCEL
用于建立会话,
BYE
用于结束会话,
OPTIONS
用于查询服务器负载。
SIP
扩展、标准
RFC
追加可能包含扩展的方法。
Request-URI:
Request-URI
是一个
SIP
或者
SIPS URI
,他们在
19.1
节由描述。也可以是一个通用的
URI(RFC 2396[5])
。它标志了这个请求所用到的用户或者服务的地址。
Request-URI
禁止
包含空白字符或者控制字符,并且禁止用
”<>”
括上。
SIP
元素可以支持除了
SIP
或者
SIPS
之外所规定的
Request-URIs
。比如
”tel” URI
模式(