0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SIP协议的定义及基本流程

jf_78858299 来源:CallMe阿堃 作者:CallMe阿堃 2023-05-19 10:26 次阅读

定义

SIP 协议,即会话发起协议(Session Initiation Protocol), 是一个应用层的 点对点协议 ,用于初始、管理和终止网络中的语音和视频会话, 属于 GB28181 的核心之一。

SIP 协议是由IETF组织提出的IP电话信令协议,IETFRFC2543中对它的定义是一个基于文本的应用层控制协议, 独立于底层传输协议:TCP/UDP/SCTP, 用于建立、修改和终止 IP 网上的双方或多方多媒体会话。借鉴了 HTTPSMTP 等协议,支持代理、重定向及登记定位用户等功能, 支持用户移动。

SIP协议通过与 RTP/RTCPSDPRTSP 等协议及 DNS 配合, 从而支持语音、视频、数据、E-mail、 状态、IM、聊天、游戏等应用场景。

它可在 TCPUDP 之上传送,由于 SIP 本身具有握手机制,一般情况下首选 UDP传输协议。

从打电话的角度去理解SIP协议,推荐阅读:深入浅出SIP协议

本篇文章针对sip协议的应用场景是建立在GB28181协议的基础上来进行理解和解读的,如果理解有误,还请各位网友不吝指教!在评论区留下您的宝贵建议,谢谢!

基本流程

sip协议的网络元素:

  • 用户代理
  • 代理服务器
  • 注册服务器
  • 重定向服务器
  • 位置服务器

图片

上图简单的勾勒出了sip协议网络元素之间的关系,同时通过上图也可以了解到sip会话的基本呼叫流程:

  • 用户代理B向注册服务器发送Register请求,携带contact地址;
  • 随后注册服务器将B的地址,记录到位置服务器;
  • 用户代理A向代理服务器发送invite请求启动与用户代理B的会话;
  • 代理服务器会先向A发送响应100 Trying信息以避免A重传invite消息;
  • 然后代理服务器向位置服务器搜索B的地址,获取到地址后会进一步转发Ainvite请求;
  • 通过上一步代理服务器将A的请求转发到BB向代理服务器响应180 Ringing信息;
  • 代理服务器将B的响应信息转发给A,B向代理服务器响应200 OK信息;
  • 紧接着AB发送ACK请求,一个会话至此建立完成。

关于GB28181的"客户端对实时音视频点播"的流程,本质除sip服务器以外的都是sip客户端, 也可以理解为客户端对媒体发送端的基本呼叫流程,如下图:

图片

GB28181标准中 中心信令服务器 (center control server)就是一个基于sip协议设计的负责核心sip信令应用处理的SIP服务器, 信令安全路由网关 (secure signal routing gateway)是一种具有安全功能的sip服务器。

"组成中心信令控制的逻辑实体包括代理服务器、注册服务器、重定向服务器、背靠背用户代理等的一种或者几种,是负责核心SIP信令应用处理的SIP服务器" --引自《GB/T 28181-2016 公共安全视频监控联网系统 信息传输、交换、控制技术要求》

协议结构


sip协议包括六个主要请求和六类响应消息:

请求:

  • INVITE
  • BYE
  • REGISTER
  • CANCEL
  • ACK
  • OPTIONS

响应:

  • 1xx: 临时/信息响应
  • 2xx: 成功响应
  • 3xx: 重定向响应
  • 4xx: 客户端故障响应
  • 5xx: 服务器故障响应
  • 6xx: 全局故障响应

下面是GB28181协议标准下较常用的的sip请求:

INVITE

INVITE请求在GB28181协议中是视频点播(包括实时预览和历史回放)流程中最重要的一个环节,在invite请求中会包含SDP协议的内容。SDP协议(Session Description Protocol)是用来描述媒体数据是如何使用的,它由3个部分组成,可分为:

  • 第1部分是Session description
    • v= (protocol version)
    • o= (owner/creator and session identification)
    • s= (session name)
    • i= (session information)
    • u= (URI of description)
    • e= (email address – contact detail)
    • p= (phone number – contact detail)
    • c= (connection information – not required if included in media description)
    • b= (session bandwidth information)
    • z= (time zone adjustments)
    • k= (encryption key)
    • a= (zero or more session attribute lines)
  • 第2部分是Time description
    • t= (time the session is active)
    • r= (repeat times)
  • 第3部分是Media description
    • m= (media name/ transport address)
    • i= (media title)
    • c= (connection information – not required if included in session description)
    • b= (bandwidth information)
    • k= (encryption key)
    • a= (zero or more media attribute lines)

sdp字段的具体细节可参考链接:

sdp会话描述协议

sdp协议参考文献:

《GB/T 28181-2016 公共安全视频监控联网系统 信息传输、交换、控制技术要求》附录FSDP定义

下面是在GB28181协议中视频点播流程中的invite数据包:

图片

BYE

BYE包是用来终止已经建立的会话,通常出现BYE包的场景是媒体接收端主动发起实时音视频点播流程时出现。它不能由代理服务器发送,也不能发送到挂起的INVITE或者未建立的会话。

具体的数据包流程分析如下图:

图片

REGISTER

通过抓包可以查看到GB28181一个完整的基本注册流程:

图片

GB28181中它是采用RFC 3261规范中基于数字摘要的CRAM机制来进行注册,基本注册流程如下图:

图片

具体的数据包分析如下图:

图片

CANCEL

主要是用来终止未建立的会话。用户代理使用此请求取消之前发起的待处理的invite。它可以由用户代理或代理服务器发送。

ACK

ACKRFC-3262规范中是一个请求,它只有在INVITE请求中出现,当INVITE请求响应是200 OK时, 后续的ACK则是一个独立事务。

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1353

    浏览量

    79055
  • UDP
    UDP
    +关注

    关注

    0

    文章

    325

    浏览量

    33931
  • 传输协议
    +关注

    关注

    0

    文章

    78

    浏览量

    11447
  • SCTP
    +关注

    关注

    0

    文章

    7

    浏览量

    8138
收藏 人收藏

    评论

    相关推荐

    SIP协议在嵌入式Linux中的实现

    嵌入式系统由于本身资源的限制,现有的SIP协议直接应用于嵌入式便携设备还有困难。为满足SIP协议在嵌入式系统中的商用要求,设计出一个简化的SIP
    发表于 10-12 12:22 2220次阅读
    <b class='flag-5'>SIP</b><b class='flag-5'>协议</b>在嵌入式Linux中的实现

    信令控制协议sip

      SIP(Session Initiation Protocol)是一个应用层的信令控制协议。用于创建、修改和释放一个或多个参与者的会话。这些会话可以好似Internet多媒体会议、IP电话或
    发表于 08-06 06:29

    嵌入式SIP协议栈怎么设计?

    ,凭借SIP自身的特性可有效提高嵌入式网络设备的互操作性和接入网络的便利性。但SIP协议本身只给出SIP消息的文法定义以及自然语言描述的消息
    发表于 10-29 08:14

    SIP协议在嵌入式环境下有什么应用?

    ,凭借SIP自身的特性可有效提高嵌入式网络设备的互操作性和接入网络的便利性。但SIP协议本身只给出SIP消息的文法定义以及自然语言描述的消息
    发表于 03-27 07:26

    如何实现WebRTC协议SIP协议互通

    一、WebRTC协议SIP协议互通的需求来源目前在国内需要WebRTC协议SIP协议互通的场
    发表于 09-04 16:04

    支持SIP协议的软交换控制设计,

    软交换技术是下一代网络的核心技术。而SIP 协议由于其简单、易于扩展、便于实现,逐渐成为NGN 和3G 领域的重要协议。根据SIP 的基本功能,按照模块化设计思想,提出支持
    发表于 09-12 16:12 17次下载

    SIP协议性能测试的方法

    介绍了SIP协议(Session Initiation Protocol)的相关知识,在其基础上探讨了SIP协议性能测试的方法。该方法中提出了基于基本呼叫
    发表于 01-05 11:18 32次下载

    SIP协议,什么是SIP协议

    SIP协议,什么是SIP协议 SIP协议是NGN中的重要
    发表于 04-07 16:12 2305次阅读

    SIP协议的应用及技术支持

     在统一通信中,我们通常会是用SIP协议。那么不禁会这样问,我们为什么要使用SIP协议SIP协议
    发表于 07-23 11:30 1334次阅读

    SIP协议在3G网络中的应用

      会话起始协议SIP是3G的IP多媒体子系统中提供多媒体业务的核心技术。文章首先介绍了SIP的基本工作原理,然后对3GPPUMTSR5定义的IMS进行了简要描述,最后详细阐述了
    发表于 09-12 09:39 1616次阅读
    <b class='flag-5'>SIP</b><b class='flag-5'>协议</b>在3G网络中的应用

    自己动手写SIP协议

    本文由作者的本科毕设论文改写而成。由于时间仓促及作者水平所限,本文中的SIP协议栈尚不能实用,仅供初学SIP协议的朋友们入个门而已。不足之处还请多多包涵。
    发表于 05-31 16:18 64次下载
    自己动手写<b class='flag-5'>SIP</b><b class='flag-5'>协议</b>栈

    基于改进SIP密钥协议SIP安全认证模型

    针对现有SIP(会话初始协议)认证机制不能抵抗临时秘密泄露攻击和系统开销大的问题,提出了一种基于改进SIP协议SIP安全认证模型。借鉴原有
    发表于 06-17 11:54 8次下载

    FreeSwitch的sip协议协议详解.pdf

    FreeSwitch的sip协议协议详解.pdf
    发表于 12-30 11:28 3次下载

    SIP协议的基本信息及优势

    因为SIP协议是参考了HTTP协议发展而来,因此会话的基本特性也可以通过HTTP协议的会话来理解。会话实现的就是一个数据交互,双方的数据交换至少包括会话的ID、生命周期、定时器、结束的
    的头像 发表于 05-19 10:46 1538次阅读
    <b class='flag-5'>SIP</b><b class='flag-5'>协议</b>的基本信息及优势

    SiP系统级封装设计仿真技术流程

    SiP仿真设计流程介绍
    发表于 04-26 17:34 2次下载