SIP会话发起协议 - 先知道是什么(一)
少年,思无邪,最最动人。
协议概述
SIP会话发起协议是VoIP技术中最常用的协议之一。它是一种应用层协议,与其它应用层协议协同工作,通过Internet控制多媒体通信会话。SIP采用SDP(会话描述协议)的帮助,它描述了用于通过IP网络传送语音和视频的会话和RTP(实时传输协议)。SIP可用于双方(单播)或多方(多播)会话。其它SIP应用包括文件传输,即时通讯、视频会议、网络游戏、以及
流媒体分发。
网络元素
用户代理
代理服务器
注册服务器
重定向服务器
位置服务器
用户代理
用户代理是SIP网络中最智能的设备或网络原件。它可以是软电话、手机或笔记本电脑。
用户代理在逻辑上分为两部分:
用户代理客户端(UAC):发送请求并接收响应的实体。用户代理服务器(UAS):接收请求并发送响应的实体。
SIP基于客户机 - 服务器架构,其中呼叫者的电话充当发起呼叫的客户端,被叫方的电话充当响应呼叫的服务器。即:一部电话既可以做客户端,也可以做服务器端。
代理服务器
网络元素接收来自用户代理的请求并将其转发给另外一个用户。
作用类似路由
在
URI的帮助下进行转发位于两个用户代理之间
代理服务器的两种类型
无状态代理:只是转发收到的消息,不存储任何呼叫或交易的信息。
有状态代理:可以跟踪收到每个请求与响应,在有需要的时候,将来可以使用,对方没有响应,可以重新发送请求。
注册服务器
注册服务器接受用户代理的注册请求。帮助用户在网络中进行身份认证。将URI和用户的位置存储在数据库中,以帮助同一域内的其它SIP服务器。
设备注册流程图:

注册流程描述:
设备向服务器发送 Register请求;
服务器向设备发送响应401,并在响应的消息头 WWW_Authenticate字段中给出适合设备的认证体制和参数;
设备重新向服务器发送 Register请求,在请求的 Authorization字段给出信任书, 包含认证信息;
服务器对请求进行验证,如果检查出 设备身份合法,向设备发送成功响应 200 OK,如果身份不合法则发送拒绝服务应答。
重定向服务器
重定向服务器接收请求,并在注册器创建的位置数据库中查找请求的预期收件人。使用数据库获取位置信息,并以3xx(重定向响应)响应给用户。
位置服务器
位置服务器提供有关呼叫者可能的位置到重定向服务器或代理服务器的信息。
SIP系统架构图

呼叫流程图

会话基本呼叫流程图

说明:
发送到代理服务器的INVITE请求负责启动会话。
代理服务器发送100 尝试立即响应呼叫者(
lijiatu)以停止INVITE请求的重新发送。代理服务器在位置服务器中搜索
nuonuo的地址。获取地址后,进一步转发INVITE请求。此后,
nuonuo手机生成的180 振铃(临时响应)返回给lijiatu。nuonuo拿起手机后一个200 OK响应很快产生。一旦200 OK到达
lijiatu,nuonuo从lijiatu收到一个ACK。同时,会话建立,RTP数据包(会话)从两端开始流动。
会话结束后,任何参与者(
lijiatu,nuonuo)都可以发送一个BYE请求来终止会话。BYE直接从
lijiatu到nuonuo绕过代理服务器。最后,
nuonuo发送200 OK响应来确认BYE,会话终止。在上述基本呼叫流程中,可以使用三个事务(标记为1,2,3)。
完整的呼叫(从INVITE到200 OK)称为对话Dialog。
SIP请求与响应
SIP消息有两种类型 - 请求与响应
请求的开始行包含定义请求的方法及定义要发送请求的URI
同样,响应的开始行包含响应代码
方法可以被认为是SIP请求,它们请求由另一用户代理或服务器采取的特定动作。
方法分为两种类型 : 核心方法 与 扩展方法
六种核心方法
Invite 邀请
用于启动与用户代理的会话。
成功的Invite 请求在两个用户代理之间建立对话。
在已经建立的对话框中发送Invite 被称为 re-invite,re-invite用于更改会话特性或刷新对话框的状态。
可以在邮件正文中包含主叫方的媒体信息。

示例:
INVITE sips:Bob@TMC.com SIP/2.0
Via: SIP/2.0/TLS client.ANC.com:5061;branch = z9hG4bK74bf9
Max-Forwards: 70
From: Alice<sips:Alice@TTP.com>;tag = 1234567
To: Bob<sips:Bob@TMC.com>
Call-ID: 12345601@192.168.2.1
CSeq: 1 INVITE
Contact: <sips:Alice@client.ANC.com>
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
Supported: replaces
Content-Type: application/sdp
Content-Length: ...
v = 0
o = Alice 2890844526 2890844526 IN IP4 client.ANC.com
s = Session SDP
c = IN IP4 client.ANC.com
t = 3034423619 0
m = audio 49170 RTP/AVP 0
a = rtpmap:0 PCMU/8000
Bye 挂断
Bye是用于终止既定会话的方法。
BYE请求通常路由端到端,绕过代理服务器。
Register 注册
REGISTER请求执行用户代理的注册。
它在正在注册的用户的To头中携带
AOR(记录地址)。
Cancel 取消
CANCEL用于终止未建立的会话。
CANCEL是逐跳请求,即它通过用户代理之间的元素,并接收下一个有状态元素生成的响应。

ACK 确认
ACK用于确认对INVITE方法的最终响应。
options
OPTIONS方法用于向用户代理或代理服务器询问其功能并发现其当前的可用性。
八种扩展方法
订阅
用户代理使用Subscribe建立订阅,以获取有关特定事件的通知。
它包含一个Expires头字段,指示订阅的持续时间。期限过后,订阅将自动终止。
订阅在用户代理之间建立一个对话。
用户可以使用Expires值0(零)发送另一个SUBSCRIBE方法来取消订阅。

通知
用户代理使用NOTIFY来获取特定事件的发生。通常,当订户和通知程序之间存在订阅时,NOTIFY将在对话框内触发。
NOTIFY包含指示事件的事件头字段和指示订阅的当前状态的
subscriptionstate头字段。始终在订阅的开始和结束时发送NOTIFY。
发布
PUBLISH被用户代理用于向服务器发送事件状态信息。
当有多个来源的事件信息时,PUBLISH是非常有用的。
PUBLISH请求类似于NOTIFY,除了它不在对话框中发送。
PUBLISH请求必须包含Expires头字段和Min-Expires头字段。

参考
REFER由用户代理用于引用另一个用户代理来访问对话框的URI。
REFER必须包含Refer-To标题。这是REFER的强制标题。
REFER可以在对话框内部或外部发送。
A 202 Accepted将触发REFER请求,指示其他用户代理已经接受引用。
信息
INFO由用户代理使用,以向其已经建立媒体会话的另一用户代理发送呼叫信令信息。
这是一个端到端的请求。
代理将始终转发INFO请求。
UPDATE
如果会话未建立,则UPDATE用于修改会话的状态。用户可以使用UPDATE更改编解码器。
如果会话建立,则使用重新邀请来更改/更新会话。
PRACK
PRACK用于确认接收到可靠的临时响应转移(1XX)。
一般来说,PRACK在接收到包含
RSeq可靠序列号和supported:100rel头的临时响应时由客户端生成。PRACK在race头部中包含
(RSeq + CSeq)值。PRACK方法适用于所有临时响应,除了100尝试响应,这是永远不可靠的运输。
PRACK可能包含消息体; 它可以用于提供/答复交换。
信息
它用于使用SIP发送即时消息。
IM通常由参与文字会话的参与者实时交换的短消息。MESSAGE可以在对话框内或对话框外发送。
MESSAGE的内容作为MIME附件在邮件正文中载入。
一个200 OK被正常接收响应,以指示该消息已在其目的地被递送。

SIP响应码
SIP响应是由用户代理服务器(UAS)或SIP服务器生成的用于回复客户端生成的请求的消息。这可能是一个正式的确认,以防止UAC转发请求。
响应可能包含
UAC所需的一些额外的信息头字段。SIP有六个响应。
从HTTP中借用
1xx到5xx,在SIP中引入了6xx。1xx被视为临时响应,其余的是最终响应。
| S.No. | 功能和说明 |
|---|---|
| 1 | 1xx:临时/信息响应信息响应用于指示呼叫进程。通常回应是端到端(100尝试除外)。 |
| 2 | 2xx:成功回应这类回应旨在表明请求已被接受。 |
| 3 | 3xx:重定向响应一般来说,这些类响应是由重定向服务器响应INVITE发送的。他们也被称为重定向类响应。 |
| 4 | 4xx:客户端失败响应客户端错误响应表明,从UAC方面识别出一些错误,无法满足请求。 |
| 五 | 5xx:服务器故障响应此类响应用于指示由于服务器错误而无法处理该请求。 |
| 6 | 6xx:全局失效响应此响应类指示服务器知道请求将在尝试的任何地方失败。因此,请求不应发送到其他位置。 |
SIP - header
报头是SIP消息的组成部分,其传达有关消息的信息。它被构造为头序列字段序列。
SIP头字段在大多数情况下遵循与HTTP头字段相同的规则。标头字段定义为标题:字段,其中标题用于表示标题字段名称,字段是包含信息的标记集。每个字段由一个字段名,后跟冒号(“:”)和字段值(即字段名称:字段值)组成。
SIP标题格式

SIP会话发起协议 - 先知道是什么(一)的更多相关文章
- [百科] - SIP(会话发起协议)
SIP(会话发起协议)SIP是类似于HTTP的基于文本的协议.SIP可以减少应用特别是高级应用的开发时间.由于基于IP协议的SIP利用了IP网络,固定网运营商也会逐渐认识到SIP技术对于他们的深远意义 ...
- Android呼叫管理服务之会话发起协议(SIP)API
原文:http://android.eoe.cn/topic/android_sdk Android提供了一个支持会话发起协议(SIP)的API,这可以让你添加基于SIP的网络电话功能到你的应用程序. ...
- Android网络功能之会话发起协议SIP
原文:http://android.eoe.cn/topic/android_sdk * 会话发起协议* Android提供了一个支持会话发起协议(SIP)的API,这可以让你添加基于SIP的网络电话 ...
- SIP协议 会话发起协议(一)
会话发起协议(SIP)是VoIP技术中最常用的协议之一.它是一种应用层协议,与其他应用层协议协同工作,通过Internet控制多媒体通信会话. SIP - 概述 以下是有关SIP的几点注意事项 - S ...
- 【转】SIP协议 会话发起协议
转自:https://www.cnblogs.com/gardenofhu/p/7299963.html 会话发起协议(SIP)是VoIP技术中最常用的协议之一.它是一种应用层协议,与其他应用层协议协 ...
- SIP协议 会话发起协议(二)
SIP - 响应码 SIP响应是由用户代理服务器(UAS)或SIP服务器生成的用于回复客户端生成的请求的消息.这可能是一个正式的确认,以防止UAC转发请求. 响应可能包含UAC所需的一些额外的信息头字 ...
- sip会话流程以及sip介绍(1)
参考连接 :https://www.2cto.com/kf/201609/546336.html https://www.w3cschool.cn/session_initiation_protoco ...
- SIP(Session Initiation Protocol,会话初始协议)
SIP(Session Initiation Protocol,会话初始协议)的开发目的是用来帮助提供跨越因特网的高级电话业务.因特网电话(IP电话)正在向一种正式的商业电话模式演进,SIP就是用来确 ...
- 会话描述协议(SDP)介绍
1.SDP的引入 SDP最初用于Mbone(组播骨干网)上的多媒体会议.Mbone 是Internet 的一部分,它的主要特征是对IP组播技术的使用.IP组播技术比较适合实现多方会话. 基于组播的会议 ...
随机推荐
- java学习第一天.day04
顺序结构 代码里没有流程控制,程序是按照书写的格式从上而下一行一行执行的, 一条语句执行完之后继续执行下一条语句,中间没有判断和跳转,直到程序的结束. 选择结构 选择结构也被称为分支结构.代码根据逻辑 ...
- Vue3 Transition 过渡效果之基于 CSS 过渡
介绍 Transistion 路由组件的切换.动态组件的切换.v-if 条件渲染组件以及 v-show 显示组件原本是没有任何过渡(CSS 动画)效果的.然而,Vue 的内置组件<Transit ...
- Android Studio 模拟器(AVD)访问互联网
模拟器默认是不可以直接访问互联网的,需要为模拟器配置 DNS 服务器. (一)找到模拟器安装的位置 模拟器安装位置在安卓 SDK 下面,进入[SDK Path]/emulator. (二)打开终端输入 ...
- Tomcat 10无法使用javax包
可以导入新的 jakarta包 <dependencies><!--servlet依赖--> <dependency> <groupId>jakarta ...
- 【c语言学习】1 基础环境安装调试
1-1下载 vs2019 vs2019下载链接https://visualstudio.microsoft.com/zh-hans/vs/community/ 1-2安装配置环境 记得勾选上c++开发 ...
- 简单创建一个SpringCloud2021.0.3项目(二)
目录 1. 项目说明 1. 版本 2. 用到组件 3. 功能 2. 上一篇教程 3. 创建公共模块Common 4. 网关Gateway 1. 创建Security 2. Security登陆配置 3 ...
- Tomcat入门学习笔记
Tomcat服务器 Tomcat使用 Tomcat下载 官网地址:Apache Tomcat - Apache Tomcat 8 Software Downloads 下载Windows 64位版To ...
- 自定义View4-塔防小游戏第一篇:一个防御塔+多个野怪(简易版)*
塔防小游戏 第一篇:一个防御塔+多个野怪(简易版) 1.canvas画防御塔,妖怪大道,妖怪行走路线 2.防御塔攻击范围是按照妖怪与防御塔中心距离计算的,大于防御塔半径则不攻击,小于则攻击 ...
- ABC266.
D 设 \(f_{t,p}\) 代表在 \(t\) 时间点时人在 \(p\) 点的最大收益,在这一步他可以 \(p\) 增加,不动,\(p\) 减少.于是得出状态转移方程:\(f_{t,p} = \m ...
- Q准则涡识别方法
Q准则(Q Criterion)在涡识别中计算效率高,效果也不错,是一种常用的涡提取/识别方法. 了解Q准则需要从速度梯度张量入手,而速度梯度张量可以分解成两部分 \[\frac{\partial u ...