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 数据类型 --最后一行不需要加逗号 ...
随机推荐
- Oracle-表格的建立
表格的建立,在table分列鼠标右键: 在名称写上此表格的名称,最好用英文,中文容易报错.表空间默认为user,也可以自己选择. 数据类型,一个汉字占用3个字节,最好多定义一些字节,防止出错. 可为空 ...
- bzoj1832: [AHOI2008]聚会--LCA
本来觉得这是一道挺水的题目,后来觉得出题人挺变态的= = 半个小时敲完后,内存超限它给我看TLE,还是0ms,后来才发现内存限制64m 然后卡了一个小时后AC了.. 题目大意是在一棵树上找三点的最短路 ...
- android之进度条组件ProgressBar
首先是main.xml文件 代码如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android& ...
- python 字符串与数字之间的转换
1.数字转字符串 i = 123 str = ‘%d’ %i str即为转换成的字符串 2.字符串转换成数字: import string tt='555' ts=string.atoi(tt) ts ...
- 如何查看JSP和Servlet版本
我们在java web开发的过程中,有时在资料上可能会提到环境所要支持的JSP,Servlet版本.如果版本低就可能出现测试错误. 方法:打开tomcat的common/lib 目录下,有两个JAR文 ...
- JS写的CRC16校验算法(查表法)
var CRC = {}; CRC._auchCRCHi = [ 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0 ...
- Oracel数据库连接时出现:ORA-12518:监听程序无法分发客户机连
在连接Oracel数据库时,每隔一段时间就会出现:ORA-12518:监听程序无法分发客户机连接,如图 上网查了资料原因和解决方案如下: 一.[问题描述] 最近,在系统高峰期的时候,会提示如上的错误, ...
- javac编译、运行
java源码(包结构) 源码存放位置:C:/Users/liaolongjun/DeskTop/java/ package test; import test.sub.F; public class ...
- Git-仓库基本结构
三 Git 仓库 1.1Git 基本概念 在Git中,我们将需要进行版本控制的文件目录叫做一个仓库(repository),每个仓库可以简单理解成一个目录,这个目录里面的所有文件都通过 ...
- Android 第三方开源下拉框:NiceSpinner
Android原生的下拉框Spinner基本上可以满足Android开发对于下拉选项的设计需求,但现在越来越流行的下拉框不满足于Android原生提供的下拉框Spinner所提供的设计样式,而改用自定 ...