国标GB28181-2022平台EasyGBS:安防监控中P2P的穿透方法

在安防监控领域,P2P技术因其去中心化的特性而受到关注,尤其是在远程视频监控和数据传输方面。P2P技术允许设备之间直接通信,无需通过中央服务器,这在提高效率和降低成本方面具有明显优势。然而,P2P技术在实际应用中也面临着一个主要挑战——网络穿透问题。

一、穿透方法

实现P2P穿透是可能的,成功的概率也比较高。UDP的协议进行数据传输穿透NAT的成功率比较高,接近100%,TCP则存在一些情况无法实现穿越,主要受限于路由器的端口映射机制。

要实现P2P穿透,需要有P2P穿透服务器部署在互联网(有固定的域名或者IP),由该服务器来协助网络摄像机和客户端来实现P2P穿透。有些服务器还能在TCP不能穿越的情况下,实现流媒体转发的功能,以确保二者之间能实现数据通信。

由于P2P穿透服务器不同于安防监控系统中的流媒体转发服务器,主要进行信令交互,不转发媒体数据,在协助打通数据通道之后,对应的网络摄像机和客户端就不会再占用服务器带宽和处理能力了,因此一台P2P穿透服务器可以接入数量庞大的网络摄像机和客户端。

通常网络摄像机都有唯一ID,并通过该ID注册到P2P服务器。客户端要访问对应的网络摄像机时,也需要先注册到P2P服务器,并提交对应网络摄像机的ID,由服务器查找对应的网络摄像机,并协助网络摄像机和客户端之间进行穿透,最后打通一个点对点的数据传输通道。之后,二者即可进行正常的媒体和信令交互了。

为实现更加有效地管理,服务器可对设备接入进行认证。

1、PC访问网络摄像机

PC访问网络摄像机,可以先访问一个网页,传入网络摄像机的序列号。

网页加载一个控件,该控件通过P2P穿透服务器和该序列号对应的网络摄像机实现穿透后,通过可靠的UDP传输信令和媒体数据。控件提供视频浏览、对讲、云台控制、参数查询设置等功能。

2、手机访问网络摄像机

手机由于平台的不同,需要单独开发对应的客户端或者插件以实现和PC访问类似功能。但原理是一样的,都需要通过P2P服务器和该序列号对应的网络摄像机实现穿透后,通过可靠的UDP传输信令和媒体数据。由于开源的P2P穿透库是可以移植的,在LINUX,iOS,Android等都可以实现同样的P2P穿透功能。

关于具体的穿透的代码,需要的可以自行搜索,同时网上有第三方的穿透中间件服务。穿透的核心是针对不同的网络环境,选择不同的策略。即明确设备处在的网络位置。这里涉及一个概念NAT。

因为互联网中的IPv4地址不够用,于是引入了NAT功能。NAT,即网络地址转换。这种方法即在内部网和外网之间使用带有NAT功能的路由器,路由器能分配一个公网IP,内部的任意一台机器和外网通信时都通过这个公网IP。这样就很好地解决IP地址有限的问题。但问题随之而来,很多网络协议无法通过NAT,此时我们需要穿透NAT,即P2P穿透或者NAT穿透。

NAT穿透的前提是确定NAT类型,一般而言,NAT分为静态NAT和NAPT两种。静态NAT好理解,即一个内网IP对应一个公网IP。NAPT要复杂很多,NAPT即端口多路复用技术,不但需要转换IP地址,还需要进行传输层的端口转换。具体表现就是对外只有一个公网IP,通过不同端口来区分内网的不同设备数据。

实际运用中,NAPT占绝大多数。NAPT又可以分成4种类型,分别为:

1、完全锥型(IP地址,端口都不受限)

2、受限锥型(IP受限,端口不受限)

3、端口受限型(IP地址,端口都受限)

4、对称型(一个请求对应一个端口)

P2P技术提高了数据传输的效率,在安防监控领域,EasyGBS平台作为一款基于国标GB28181协议构建的视频监控平台。该平台不仅支持视频直播、录像回放、云存储等基本功能,还具备告警处理、多级平台级联等高级功能,为各类监控场景提供了高效、稳定且智能的解决方案。

国标GB28181-2022平台EasyGBS支持多种流媒体协议输出,包括RTSP、RTMP、WebRTC、HTTP-FLV、WebSocket-FLV、HLS等这使得EasyGBS能够适应不同的网络环境和终端设备,提供灵活的视频分发服务。

总结来说,P2P技术在安防监控中的应用前景广阔,但要实现其潜力,必须克服网络穿透的难题。随着技术的不断进步和创新,我们有理由相信,未来将会出现更多高效、安全的P2P穿透解决方案。这些解决方案将进一步提升安防监控系统的灵活性和可靠性,使其能够更好地适应多变的网络环境,为用户提供更加稳定和便捷的远程监控体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/63966.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mac Android studio 升级LadyBug 版本,所产生的bug

当Build 出现,这样的文字以后: Your build is currently configured to use incompatible Java 21.0.3 and Gradle 7.3.3. Cannot sync the project. We recommend upgrading to Gradle version 8.9. The minimum compatible Gradle version is 8.5. …

com.google.common.collect.ImmutableList$SerializedForm

今天AndroidStudio安装了个2021版本的,gradle用了7.3.3,创建项目后控制台总是有这样一个错误: Unable to load class com.google.common.collect.ImmutableList$SerializedForm. This is an unexpected error. Please file a bug containing…

Docker部署Sentinel

一、简介 是什么:面向分布式、多语言异构化服务架构的流量治理组件 能干嘛:从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性 官网地址:https://sentinelguard.io/zh-c…

HTMLCSSJavaScriptDOM 之间的关系?

一、HTML 中文名:超文本标记语言 英文名:HyperText Markup Language HTML是一种用来结构化Web网页及其内容的标记语言。 HTML 由一系列的元素组成,这些元素可以用来包围不同部分的内容,使其以某种方式呈现或者工作。 图Ⅰ 每…

Hadoop集群(HDFS集群、YARN集群、MapReduce​计算框架)

一、 简介 Hadoop主要在分布式环境下集群机器,获取海量数据的处理能力,实现分布式集群下的大数据存储和计算。 其中三大核心组件: HDFS存储分布式文件存储、YARN分布式资源管理、MapReduce分布式计算。 二、工作原理 2.1 HDFS集群 Web访问地址&…

位运算符、标记位传参

位运算符: 位运算符作用于操作数的位(bit)。 按位与(&)对应位都为1时结果为1 int a 5; // 0101 int b 3; // 0011 int result a & b; // 0001 按位或(|)对应位至少有一个为1时结…

施耐德变频器ATV320系列技术优势:创新与安全并重

在工业自动化领域,追求高效、安全与智能已成为不可阻挡的趋势。施耐德变频器ATV320系列凭借其强大的设计标准和全球认证,成为能够帮助企业降低安装成本,提高设备性能的创新解决方案。 【全球认证,品质保障】ATV320 系列秉持施耐德…

项目练习:element-ui的valid表单验证功能用法

文章目录 一、情景说明二、代码实现 一、情景说明 一般表单提交的时候,都要对表单数据进行前段验证。 比如登陆表单提交。 二、代码实现 package.json "element-ui": "2.15.14",main.js 引用ElementUI import ElementUI from element-ui; i…

【es6复习笔记】Symbol 类型及其应用(9)

一、Symbol 简介 Symbol 是 JavaScript 中的一种基本数据类型,它表示唯一的标识符。Symbol 的主要目的是防止属性名冲突,尤其是在多个代码库或模块中共享对象时。Symbol 值可以用作对象的属性名,这样可以确保属性名是唯一的,不会…

Linux挖矿程序排查

一、背景 我们收到一个阿里云安全告警,内容是服务器可能存在挖矿程序。 二、杀死挖矿程序 2.1 找到可疑服务器进程 #1.输入top命令,输入shift P会按照cpu的使用率大小从大到小进行排序,cpu使用率高的就是可疑进程。 top #2.查看运行该进程…

zabbix监控山石系列Hillstone配置模版(适用于zabbix6及以上)

监控项: 触发器: 监控数据:

PE文件结构

PE文件是Windows系统下可执行文件的总称,英文全称 Portable Executable 可移植的可执行文件,常见的有exe、dll、sys、com、ocx 对于学习反(木马、免杀、病毒、外挂、内核),了解PE文件结构是非常有必要且非常非常重要的…

C语言-08复合类型-结构体

一、结构体 1.结构体struct struct关键字,允许自定义复合数据类型,将不同类型的值组合在一起,这种类型称为结构体类型。 2.使用步骤 第一步:创建或声明结构体 第二步:定义结构体变量 第三步:调用并操作结…

Web前端基础知识(一)

前端是构建网页的一部分,负责用户在浏览器中看到和与之交互的内容。 网页是在浏览器中呈现内容的文档或页面。 通常,网页使用HTML、CSS、JavaScript(JS)组成。 HTML:定义了页面的结构和内容。包括文本、图像、链接等。 CSS:定义页面的样式…

网络安全词云图与技术浅谈

网络安全词云图与技术浅谈 一、网络安全词云图生成 为了直观地展示网络安全领域的关键术语,我们可以通过词云图(Word Cloud)的形式来呈现。词云图是一种数据可视化工具,它通过字体大小和颜色的差异来突出显示文本中出现频率较高…

fpgafor循环语句使用

genvar i;//循环变量名称 generate for(i0;i<4;ii1)begin:tx//自己定义名称 //循环内容 end endgenerate12位的16进制乘以4就是48位位宽的2进制 因为 222*2(2^4)16

【python高级】342-TCP服务器开发流程

CS模式&#xff1a;客户端-服务端模式 TCP客户端开发流程介绍&#xff08;五步&#xff09;&#xff08;C端&#xff09; 1.创建客户端套接字对象 2.和服务端套接字建立连接 3.发送数据 4.接收数据 5.关闭客户端套接字 TCP服务端开发流程&#xff08;七步&#xff09;&#xf…

es 中 terms set 使用

在 Elasticsearch 中&#xff0c;terms_set 查询通常用于在一个字段上进行多值匹配&#xff0c;并支持设置一个条件&#xff08;例如最小匹配数量&#xff09;&#xff0c;让查询结果更具灵活性。为了展示如何使用 terms_set 查询&#xff0c;我们首先会创建一个索引&#xff0…

修改采购订单BAPI学习研究-BAPI_PO_CHANGE

这里是修改采购订单BAPI&#xff0c;修改订单数量和交货日期的简单应用 文章目录 修改数量代码运行结果 修改交货日期代码运行结果 修改数量 代码 *&---------------------------------------------------------------------* *& Report Z_BAPI_PO_CHANGE *&----…

WSL2高级配置之mirrored镜像网络

WSL2高级配置之mirrored镜像网络 引言版本要求更改配置 引言 WSL2默认的网络模式为NAT。尽管WSL2原生提供了localhost转发这种能够方便地在Windows中访问子系统服务的特性&#xff0c;但如果想反过来&#xff0c;则只能通过局域网或者想办法桥接&#xff0c;这两种方法都有些许…