精华内容
下载资源
问答
  • dds通信协议介绍文档

    2018-11-30 20:46:23
    dds通信协议介绍文档 ,芯片间通信 协议文档
  • RTI-DDS协议产品介绍

    2015-09-10 17:31:29
    RTI公司开发的DDS框架用于实时数据传送-用于军用实时系统
  • DDS 介绍

    千次阅读 2021-01-24 14:05:46
    DDS,全称 Data Distribution Service (数据分发服务),由对象管理组(OMG®)发布和维护,是一个中间件协议和API标准,采用发布/订阅体系架构,强调以数据为中心,提供丰富的QoS服务质量策略,以保障数据进行实时、...

    ​DDS,全称 Data Distribution Service (数据分发服务),由对象管理组(OMG®)发布和维护,是一个中间件协议和API标准,采用发布/订阅体系架构,强调以数据为中心,提供丰富的QoS服务质量策略,以保障数据进行实时、高效、灵活地分发,可满足各种分布式实时通信应用需求。

    OMG成立于1989年,它的使命是开发技术标准,为数以千计的垂直行业提供真实的价值。OMG一直致力于将其由最终用户、供应商、政府机构、大学和研究机构组成的国际成员聚集在一起,随着多年来技术的变化来开发和修订这些标准,其中包括统一建模语言SYSML和UML,还有中间件标准CORBA等,当然还有今天要说的DDS~

    在汽车领域,Adaptive AUTOSAR在2018年引用了DDS,作为可选择的通信方式之一。DDS的实时性,恰好适合于自动驾驶系统,因此在这类系统中,通常会存在感知,预测,决策和定位等模块,这些模块都需要非常高速和频繁地交换数据。借助DDS,可以很好地满足它们的通信需求。

    DDS在其他领域的应用也非常广泛,包括:航空,国防,交通,医疗,能源等。在机器人开发领域,对ROS 2有所了解的人都知道,ROS 2相对于ROS 1最主要的一个变化就是DDS的引入。

    DDS标准中的核心规范包括:

    DDS v1.4 - 描述了用于分布式应用程序通信和集成的以数据为中心的发布-订阅(DCPS)模型;

    DDSI-RTPS v2.3 - 定义了实时发布-订阅交互通信协议(RTPS);

    IDL v4.2 - 定义了IDL,一种用于以独立于编程语言的方式定义数据类型和接口的语言。这不属于DDS标准,但DDS依赖于它。

    公众号回复“DDS资料”,可以下载哦~

    可以看出,和前面几篇讲的SOMEIP不同,DDS的标准体系显然要复杂得多,我今天想介绍的,也只是DCPS和RTPS的一个大概。

    DDS的通信模型DCPS,如下图:

    • Domain:代表一个通信平面,由Domain ID唯一标识,只有在同一个域内的通信实体才可以通信;可以只划分1个Domain,也可以按照交互规则或其他规则,定义多个Domain;

    • Topic:是数据的抽象概念,由TopicName标识,关联相应数据的数据类型(DataType),把所涉及的所有Topic集合在一起,这样就形成一个虚拟的全局数据空间“Global Data Space”,这里弱化了节点的概念;

    • DataWriter:数据写入者,类似缓存,把需要发布的Topic数据从应用层写入到DataWriter中;

    • DataReader:数据读取者,同样可以理解为一种缓存,从订阅者得到Topic数据,随之传给应用层;

    • QoS:服务质量(Quality of Service),这是DDS的亮点,通过定义灵活的QoS规则,包括可靠性、系统健康(活跃度)甚至安全性,也可以共享数据。DDS在发送它所需要的信息方面很聪明。如果消息不能总是到达它们预期的目的地,那么中间件将在需要的地方实现可靠性。当系统发生变化时,中间件动态地计算出向何处发送哪些数据,并智能地通知参与者这些变化。如果总数据量很大,DDS会智能地过滤并只发送每个端点真正需要的数据。当更新需要快速时,DDS发送多播消息来一次更新许多远程应用程序。随着数据格式的发展,DDS跟踪系统各个部分使用的版本,并自动转换。对于安全性至关重要的应用程序,DDS控制访问、强制数据流路径并实时加密数据。

    如图,DDS的通信协议RTPS和SOMEIP一样,建立在传输层之上,不同的是,DDS可以支持共享内存:

    RTPS协议的主要特点包括:

    • 性能和服务质量属性,使得实时应用程序能够在标准IP网络上进行最佳努力和可靠的发布-订阅通信;

    • 容错,允许创建没有单点故障的网络;

    • 可扩展性,允许协议通过新的服务进行扩展和增强,而不会破坏向后兼容性和互操作性;

    • 即插即用连接,使新的应用程序和服务自动发现,应用程序可以随时加入和离开网络,而不需要重新配置;

    • 可配置性,允许每个数据传递能够平衡可靠性和及时性的要求;

    • 模块化,允许简单设备实现协议的子集,同时仍然参与网络;

    • 可扩展性,使系统有可能扩展到非常大的网络;

    • 类型安全,以防止应用程序编程错误而危及到系统中其他远程节点。

    RTPS协议由PIM(Platform Independent Model,平台独立模型)和一组PSM(Platform-Specific Model,平台特定模型)描述。

    PIM包含四个模块:结构,消息,行为和发现。结构(Structure)模块定义通信端点。消息(Messages)模块定义这些端点可以交换的消息集合。行为(Behavior)模块定义合法交互集(消息交换)以及它们如何影响通信端点的状态。发现(Discovery)模块定义如何自动发现和配置实体。如图:

    PSM负责提供PIM与UDP(或者说底层平台)之间的映射,主要包括各种消息格式。

    为什么说DDS是新一代中间件?我们可以对比看一下其他一些中间件通信模型:

    • 点对点CS(Client-Server)模型:这是我们最熟悉的模式,许多客户端连接到一个服务端,每次通信时,通信双方必须建立一条连接。当通信节点增多时,通信的连接数也会增多。每个客户端都需要知道服务器的具体地址和所提供的服务。一旦服务器地址发生变化,所有客户端都会受到影响。

    • Broker模型:由Broker统一负责初步处理所有人的请求,并进一步找到真正能响应服务的角色。这使得客户端可以不用关心服务器的具体地址。服务端地址如果发生变化,只需要告诉Broker就可以了。这个模型的问题也很明显,Broker作为核心,它的处理速度会影响所有节点的效率,当系统规模增长到一定程度,Broker将成为整个系统的性能瓶颈。对于资源相对吃紧的嵌入式系统,这个问题会更为突出。更糟糕的是,如果Broker发生异常,可能导致整个系统都无法正常运转。

    • 广播模型:所有人都可以在通道上广播消息,并且所有人都可以收到消息。这个模型解决了服务器地址的问题,且通信双方不用单独建立连接,但它存在的问题是:广播通道上的消息太多了,所有人都必须关心每条消息,无论是否与自己有关。

    • 以数据为中心的DDS模型:这种模型与广播模型有些类似,所有人都可以在DataBus上发布和订阅消息。但它的先进之处在于,通信中包含了很多并行的通路,可以只关心自己感兴趣的消息,忽略不感兴趣的消息。

    对于分布式系统来说,有很多复杂的逻辑需要处理,例如:如何发现其他节点,如何为每个节点分配地址,如何确保消息的可靠性等。这使得应用程序变得臃肿。如果通信中间件能够完全处理好这些逻辑,则应用程序将可以集中处理自己的业务,变得更加敏捷:

    如果考虑系统的演化,问题会更加突出。由于分布式系统中包含了许多的角色需要互相通信,随着角色数量的不断增长,其通信的通道数量会以爆炸式增长,这时传统的通信模型就会变得越来越复杂:

    如果有统一的DataBus,即便新增了角色,其通信模型也不会变得更加复杂:

    OMG发布的只是DDS标准,而标准的实现是由各个DDS提供商完成,其中有商用的如RTI,也有开源的如Object Computing的OpenDDS、eProsima的FastDDS。前几年刚知道DDS的时候,只接触了OpenDDS,它依赖ACE(一个我认为只适合学习并不适合实际应用的通信框架),还依赖了我完全不懂的Perl,顿时觉得这玩意咋这么难上手,是不是没啥应用前景,当时网上的资料也比较少,便放弃了。最近接触了FastDDS,觉得是可以落地的好东西,才又开始研究DDS,下一篇我会介绍FastDDS以及如何使用。

    展开全文
  • 分布式实时数据分发服务中间件协议Data Distribution Service(DDS)是OMG于2003年发布并于2007年修订的开放标准。该标准定义了用于分布式系统的【发布-订阅】通信中间件的API规范。 使用DDS的分布式应用程序可以...

    简述

    分布式实时数据分发服务中间件协议Data Distribution Service(DDS)是OMG于2003年发布并于2007年修订的开放标准。该标准定义了用于分布式系统的【发布-订阅】通信中间件的API规范。

    使用DDS的分布式应用程序可以发布或订阅信息的“主题”,并使用一组丰富的服务质量参数来设置通信的不同方面(可靠性,持久性,冗余性,寿命,传输设置,资源…) 。

    DDS模型:

    抽象模型非常容易理解:如是我们要在分布式系统中共享的数据结构的定义,以及引用该信息的名称。例如,我们可以定义一个名为“车辆位置”的主题,其结构可以是x和y的几个浮点数,也可以是车辆ID的整数。

    主题存在于DDS称为“全局数据空间”的抽象空间中。实际上,这个抽象概念接近于实际的实现,因为在最常用的DDS实现中,没有中间代理,例如JMS,ZeroC ICE Storm或其他发布/订阅技术。

    DDS模型:全球数据空间
    用于创建发布者和订阅者的DDS工厂称为DDS参与者。通常,应用程序创建一个参与者,发布者发布数据,和/或订阅者订阅数据。实际上,DDS定义了第三层,即数据写入器和数据读取器,而这些实体实际上负责从全局数据空间进行写入/读取,但是为了简单起见,在本文中,我们仅讨论发行者和订阅者。

    远程DDS参与者的发现是自动的,在默认行为下,每个参与者都会发送多播声明(或将单播消息发送到预定义的对等列表),并且DDS会维护一个远程目标列表。

    该模型在几个方面解耦:

    • 空间:作为自动发现,分布式系统独立于网络拓扑。如果用户更改了网络拓扑,则无需在应用程序中进行任何更改。
    • 时间:发布者可以完全异步发布,而无需测试订阅者的存在。如果将服务的持久性质量参数设置为持久性,则DDS会将数据发送给后加入者。
    • 冗余:DDS允许非常轻松地实现冗余。多个发布者可以在同一个主题上发布,共享该主题,或者可以设置DDS将该主题设置为独占,并且该主题的所有者将是“强度”参数最高的发布者。如果所有者失败,那么以下更强大的发布者将成为所有者。故障转移和接管行为都可以实现。对于订户方,任何数量的订户都可以订阅同一主题。
    • 平台和语言:DDS在许多平台(Windows,Linux,Solaris,Aix,Mac
      OS,Integrity,LynxOS,QNX,VxWorks …)和语言(C,C,Java,C#,Ada …)中实现。
      )。您的分布式系统可能非常异构,开发人员不必担心远程节点的平台/语言。
    • 实现:DDS规范集包括一个用于DDS互操作性协议的规范,称为RTPS(实时发布订阅协议)。分布式系统中的不同应用程序可以使用不同的DDS实现,并且它们将互操作。

    DDS体系结构:

    DDS公开了简单的模块化设计。在最常用的实现中,DDS基础结构只是链接到应用程序的库(静态或动态)。不需要安装任何服务或守护程序。

    互操作性协议位于OSI模型中的传输层之上,因此可以在任何基础传输上实现。几种DDS实现公开了可插入的传输机制,并提供了典型的传输选项,例如UDP,TCP和共享内存,并允许添加用户传输。
    DDS架构

    DDS的优势:

    发布/订阅模型:简单且分离。它允许您对分布式系统进行更整洁的设计。
    性能:与请求/回复模式相比,在发布/订阅模式下,延迟时间较短,吞吐量更高。在请求/答复模型中,请求者应拉远程参与者以获取数据,但在发布/订阅模型中,发布者只要有可用数据,便直接将数据发送给订阅者。 已经计划了API,对象模型和QoS参数以实现实时性能,并且通常会对不同的实现进行真正的优化。
    自动发现远程参与者:此机制是DDS的关键功能之一。通信是匿名的并且是分离的,并且开发人员不必担心远程参与者的本地化。
    丰富的Qos参数集,允许调整通信的各个方面:可靠性,持久性,冗余,寿命,传输设置,资源…
    互操作性协议(RTPS):该协议几乎可以在任何传输上实现,从而允许在UDP,TCP,共享内存和用户传输中使用DDS,并在不同DDS实现之间实现真正的互操作性。
    可用的实现:
    DDS的商业和开源实现均可用。最著名的是 eProsima Fast DDS (以前称为Fast RTPS),RTI DDS,OpenSplice DDS,CoreDx和OpenDDS。

    RTPS简介

    什么是RTPS?

    RTPS(实时发布订阅协议)是一种协议,用于在单播和多播中的不可靠传输(例如UDP )上实现最大努力和可靠的发布-订阅通信。

    OPS (对象管理组)已将RTPS标准化 为数据分发服务(DDS) 实施的互操作性协议,该协议已 广泛用于航空航天和国防领域的实时应用程序。

    除了嵌入在不同DDS实现中的RTPS实现之外,还有独立的轻量级RTPS实现,eProsima Fast RTPS 在性能,功能和对最新版本的RTPS标准(RTPS 2.2)的坚持方面均处于领先地位。

    RTPS的优势:

    RTPS协议的主要功能是:

    • 性能和服务质量(QoS)属性为使用标准IP网络的实时应用程序实现尽力而为,可靠的发布-订阅通信。
    • 容错能力允许创建没有单点故障的网络。
    • 可扩展性允许通过协议的扩展和新服务的增强实现向后兼容性和互操作性。
    • 新应用程序和服务的即插即用连接性允许应用程序随时加入和离开网络而自动进行无需配置的发现。
    • 可配置性允许平衡每个数据传递事务的可靠性和及时性要求。
    • 模块化允许简单的设备实现协议的子集,并且仍然参与发布-订阅网络。
    • 可伸缩性使系统可以扩展到非常大的发布-订阅网络。
    • 防止应用程序编程错误的类型安全性,从而损害发布-订阅网络中远程节点的操作。

    RTPS架构:
    RTPS有线协议基于四个不同的模块,这些模块控制不同DDS应用程序之间的信息交换。

    • 结构模块 定义了通信端点并将它们映射到自己的DDS同行。
    • 消息模块 定义,可以将消息这些端点交换以及它们是如何构建的。
    • 行为模块 定义了一组法律交互作用以及它们如何影响每个端点。
    • 发现模块 定义内置的端点,允许自动发现一组。

    每个模块及其组成部分的简要说明如下:

    • 结构模块
      由于RTPS是旨在实现DDS应用程序的有线协议,因此每个DDS概念或实体自然都映射到RTPS实体。所有RTPS实体都与一个RTPS域相关联,该域表示一个包含一组参与者的单独通信平面。每个RTPS参与者都可以包含两种不同类型的多个本地端点: Writer 和 Readers。这两个端点通过发送RTPS消息在RTPS网络中交换信息。编写器将本地可用的信息发送给读取器,而后者又可以请求或确认数据。

      RTPS端点(写入器 和 读取器)及其相应的DDS实体之间的接口是 HistoryCache。端点之间交换的信息通常存储在CacheChange中。例如,每个写操作都会在Writer History中引入CacheChange。然后,RTPS编写器将RTPS消息发送给所有匹配的阅读器。收到后,RTPS读取器将CacheChange添加到其相应的HistoryCache并通知DDS实体新数据可用。

    • 消息模块
      消息模块定义RTPS编写器和读取器之间原子信息交换的内容。RTPS消息由标题和后面的许多子消息组成。标头将消息标识为RTPS协议的一部分,以及所使用协议的版本和发送消息的供应商。它还标识正在发送消息的参与者。

      每个Submessage由一个Submessage标头和一系列Submessage元素组成。选择此结构是为了使子消息的词汇表和每个子消息的组成得以扩展,同时保持向后兼容性。子消息标题包含标识子消息类型,子消息长度(以字节为单位)和子消息标记的子消息ID。有十二种不同的子消息。有关所有消息,其组成和解释的完整说明,请查阅OMG RTPS规范文档。三个最重要的消息是:

      数据: 此子消息从写入器发送到读取器,其中包含有关更改属于写入器的数据对象的信息。此更改可以是值(正在添加新信息),也可以是生命周期(先前发送的数据不再有效)。

      HEARTBEAT: 此子消息从Writer发送到Reader,以传达Writer目前可用的CacheChanges。

      确认: 此子消息从阅读器发送到编写器,并允许阅读器将其已收到的更改和仍遗漏的更改通知编写器。它可以用来做肯定和否定的确认。

    • 行为模块
      该模块描述了在写方和读方之间可能发生的有效消息交换。它还定义了Writer和Reader的状态更改,具体取决于每个消息。可以在OMG RTPS规范文档中找到全套规则。设置这些规则是为了确保不同实现之间的互操作性。

    • 发现模块
      该模块描述了使参与者能够获取有关域中所有其他参与者和端点的存在和属性的信息的协议。这种信息交换称为超流量。一旦发现远程端点,就可以相应地配置本地端点以建立通信。发现协议分为两层:参与者发现协议(PDP)和端点发现协议(EDP)。PDP规定了参与者如何发现彼此。发现后,参与者使用EDP交换有关其端点的信息。不同的供应商可以实现多种发现协议,但是,为了确保互操作性,所有供应商都必须实现一个PDP和一个EDP。这些发现协议称为“简单”

    发现模块的完整描述可以在规范文档中找到。但是,此发现机制的最重要特征是,它允许简单的即插即用连接,而无需用户进行任何配置。

    参考

    展开全文
  • 上层MQTT、HTTP、CoAP、DDS、AMQP、JMS)1、TCP/IP网络模型介绍2、TCP协议介绍1. TCP连接过程2. TCP断开链接3. TCP协议的特点3、UDP协议介绍UDP协议的特点4、TCP/UDP协议对比5、上层的MQTT、HTTP、CoAP、DDS、AMQP、...

    1、TCP/IP网络模型介绍

    计算机与网络设备要相互通信,双方就必须基于相同的方法。比如,如何探测到通信目标、由哪一边先发起通信、使用哪种语言进行通信、怎样结束通信等规则都需要事先确定。不同的硬件、操作系统之间的通信,所有的这一切都需要一种规则。而我们就把这种规则称为协议(protocol)。

    TCP/IP 是互联网相关的各类协议族的总称,比如:TCP,UDP,IP,FTP,HTTP,ICMP,SMTP 等都属于 TCP/IP 族内的协议。

    TCP/IP模型是互联网的基础,它是一系列网络协议的总称。这些协议可以划分为四层,分别为链路层、网络层、传输层和应用层。

    1. 链路层:负责封装和解封装IP报文,发送和接受ARP/RARP报文等。
    2. 网络层:负责路由以及把分组报文发送给目标网络或主机。
    3. 传输层:负责对报文进行分组和重组,并以TCP或UDP协议格式封装报文。
    4. 应用层:负责向用户提供应用程序,比如HTTP、FTP、Telnet、DNS、SMTP等。
      在这里插入图片描述

    在网络体系结构中网络通信的建立必须是在通信双方的对等层进行,不能交错。 在整个数据传输过程中,数据在发送端时经过各层时都要附加上相应层的协议头和协议尾(仅数据链路层需要封装协议尾)部分,也就是要对数据进行协议封装,以标识对应层所用的通信协议。接下去介绍TCP/IP 中有两个具有代表性的传输层协议----TCP 和 UDP

    2、TCP协议介绍

    当一台计算机想要与另一台计算机通讯时,两台计算机之间的通信需要畅通且可靠,这样才能保证正确收发数据。例如,当你想查看网页或查看电子邮件时,希望完整且按顺序查看网页,而不丢失任何内容。当你下载文件时,希望获得的是完整的文件,而不仅仅是文件的一部分,因为如果数据丢失或乱序,都不是你希望得到的结果,于是就用到了TCP。

    TCP协议全称是传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议,由 IETF 的RFC 793定义。TCP 是面向连接的、可靠的流协议。流就是指不间断的数据结构,你可以把它想象成排水管中的水流。

    1. TCP连接过程

    如下图所示,可以看到建立一个TCP连接的过程为(三次握手的过程):
    在这里插入图片描述
    第一次握手
    客户端向服务端发送连接请求报文段。该报文段中包含自身的数据通讯初始序号。请求发送后,客户端便进入 SYN-SENT 状态。
    第二次握手
    服务端收到连接请求报文段后,如果同意连接,则会发送一个应答,该应答中也会包含自身的数据通讯初始序号,发送完成后便进入 SYN-RECEIVED 状态。
    第三次握手
    当客户端收到连接同意的应答后,还要向服务端发送一个确认报文。客户端发完这个报文段后便进入 ESTABLISHED 状态,服务端收到这个应答后也进入 ESTABLISHED 状态,此时连接建立成功。

    这里可能大家会有个疑惑:为什么 TCP 建立连接需要三次握手,而不是两次?这是因为这是为了防止出现失效的连接请求报文段被服务端接收的情况,从而产生错误。
    在这里插入图片描述

    2. TCP断开链接

    在这里插入图片描述
    TCP 是全双工的,在断开连接时两端都需要发送 FIN 和 ACK。
    第一次握手
    若客户端 A 认为数据发送完成,则它需要向服务端 B 发送连接释放请求。
    第二次握手
    B 收到连接释放请求后,会告诉应用层要释放 TCP 链接。然后会发送 ACK 包,并进入 CLOSE_WAIT 状态,此时表明 A 到 B 的连接已经释放,不再接收 A 发的数据了。但是因为 TCP 连接是双向的,所以 B 仍旧可以发送数据给 A。
    第三次握手
    B 如果此时还有没发完的数据会继续发送,完毕后会向 A 发送连接释放请求,然后 B 便进入 LAST-ACK 状态。
    第四次握手
    A 收到释放请求后,向 B 发送确认应答,此时 A 进入 TIME-WAIT 状态。该状态会持续 2MSL(最大段生存期,指报文段在网络中生存的时间,超时会被抛弃) 时间,若该时间段内没有 B 的重发请求的话,就进入 CLOSED 状态。当 B 收到确认应答后,也便进入 CLOSED 状态。

    3. TCP协议的特点

    1. 面向连接
      面向连接,是指发送数据之前必须在两端建立连接。建立连接的方法是“三次握手”,这样能建立可靠的连接。建立连接,是为数据的可靠传输打下了基础。
    2. 仅支持单播传输
      每条TCP传输连接只能有两个端点,只能进行点对点的数据传输,不支持多播和广播传输方式。
    3. 面向字节流
      TCP不像UDP一样那样一个个报文独立地传输,而是在不保留报文边界的情况下以字节流方式进行传输。
    4. 可靠传输
      对于可靠传输,判断丢包,误码靠的是TCP的段编号以及确认号。TCP为了保证报文传输的可靠,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。
    5. 提供拥塞控制
      当网络出现拥塞的时候,TCP能够减小向网络注入数据的速率和数量,缓解拥塞
    6. TCP提供全双工通信
      TCP允许通信双方的应用程序在任何时候都能发送数据,因为TCP连接的两端都设有缓存,用来临时存放双向通信的数据。当然,TCP可以立即发送一个数据段,也可以缓存一段时间以便一次发送更多的数据段(最大的数据段大小取决于MSS)

    3、UDP协议介绍

    UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。

    UDP协议的特点

    1. 面向无连接
      首先 UDP 是不需要和 TCP一样在发送数据前进行三次握手建立连接的,想发数据就可以开始发送了。并且也只是数据报文的搬运工,不会对数据报文进行任何拆分和拼接操作。
      具体来说就是:
      在发送端,应用层将数据传递给传输层的 UDP 协议,UDP 只会给数据增加一个 UDP 头标识下是 UDP 协议,然后就传递给网络层了
      在接收端,网络层将数据传递给传输层,UDP 只去除 IP 报文头就传递给应用层,不会任何拼接操作
    2. 有单播,多播,广播的功能
      UDP 不止支持一对一的传输方式,同样支持一对多,多对多,多对一的方式,也就是说 UDP 提供了单播,多播,广播的功能。
    3. UDP是面向报文的
      发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。因此,应用程序必须选择合适大小的报文
    4. 不可靠性
      首先不可靠性体现在无连接上,通信都不需要建立连接,想发就发,这样的情况肯定不可靠。
      并且收到什么数据就传递什么数据,并且也不会备份数据,发送数据也不会关心对方是否已经正确接收到数据了。
      再者网络环境时好时坏,但是 UDP 因为没有拥塞控制,一直会以恒定的速度发送数据。即使网络条件不好,也不会对发送速率进行调整。这样实现的弊端就是在网络条件不好的情况下可能会导致丢包,但是优点也很明显,在某些实时性要求高的场景(比如电话会议)就需要使用 UDP 而不是 TCP。
      在这里插入图片描述
      从上面的动态图可以得知,UDP只会把想发的数据报文一股脑的丢给对方,并不在意数据有无安全完整到达。
    5. 头部开销小,传输数据报文时是很高效的。
      在这里插入图片描述
      UDP 头部包含了以下几个数据:

    1.两个十六位的端口号,分别为源端口(可选字段)和目标端口
    2.整个数据报文的长度
    3.整个数据报文的检验和(IPv4 可选 字段),该字段用于发现头部信息和数据中的错误
    因此 UDP 的头部开销小,只有八字节,相比 TCP 的至少二十字节要少得多,在传输数据报文时是很高效的

    4、TCP/UDP协议对比

    以下是两者的对比图
    在这里插入图片描述

    5、上层的MQTT、HTTP、CoAP、DDS、AMQP、JMS

    1、MQTT

    1、MQTT的介绍

    MQTT (Message Queuing Telemetry Transport ),消息队列遥测传输,由IBM开发的即时通讯协议,相比来说比较适合物联网场景的通讯协议。MQTT协议采用发布/订阅模式,所有的物联网终端都通过TCP连接到云端,云端通过主题的方式管理各个设备关注的通讯内容,负责将设备与设备之间消息的转发。

    适用范围:在低带宽、不可靠的网络下提供基于云平台的远程设备的数据传输和监控。

    MQTT协议一般适用于设备数据采集到端(Device-》Server,Device-》Gateway),集中星型网络架构(hub-and-spoke),不适用设备与设备之间通信,设备控制能力弱,另外实时性较差,一般都在秒级。

    2、HTTP

    1、HTTP的介绍

    HTTP协议是典型的CS通讯模式,由客户端主动发起连接,向服务器请求XML或JSON数据。该协议最早是为了适用web浏览器的上网浏览场景和设计的,目前在PC、手机、pad等终端上都应用广泛,但并不适用于物联网场景。在物联网场景中其有三大弊端:

    1. 由于必须由设备主动向服务器发送数据,难以主动向设备推送数据。
    2. 安全性不高。
    3. 不同于用户交互终端如pc、手机,物联网场景中的设备多样化,对于运算和存储资源都十分受限的设备,http协议实现、XML/JSON数据格式的解析,都是不可能的任务。
      REST/HTTP(松耦合服务调用)

    REST/HTTP其实是互联网中服务调用API封装风格,物联网中数据采集到物联网应用系统中,在物联网应用系统中,可以通过开放REST API的方式,把数据服务开放出去,被互联网中其他应用所调用。

    适用范围:REST/HTTP主要为了简化互联网中的系统架构,快速实现客户端和服务器之间交互的松耦合,降低了客户端和服务器之间的交互延迟。因此适合在物联网的应用层面,通过REST开放物联网中资源,实现服务被其他应用所调用。

    3、CoAP

    1、CoAP的介绍

    CoAP (Constrained Application Protocol),受限应用协议,应用于无线传感网中协议。

    适用范围:CoAP是简化了HTTP协议的RESTful API,CoAP是6LowPAN协议栈中的应用层协议,它适用于在资源受限的通信的IP网络。

    4、DDS

    1、DDS的介绍

    DDS(Data Distribution Service for Real-Time Systems),面向实时系统的数据分布服务,这是大名鼎鼎的OMG组织提出的协议,其权威性应该能证明该协议的未来应用前景。

    适用范围:分布式高可靠性、实时传输设备数据通信。目前DDS已经广泛应用于国防、民航、工业控制等领域。

    点评:DDS很好地支持设备之间的数据分发和设备控制,设备和云端的数据传输,同时DDS的数据分发的实时效率非常高,能做到秒级内同时分发百万条消息到众多设备。DDS在服务质量(QoS)上提供非常多的保障途径,这也是它适用于国防军事、工业控制这些高可靠性、可安全性应用领域的原因。但这些应用都工作在有线网络下,在无线网络,特别是资源受限的情况下,没有见到过实施案例。

    5、AMQP

    1、AMQP的介绍

    AMQP(Advanced Message Queuing Protocol),先进消息队列协议,这是OASIS组织提出的,该组织曾提出OSLC(Open Source Lifecyle)标准,用于业务系统例如PLM,ERP,MES等进行数据交换。

    适用范围:最早应用于金融系统之间的交易消息传递,在物联网应用中,主要适用于移动手持设备与后台数据中心的通信和分析。

    XMPP协议(即时通信)

    6、JMS

    1、JMS的介绍

    JMS (Java Message Service)

    Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。

    6、几种协议的对比

    在这里插入图片描述
    在这里插入图片描述

    声明:部分内容参考:https://www.cnblogs.com/fundebug/p/differences-of-tcp-and-udp.html
    https://www.cnblogs.com/saryli/p/9742709.html

    展开全文
  • DDS的技术优势

    2021-01-27 11:33:11
    文章主要介绍了为什么选择DDS,DDS主要优势,DDS与其他物联网技术比较?不同协议的比较。 来自于dds-foundation.org,,由火龙果软件Anna译、推荐。DDS使用全局数据空间,允许应用程序在可靠性、实时性完全可控的情况下...
  • 为什么选择DDS

    2021-02-24 01:34:27
    文章主要介绍了为什么选择DDS,DDS主要优势,DDS与其他物联网技术比较?不同协议的比较。来自于dds-foundation.org,,由火龙果软件Anna译、推荐。OMG-DDS标准针对需要实时数据通信交换的高性能、高可扩展的工业物联网...
  • DDS和ROS中间件实现

    千次阅读 2018-07-30 15:17:49
    本文详细介绍了使用DDS实现和/或DDS的RTPS有线协议的动机,但总之,DDS是一个端到端的中间件,提供与ROS系统相关的功能,例如分布式发现(不像ROS那样集中1)并控制传输的不同“服务质量”选项。 DDS是一个行业标准...

    ROS 2和不同的DDS / RTPS供应商

    ROS 2构建在DDS / RTPS之上,作为其中间件,提供发现,序列化和传输功能。本文详细介绍了使用DDS实现和/或DDS的RTPS有线协议的动机,但总之,DDS是一个端到端的中间件,提供与ROS系统相关的功能,例如分布式发现(不像ROS那样集中1)并控制传输的不同“服务质量”选项。

    DDS是一个行业标准,已经被一系列供应商实现,例如RTI的实现Connext,以及ADLink的实现OpenSplice RTPS(又名DDSI-RTPS)是DDS用于通过网络进行通信的有线协议,并且还有不能满足完整的DDS API但为ROS 2提供了足够的功能的实现,例如eProsima的快速RTPS实现。

    ROS 2支持多种DDS / RTPS实现,因为在选择供应商/实现时,它不一定是“一刀切(one size fits all)”。在选择中间件实现时,您可能会考虑许多因素:许可等逻辑考虑因素或平台可用性或计算占用空间等技术因素。供应商可能会提供多个针对满足不同需求的DDS或RTPS实施。例如,RTI有一些其Connext实现的变化,其目的各不相同,例如专门针对微控制器而另一个针对需要特殊安全认证的应用(我们目前仅支持其标准桌面版本)。

    为了使用ROS 2的DDS / RTPS实现,需要创建“ROS中间件接口(ROS Middleware interface)”(又叫rmw接口或rmw)包,使用DDS或RTPS实现的API和工具实现抽象ROS中间件接口。实现和维护RMW包以支持DDS实现需要做很多工作,但支持几个实现对于确保ROS 2代码库不依赖于任何一个特定实现非常重要,因为用户可能希望根据需要切换不同实现版本以满足他们项目的需求。

    支持的RMW实现:

    Product name License RMW implementation Status
    eProsima Fast RTPS Apache 2 rmw_fastrtps_cpp Full support. Default RMW. Packaged with binary releases.
    RTI Connext commercial, research rmw_connext_cpp Full support. Support included in binaries, but Connext installed separately.
    RTI Connext(dynamic implementation) commercial, research rmw_connext_dynamic_cpp Support paused. Full support until alpha 8.*
    PrismTech Opensplice LGPL (only v6.4), commercial rmw_opensplice_cpp Partial support. Support included in binaries, but OpenSplice installed separately.
    OSRF FreeRTPS Apache 2 __ Partial support. Development paused.

    "Partial support" 表示没有实现rmw接口所需的一个或多个功能。

    有关使用多个RMW实现的实用信息,请参阅https://github.com/ros2/ros2/wiki/Working-with-multiple-RMW-implementations.

    展开全文
  • 文章主要介绍DDS不同的物联网、不同的协议DDS:正确的选择等相关内容。 来自于dds-foundation.org,由火龙果软件Anna译、推荐。专为消费级物联网(IoT)和工业级物联网设计的应用程序必须能够有效扩展和安全共享...
  • 文章主要介绍DDS高级数据中心接口取代了以消息为中心的编程和基本技术概念等相关内容。来自于dds-foundation.org,由火龙果软件Anna译、推荐。数据分发服务(DDS)是一个由对象管理组(OMG)发布的以数据为中心的...
  • 物联网通讯协议

    2018-12-27 11:23:46
    物联网的各种通讯协议介绍,包含MQTT、 DDS、 AMQP、XMPP、 JMS、 REST、 CoAP等协议。
  • 本次介绍ADI公司的数字频率合成(DDS)芯片——AD9850以及如何使用FPGA控制其输出正弦波。 本文分三个部分讲解:一是AD9850芯片介绍,包括基本引脚功能、驱动时序以及相关注意事项;二是基于FPGA的AD9850的驱动的...
  • 使用可靠多播与OPENDDS进行数据分发

    千次阅读 2018-08-22 18:35:18
    介绍 也许应用程序设计人员在创建分布式系统时面临的最关键决策之一是如何在感兴趣的各方之间交换数据。通常,这涉及选择一个或多个通信协议并确定向每个端点分派数据的最有效手段。实现较低级别的通信软件可能是...
  • 4.5 应用层协议 AMQP、JMS、REST/HTTP都...协议的简单介绍:  MQTT (Message Queuing Telemetry Transport ),消息队列遥测传输,IBM开发的一个即时通讯协议,现在成了OASIS的建议标准;  DDS(Data Distribu...
  • RTI产品应用军事介绍

    2018-10-17 15:12:19
    介绍RTI-DDS军事应用内容,重要问题解答,协议方面内容;
  • 单相智能电表(Modbus协议)

    千次阅读 2019-03-27 17:09:17
    今天我们将介绍单相智能电表(Modbus协议)的链接案例 一、使用产品 海创Box智能采集网关 串口服务器 (上海卓岚 4口 ZLAN5443A) modbus智能电表 (XT 微型RS485单相导轨电表220V DDS5188) 二、产品连接方式 三、产品...
  • 单相智能电表(DL/T645-2007协议)

    千次阅读 2019-03-26 17:56:25
    今天我们将介绍单相智能电表(DL/T645-2007协议)的链接案例 一、使用产品 海创Box智能采集网关 串口服务器 (上海卓岚 4口 ZLAN5443A) DL/T645-2007智能电表 (XT 微型RS485单相导轨电表220V DDS5188) 二、产品连接...
  • 本文主要介绍java网络协议相关知识,通过本文讲解,你可以明白: 1、IP、TCP、UDP的定义和特点是什么? 2、RPC与REST的定义和区别是什么? 3、XMPP、COAP、MOTT、DDS? 4、Java线程池中submit()和execute()方法...
  • 煤矿井下系统繁多,由于协议不统一,各系统之间难以互联互通,首先介绍了SDN、DDS等先进技术的优势,实现了采用DDS技术、SDN技术、分布式存储、分布式计算等技术搭建煤矿井下分布式智能网络平台的方案,提出了智能交换机...
  • 实时发布 - 订阅(RTPS)

    千次阅读 2019-01-02 13:44:15
    实时发布 - 订阅(RTPS)     RTPS协议由Real-Time Innovations,Inc。... 实时发布 - 订阅线协议DDS互操作性线协议(DDSI): http ://www.omg.org/spec/DDSI/ 完整的OMG DDS标准规范: ht...
  • 1.介绍 ...RTPS:Real Time Publish Subscribe,是DDS标准中的通讯协议部分。其实ROS 2用到的DDS就是这个部分,所以Fast RTPS足够支持ROS 2的需求。简单来说Fast RTPS就是ROS 2中用来订阅发布消息...
  • 3.3.3 单总线通信协议 3.3.4 单总线命令编程 3.4 spi总线 3.4.1 spi总线的接口信号 3.4.2 spi总线的工作原理 3.4.3 spi总线在8051单片机系统中的应用 3.5 usb总线 3.5.1 usb系统硬件 3.5.2 usb系统的软件...
  • 最新版HDMI 标准中又增添了新特性,如音频回传通道(ARC)、3D显示格式以及对消费电子控制(CEC)协议的改进。当然,消费者都希望他们新买的家庭影院设备能具备所有这些HDMI新特性,并且物美价廉、操控简易。因此,家庭影院...
  • msp430书稿开发板

    2011-03-17 21:46:39
    1.2 片内主要模块介绍 - 12 - 1.2.1时钟模块 - 13 - 1.2.1.1 MSP430F449的三个时钟源可以提供四种时钟信号 - 13 - 1.2.1.2 MSP430F449时钟模块寄存器 - 14 - 1.2.1.3 FLL+模块应用举例 - 16 - 1.2.2 低功耗结构 - 17...

空空如也

空空如也

1 2
收藏数 27
精华内容 10
关键字:

dds协议介绍