最近学习VoLTE(Voice Vver LTE)相关知识,而学习VoLTE必须要学相关的协议,最基础的就是RFC3261,RFC3261的全称是:SIP: Session Initiation Protocol,英文翻译就是会话初始协议。

  SIP协议并不提供通话的数据传输的具体工作,主要是用在数据传输之前的会话建立阶段,例如我们进行手机通话时,首先我们的手机得先注册到手机附近运营商的基站上,然后得拨下对方的电话号码,然后通过手机基带芯片将信息传输出去,然后到运营商的基站去查询对方的地址,然后与对方建立连接,当拨号信息从UEA到达UEB对端准备好了接听电话,注意此时UEB端手机开始响铃,但还没有接听,UEA端开始听的铃声,如果开通了彩信也就是如果具有回铃音我们此时在UEA端能够听到歌曲。

  在前面的描述中我们看到了:

  1、一个信息的流动即从UEA到UEB,其实整个过程还有从UEB到UEA的流动,类似于TCP的握手,SIP协议也有一个发起和应答的机制,即UEA发起一个动作UEB会产生一个应答。

  2、在开始拨打电话到对方接听电话,这段时间或者说通话这个动作需要一个协调双方的协议,这个协议就是SIP协议,所以说SIP协议主要是对会话建立进行协商和规范。但是很多初学者容易搞混淆的地方是,必须要明白SIP协议它不负责后面的语音数据如何传输,双方的编解码如何协调,它只是负责会话的发起,会话的结束,会话单播到多播或者会议电话的建立。

  3、要完成一次VoLTE通话,仅仅有SIP协议是不够的。就如第二点所讲,数据的传输需要有一个实时的数据传输协议、编解码的协调需要一个协议,所以SIP协议通常会与RTCP和SDP协议共同工作完成一次数据的传输。

  前面在讲SIP协议,突然又说到VoLTE这个可能会让很多人搞不清楚,SIP是什么,VoLTE又是什么,其实要了解这些概念,需要去了解我们的移动通信的发展从2G-4G,马上又要进入5G时代,这些不断进步的技术带来了很多新的概念,当然我得澄清一下SIP是先于VoLTE产生。我们通常讲2-3G是CS call,通话数据的传输和网络数据的传输是分成两个通道的,即通话数据走CS(电路交换)通道,网络数据走PS(分组交换)通道。但是在4G时代没有CS、PS通道的区分了,所有的数据都走PS通道,意思就是我们通话时的数据也和浏览网页产生的数据一样都是通过分组交换实现,这些数据最终都会通过TCP/IP协议借助LTE 4G网络进行传输,这个就是目前VoLTE的一个简单的技术路线,当然要弄清楚这个还需要看很多的协议,最主要的就是IR.92,这个是VoLTE和IMS的提纲挈领的协议,整个IR.92文档内容不多但是是一个总体介绍。

  前面作为了将SIP的一个铺垫,当然要想了解VoLTE可以看这个网页链接,它讲的很详细:http://www.360doc.cn/article/2909773_637471256.html。下面开始介绍SIP协议:

  如下图所示我们将通话双方分为UEA(Alice)、UEB(Bob),图为前面讲的通话接通这个过程SIP协议流程,图为从SIP 3261所截。我们将一个SIP协议讲成SIP Message,如图中Alice发出INVITE请求即发起通话的请求,这个INVITE动作就是一个SIP message,每一个SIP message由一下几部分组成:

  generic-message = start-line

  *message-header
  [ message-body ]
  start-line = Request-Line / Status-Line

  主要由Request-Line由method和状态码(1xx、2xx、3xx、4xx、5xx)组成,method方法在RFC3261中有:INVITE、ACK、BYE、REGISTER、CANCEL、BYE。

  

SPEC-RFC3261总述的更多相关文章

  1. Java的多线程机制系列:(一)总述及基础概念

    前言 这一系列多线程的文章,一方面是个人对Java现有的多线程机制的学习和记录,另一方面是希望能给不熟悉Java多线程机制.或有一定基础但理解还不够深的读者一个比较全面的介绍,旨在使读者对Java的多 ...

  2. 三国杀3v3心法——总述篇

    昔日,独孤求败前辈精研剑法,将其中奥妙化为独孤九剑,破尽天下武功.其中开篇总诀式提纲挈领,从宏观的层面阐述剑道,是领悟后面八式的基石,而之后各式则深入微观,可各破一类具体的武功.笔者亦曾苦心研究三国杀 ...

  3. Web应用程序系统的多用户权限控制设计及实现-总述【1】

    中大型的Web系统开发均需要权限的配置,基于多角色,多用户的操作权限管理是一个系统开发的基础.搭建好一套权限,用户,角色,页面一体的开发架构,可以用于后期业务的开发,同时也可用于不同业务的系统开发. ...

  4. Linux makefile教程之总述二[转]

    Makefile 总述——————— 一.Makefile里有什么? Makefile里主要包含了五个东西:显式规则.隐晦规则.变量定义.文件指示和注释. 1.显式规则.显式规则说明了,如何生成一个或 ...

  5. Solr4.8.0源码分析(5)之查询流程分析总述

    Solr4.8.0源码分析(5)之查询流程分析总述 前面已经写到,solr查询是通过http发送命令,solr servlet接受并进行处理.所以solr的查询流程从SolrDispatchsFilt ...

  6. 很详细、很移动的Linux makefile教程:介绍,总述,书写规则,书写命令,使用变量,使用条件推断,使用函数,Make 的运行,隐含规则 使用make更新函数库文件 后序

    很详细.很移动的Linux makefile 教程 内容如下: Makefile 介绍 Makefile 总述 书写规则 书写命令 使用变量 使用条件推断 使用函数 make 的运行 隐含规则 使用m ...

  7. STL特性总述——写在前面

    所谓的容器,见名知意,容纳其他数据的"器具": 特点 1)支持泛型: 2)保存副本:本质上传入对象的拷贝. 3)内存托管 :构建对象于堆,无需人工干预,自动管理内存的生存周期. S ...

  8. [转] Makefile 基础 (2) —— Makefile 总述

    该篇文章为转载,是对原作者系列文章的总汇加上标注. 支持原创,请移步陈浩大神博客:(最原始版本) http://blog.csdn.net/haoel/article/details/2886 我转自 ...

  9. 基于ASP.Net Core开发一套通用后台框架记录-(总述)

    写在前面 本系列博客是本人在学习的过程中搭建学习的记录,如果对你有所帮助那再好不过.如果您有发现错误,请告知我,我会第一时间修改. 前期我不会公开源码,我想是一点点敲代码,不然复制.粘贴那就没意思了. ...

  10. 自顶向下深入分析Netty(七)--ChannelPipeline和ChannelHandler总述

    自顶向下深入分析Netty(七)--ChannelPipeline和ChannelHandler总述 自顶向下深入分析Netty(七)--ChannelPipeline源码实现 自顶向下深入分析Net ...

随机推荐

  1. H3C交换机堆叠

    (1)      配置Device A# 将用作IRF物理端口的Ten-GigabitEthernet1/0/1-Ten-GigabitEthernet1/0/4的手工关闭.使用端口批量配置功能可以更 ...

  2. 四十三:漏洞发现-WEB应用之漏洞探针类型利用修复

    已知CMS 如常见的dedecms,discuz,wordpress等源码结构,这种一般采用非框架开发,但是也有少部分采用框架类开发,针对此类源码程序的安全监测, 我们要利用公开的漏洞进行测试,如不存 ...

  3. hdu 6795 Little W and Contest 并查集+排列组合

    题意: t组输入,有n个人,刚开始谁也不认识谁.每一个人有一个权值w[i](1<=w[i]<=2),你要挑选3个互相不认识的人组成一个队,且要保证3个人权值之和大于等于5(也就意味着最少要 ...

  4. AcWing 247. 亚特兰蒂斯 (线段树,扫描线,离散化)

    题意:给你\(n\)个矩形,求矩形并的面积. 题解:我们建立坐标轴,然后可以对矩形的横坐标进行排序,之后可以遍历这些横坐标,这个过程可以想像成是一条线从左往右扫过x坐标轴,假如这条线是第一次扫过矩形的 ...

  5. VS Code 搭建合适的 markdown 文档编写环境

    写在开头,之前我是使用Gitee与Github作为图床和Picgo搭配Typora使用的 ,但因为最近觉得这样还是稍微比较繁琐,然后因为VS Code是我的主要文本编辑器.Cpp,Python等均是在 ...

  6. Python3.7.9+Locust1.4.3版本性能测试工具案例分享

    一.Locust工具介绍 1.概述 Locust是一款易于使用的分布式负载测试工具,完全基于事件,使用python开发,即一个locust节点也可以在一个进程中支持数千并发用户,不使用回调,通过gev ...

  7. spring再学习之AOP实操

    一.spring导包 2.目标对象 public class UserServiceImpl implements UserService { @Override public void save() ...

  8. C++ new delete malloc free

    title: C++ new delete malloc free date: 2020-03-10 categories: c++ tags: 语法 C++的new delete malloc fr ...

  9. 牛客网多校第7场 J Sudoku Subrectangles 【构造】

    题目:戳这里 题意:给一个n*m的矩阵,里面由a~z及A~Z构成,问有多少个子矩阵满足任意一行或一列中都没有相同的字母. 解题思路:左上角和右下角两点可以确定一个矩阵.可以先预处理出来每个点作为一个矩 ...

  10. JavaScript中的对象引用和复制

    在JavaScript分为两种原始值和引用值类型,原始值之间的复制是值对值得复制,而引用类型则是引用对引用的复制: // 原始值的复制: let num1 = 1; let num2 = num1; ...