SIP协议学习1

SIP协议是由IETF提出的在IP网络上进行多媒体通信的应用层控制协议。采用分层的方法来创建服务,是应用层上的一个控制协议,用来创建,修改和终止有多个参与者的多媒体会话进程。参与会话的成员可以通过组播,单播或者两者结合的方式进行通信。可以用来邀请一个新的成员加入其中,也可以创建全新的会话。一般情况下,sip协议使用RTP协议传送音频和视频流,使用SDP协议进行媒体描述。

      SIP协议首先要建立呼叫信道,由服务器的IP地址和端口号建立客户和服务器端的呼叫信道,客户端在发出自己的请求消息中的参数告诉服务器端它自己的媒体通道的IP地址和端口号,然后服务器端在发出最终响应的时候,客户端和服务器端的媒体信道建立起来了。当服务器端接收到客户端发来的确认消息后,他们才开始通信。

      SIP协议采用文本格式的client/server工作方式,是一个请求应答的协议,该协议定义了多个执行相应功能的网络实体。这些网络实体通常包含:用户代理UA和网络服务器NS,UA又分为用户代理客户端UAC和用户代理服务器UAS,UAC负责发起SIP呼叫请求,UAS负责对呼叫请求作出响应。网络服务器主要为客户代理提供注册,认证,鉴权和路由等服务。根据其功能不同,网络服务器可分为代理服务器,重定向服务器和注册服务器三种。

           代理服务器主要完成消息的转发

           重定向服务器接收SIP请求,把请求中的源地址映射成多个或零个新地址,返回给客户端UAC.

           注册服务器接收客户端的注册请求,完成用户地址的注册。

 

 

 

 


SIP支持三种呼叫方式:(1)由客户端像服务器端直接呼叫

(2)由UAC在重定向服务器的辅助下进行重定向呼叫

(3)由代理服务器代表UAC向被叫发起呼叫

Sip把一个呼叫分为三个阶段:呼叫建立,呼叫保护,呼叫释放。

 

 

 


      首先要建立呼叫信道,即一个TCP/UDP连接。因此,由服务器的IP地址和端口号建立客户端与服务器端之间的呼叫信令道。然后,客户端向服务器端发送消息INVITE消息,如果服务器段同意呼叫,发送(2),(3)消息。其中,1xx状态码表示请求已收到,正在处理中,200表示请求已经完成。这时,如果客户端突然不想参加此次会话,可以向服务器发送BYE。

      图中3xx相应只会在用重定向服务器出现的时候,表示对请求的重定向处理,4xx响应表示客户端的请求有语法错误不能被服务器执行。5xx响应表示服务器出错,不能执行合法请求。6xx响应表示所有服务器出错,不能执行合法请求。当客户接受3xx,4xx,5xx响应后,可根据响应中的消息修改消息,并重发请求。当客户端接受6xx响应后,结束此次呼叫。

消息

用法

INVITE

呼叫一个用户代理,传送一次呼叫。

ACK

确认呼叫。

BYE

终止呼叫。

CANCEL

终止还未OK的呼叫。

REGISTER

提供一项注册服务,带有一个联系地址和可以用来代替的别名。

OPTIONS

询问一个用户代理的“能力”(例如,该用户代理能够识别的消息和编码)。

响应消息:

消息

用法

100 Trying

消息已收到,但是最终用户代理尚未进行处理。请等待。

180 Ringing

最终用户代理已经收到消息,正在提示用户。请等待。

200 OK

最终用户已经接受消息。

301 Moved Permanently & 302 Moved Temporarily

用户代理的地址已经改变,新的永久或临时地址位于Contact字段中。

400 Bad Request

普通错误消息。客户端不能识别消息。

401 Unauthorized & 407

请使用证书重试。

404 Not Found

要联系的用户不存在或尚未注册。

408 Request Timeout

另一方没有响应。这意味着SIP消息永远不会OK。所有重试都将被丢弃。这并不意味着电话响太长时间(电话可以永远响铃)。

消息使用类似的头字段类型

头字段

用法

From

SIP请求的发送者。

To

SIP请求的接受者。这通常与SIP URI相同(可以是一个“别名”或一个实际地址)。

Contact

用户代理的实际地址。

Call-ID

代表两个用户代理之间的完整呼叫或对话。所有相关的SIP消息都使用同一个Call-ID。例如,当一个用户代理收到一条BYE消息,根据Call-ID,它就知道要挂断哪次呼叫。

CSeq

消息的顺序编号。这在一次对话或一个Call-ID中是惟一的。这用于区别新的消息和“重试消息”。当一条初始消息没有及时OK时,重试就会进行,并会定时发送。

Content-Type

消息内payload的MIME类型。

Content-Length

payload的大小,以字节为单位。信封和payload之间由一空行隔开。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/434999.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SIP协议学习2-pjsip

一、 在windows下利用vc6.0编译pjsip源码 首先阅读文档readme.txt,查找在win32平台源码的编译方法。自己总结方法如下: a.设置pjsua为当前活动工程 b.因为编译的时候提醒缺少config_site.h文件,所以在pjlib/include/pj/下新建一个空的c…

基于C#的AE+IDL二次桌面端程序开发

目录 一、内容 1.2 实训内容 1.2.1 IDL综合开发 1.2.2 基于AO/AE的GIS二次开发 1.2.3 COM_IDL_connect组件开发 三、 实训软硬件环境 四、实训内容及成果 4.1 平台总体描述 4.1.1 系统简介 4.1.2 系统功能 4.2 基础模块 4.2.1…

PJSIP学习笔记——从simple_pjsua.c示例程序了解PJSUA-LIB的基本使用流程

要了解pjsip的使用,simple_pjsua.c是一个很好的例子,虽然代码只有短短的172行,却展示了pjsua-lib层的完整使用流程、注册流程和基本呼叫流程。 下面是学习过程中整理的simple_pjsua.c中的main函数主要流程: 先来看看pjsip-apps/s…

arcgis字段计算器--随机数

代码 def a():number arcgis.rand(Integer 0 25)return number 结果

tomcat webapps目录文件都能删吗_详细测试实现Tomcat根域名访问的场景,看这篇文章就够了...

写在前面的话首先吐槽一下,我发现国内的博客大多是垃圾,完全没有人测试代码,就在那瞎扯淡,如果你看到别的地方说的跟我的文章说的不一样,请以我这篇为准,因为我每个场景都经过N次测试,确保没有问…

SIP初步

1、什么是SIP SIP(会话发起协议)属于IP应用层协议,用于在IP网上为用户提供会话应用。会话(Session)指两方或多方用户之间的语音、视频、及其他媒体形式的通信,具体可能是IP电话、会议、即时消息等等。 SIP…

execl按数值分类

LOOKUP(A1,{0,60,75,85},{"不合格","合格","良好","优秀"}) 参考文献 如何把excel中的数字转成优良中差等级_百度知道

synchronized原理_synchronized 底层原理与内存屏障

点击?蓝色“ 深入原理”,关注并“设为星标”技术干货,第一时间推送锁概述我们知道线程安全问题的产生前提是多个线程并发访问共享变量、共享资源(以下统称为共享数据)。于是,我们很容易想到保障线程安全的方法将多个线程对共享数据的并发访问…

python处理ncdc气象数据并利用arcgis可视化

作者已经处理好的数据如下 中国2020年均气温数据点加栅格.zip-讲义文档类资源-CSDN下载 数据格式如下 所有文件 对2020年文件进行查看(共有412个站点数据) 打开其中一个进行查看共有12列数据

动态分区分配的“首次适应算法_动态图划分复制算法:Leopard

数据管理和系统实现课程上要分享的论文:《LEOPARD: Lightweight Edge-Oriented Partitioning and Replication for Dynamic Graphs》背景目前分析处理图数据已经成为一项重要的任务,例如,研究互联网结构,分析社会关系,…

微软工程院院长:1万多应聘者挑不出100人

微软工程院院长:1万多应聘者挑不出100人“过去两三个月,我最主要的精力都花在了雇人上。遗憾的是,1万多名应聘者中,居然招不到足够合适的人。”今天,在北京中关村希格玛大厦微软亚洲工程院总部,新任院长张宏…

广义典型相关分析_重复测量数据分析及结果详解(之二)——广义估计方程

上一篇文章主要介绍了重复测量方差分析的基本思想是什么、它能做什么、怎么做、结果怎么解释,这几个问题。最后同时指出重复测量方差分析还是有一定局限,起码不够灵活。所以本文在上一篇文章基础上继续介绍医学重复测量数据中第二种常用方法:…

机器学习复制粘贴笔记要点

逻辑回归对特征的规模很敏感。重新调整数据使每个特征的均值为 0 和方差为 1 通常被认为是好的做法 zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。 如果各个迭代器的元素个数不一致&#x…

YUV422格式信号格式(以备学习之用)

YUV信号有很多种,一般YUV420和YUV422用的比较多, YUV422格式,又分为很多小类,按照U、V的排列可以有YUYV,YVYU,UYVY,VYUY四种,其中,YUYVY一般又称作yuv2格式。 而这四种YUV422格式,每种又可以分为…

excel怎么添加diy工具箱_这些Excel插件让你的Excel更好用!

Excel基本功不扎实临时学习也没时间这时候比起各种操作技巧Excel插件更实际更能切实提高你的效率今天就给大家推荐几款插件!方方格子说起Excel插件,就不能不提到它。方方格子支持Excel2007到2016各版本,而且对于WPS版本,也有专门的…

Arcgis自下而上从左到右进行编号

添加字段xmin和ymax !shape.extent.Xmin! !shape.extent.Ymax! 计算结果 对处理好的矢量按这个两个字段进行排序 排序结果后的objectid即可做为斜坡单元编号(如果项目中对编号有其他要求,请继续往下查看,如果没有的话,就不用往下…

Linux之V4L2基础编程

1. 定义 V4L2(Video For Linux Two) 是内核提供给应用程序访问音、视频驱动的统一接口。 2. 工作流程: 打开设备-> 检查和设置设备属性-> 设置帧格式-> 设置一种输入输出方法(缓冲 区管理)&…