文档介绍:第一章SIP协议主要消息
sip消息分类
sip协议是以层协议的形式组成的,就是说它的行为是以一套相对独立的处理阶段来描述的,每个阶段之间的关系不是很密切。
SIP协议将Server和UserAgent之间的通讯的消息分为两类:请求消应递增。
SIP协议版本为SIP/。其中SDP被加入到INVITE消息内容里,在消息头里的
Content-Length说明了SDP内容的长度。
INVITE请求消息详解:
INVITEsip:******@
<=请求方法、请求地址(Request—URI)、SIP版本号(目前都是SIP/)
〈=请求地址一般就是被叫方地址,跟MSN中好友eMail地址类似
Via:SIP/
—:5060;branch二z9hG4bKfwl9b
<=SIP版本号()、传输类型(UDP)、呼叫地址、
〈=branch是一随机码,它被看作传输标识
<=Via字段中地址是消息发送方或代理转发方设备地址,一般由主机地址和端口号组成
〈=传输类型可以为UDP、TCP、TLS、SCTP
Max-Forwards:70
〈=最大跳跃数,就是经过SIP服务器的跳跃次数,主要是防止循环跳跃
〈=每经过代理服务器,该整数减一
To:〈sip:******@〉
From:NikolaTesla<sip:n.******@high-〉;tag=76341
〈=表示请求消息的发送方和目标方
〈=如果里面有用户名标签,地址要求用尖括号包起来
〈=对于INVITE消息,可以在From字段中包含tag,它也是个随机码
Call-ID:******@-
〈=呼叫ID是由本地设备生成的,全局唯一值。每次呼叫该值唯一不变
〈=对于用户代理发送INVITE消息,本地将生成Fromtag和Call-ID全局唯一码,被叫方代理则生成Totag全局唯一码。这三个随机码做为整个对话中对话标识(dialogindentifier)在通话双方使用。
CSeq:1INVITE
〈=CSeq,又叫命令队列(CommandSeqence),每发送一个新的请求,该数自动加1
*以上几个字段是所有SIP消息体所必须的,其它头字段有些是可选的,有些在特定请求也是必须
Subject:AboutThatPowerOutage...
Contact:〈sip:n.******@-〉
〈=Contact是INVITE消息所必须的,它用来路由到被叫设备地址,也称为用户代理(UA)
Content-Type:application/sdp
Content-Length:158
<=最后两位附属字段说明消息体类型以及字段长度
v=0<=SDP版本号,目前都是0
-<=主叫源地址,类型等
s=PhoneCall
SIP响应消息的格式,由SIP响应消息头和一组参数行组成,如0所示。通过换行符区分命
令行和每一行参数。
消息头
参数行
SIP响应消息结构
注意:参数行的顺序不是固定的。对应的参数解释错误!未找到引用源。。
SIP响应消息实例:
SIP/
Content-Type:application/SDP
Via:SIP/.:5061
Call-ID:******@
CSeq:1INVITE
From:vsip:******@:5061;User=phone>;tag=29005358336B
534F610A000
To:vsip:******@:5060;User=phone>;tag=5358336B534F2900
CD1B0000
Contact:vsip:******@:55061>
Content-Length:156
v=0
o=
s=SipCall
c=
t=00
m=audio5060RTP/AVP0
a=rtpmap:0PCMU/8000
200OK消息是SIP响应消息的一种。
第一行由SIP版