SIP协议栈基础笔记
//------------------SIP基础------------------------//
SIP是基于UDP的协议
UA(user Agent)用户代理
UAC(client)发起SIP请求一方
UAS(server)接收请求并发送响应的一方
//SIP协议6中基本方法
REGISTER 注册联系信息
INVITE 初始化一个会话,可以理解为发起一个呼叫
ACK 对INVITE消息的最终响应
CANCEL 取消一个等待处理或正在处理的请求
BYE 终止一个会话
OPTIONS 查询服务器和能力,也可以用作ping测试
//扩展
SUBSCRIBE NOTIFY MESSAGE REFER INFO
//SIP必须包含的头域
Call-ID 用于区分不同会话的唯一标志
CSeq 顺序号,用于在同一会话中区分事务
From 说明请求来源
To 说明请求接收方
Max-Forwards 限制跳跃点数和最大转发次数
Via 描述请求消息经过的路径
//扩展的头域
Contact Alice(某人)的联系地址
Expires 本次注册的有效期
Allow Alice(某人)的UA所能支持的功能
User-Agent UA的型号
Content-Length 消息正文的长度
//注册流程
Alice Freeswitch
REGISTER(1)
---------------------------->
SIP/2.0 401 unauthorized(未认证(http摘要认证))
<----------------------------
REGISTER(2)
---------------------------->
SIP/2.0 200ok
<----------------------------
//呼叫流程
Bob Alice
INVITE alice@example.com
---------------------------->
100Trying
<---------------------------- //收到请求,等待响铃
180Ringing
<---------------------------- //响铃后回180,Bob收到180后提示对方正在响铃
200OK
<---------------------------- //Alice接听后,回200OK
ACK
----------------------------> //收到200OK回复ACK证实
RTP
--------------------------------------- //语音通话走的是SIP之外的RTP
BYE
<---------------------------- //Alice挂断
200OK
----------------------------> //收到BYE后回200OK
响应消息=状态码和原因短语(如Trying、Ringing)
1XX:为临时状态,表明呼叫的进展情况;
2XX:请求被成功收到;
3XX:重定向,SIP请求转到另一个UAS处理;
4XX:请求失败,一般由客户端或网络引起,如密码错误、空号
5XX:服务器内部错误,服务器出错不能响应错误的请求;
6XX:全局性错误,600 Busy Everywhere;
SIP协议栈基础笔记的更多相关文章
- 几种开源SIP协议栈对比OPAL,VOCAL,sipX,ReSIProcate,oSIP
随着VoIP和NGN技术的发展,H.323时代即将过渡到SIP时代,在H.323的开源协议栈中,Openh323占统治地位,它把一个复杂而又先进 的H.323协议栈展现在普通程序员的眼前,为H.323 ...
- 几个重要的开源视频会议SIP协议栈
视频会议系统由于需要与不同的终端进行连接,因此我们需要视频会议终端遵循统一的协议,H.323协议是视频会议软件使用最广泛的协议栈,但H.323设计得较为复杂,用户在调用H.323协议过程较多,因此利用 ...
- 几种开源SIP协议栈对比
几种开源SIP协议栈对比 随着VoIP和NGN技术的发展,H.323时代即将过渡到SIP时代,在H.323的开源协议栈中,Openh323占统治地位,它把一个复杂而又先进的H.323协议栈展现在普通程 ...
- Java基础笔记 – Annotation注解的介绍和使用 自定义注解
Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 | 被围观 25,969 views+ 1.Anno ...
- php代码审计基础笔记
出处: 九零SEC连接:http://forum.90sec.org/forum.php?mod=viewthread&tid=8059 --------------------------- ...
- MYSQL基础笔记(六)- 数据类型一
数据类型(列类型) 所谓数据烈性,就是对数据进行统一的分类.从系统角度出发时为了能够使用统一的方式进行管理,更好的利用有限的空间. SQL中讲数据类型分成三大类:1.数值类型,2.字符串类型和时间日期 ...
- MYSQL基础笔记(五)- 练习作业:站点统计练习
作业:站点统计 1.将用户的访问信息记录到文件中,独占一行,记录IP地址 <?php //站点统计 header('Content-type:text/html;charset=utf-8'); ...
- MYSQL基础笔记(四)-数据基本操作
数据操作 新增数据:两种方案. 1.方案一,给全表字段插入数据,不需要指定字段列表,要求数据的值出现的顺序必须与表中设计的字段出现的顺序一致.凡是非数值数据,到需要使用引号(建议使用单引号)包裹. i ...
- MYSQL基础笔记(三)-表操作基础
数据表的操作 表与字段是密不可分的. 新增数据表 Create table [if not exists] 表名( 字段名 数据类型, 字段名 数据类型, 字段n 数据类型 --最后一行不需要加逗号 ...
随机推荐
- webform连接ACCESS数据库
1.先建立一个名叫mydb.accdb的access数据库 2.他它复制到webform中,放在App_Data文件夹下. 3.在App_Code文件夹下建好封装语句,查询方法,连接语句,其中stud ...
- Oracle rac集群环境中的特殊问题
备注:本文摘抄于张晓明<大话Oracle RAC:集群 高可用性 备份与恢复> 因为集群环境需要多个计算机协同工作,要达到理想状态,必须要考虑在集群环境下面临的新挑战. 1.并发控制 在集 ...
- 关于Response.redirect()方法
1. sendRedirect 后面要加上return.2. sendRedirect 执行过程是先转向还是先执行后续代码再转向?答: 先执行代码再转向,在一个sendRedirect后面不能再有其他 ...
- [译]line clampin让文字在指定的行数内省略号显示
说明 (1)原文:http://css-tricks.com/line-clampin/ (2)非直译 需求: 当文字长度超过N行时,文字后面自动用省略号补齐. 比如,你有如下的HTML代码: < ...
- BOM&Navigator对象
<!-- BOM:Brower Object Model 浏览器对象模型 这个模型方便操作浏览器 浏览器对应的对象就是windows对象,这个可以通过查阅DHTML API获得 --> & ...
- 四个查找命令find,locate,whereis,which的区别
find最强大,但是检索硬盘,比较慢: whereis只能查二进制文件.说明文档,源文件等: locate能查所有文件,但跟whereis一样都是查数据库里的内容,速度快,但有延时: which 只能 ...
- Memcached 笔记与总结(9)Memcached 与 Session
一.Memcached 存储 Session 由于 Memcached 是分布式的内存对象缓存系统,因此可以用来实现 Session 同步:把 Web 服务器中的内存组合起来,成为一个“内存池”,不管 ...
- INSTRUCTION CYCLE
COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION • Fetch: Read the nex ...
- Maven-009-Nexus 用户密码加密(安全必须)
信息数据大爆发的时代,我们关心什么?没错,数据安全!数据安全!数据安全!(重要事情说三遍,哈哈哈...) 之前我们存放在 maven settings.xml 文件中的 Nexus 私服用户密码都是明 ...
- Maven-001-初识及本地环境配置
前段时间想对自己之前写的一些代码或者小工具,因为写的比较乱,因而想系统的管理一下自己学习 Java 时写的源码,经过多方请教.网上查询,最终决定使用 Maven 来管理自己写的代码. Maven 是一 ...