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(三) ...
随机推荐
- 基于C# 语言的两个html解析器
基于C# 语言的两个html解析器 1)Html Agility Pack http://nsoup.codeplex.com/ 代码段示例: HtmlDocument doc = new HtmlD ...
- rem测试用实现移动端自适应页面
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- TodoList开发笔记 – Part Ⅱ
上一节给出了应用的两个主要UML类图,应用采用的技术也给出了,这一节开始实际设计编码 一.应用公开的方法 其实就几个的方法而已 1.代办事项的CRUD 2.代办事项归类目录的CRUD 3.代表事项“已 ...
- 自己动手实现Expression翻译器 – Part Ⅱ
上一节我们了解了Linq查询大体上是如何运转的,并针对SQL表达式进行建模(DbExpression),这一节的重点在于如何将表达式转换为DbExpression. 可以说只要能生成结构清晰的DbEx ...
- JQuery UI Layout Plug-in布局
端]使用JQuery UI Layout Plug-in布局 引言 使用JQuery UI Layout Plug-in布局框架实现快速布局,用起来还是挺方便的,稍微研究了一下,就能上手,关于该布 ...
- 尝试使用Memcached
尝试使用Memcached遇到的狗血问题 乘着有时间,尝试下利用Memcached进行分布式缓存,其中遇到了不少问题及狗血的事情,开篇记录下,希望对您有帮助. 我之前的项目为:Asp.Net MV ...
- ODP.NET Managed正式推出
NET Oracle Developer的福音——ODP.NET Managed正式推出 在.NET平台下开发Oracle应用的小伙伴们肯定都知道一方面做Oracle开发和实施相比SqlServer要 ...
- [转]Installing Snow Leopard (Client) on VMware Fusion 6.0.3
Source: http://inficererk.wordpress.com/2014/05/29/installing-snow-leopard-client-on-vmware-fusion-6 ...
- vm_write
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types. ...
- 基于SUSE Linux做NFS文件挂载
linux文件挂载其实和windows文件共享原理差不多,由主机配置一个共享目录,客户端机器可以通过网络访问该共享目录. 下面以SUSE11为例子,简要描述下NFS文件挂载过程: 一.主机端(主机IP ...