SIP协议呼叫流程及协议分析



一、SIP协议介绍:

    会话发起协议SIP(Session Initiation Protocol)是一个应用层控制信令协议,用于建立、更改和终止多媒体会话或呼叫。SIP作为一个基础,可以在其上提供很多不同的服务。目前已经定义的媒体类型有音频、视频、应用、数据、控制。

二、SIP呼叫流程:

注册流程:

 

1)用户首次试呼时,终端代理A 向代理服务器发送REGISTER 注册请求;

2)代理服务器通过后端认证/计费中心获知用户信息不在数据库中,便向终端代理回送401Unauthorized 质询信息,其中包含安全认证所需的令牌;

3)终端代理提示用户输入其标识和密码后,根据安全认证令牌将其加密后,再次用REGISTER 消息报告给代理服务器;

4)代理服务器将REGISTER 消息中的用户信息解密,通过认证/计费中心验证其合法后,将该用户信息登记到数据库中,并向终端代理A 返回成功响应消息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) 主被叫用户之间建立通信连接,开始通话;

结束流程:

 

  1. 用户通话结束后,被叫用户挂机,终端代理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报文:

     

    0SDP版本号,目前都是0

    O:主叫源地址,类型等

    S:呼叫主题

    C:连接信息,告诉对端我的连接信息

    T:时间戳

    M:媒体传输类型,媒体编码,开放端口等

    A:媒体属性 (采样率等)

    服务器转发后Trying报文:

     

    响铃Ringing报文:

     

    接听电话后回应200OK报文:

     

    Content-Type:说明消息类型

    Content-Length:消息长度

    收到200OK报文后回复ACK:

     

    结束流程报文:

    Bye报文:

     

    收到Bye后回应200OK:

     

    用户在代理服务器上注销流程:

    REGISTER报文:

     

    Expires:注销时,此值置为0

    200OK报文:

     

     

  1. 常见的SIP消息类型:

     

    INVITE:发起会话请求,邀请用户加入一个会话,会话描述含于消息体中。对于两方呼叫来说,主叫方在会话描述中指示其能够接受的媒体类型及其参数。被叫方必须在成功响应消息的消息体中指明其希望接受哪些媒体,还可以指示其将发送的媒体。

    如果收到的是关于参加会议的邀请,被叫方可以根据Call-ID或者会话描述中的标识确定用户已经加入该会议,并返回成功响应消息。

    ACK:证实已收到对于INVITE请求的最终响应。该消息仅和INVITE消息配套使用。

    BYE:结束会话

    CANCEL:取消尚未完成的请求,对于已完成的请求则没有影响

    REGISTER:注册

    OPTIONS:查询服务器的能力

     

  2. 常见的响应消息状态码:

     

     

     

     

     

     

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值