SIP呼叫流程

时间:2024-10-08 17:26:35

SIP呼叫流程包含

注册流程

注消流程

基本呼叫建立过程

正常呼叫释放过程

被叫忙呼叫释放

被叫无应答流程

遇忙呼叫前转

无应答呼叫前转流程

呼叫保待

呼叫等待

(1)终端代理A向代理服务器发送REGISTER注册请求; (2)代理服务器通过后端认证/计费中心获知用户住处不在数据库中,便向终端代理A回送401 Unauthorized质询信息,其中包含安全认证所需要的令牌; (3)终端代理A根据安全认证令牌将其标识和密码加密后,再次用REGISTER消息报告给代理服务器; (4)代理服务器将REGISTER消息中的用户信息解密,通过认证/计费中心验证基合法后,将该用户信息登记数据库中,并向终端代理A返回成功响应消息200 OK。

 

(1)终端向代理服务器送REGISTER消息注消,其头中的expire字段置0

(2)代理服务器收到后回送200 OK响应,并将该用户有关的信息从数据库中注消

(1)用户摘机拨号发起一路呼叫,终端代理A向该区域代理服务器发起Invite请求; (2)代理服务器通过认证/计费中心确认用户谁已通过后,检查请求消息中的Via头域中是否包含其地址。若包含,说明发生环回,返回指示错误的应答;如果没有问题,代理服务器在请求消息的Via头域插入自身的地址,并向Invite消息的To域所指示的被叫终端代理B转发Invite请求; (3)代理服务器向终端代理A送呼叫处理中的应答消息, 100 Trying; (4)终端代理B向代理服务器送呼叫处理中的应答消息,100 Trying; (5)终端代理B指被叫用户振铃,用户振铃后,向代理服务器发送180 Ringing振铃信息; (6)代理服务器向终端代理A转发被叫用户振铃信息; (7)被叫用户摘机,终端代理B向代理服务器返回表示连接成功的应答(200 OK); (8)代理服务器向终端代理A转发该成功指示(200 OK); (9)终端代理A收到消息后,向代理服务器发ACK消息进行确认; (10)代理服务器将ACK确认消息转发给终端代理B; (11)主被叫用户之间建立通信连接,开始通话;

ps:invite 和ring中均携带sdp信息,本地接收处理的编码方式和IP地址和端口。

(1)正在通话; (2)通话结束后,被叫用户挂机,终端代理B向代理服务器发送Bye消息; (3)代理服务器转发Bye消息至终端代理A,同时认证/计费中心送用户通话的详细信息,请求计费; (4)主叫用户挂机后,终端代理A向代理服务器发送确认挂断响应消息200 OK; (5)代理服务器转发响应消息200 OK。

(1)用户摘机拨号发起一路呼叫,终端代理A向该区域代理服务器发起Invite请求; (2)代理服务器通过认证/计费中心确认用户谁已通过后,检查请求消息中的Via头域中是否包含其地址。若包含,说明发生环回,返回指示错误的应答;如果没有问题,代理服务器在请求消息的Via头域插入自身的地址,并向Invite消息的To域所指示的被叫终端代理B转发Invite请求; (3)代理服务器向终端代理A送呼叫处理中的应答消息, 100 Trying; (4)终端代理B向代理服务器送呼叫处理中的应答消息,100 Trying; (5)呼叫请求送到被叫终端代理B后,被叫心,终端代理B向代理服务器发送486被叫忙响应; (6)代理服务器向终端代理A转发该响应消息; (7)终端代理A向代理回送ACK确认消息; (8)代理服务器向终端B送ACK确认消息。

(1)用户A发起一路呼叫,终端代理A向代理服务器发Invite请求消息; (2)代理服务器向被用户的终端代理B转发该Invite请求; (3)代理服务器向终端代理A回送100 Trying响应,表示呼叫已在处理中; (4)终端代理B向代理服务器回送100 Trying,告知代理服务器呼叫正在处理; (5)被叫用户振铃,终端代理B向代理服务器送180 Ring响应; (6)代理服务器向终端代理A转发响应消息; (7)被叫久振铃无应答,终端代理A判断超时后,向代理服务器送Cancel消息放弃该呼叫; (8)代理服务器收到Cancel消息后,向终端代理A回送响应; (9)代理服务器将Cancel消息转发给终端代理B; (10)终端代理B向代理服务器回送200 OK响应; (11)终端代理B向代理服务器送487请求撤销消息; (12)代理服务器收到后回送ACK确认; (13)代理服务器向终端代理A送487请求已撤销消息; (14)终端代理A向代理服务器回送ACK。 注意: 上述步骤中(10)和(12)无严格的顺序关系

(1)用户A发起一路呼叫,终端代理A向代理服务器发Invite请求消息; (2)代理服务器向被用户的终端代理B转发该Invite请求; (3)代理服务器向终端代理A回送100 Trying响应,表示呼叫已在处理中; (4)终端代理B向代理服务器回送100 Trying,告知代理服务器呼叫正在处理; (5)被叫用户振铃,终端代理B向代理服务器送180 Ring响应; (6)代理服务器向终端代理A转发响应消息; (7)被叫久振铃无应答,终端代理B判断超时后,向代理服务器送408 Request timeout消息放弃该呼叫; (8)代理服务器收到408 Request timeout消息后,转发该消息给终端代理A; (9)代理服务器收到后回送ACK确认给终端代理B; (10)终端代理A向代理服务器回送ACK。 注意: 上述步骤中(9)和(10)无严格的顺序关系

(1)用户A发起一种呼叫,终端代理A向代理服务器发Invite请求消息; (2)代理服务器向被叫用户怕终端代理B转发该Invite请求; (3)代理服务器向终端代理A回送100Trying响应,表示呼叫已在处理; (4)终端代理B向代理服务器回送100Trying,告知代理服务器呼叫正在处理; (5)终端代理B忙线中,终端代理B向代理服务器送486 Busy here响应; (6)代理服务器向终端代理B发送ACK响应消息; (7)代理服务器对此呼叫进行前转,向终端代理C发送Invite请求消息; (8)代理终端C收到Invite请求后,指示用户振铃,同时向代理服务器发送180 Ringing响应; (9)代理服务器向代理终端A转发收到的180 Ringing响应; (10)被叫用户C摘机接听电话,代理终端C向代理服务器发送200 OK响应; (11)代理服务器向代理终端A转发收到的200 OK响应; (12)终端代理A靠山吃山代理服务器回送ACK确认; (13)代理服务器向代理终端C转发收到的ACK确认; (14)双方开始通话; (15)主叫挂机,代理终端A向代理服务器发送BYE请求消息,请求挂机; (16)代理服务器向代理终端C转发收到的BYE请求消息,指示用户C挂机; (17)用户C放催挂音,同时向代理服务器回应200 OK响应; (18)代理服务器向代理终端转发收到的200 OK响应。

(1)用户A发起一种呼叫,终端代理A向代理服务器发Invite请求消息; (2)代理服务器向被叫用户怕终端代理B转发该Invite请求; (3)代理服务器向终端代理A回送100Trying响应,表示呼叫已在处理; (4)终端代理B向代理服务器回送100Trying,告知代理服务器呼叫正在处理; (5)被叫用户振铃,终端代理B向代理服务器送180 Ringing响应; (6)代理服务器向终端代理A转发该响应消息; (7)被叫久振铃无应答,代理服务器判断超时后,向代理终端B送Cancel消息放弃该呼叫; (8)代理终端B收到Cancel消息后,向代理服务器回送200 OK响应 (9)终端代理B向代理服务器送487请求已撤消的响应消息; (10)代理服务器收到后送ACK确认; (11)代理服务器对此呼叫进行前转,向终端代理C发送Invite请求消息; (12)代理终端C收到Invite请求后,指示用户振铃,同时向代理服务器发送180 Ringing响应; (13)代理服务器向代理终端A转发收到的180 Ringing响应; (14)被叫用户C摘机接听电话,代理终端C向代理服务器发送200 OK响应; (15)代理服务器向代理终端A转发收到的200 OK响应; (16)终端代理A靠山吃山代理服务器回送ACK确认; (17)代理服务器向代理终端C转发收到的ACK确认; (18)双方开始通话; (19)主叫挂机,代理终端A向代理服务器发送BYE请求消息,请求挂机; (20)代理服务器向代理终端C转发收到的BYE请求消息,指示用户C挂机; (21)用户C放催挂音,同时向代理服务器回应200 OK响应; (22)代理服务器向代理终端转发收到的200 OK响应。

(1)用户接机发起一路呼叫,终端代理A向该区域的代理服务器发起Invite请求; (2)代理服务器通过认证/计费中心确认用户认证已过过后,检查请求消息中的Via头域中是否已包含其地址,若已包含,说明发生环回,返回指示错误的应答;如果没有问题,代理服务器在请求消息的Via头域插入自身地址,并向Invite消息的To域所指示的被叫终端代理B转送Invite请求; (3)代理服务器向终端代理A送呼叫处理中的应签消息,100Trying; (4)终端代理B向代理服务器送呼叫处理中的应答消息,100Trying; (5)终端代理B指示被叫用户振铃,用户振铃后,向代理服务器发送180Ringing振铃消息; (6)代理服务器向终端代理A转发被叫用户振铃信息; (7)被叫用户摘机,终端代理B向代理服务器返回表示连接成功的应答(200 OK); (8)代理服务器向终端代理A转发该成功指示(200 OK); (9)终端代理A收到消息后,向代理服务器发ACK消息进行确认; (10)代理服务器将ACK确认消息转发给终端代理B; (11)主被叫用户之间建立通信连接,开始通话; (12)代理终端向代理服务器发送ReInvite请求消息,SDP的C域等于0.0.0.0 (13)代理服务器转发此消息给代理终端A; (14)代理终端A收到ReInvite后,回应200 OK响应,表示接受会话更改,同时根据协商结果修改会会话方式; (15)代理服务器转发200 OK给代理终端B (16)终羰代理B收到消息后,向代理服务器发ACK消息进行确认; (17)代理服务器将ACK确认消息转发给终端代理A。

(1)用户A,B正处于通话阶段; (2)用户C向A发起呼叫,终端代理C发送Invite消息给代理服务器; (3)代理服务器向终端代理C回送100 Trying禹响应,表示呼叫已在处理中; (4)代理服务器把Invite消息转发给代理终端A; (5)用户A振铃,终端代理A向代理服务器送180 Ring响应; (6)代理服务器向终端代理C转发该响应消息; (7)用户A按下呼叫保持键,代理终端A向代理服务器发送Invite消息,请求与代理终端呼叫保持; (8)代理服务器转发此消息给终端代理B; (9)代理服务器向终端代理A回送100 Trying响应,表示呼叫已在处理中; (10)终端代理B收到呼叫保持请求后,发送200 OK给代理服务器,表示接受呼叫保持; (11)代理服务器转发给200 OK响应给终端代理A (12)终端代理A向代理服务器回送ACK确认; (13)代理服务器向代理终端B转发收到的ACK确认; (14)终端代理A发送200 OK响应给代理服务器,表示接受C的呼叫。 (15)代理服务器转发200 OK响应给终端代理C; (16)终端代理C向代理服务器回送ACK确认; (17)代理服务器向代理终端A转发收到的ACK确认 A与C之间开始通话 (18)用户A挂机,终端代理A向代理服务器发送Bye请求消息; (19)代理服务器转发Bye消息给终端代理C; (20)终端代理C发送200 OK给代理服务,表示接受请求; (21)代理服务器转发200 OK给终端代理A; (22)终端代理C重新发送Invite请求给代理服务器,请求和终端代理B恢复通话; (23)代理服务向代理终端B转发收到的Invite请求。