音视频学习(三)——sip协议

1. 概念

SIP协议全称“会话发起协议”,属于应用层控制协议。它规定一个或多个参与方的终端进行交互通信的标准,能够建立、修改和中断连接实现视频、语音、即时通讯等,在OSI模型中位于会话层,如下图所示:

在这里插入图片描述

 是一种什么协议?

  • SIP是一个基于文本的应用层控制协议,严格来讲属于会话层,用于创建、修改和释放一个或多个参与者的会话。这些会话可以是Internet多媒体会议、IP电话或多媒体分发。会话的参与者可以通过组播(multicast)、网状单播(unicast)或两者的混合体进行通信;
  • SIP是一种信令协议,用于初始、管理、终止网络中的语音和视频会议,具体地说就是用来生成、修改和终结一个或多个参与者之间的会话;
  • SIP是点对点协议;
  • SIP协议的终端可以是PC机、对讲仪终端、安装特定软件的手机、平板、网页或者语音机器人等定制化设备。主要用于即时通信;
  • SIP是一种源于互联网的IP语音会话控制协议,具有灵活、易于实现、便于扩展等特点;
  • 它是一种应用层协议,与其他应用层协议协同工作,通过Internet控制多媒体通信会话;
  • SIP与负责语音质量的预留协议(RSVP)互操作。它还与若干个其他协议进行协作,包括负责定位的轻型目录访问协议(LDAP)、负责身份验证的远程身份验证拨入用户服务 (RADIUS) 以及负责实时传输的 RTP 等多个协议;

2. 功能

  • 用户定位:SIP协议中被叫方可在不同位置移动,呼叫方用户请求与被叫方建立会话时,向SIP服务器发送请求查找找用户位置;
  • 用户有效性:会话参与者可以有多名,在收到呼叫请求之后,可自愿选择是否参与会话;
  • 用户能力描述:请求方在SDP中描述自身支持哪些媒体数据或会话参数;
  • 建立会话:在用户发送会话请求时,必要的一些媒体参数已描述清楚后,被叫方用户接受请求,并根据请求信息中的SDP描述来配置后,需要发送“Ringing"振铃消息建立起会话;
  • 会话管理:添加、修改媒体流参数或其他参数;保持会话等待、激活会话和终止现有会话。

3. 消息类型

SIP协议的消息是基于文本的协议,标准的消息由开始行、消息头和消息体组成,分为请求消息和响应消息,区别在于消息的起始行是否包含状态信息。SIP请求消息定义了6种方法:

  • REGISTER注册:UAC启动时告诉注册服务器自身的位置
  • INVITE邀请:UA发起会话邀请
  • ACK: 被呼叫方在收到邀请后,回应200或180表示确认,ACK表示主叫方收到确认信息,会话建立成功
  • CANCEL:被呼叫方取消主叫方的会话邀请
  • BYE:会话参与者有一方想退出已建成功的会话,发起BYE消息
  • OPTIONS:查询代理服务器的能力和负载情况

响应消息有6种,包含临时应答、请求成功、位置异常通知、请求失败通知、服务器故障或全局错误。

SIP协议支持消息扩展,消息类型、消息头和消息体都可以扩充,如以下几种情况

  • 将电话信令集成到sip消息中,以解决公共交换电话网和sip网络和互联;
  • 解决跨网域的防火墙和NAT通信问题;
  • refer事件扩展,支持呼叫转移;

4. 主要组件

  • 终端用户设备UA:用于创建和管理 SIP协议会话的设备;
  • 位置服务器:记录并管理UA的位置信息;
  • 注册服务器 :为了判定用户的处于何地,UA终端注册到一个注册服务器,注册服务器会分配特定地址给到终端UA ,该地址是有生命周期的,UA需要定时刷新注册状态以保活;
  • 代理服务器:接受UA 的会话请求并查询注册服务器,获取收件方 UA 的地址信息。然后,它将会话邀请信息直接转发给收件方 UA(同一域中)或代理服务器(UA 位于另一域中)。根据对请求的处理方式分为有状态代理服务器和无状态代理服务器,无状态代理服务器仅对消息进行简单传递,有状态代理服务器会保留接收的请求和应答的相关信息,用于处理与该消息有关的后续消息。通过创建事务状态机对消息的全生命周期进行管理,每条都是会给事务状态机处理,直到事务完成;
  • 重定向服务器:接收请求后查询请求消息者的位置信息,然后在应答消息中创建位置列表请返回该信息,允许 SIP代理服务器将 SIP协议会话邀请信息定向到外部域;

5. 标准协议

SIP协议被设计为非常简单,具有有限的命令集。它也是基于文本的,因此任何人都可以读取在SIP会话中的端点之间传递的SIP消息。

SIP的标准协议都是IETF制定的,所以SIP的标准协议都是通过RFCXXXX的方式来公布的,每个协议均制定了一些SIP的特性:

  • RFC3261:SIP的基本协议,定义了SIP的基本功能,特性等。要搞SIP的话,这个协议是不能不看的。网上有人已经将它翻译成中文,再结合英文原版协议看,应该比较好理解。
  • RFC3262:SIP中,如何定位服务器。这个没过多研究,一般的SIP协议栈都可以很好的支持,让它们去做就可以了。
  • RFC3265:事件通知机制,可通过此协议进行一些事件监控。
  • RFC3515:呼叫的转接。
  • RFC3666:与PSTN连接时的一些特性的说明。
  • RFC3911:通过Join的方式进行会议。

6. 实现机制

SIP是一个分层结构的协议,它的行为根据一组平等独立的处理阶段来描述,每个阶段之间是松耦合的关系。

在这里插入图片描述

 

  • SIP的最低层是其语法和编码。其编码使用扩充的背景 - 诺尔表单语法(BNF)指定。
  • 第二层是传输层。它定义了客户端如何发送请求和接收响应,以及服务器如何通过网络接收请求和发送响应。所有SIP元素都包含传输层。
  • 接下来是交易层。事务是由客户机事务(使用传输层)发送到服务器事务的请求,以及从服务器事务发送回客户机的对该请求的所有响应。用户代理客户端(UAC)完成的任何任务都使用一系列事务进行。无状态代理不包含事务层。
  • 交易层上方的图层称为交易使用者。除了无状态代理,每个SIP实体都是事务用户。

7. 会话过程

SIP协议同HTTP协议相似并采用了一些相同的设计原则如客户端UAC/服务端UAS模型,主动发起请求端为UAC端,接受请求端为UAS端,一个请求的完整称为一个事务,以一个或者多个响应结束,中间可以支持多个临时响应,在这个过程中UAC和UAS的角色是可以互换的,如一次呼叫事务中A发起呼叫,A是UAC,另一端是UAS;呼叫结束时谁先挂机谁是UAC,另一端是UAS。

SIP协议以INVITE请求,以SIP URL的方法表示发起以BYE请求来结束。根据不同的网络结构分为三种方式:两个UA之间直接进行呼叫、通过代理服务器呼叫和通过重定向的方式呼叫。SIP一般需要使用以下协议完整一次完成的通信:

  • SDP:会话名称、会话时间、 哪个IP端口、会话参与者所支持的多媒体种类、传输协议类型、编解码算法等信息
  • RTP: 实时传输协议
  • RTCP: 实时传输控制协议, 和 RTP一起工作的控制协议
  • TLS:提供安全性和完整性保障

7.1 一对一呼叫

无代理服务器的会话创建过程,直接实现SIP的消息发起和响应过程。

7.2 通过代理服务器呼叫

7.3 通过重定向呼叫

UAC通过重定向服务器获得真是UAS地址后,之后的通信过程和一对一的呼叫过程一样。

在200 OK传输过程如果对端在超时后没有收到,则说明该丢失要重新发送,直到UAS收到ACK请求,确保可靠性传输的完全完成。

  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1 IMS培训教程——SIP协议 北京阿法迪信息技术研究中心 2 目 录 SIP协议概述 SIP协议报文分析 SIP协议在IMS网络中的应用 3 什么是 SIP? SIP: Session Initiation Protocol 用于建立,控制和释放会话 SIP是 IETF 为多媒体会话而开发制定的协议 这里的会话包括文本,视频,游戏和传统的语音 SIP 是为Internet 而制定设计的协议 象HTTP协议一样是基于文本的 询问/应答机制 广泛应用于internet 可以基于UDP、TCP和SCTP传输,目前最常用UDP 4 协议簇 信令协议 – 注册、定位用户、路由 – 建立,修改,释放会话 媒体传输协议 – 用于传输语音/视频包 SIP – 信令协议 会话的管理(SIP)和会话的描述(SDP)是分离的 5 SIP的基本功能 SIP的5个方面基本功能: 用户定位(User Location):决定哪个终端系统参加通信 用户能力(User Capabilities):决定通信所采用的媒体和媒体参数 用户可用性(User Availability):决定被叫方是否愿意加入通信过程 呼叫建立(Call setup):振铃、主叫方和被叫方的连接和参数的建立 呼叫处理(Call handling):前转或终结呼叫 6 会话相关协议 SDP (Session Description Protocol) – 总是作为SIP消息体出现 – 会话描述协议和会话管理(SIP协议是互相独立的 RTP (Real-time Transmission Protocol) – 用于在IP网上传输经过打包的实时媒体流,例如. 语音,视频 RTCP (Real-time Transmission Control Protocol) – 用于反馈媒体传输的质量报告信息 7 简单SIP网络架构 SIP Request SIP Request Media Stream (RTP) User Agent (Server) 接受SIP 请求 Request Proxy Server 决定把信令消息送到何 处 User Agent (Client) 发送SIP请求 SIP Response SIP Response 8 SIP逻辑实体 SIP 使用客户端/服务器架构 逻辑SIP实体包括 用户代理 (UA) User Agent Client (UAC): 发起SIP请求 User Agent Server (UAS): 返回SIP响应 一个实体可以既是客户 端,又是服务器 注册服务器: SIP客户端需要利用注册请求 来更新用户的位臵信息 代理服务器:为客户端转发请求或者响应。 可以同时做为服务器端和客户端,决定下 一跳转发请求消息 重定向服务器:将请求中的地址映射为零个 或多个新的地址,返回给客户端。 网络服务器 9 事务和对话 对话 – 是两个UE之间为建立、更改和释放媒体会 话所需要建立的信令关系,对话起始于 INVITE请求,并终止于BYE请求的200(OK )响应,INVITE 是唯一可以创建一个对 话的命令. – 一个对话由头域中的Call-ID, Local Tag and Remote Tag 等参数来标识 – 一个对话可以包括多个事务 事务 事务是指客户端发送到服务器的请 求以及服务器回送至客户端的所 有响应 包括一个请求和一个或多个响应 包含一个最终响应 (非1xx 响应) 使用 via域中的branch参数来定义 一个事务 10 事务和对话(2) 事务 – 一个请求和其所有的响应 Invite 180 Ringing 200 ok 183 对话 包含多个事务 Invite 180 Ringing ACK PRACK 183 200 200 200 Bye T1 T4 T3 T2 T1 11 目 录 SIP协议概述 SIP协议报文分析 SIP协议在IMS网络中的应用 12 目 录 SIP协议报文分析 –2.1 消息类型 –2.2 消息结构 –2.3 消息参数 13 消息类型 SIP 消息可以被分为两类: 请求 发起一个会话 响应 对请求的响应. 14 SIP请求消息 SIP 消息-请求消息 INVITE: 发起会话请求 ACK: 对 INVITE 请求的响应的确认 CANCEL: 取消尚未完成的请求 BYE: 结束会话 REGISTER: 注册,完成地址绑定 OPTIONS: 查询服务器能力 15 SIP相应消息 SIP 消息-响应消息 1xx: 临时响应 –表示已经接收到请求消息,正在对其进行处理 2xx: 成功 –表示请求已经被成功接受、处理 3xx: 重定向 --表示需要采取进一步动作,以完成该请求 4xx: 客户端错误 –表示请求消息中包

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值