zoukankan      html  css  js  c++  java
  • Sipdroid实现SIP(二): 呼叫请求

    INVITE

    许多介绍sip的文章没有介绍以下几点细节:

    重传, Timer A, B

    Transaction的有限状态机, 记录当前Transactin的进展情况

    与INVITE消息相关的行为(Client侧行为)当SIP实体(包括UA和Proxy)发送INVITE消息 后,无论是可靠传送还是不可靠传送,实体都会启动 Transaction保护,启动定时器B(Timer B=64*T1,如果T1=500ms,则此定时器为32S)。
    在不可靠传送的情况下,实体同时会启动T1定时器(500ms),如果T1终结了没有收到任何响应消息,实体将会重发INVITE消息,以后的间隔分别为2T1,4T1,8T1,16T1,32T1,在此期间,如果收到响应消息,实体将会终止重发行为。
    当定时器B(Timer B=64T1)终结时,如果实体仍然没有收到响应消息,实体将终止该呼叫请求。

    根据rfc3261的这个文档解释,如果你的时延超过32s后那么任何一个事务都无法完成而导致你无法使用sip上的任何业务.

    摘自: https://zhidao.baidu.com/question/492010821261136492.html

    SDP

    当INVITE OK, 两个UA终端之间开始音视频流传输时, SIP消息INVITE的"message body"里将携带SDP消息, 描述具体通信内容. 在Sipdroid中SDP消息的实现是SessionDescription类.

    会话描述的功能:

    类SessionDescription将根据SDP协议格式化(处理)SIP消息体.

    会话描述的基本内容:

    会话等级描述(描述可以应用于整个会话和所有媒体流);

    0或者更多的媒体等级描述(描述仅只用于一种媒体流).

    会话描述的详细内容:

    会话等级描述以"v="开始, 直到第一个媒体流等级小节;

    媒体流描述以"m="开始, 直到下一个媒体流描述, 或者本节描述的结束;

    整体来说, 会话等级值对所有媒体流都是默认的除非被新值覆盖.

    参考资料

     [1]. SIP中一个INVITE消息的发起过程: http://blog.csdn.net/argpunk/article/details/7722880

  • 相关阅读:
    day 13 python循环
    day 12 python开始--字符串
    day eleven 正则表达式以及shell基础学习
    day ten linux学习
    eight day linux网络基础
    设计模式
    JAVA中JDK和JRE的区别
    工作流基本概念__了解就行
    mybitis注解开发_curd操作
    Spring boot 整合SSM框架三层架构并前后台restful风格交互
  • 原文地址:https://www.cnblogs.com/elsarong/p/6208684.html
Copyright © 2011-2022 走看看