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
Sipdroid实现SIP(二): 呼叫请求的更多相关文章
- Sipdroid实现SIP(六): SIP中的请求超时和重传
目录 一. Sipdroid的请求超时和重传 二. SIP中超时和重传的定义 三. RFC中超时和重传的定义 一. Sipdroid的请求超时和重传 Sipdroid实现SIP协议栈系列, 之前的文章 ...
- Sipdroid实现SIP(四): 传输层和应用层之间的枢纽SipProvider
目录 一. 概述 二. 主要变量 三. 主要方法 四. 在Sipdroid中的应用 一. 概述 在整套Sipdroid源码中, 类SipProvider是最靠近TCP/UDP的一层, 在Sipdroi ...
- sip协议呼叫流程详解
1.SIP业务基本知识 1.1 业务介绍会话初始协议(Session Initiation Protocol)是一种信令协议,用于初始.管理和终止网络中的语音和视频会话,具体地说就是用来生成.修改和终 ...
- SIP基本呼叫
我们首先来看下主要的呼叫流程. INVITEsip:69690067@beijing.chinamobile.com;user=phone SIP/2.0 From:"+8610696900 ...
- angular分页插件tm.pagination 解决触发二次请求的问题
angular分页插件tm.pagination(解决触发二次请求的问题) DEMO: http://jqvue.com/demo/tm.pagination/index.html#?current ...
- API接口设计:防参数篡改+防二次请求
API接口由于需要供第三方服务调用,所以必须暴露到外网,并提供了具体请求地址和请求参数 为了防止被第别有用心之人获取到真实请求参数后再次发起请求获取信息,需要采取很多安全机制 1.首先: 需要采用ht ...
- [转]ASP.NET MVC学习系列(二)-WebAPI请求 传参
[转]ASP.NET MVC学习系列(二)-WebAPI请求 传参 本文转自:http://www.cnblogs.com/babycool/p/3922738.html ASP.NET MVC学习系 ...
- Ocelot(二)- 请求聚合与负载均衡
Ocelot(二)- 请求聚合与负载均衡 作者:markjiang7m2 原文地址:https://www.cnblogs.com/markjiang7m2/p/10865511.html 源码地址: ...
- 使用Typescript重构axios(二十)——请求取消功能:实现第一种使用方式
0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...
随机推荐
- TDD中的单元测试
TDD中的单元测试写多少才够? 测试驱动开发(TDD)已经是耳熟能详的名词,既然是测试驱动,那么测试用例代码就要写在开发代码的前面.但是如何写测试用例?写多少测试用例才够?我想大家在实际的操作过程 ...
- JS列表的下拉菜单组件(仿美化控件select)
JS列表的下拉菜单组件(仿美化控件select) 2014-01-23 23:51 by 龙恩0707, 1101 阅读, 6 评论, 收藏, 编辑 今天是农历23 也是小年,在这祝福大家新年快乐!今 ...
- linux下开机启动脚本的方法
1.准备好要随机启动的程序,例如 /root/test.sh .确保其可执行. 2.在目录 /etc/init.d/ 下编写控制脚本 test . #!/bin/sh ### BEGIN INIT I ...
- Excel开发
浅谈Excel开发:九 Excel 开发中遇到的常见问题及解决方法 Excel开发过程中有时候会遇到各种奇怪的问题,下面就列出一些本人在开发中遇到的一些比较典型的问题,并给出了解决方法,希望对大家 ...
- 应用内支付(IAP)可加入三方支付
Windows Phone 放开政策 - 应用内支付(IAP)可加入三方支付 Windows Phone 应用商店在 今年(2013)11月04号 修改了商店政策 允许公司账户的应用使用三方支付S ...
- 2013.4.A
=-=最近简直忙疯了.....两眼泪汪汪的...一个星期又磨磨蹭蹭的刷了一套 1.java_c 题1 Java vs C++ [问题描述] Java和C++两种语言的辩手都可以相互争论数小时去证明他们 ...
- Code First 启用迁移时出错 "No context type was found in the assembly"
问题:Code First 启用迁移时找不到上下文DbContext所在的项目. PM> Enable-Migrations No context type was found in the a ...
- 自由的Debian
原文:http://www.debian.org/intro/free 许多人在刚开始接触自由软件时都会很困惑,原因是自由软件中的自由一词并不是他们所期望的那样.对他们而言自由意味着免费.一本英文字典 ...
- ios开发实践之UIDatePicker(已对之前无法解决的问题做了解答)
需求:要做一个生日选择的控件,但除了选择之外还需要自定义几个控件,跟生日选择控件组合一起. 做法:自定义了一个UIImageView,并且作为背景.在这个背景view上再添加其他button和时间选择 ...
- [NLP自然语言处理]计算熵和KL距离,java实现汉字和英文单词的识别,UTF8变长字符读取
算法任务: 1. 给定一个文件,统计这个文件中所有字符的相对频率(相对频率就是这些字符出现的概率——该字符出现次数除以字符总个数,并计算该文件的熵). 2. 给定另外一个文件,按上述同样的方法计算字符 ...