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(三) ...
随机推荐
- Failed to issue method call: Unit mysql.service failed to load: No such file or directory解决的方式
Failed to issue method call: Unit mysql.service failed to load: No such file or directory解决的方式 作者:ch ...
- CruiseControl.Net全面实现持续集成
使用CruiseControl.Net全面实现持续集成 持续集成想必大家很多人都听说过,甚至都实践过,最近我又一次亲历了一次持续集成,现将我的经验分享给大家.关于持续集成的理论在本文概不涉及,本文 ...
- log4net项目中如何配置,以下详解
log4net.config配置文件 <?xml version="1.0" encoding="utf-8"?> <log4net debu ...
- Jenkins中关于一些插件的使用方法
最近在为公司搭建CI平台过程中,以及在具体项目实施过程中使用过的一些插件的具体用法: 1. ant插件 这个插件可能是我们最为经常使用的,若构建脚本是使用build.xml的,那构建引擎肯定会选择an ...
- MVC应用程序实现文件库(FlexPaper)
MVC应用程序实现文件库(FlexPaper) 很久之前Insus.NET在实现了<FlexPaper实现文档在线浏览>http://www.cnblogs.com/insus/archi ...
- 在线压缩JS的工具
给大家介绍款在线压缩JS的工具 首先说下该工具的域名:http://javascriptcompressor.com/ 进入后界面如下: 具体要讲下它的功能点:在线压缩 Javascript 源码可以 ...
- SQLSERVER利用FOR XML PATH实现分组拼接字符串
首先看一下数据结构表 IF(OBJECT_ID('tempdb..#tProduct')IS NOT NULL) DROP TABLE #tProduct SELECT * INTO #tProduc ...
- [转]gdb 调试 objc
源:http://bbs.pediy.com/showthread.php?t=159549 3. 在没有 symbols的情况下,想要下断 objc method 或者 private framew ...
- C# 号码归属地查询算法
C# 号码归属地查询算法(根据Android来电归属地二进制文件查询修改) 前言 近期有个项目需要用到号码归属查询,归属地数据库可能比不上ip138,淘宝上也有卖的-,-! 文本提供一个279188条 ...
- Object-c学习之路六(oc字符串文件读写)
// // main.m // NSString // // Created by WildCat on 13-7-25. // Copyright (c) 2013年 wildcat. All ri ...