SIP协议呼叫流程及协议分析文档格式.doc
《SIP协议呼叫流程及协议分析文档格式.doc》由会员分享,可在线阅读,更多相关《SIP协议呼叫流程及协议分析文档格式.doc(11页珍藏版)》请在冰豆网上搜索。
呼叫流程:
(1)用户摘机发起一路呼叫,终端代理A向该区域的代理服务器发起Invite请求;
(2)代理服务器通过认证/计费中心确认用户认证已通过后,检查请求消息中的Via头域中是否已包含其地址。
若已包含,说明发生环回,返回指示错误的应答;
如果没有问题,代理服务器在请求消息的Via头域插入自身地址,并向Invite消息的To域所指示的被叫终端代理B转送Invite请求;
(3)代理服务器向终端代理A送呼叫处理中的应答消息,100Trying;
(4)终端代理B向代理服务器送呼叫处理中的应答消息,100Trying;
(5)终端代理B指示被叫用户振铃,用户振铃后,向代理服务器发送180Ringing振铃信息;
(6)代理服务器向终端代理A转发被叫用户振铃信息;
(7)被叫用户摘机,终端代理B向代理服务器返回表示连接成功的应答(200OK);
(8)代理服务器向终端代理A转发该成功指示(200OK);
(9)终端代理A收到消息后,向代理服务器发ACK消息进行确认;
(10)代理服务器将ACK确认消息转发给终端代理B;
(11)主被叫用户之间建立通信连接,开始通话;
结束流程:
(2)用户通话结束后,被叫用户挂机,终端代理B向代理服务器发送Bye消息;
(3)代理服务器转发Bye消息至终端代理A,同时向认证/计费中心送用户通话的详细信息,请求计费;
(4)主叫用户挂机后,终端代理A向代理服务器发送确认挂断响应消息200OK;
(5)代理服务器转发响应消息200OK;
注:
RFC3621上结束流程为:
终端代理B直接发送Bye至终端代理A(未通过代理服务器转发),测试时使用的X-Lite软件Bye消息目的IP为代理服务器。
此现象待分析确认。
注销流程:
(1)终端向代理服务器送Register消息注销,其头中expire字段置0。
(2)代理服务器收到后回送200OK响应,并将数据库中的用户有关信息注销。
三、SIP报文分析:
注册报文分析
Register报文:
Max-Forwards:
最大转发次数,就是经过SIP服务器的转发次数,主要是为了防环
Via:
SIP版本号2.0、传输类型UDP、呼叫地址
Branch是一种随机码,它被看作传输标识
Via字段中地址是消息发送方或代理转发方设备地址,一般由主机地址和端口号组成
传输类型可以为UDP/TCP/TLS/SCTP
Contact:
是INVITE消息所必须的,它用来路由到被叫地址设备,也称为用户代理(UA)
To:
使用用户名888去10.11.58.8登录
From:
表示请求消息的发送方和目标方,如果里面有用户名标签,地址要求用尖括号包起来,Tag:
随机码
Call-ID:
呼叫ID由本地设备生成,全局唯一。
每次呼叫该值唯一不变。
本地生成的Fromtag和Call-ID全局唯一码,被叫方生成Totag全局唯一码。
这三个随机码做为整个对话中对话标识在通话双方使用。
CSeq:
命令队列,每发送一个新的请求,该数自动加1
Expires:
到期时间
回复认证报文:
407:
要求代理权
呼叫方回应的认证报文:
代理服务器回应200OK:
INVITE报文:
0:
SDP版本号,目前都是0
O:
主叫源地址,类型等
S:
呼叫主题
C:
连接信息,告诉对端我的连接信息
T:
时间戳
M:
媒体传输类型,媒体编码,开放端口等
A:
媒体属性 (采样率等)
服务器转发后Trying报文:
响铃Ringing报文:
接听电话后回应200OK报文:
Content-Type:
说明消息类型
Content-Length:
消息长度
收到200OK报文后回复ACK:
结束流程报文:
Bye报文:
收到Bye后回应200OK:
用户在代理服务器上注销流程:
REGISTER报文:
注销时,此值置为0
200OK报文:
四、常见的SIP消息类型:
INVITE:
发起会话请求,邀请用户加入一个会话,会话描述含于消息体中。
对于两方呼叫来说,主叫方在会话描述中指示其能够接受的媒体类型及其参数。
被叫方必须在成功响应消息的消息体中指明其希望接受哪些媒体,还可以指示其将发送的媒体。
如果收到的是关于参加会议的邀请,被叫方可以根据Call-ID或者会话描述中的标识确定用户已经加入该会议,并返回成功响应消息。
ACK:
证实已收到对于INVITE请求的最终响应。
该消息仅和INVITE消息配套使用。
BYE:
结束会话
CANCEL:
取消尚未完成的请求,对于已完成的请求则没有影响
REGISTER:
注册
OPTIONS:
查询服务器的能力
五、常见的响应消息状态码: