SIP (会话初始协议)初了解

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_43608153/article/details/90677006

在工作中,常常接触音视频流的传输,所以,整理一下关于音视频传输的一些常用协议。首先最简单的要数应用层的sip协议了。

SIP(Session Initiation Protocol)
会话初始协议,它是一个基于文本的应用层控制协议,用于创建、修改和释放一个或多个参与者的会话。其应用特别广泛,可以说有有IP网络的地方就有SIP协议的存在。我们公司主要是应用在音视频数据传输方面。

sip主要由四部分组成:

  1. SIP 用户代理
    user agent, 终端用户设备,简单说就是用户使用的设备,该设备与用户代理服务器交互。
  2. SIP 注册服务器
    SIP 注册服务器是包含域中所有用户代理的位置的数据库。在 SIP 通信中,这些服务器会检索出对方的 IP 地址和其他相关信息,并将其发送到 SIP 代理服务器。
  3. SIP 代理服务器
    SIP 代理服务器接受 SIP UA 的会话请求并查询 SIP 注册服务器,获取收件方 UA 的地址信息。然后,它将会话邀请信息直接转发给收件方 UA(如果它位于同一域中)或代理服务器(如果 UA 位于另一域中)。
  4. SIP 重定向服务器
    SIP 重定向服务器允许 SIP 代理服务器将 SIP 会话邀请信息定向到外部域。SIP 重定向服务器可以与 SIP 注册服务器和 SIP 代理服务器同在一个硬件上。

下图中是两个用户通过sip服务进行呼叫对话的过程。
在这里插入图片描述

  1. 用户1向代理服务器发送会话消息,说明想要寻找用户2
  2. 代理服务器没有用户2的信息,即找不到用户2,向注册服务器请求帮助,寻找用户2
  3. 注册服务器中由所用的用户的注册消息,找到2的信息后,返回给代理服务器,此时代理服务器有了用户1 和用户2的信息
  4. 代理服务器向用户2发送消息,
  5. 用户2响应代理服务器请求
  6. 代理服务器响应用户1的呼叫请求,
  7. 因为用户1和用户2不能够直接对话,只能通过代理服务器对话,所以步骤1到步骤6即是二者在交互的过程。当步骤1-6走完之后,用户1和用户2就可以知道对方的所在,就能够单独对话,而不再靠代理服务器传话了。

SIP协议是一个Client/Sever协议,因此SIP消息分两种:请求消息和响应消息。请求消息是SIP客户端为了激活特定操作而发给服务器端的消息。

常用的SIP请求消息如下:

  1. INVITE:表示主叫用户发起会话请求,邀请其他用户加入一个会话。也可以用在呼叫建立后用于更新会话(此时该INVITE又称为Re-invite)。
  2. ACK:客户端向服务器端证实它已经收到了对INVITE请求的最终响应。
  3. PRACK:表示对1xx响应消息的确认请求消息。
  4. BYE:表示终止一个已经建立的呼叫。
  5. CANCEL:表示在收到对请求的最终响应之前取消该请求,对于已完成的请求则无影响。
  6. REGISTER:表示客户端向SIP服务器端注册列在To字段中的地址信息。
  7. OPTIONS:表示查询被叫的相关信息和功能。

在使用sip服务器的过程中,互相发消息的过程中经常会碰见一些代码,下面是一些常用的交互结果码,我们可以熟悉一下:

100试呼叫(Trying)
180振铃(Ringing)
181呼叫正在前转(Call is Being Forwarded)
200成功响应(OK)
302临时迁移(Moved Temporarily)
400错误请求(Bad Request)
401未授权(Unauthorized)
403禁止(Forbidden)
404用户不存在(Not Found)
408请求超时(Request Timeout)
480暂时无人接听(Temporarily Unavailable)
486线路忙(Busy Here)
504服务器超时(Server Time-out)
600全忙(Busy Everywhere)

对于sip服务,我公司只是应用于音视频的数据交互传输过程,实际应用为,nvr向服务器发送视频流,视频流的建立过程就首先使用到了sip服务。而后进行adp协议交互,最终发送视频流。达到视频流传输到指定地址的目的。

猜你喜欢

转载自blog.csdn.net/weixin_43608153/article/details/90677006