美畅物联丨GB/T 28181系列之TCP/UDP被动模式和TCP主动模式

news/2024/9/29 8:05:16/

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/防火墙保护下的场景。通过精准选择与合理配置这些传输模式,我们不仅能够确保视频监控系统的稳定运行与高效传输,更能为各类应用场景提供量身定制的解决方案。


http://www.ppmy.cn/news/1531834.html

相关文章

初探shell与bash使用指南

文章目录 一、shell二、bash第一步、新建脚本第二步、添加权限第三步、执行bash脚本 在日常开发中&#xff0c;经常使用到Linux服务器相关知识&#xff0c;输入命令获取想要的结果&#xff0c;本篇介绍shell 与 bash的相关知识。 一、shell 是命令行解释器&#xff0c;接收用户…

深度学习(4):torch.nn.Module

文章目录 一、是什么二、nn.Module 的核心功能三、nn.Module 的基本用法1. 定义自定义模型2. 初始化模型3. 模型的使用 四、nn.Module 的关键特性1. 自动注册子模块和参数2. forward 方法3. 不需要定义反向传播 五、常用的内置模块六、示例&#xff1a;创建一个简单的神经网络1…

基于微信开发助手企鹅音乐微信小程序的设计与实现(源码+文档+讲解)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

docker - 镜像操作(拉取、查看、删除)

文章目录 1、docker search --help&#xff08;用于显示 Docker 搜索命令的帮助信息&#xff09;2、docker pull&#xff08;拉取镜像&#xff09;3、docker images (查看镜像)3.1、docker images --help&#xff08;用于显示 Docker 镜像管理相关命令的帮助信息&#xff09;3.…

前端面试经验总结2(经典问题篇)

谈谈你对前端的理解 前端主要负责产品页面部分的实现&#xff0c;是最贴近于用户的程序员。 基本工作要求&#xff1a; 1.参与项目&#xff0c;通过与团队成员&#xff0c;UI设计&#xff0c;产品经理的沟通&#xff0c;快速高质量的实现效果图&#xff0c;并能够精确到1px 2.做…

在Docker中运行Tomcat:打造高效可移植的Java Web服务器

随着Docker的兴起&#xff0c;容器化技术已经成为现代软件开发和部署不可或缺的一部分。Tomcat作为Java EE的官方Servlet容器&#xff0c;广泛用于部署Java Web应用程序。将Tomcat与Docker结合使用&#xff0c;可以极大地提升应用的部署效率、可移植性和可扩展性。本文将引导您…

python爬虫初体验(三)——将网页数据导出csv和excel文件

1. 安装库 pip install requests pip install pandas pip install BeautifulSouprequests 是一个非常流行的 Python 第三方库&#xff0c;用于简化 HTTP 请求。它允许你发送 HTTP/1.1 请求极其简单&#xff0c;而无需底层的socket库或urllib库。requests 库使得发起请求、处理…

如何使用 ChatGPT 生成万字长文?

要使用ChatGPT生成万字长文&#xff0c;可以采用以下方法&#xff0c;以保证文章结构清晰&#xff0c;内容充实&#xff1a; 1. 确定主题和大纲 明确主题&#xff1a;先确定文章的中心主题&#xff0c;例如技术、文学、历史、哲学等领域的具体问题。细化大纲&#xff1a;将主…