//------------------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协议栈基础笔记的更多相关文章

  1. 几种开源SIP协议栈对比OPAL,VOCAL,sipX,ReSIProcate,oSIP

    随着VoIP和NGN技术的发展,H.323时代即将过渡到SIP时代,在H.323的开源协议栈中,Openh323占统治地位,它把一个复杂而又先进 的H.323协议栈展现在普通程序员的眼前,为H.323 ...

  2. 几个重要的开源视频会议SIP协议栈

    视频会议系统由于需要与不同的终端进行连接,因此我们需要视频会议终端遵循统一的协议,H.323协议是视频会议软件使用最广泛的协议栈,但H.323设计得较为复杂,用户在调用H.323协议过程较多,因此利用 ...

  3. 几种开源SIP协议栈对比

    几种开源SIP协议栈对比 随着VoIP和NGN技术的发展,H.323时代即将过渡到SIP时代,在H.323的开源协议栈中,Openh323占统治地位,它把一个复杂而又先进的H.323协议栈展现在普通程 ...

  4. Java基础笔记 – Annotation注解的介绍和使用 自定义注解

    Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 |  被围观 25,969 views+ 1.Anno ...

  5. php代码审计基础笔记

    出处: 九零SEC连接:http://forum.90sec.org/forum.php?mod=viewthread&tid=8059 --------------------------- ...

  6. MYSQL基础笔记(六)- 数据类型一

    数据类型(列类型) 所谓数据烈性,就是对数据进行统一的分类.从系统角度出发时为了能够使用统一的方式进行管理,更好的利用有限的空间. SQL中讲数据类型分成三大类:1.数值类型,2.字符串类型和时间日期 ...

  7. MYSQL基础笔记(五)- 练习作业:站点统计练习

    作业:站点统计 1.将用户的访问信息记录到文件中,独占一行,记录IP地址 <?php //站点统计 header('Content-type:text/html;charset=utf-8'); ...

  8. MYSQL基础笔记(四)-数据基本操作

    数据操作 新增数据:两种方案. 1.方案一,给全表字段插入数据,不需要指定字段列表,要求数据的值出现的顺序必须与表中设计的字段出现的顺序一致.凡是非数值数据,到需要使用引号(建议使用单引号)包裹. i ...

  9. MYSQL基础笔记(三)-表操作基础

    数据表的操作 表与字段是密不可分的. 新增数据表 Create table [if not exists] 表名( 字段名 数据类型, 字段名 数据类型, 字段n 数据类型 --最后一行不需要加逗号 ...

随机推荐

  1. AsyncTask的使用

    简单的AnsyTask的使用demo 1.定义一个模拟网络操作的类 package com.example.administrator.myapplication; /** * Created by ...

  2. .net 实现Office文件预览,word文件在线预览、excel文件在线预览、ppt文件在线预览

    转自源地址:http://www.cnblogs.com/GodIsBoy/p/4009252.html,有部分改动 使用Microsoft的Office组件将文件转换为PDF格式文件,然后再使用pd ...

  3. 初始化char指针--赋值和strcpy() 本质区别【转】

    原文地址:http://hi.baidu.com/todaygoodhj/item/0500b341bf2832e3bdf45180 使用常量字符串初始化char指针,或者使用strcpy复制,从语法 ...

  4. window svn backup.bat

    help command /? call /? %cd% 可以用在批处理文件中,也可以用在命令行中:展开后,是驱动器盘符:+当前目录,如在dos窗口中进入c:\dir目录下面, %0代指批处理文件自身 ...

  5. python的内存管理机制

    先从较浅的层面来说,Python的内存管理机制可以从三个方面来讲 (1)垃圾回收 (2)引用计数 (3)内存池机制 一.垃圾回收: python不像C++,Java等语言一样,他们可以不用事先声明变量 ...

  6. IOS第14天(1,UITabBarController的基本的使用)

    **************HMAppDelegate.m - (BOOL)application:(UIApplication *)application didFinishLaunchingWit ...

  7. 实现memcpy

    memcpy的原型: SYNOPSIS #include <string.h> void *memcpy(void *dest, const void *src, size_t n); D ...

  8. XPath提取xml文档数据

    package itcast.dom4j; import java.io.File; import org.dom4j.Document; import org.dom4j.DocumentExcep ...

  9. Final-阶段站立会议3

    组名:天天向上 组长:王森 组员:张政.张金生.林莉.胡丽娜 代码地址:HTTPS:https://git.coding.net/jx8zjs/llk.git SSH:git@git.coding.n ...

  10. 为什么Visual Studio的安装目录下有名为1033或2052的文件夹?

    一直不清楚MS诸多产品的安装目录下为什么总有个名为1033或者2052的目录 搜索一下才知道,原来叫 LCID(Locale ID,区域性标识符) 常见的如:1033表示英语(美国),2052表示中文 ...