用户通话结束后,被叫用户挂机,终端代理B 向代理服务器发送Bye 消息;
(3)代理服务器转发Bye 消息至终端代理A,同时向认证/计费中心送用户通话的详细信息,请求计费;
(4)主叫用户挂机后,终端代理A 向代理服务器发送确认挂断响应消息200 OK;
(5)代理服务器转发响应消息200OK;
注:RFC3621上结束流程为:终端代理B直接发送Bye至终端代理A(未通过代理服务器转发),测试时使用的X-Lite软件Bye消息目的IP为代理服务器。此现象待分析确认。
注销流程:
(1) 终端向代理服务器送Register 消息注销,其头中expire 字段置0。
(2) 代理服务器收到后回送200 OK 响应,并将数据库中的用户有关信息注销。
三、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由本地设备生成,全局唯一。每次呼叫该值唯一不变。
本地生成的From tag和Call-ID全局唯一码,被叫方生成To tag全局唯一码。这三个随机码做为整个对话中对话标识在通话双方使用。
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报文:
Expires:注销时,此值置为0
200OK报文: