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

  • 相关阅读:
    Angular @HostBinding()和@HostListener()用法
    Java高并发秒杀API之高并发优化
    数据库sql语句例题(转)
    Java方法的静态绑定与动态绑定讲解(向上转型的运行机制详解)
    如何给UIViewController瘦身
    SQLite集成与用法
    谷歌公司发布的程序员养成指南
    iOS文档预览功能教程
    图文解释XCode常用快捷键的使用
    iOS学习之 plist文件的读写
  • 原文地址:https://www.cnblogs.com/elsarong/p/6208684.html
Copyright © 2011-2022 走看看