美畅物联丨GB/T 28181系列之TCP/UDP被动模式和TCP主动模式
GB/T 28181《安全防范视频监控联网系统信息传输、交换、控制技术要求》作为我国安防领域的重要标准,为视频监控系统的建设提供了全面的技术指导和规范。该标准详细规定了视频监控系统的信息传输、交换和控制技术要求,在视频流传输方面,GB/T 28181支持多种传输模式,其中包括TCP/UDP被动模式和TCP主动模式。今天我们就讨论下这几种传输模式的工作原理(通过SDP数据包来帮助理解)、应用场景及各自的优势。
一、TCP/UDP被动模式(Passive Mode)
TCP(Transmission Control Protocol)即传输控制协议,是一种复杂、缓慢但可靠的传输协议。
UDP(User Datagram Protocol)即用户数据包协议,是一种简单、快速但可靠度较低的传输协议。在GB/T 28181中,UDP模式主要用于流媒体传输。
在TCP/UDP被动模式下,前端设备,诸如高清摄像头,主动跨越网络界限,向位于外网的监控中心服务器发起连接请求。这一模式尤其适用于前端设备部署于安全内网,而监控中心位于开放外网的场景,有效解决了跨网数据传输的难题。
1、工作原理:
(1)平台端作为服务器监听TCP端口,等待设备端的连接请求。
(2)设备端通过SIP信令向平台端发送INVITE请求,并在SDP中指定TCP传输方式和端口号,同时携带a=setup:passive参数表示采用被动模式。
(3)平台接收到INVITE请求后,解析SDP信息,确认采用TCP被动模式,并继续监听TCP端口。
(4)设备端主动向平台发起TCP连接请求,平台被动接收请求并建立连接。前端设备向平台发送高清视频流,确保视频画面的实时性与清晰度。
(5)平台端不仅作为数据的接收者,更通过这一连接向前端设备发送控制指令,实现了监控系统的远程操控与即时响应。
2、SIP会话流程
(1)INVITE请求
设备端通过SIP信令向平台端发送INVITE请求,开始会话。SDP中m指定使用TCP传输,如果把m里面的TCP改成UDP,即指定使用UDP传输。
INVITE sip:34020000002000000001@192.168.1.100 SIP/2.0
Via: SIP/2.0/TCP 192.168.1.2:5060;branch=z9hG4bK776sgdkse
From: <sip:34020000001320000001@192.168.1.2>;tag=5678
To: <sip:34020000002000000001@192.168.1.100>
Call-ID: 123456789@192.168.1.2
CSeq: 1 INVITE
Contact: <sip:34020000001320000001@192.168.1.2>
Content-Type: application/SDP
Content-Length: 160v=0
o=34020000001320000001 0 0 IN IP4 192.168.1.2
s=Play
c=IN IP4 192.168.1.2
t=0 0
m=video 6000 TCP/RTP/AVP 96
a=rtpmap:96 H264/90000
a=setup:passive
a=connection:new
(2)200 OK响应
设备端准备好推送视频流,它发送一个200 OK响应,包括会话描述。
SIP/2.0 200 OK
Via: SIP/2.0/TCP 192.168.1.2:5060;branch=z9hG4bK776sgdkse
From: <sip:34020000001320000001@192.168.1.2>;tag=5678
To: <sip:34020000002000000001@192.168.1.100>;tag=1234
Call-ID: 123456789@192.168.1.2
CSeq: 1 INVITE
Content-Type: application/SDP
Content-Length: 160v=0
o=34020000002000000001 0 0 IN IP4 192.168.1.100
s=Play
c=IN IP4 192.168.1.100
t=0 0
m=video 6000 TCP/RTP/AVP 96
a=rtpmap:96 H264/90000
a=setup:active
a=connection:new
(3)ACK请求
平台端确认发送ACK请求,确认200 OK响应,正式建立会话。
ACK sip:34020000002000000001@192.168.1.100 SIP/2.0
Via: SIP/2.0/TCP 192.168.1.2:5060;branch=z9hG4bK776sgdkse
From: <sip:34020000001320000001@192.168.1.2>;tag=5678
To: <sip:34020000002000000001@192.168.1.100>;tag=1234
Call-ID: 123456789@192.168.1.2
CSeq: 1 ACK
3、应用场景及优势
TCP/UDP被动模式适用于前端设备(如摄像头、编解码器等)主动连接到监控中心或服务器的场景。
(1)前端设备位于内网:当前端设备处于企业或组织的内部网络中,而监控中心或服务器位于外网时,前端设备需要主动穿越NAT(网络地址转换)或防火墙,与服务器建立连接。此时,TCP/UDP被动模式能够确保数据的安全、可靠传输。
(2)需要高可靠性和顺序性的数据传输:TCP协议以其面向连接的特性,提供了数据传输的可靠性和顺序性。在需要确保视频流不丢失、不乱序的场景中,TCP/UDP被动模式是理想的选择。
(3)网络环境相对稳定:在网络环境相对稳定、不易出现大规模网络波动或中断的情况下,TCP/UDP被动模式能够保持连接的稳定性,确保视频监控系统的持续运行。
二、TCP主动模式(Acvite Mode)
TCP主动模式与TCP/UDP被动模式不同,在TCP主动模式下,平台端主动向前端设备发起连接。适用于前端设备具有公网IP或网络环境允许入站连接。
1、工作原理
(1)设备端通过SDP协议告知平台端其监听的TCP端口情况。
(2)平台端根据前端设备的IP地址和端口,主动尝试建立TCP连接。
(3)连接建立后,平台端开始接收来自设备端的视频数据。
(4)平台也可以通过这个连接向设备端发送控制命令。
2、SIP会话流程
(1)INVITE请求
平台端向设备端发送INVITE请求,开始会话。SDP中m指定使用TCP传输,a=setup:acvite指定使用主动模式。
INVITE sip:34020000002000000001@192.168.1.100 SIP/2.0
Via: SIP/2.0/TCP 192.168.1.2:5060;branch=z9hG4bK776sgdkse
From: <sip:34020000001320000001@192.168.1.2>;tag=5678
To: <sip:34020000002000000001@192.168.1.100>
Call-ID: 123456789@192.168.1.2
CSeq: 1 INVITE
Contact: <sip:34020000001320000001@192.168.1.2>
Content-Type: application/sdp
Content-Length: 160v=0
o=34020000001320000001 0 0 IN IP4 192.168.1.2
s=Play
c=IN IP4 192.168.1.2
t=0 0
m=video 6000 TCP/RTP/AVP 96
a=rtpmap:96 H264/90000
a=setup:acvite
a=connection:new
(2)200 OK响应
设备端准备好TCP端口,等待平台端主动连接,它发送一个200 OK响应,包括会话描述。
1.SIP/2.0 200 OK
Via: SIP/2.0/TCP 192.168.1.2:5060;branch=z9hG4bK776sgdkse
From: <sip:34020000001320000001@192.168.1.2>;tag=5678
To: <sip:34020000002000000001@192.168.1.100>;tag=1234
Call-ID: 123456789@192.168.1.2
CSeq: 1 INVITE
Content-Type: application/sdp
Content-Length: 160v=0
o=34020000002000000001 0 0 IN IP4 192.168.1.100
s=Play
c=IN IP4 192.168.1.100
t=0 0
m=video 6000 TCP/RTP/AVP 96
a=rtpmap:96 H264/90000
a=setup:passive
a=connection:new
(3)ACK请求
平台端发送ACK请求,确认200 OK响应,正式建立会话。
ACK sip:34020000002000000001@192.168.1.100 SIP/2.0
Via: SIP/2.0/TCP 192.168.1.2:5060;branch=z9hG4bK776sgdkse
From: <sip:34020000001320000001@192.168.1.2>;tag=5678
To: <sip:34020000002000000001@192.168.1.100>;tag=1234
Call-ID: 123456789@192.168.1.2
CSeq: 1 ACK
3、应用场景及优势
TCP主动模式则适用于平台端主动向前端设备发起连接的场景。
(1)前端设备具有公网IP:当前端设备直接连接到公网,并拥有独立的公网IP地址时,平台端可以主动向前端设备发起连接请求,建立TCP连接。这种情况下,TCP主动模式能够减少前端设备的连接请求次数,降低网络负担。
(2)网络环境允许入站连接:在前端设备所在的网络环境允许入站连接的情况下,平台端可以主动与前端设备建立连接,实现视频流的实时传输和控制指令的交互。这种模式特别适用于需要平台端主动控制连接或前端设备处于NAT/防火墙之后的场景。
(3)对实时性要求较高:虽然TCP协议本身已经提供了较高的数据传输可靠性,但在某些对实时性要求极高的应用场景中(如实时视频会议、远程医疗等),TCP主动模式能够更快地建立连接并传输数据,减少传输延迟。
三、结语
GB/T 28181标准下的TCP/UDP被动模式与TCP主动模式,如同视频汇聚平台的双翼,各自在不同场景下展现出独特的魅力与优势。TCP/UDP被动模式以其稳健可靠著称,适用于对数据传输顺序与可靠性有严格要求的环境;而TCP主动模式则以其主动性与控制力见长,适用于需要平台主动建立连接或前端设备处于NAT/防火墙保护下的场景。通过精准选择与合理配置这些传输模式,我们不仅能够确保视频监控系统的稳定运行与高效传输,更能为各类应用场景提供量身定制的解决方案。
相关文章:

美畅物联丨GB/T 28181系列之TCP/UDP被动模式和TCP主动模式
GB/T 28181《安全防范视频监控联网系统信息传输、交换、控制技术要求》作为我国安防领域的重要标准,为视频监控系统的建设提供了全面的技术指导和规范。该标准详细规定了视频监控系统的信息传输、交换和控制技术要求,在视频流传输方面,GB/T 2…...

机器学习之实战篇——图像压缩(K-means聚类算法)
机器学习之实战篇——图像压缩(K-means聚类算法) 0. 文章传送1.实验任务2.实验思想3.实验过程 0. 文章传送 机器学习之监督学习(一)线性回归、多项式回归、算法优化[巨详细笔记] 机器学习之监督学习(二)二元逻辑回归 …...

轴承介绍以及使用
轴承(Bearing)是在机械传动过程中起固定、旋转和减小载荷摩擦系数的部件。也可以说,当其它机件在轴上彼此产生相对运动时,用来降低运动力传递过程中的摩擦系数和保持转轴中心位置固定的机件。 轴承是当代机械设备中一种举足轻重的…...

【JAVA】算法笔记
一、ArrayList ArrayList类是一个可以动态变化的数组,与普通数组的区别就是它没有固定的长度。 ArrayList<String> arrList new ArrayList<String>(); arrList.add("吐泡泡"); System.out.println(arrList.get(0)); arrList.set(0,"J…...

Gnu Radio抓取WiFi信号,流程图中模块功能
模块流程如图所示: GNURadio中抓取WiFi信号的流程图中各个模块的功能: UHD: USRP Source: 使用此模块配置USRP硬件进行信号采集。设置频率、增益、采样率等参数。Complex to Mag^2: 将复数IQ数据转换为幅度的平方。Delay…...

GO语言中make与new的区别
区别 1 make不仅分配内存,还会初始化。 new只会分配零值填充的值2make只适用slice,map,channel的数据,new 没有限制3make返回原始类型(T),new返回类型的指针(*T) 源码中定义的区别 func make(t Type,size …IntegerType) Type func new(Type) *Type f…...

安全运维类面试题
1、你熟悉哪些品牌的安全设备 答:天融信的ngfw防火墙,老牌防火墙厂商,功能比较齐全,像流量检测,web应用防护和僵木蠕等模块都有,界面是红白配色,设计稍微有点老 2、IPS用的是哪个牌子的 答&…...

STM32外设之LTDC/DMA2D—液晶显示(野火)
文章目录 显示屏有几种?基本参数控制?显存 LTDC 液晶控制器LTDC 结构框图LTDC 初始化结构体 LTDC_InitTypeDefLTDC 层级初始化结构体 DMA2D 图形加速器DMA2D 初始化结构体 要了解什么 屏幕是什么,有几种屏,有什么组成。 怎么控制,不同屏幕控…...

调试vue build之后的js文件
调试 dist 目录下的 JavaScript 文件可以按照以下步骤进行: 1. 确保 Source Maps 正常生成 确认你的构建配置中已启用 Source Maps,确保 .map 文件与构建后的 .js 文件位于同一目录。 2. 启动一个本地服务器 使用本地服务器来服务 dist 目录…...

Django一分钟:DRF快速实现JWT认证与RBAC权限校验
一、项目创建并实现JWT认证 1. 下载依赖 下载django、djangorestframework、djangorestframework_simplejwt pip install django djangorestframework djangorestframework_simplejwt2. 创建项目 启动Django项目 django-admin startproject <myproject> cd myprojec…...

面试题(六)
48、设计模式 49、继承是否会破坏封装? 继承在面向对象编程中是一个重要的概念,但它确实可能对封装产生影响,具体情况取决于如何使用继承。以下是对这个问题的分析: 封装的定义 封装是面向对象编程中的一个基本原则࿰…...

CSS 实现文本溢出省略号显示,含单行与多行文本溢出
🚀 个人简介:某大型国企资深软件研发工程师,信息系统项目管理师、CSDN优质创作者、阿里云专家博主,华为云云享专家,分享前端后端相关技术与工作常见问题~ 💟 作 者:码喽的自我修养ǹ…...

Redis中String命令的基础操作
文章目录 Redis中String命令的基础操作一、引言二、String类型的基础命令1、设置与获取值1.1、SET命令1.2、GET命令 2、字符串操作2.1、APPEND命令2.2、GETRANGE命令2.3、SETRANGE命令2.4、STRLEN命令 3、数值操作3.1、INCR命令3.2、DECR命令3.3、INCRBY和DECRBY命令 三、应用场…...

策略模式+模版模式+工厂模式
工厂模式: (1)避免类中出现过多的组合依赖 (2)同时减少代码中出现过多的if...else if...语句 (2)将调用者跟我们的实现类解耦 模版模式: (1)功能复用 &…...

云计算平台层(PaaS)指的是什么?常见的应用场景盘点
云计算平台层(PaaS)指的是什么?云计算平台层(PaaS),全称PlatformasaService(平台即服务),是云计算服务的一种重要模式。为用户提供了一个基于云端的开发和部署环境,允许用户开发、运…...

搜索引擎简介
搜索引擎架构 整个搜索引擎分为三个系统 爬虫系统 索引系统 线上搜素服务 爬虫系统 爬虫分为两个阶段: 第一阶段:根据目标网站的列表页,爬对应的文档 URL 第二阶段:根据文档 URL,下载文档内容 触发器࿱…...

每天认识几个maven依赖(aislib+A1TRMI+Andromda+Annogen)
十七、aislib 1、是什么? aislib用于与人工智能(AI)相关的任务。这可能包括支持机器学习、数据分析或其他 AI 功能的工具。用于集成或扩展 AI 功能到 Java 项目中。 2、有什么用? 机器学习: 提供各种机器学习算法和…...

每日算法1(快慢指针)
通过一道题来了解快慢指针 这是一道力扣的算法题,首先来读题,是删除链表的中间元素,先来分析一下题,链表一共有三种可能,第一种是空链表,第二种链表的个数是偶数,第三种是链表的个数是奇数&…...

基于RealSense D435相机简单实现手部姿态重定向
基于Intel RealSense D435 相机和 MediaPipe的手部姿态检测,进一步简单实现手部姿态与机器人末端的重定向。 假设已经按照【基于 RealSenseD435i相机实现手部姿态检测】配置好所需的库和环境,并且有一个可以控制的机器人接口。 一、手部姿态重定向介绍 …...

Linux下搭建iSCSI共享存储-Tgt
Linux下搭建iSCSI共享存储-Tgt 在Linux上使用tgt搭建iSCSI共享存储,可以实现多个客户端同时访问共享存储。 1. 安装iSCSI Target软件包 使用下面命令安装: # centos sudo yum install scsi-target-utils sudo systemctl status tgtd# ubuntu sudo ap…...

js中正则表达式中【exec】用法深度解读
exec() 是 JavaScript 正则表达式对象(RegExp)中的一个方法,用于匹配字符串中的特定模式,并返回匹配结果。它比 test() 和 match() 更强大,因为它不仅仅返回匹配成功与否,还返回匹配的具体内容及其相关信息…...

Dockerfile的详解与案例
《Dockerfile 详解与案例》 一、Dockerfile 简介 Dockerfile 是一个用来构建 Docker 镜像的文本文件,它包含了一系列指令,用于描述如何创建一个 Docker 镜像。通过 Dockerfile,你可以定义镜像的基础环境、安装软件包、设置环境变量等操作&a…...

[spring]用MyBatis XML操作数据库 其他查询操作 数据库连接池 mysql企业开发规范
文章目录 一. MyBatis XML配置文件1. 配置链接字符串和MyBatis2. 写持久层代码方法定义Interface方法实现xml测试 3. 增删改查增:删改查 二. 开发规范(mysql)三. 其他查询操作1. 多表查询2. #{} 和 ${}(面试题)使用区别 排序功能like查询 三. 数据库连接池 一. MyBatis XML配置…...

[产品管理-33]:实验室技术与商业化产品的距离,实验室技术在商业化过程中要越过多少道“坎”?
目录 一、实验室技术 1.1 实验室研究性技术 1.2 技术发展的S曲线 技术发展S曲线的主要阶段和特点 技术发展S曲线的意义和应用 二、实验室技术商业化的路径 2.1 实验室技术与商业化产品的距离 1、技术成熟度与稳定性 - 技术自身 2、市场需求与适应性 - 技术是满足需求 …...

【有啥问啥】 Self-Play技术:强化学习中的自我进化之道
Self-Play技术:强化学习中的自我进化之道 在人工智能的快速发展中,强化学习(Reinforcement Learning, RL)已成为推动智能体自主学习与优化的关键力量。Self-Play技术,作为强化学习领域的一项前沿创新,通过…...

LCR 008. 长度最小的子数组
文章目录 1.题目2.思路3.代码 1.题目 LCR 008. 长度最小的子数组 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度**。**如果不存在符合条件…...

uniApp 解决uniapp三方地图获取位置接口的请求次数限制问题,分别提供 Android 和 iOS 的实现方法(原生插件获取)
以下是使用 UniApp 编写获取位置信息的原生插件步骤,这里分别提供 Android 和 iOS 的实现方法。 一、Android 端实现 创建原生插件模块 在 UniApp 项目目录下创建一个目录,比如 nativeplugins/android/locationPlugin。使用 Android Studio 创建一个 An…...

Zabbix Agent 监控 MySQL 进程状态
1. 使用 Zabbix Agent 监控 MySQL 进程状态 这是最简单的方式,通过 Zabbix Agent 监控 MySQL 进程是否在运行。具体步骤如下: 步骤1: 确认 MySQL 进程的名称 在你的 CentOS 服务器上,运行以下命令来确认 MySQL 进程的名称: ps aux | grep mysql通常,MySQL 服务的进程名…...

【模型】感知器
感知器是最早的人工神经网络之一,也是现代深度学习的基础之一。 1. 感知器(Perceptron) 1.1 定义与功能 感知器是一种线性二分类模型,旨在模拟生物神经元的基本功能。它通过对输入特征进行加权求和,并应用激活函数来…...

HtmlCss 基础总结(基础好了才是最能打的)五
Html&Css 基础学习回顾总结 Html&Css 基础总结(基础好了才是最能打的)一 Html&Css 基础总结(基础好了才是最能打的)二 Html&Css 基础总结(基础好了才是最能打的)三 Html&Css 基础总结…...