精华内容
下载资源
问答
  • KELONGPowersoft交流电源监控管理系统前端智能设备通讯协议通讯协议内部标准,山特UPS串口通讯协议
  • UPS通讯协议

    2013-10-22 19:41:29
    为了学习,我们来到这里。本文档是为了学习研究交流只用,版权归EATON所有,反对以此牟利。
  • Redis之通讯协议

    2021-02-20 12:36:29
    交流什么、怎样交流及何时交流,都必须遵循某种互相都能接受的规则。这个规则就是通信协议。 Redis 使用协议 连接: 在 Redis 中客户端与服务端之间的通信协议是在TCP协议之上构建的。 数据格式: Redis 制定了...

    RESP 协议

    概述

    通信协议

    通信协议是指双方实体完成通信或服务所必须遵循的规则和约定。通过通信信道和设备互连起来的多个不同地理位置的数据通信系统,要使其能协同工作实现信息交换和资源共享,它们之间必须具有共同的语言。交流什么、怎样交流及何时交流,都必须遵循某种互相都能接受的规则。这个规则就是通信协议。

    Redis 使用协议

    1. 连接: 在 Redis 中客户端与服务端之间的通信协议是在TCP协议之上构建的。
    2. 数据格式: Redis 制定了RESP(REdis Serialization Protocol,Redis 序列化协议)实现客户端与服务端的正常交互,这种协议简单高效、既能够被机器解析、又容易被人类识别。

    RESP 协议

    该协议是专门为 Redis 设计的,可以序列化不同的数据类型,如integers(整数),strings(字符串),arrays(数组)。它还使用了一个特殊的类型来表示errors(错误)。请求以字符串数组的形式来表示要执行命令的参数从客户端发送到 Redis 服务器。Redis 使用command-specific(命令特有)数据类型作为回复。
    RESP协议是二进制安全的,并且不需要处理从一个进程传输到另一个进程的块数据的大小,因为它使用prefixed-length(前缀长度)的方式来传输块数据的。 需要注意的是该协议是仅用于 客户端 - 服务器(Client-Server)的通信。 Redis 集群使用不同的二进制协议来交换节点之间的消息。

    发送命令格式

    RESP 的规定一条命令的格式如下,CRLF 代表\r\n

    *< 参数数量 > CRL
    $< 参数 1 的字节数量 > CRLF
    < 参数 1> CRLF
    ...
    $< 参数 N 的字节数量 > CRLF
    < 参数 N> CRLF
    复制代码

    set hello world 这条命令举例

    ## 参数数量为3个,因此第一行为:
    *3
    ## 参数字节数分别是355,因此后面几行为:
    $3
    SET
    $5
    hello
    $5
    world
    复制代码

    需要注意的是,上面只是格式化显示的结果,实际传输格式为如下代码

    *3\r\n$3\r\nSET\r\n$5\r\nhello\r\n$5\r\nworld\r\n
    复制代码

    响应结果格式

    Redis 的返回结果类型分为以下五种:

    1. 状态回复:在RESP中第一个字节为+
    2. 错误回复:在RESP中第一个字节为-
    3. 整数回复:在RESP中第一个字节为
    4. 字符串回复:在RESP中第一个字节为$
    5. 多条字符串回复:在RESP中第一个字节为*五种数据结构

    redis-cli只能看到最终的执行结果(例如执行set hello world,返回结果是OK,并没有看到类似于+符合),那是因为redis-cli本身就是按照RESP进行结果解析的,所以看不到中间结果,redis-cli.c 源码对命令结果的解析结构如下:

    static sds cliFormatReplyTTY(redisReply *r, char *prefix) {
    sds out = sdsempty();
    switch (r->type) {
    case REDIS_REPLY_ERROR:
    //  处理错误回复
    case REDIS_REPLY_STATUS:
    //  处理状态回复
    case REDIS_REPLY_INTEGER:
    //  处理整数回复
    case REDIS_REPLY_STRING:
    //  处理字符串回复
    case REDIS_REPLY_NIL:
    //  处理空
    case REDIS_REPLY_ARRAY:
    //  处理多条字符串回复
    return out;
    }
    复制代码

    那好哥哥要问了,怎么才能看到 Redis 服务端返回的“真正”结果呢?可以使用 nc 命令、telnet 命 令、甚至写一个 socket 程序进行模拟。以nc命令举个栗子

    ## 连接到Redis
    nc 127.0.0.1 6379
    ## 执行set命令
    set hello world
    ## 状态回复返回
    +OK
    ## 执行一个不存在的命令
    sethx
    ## 错误回复
    -ERR unknown command 'sethx'
    ## 执行加法操作
    incr counter
    ## 整数回复
    :1
    ## 执行取值操作
    get hello
    ## 字符串回复
    $5
    world
    ## 批量设置多个键值对
    mset java jedis python redis-py
    ## 批量获取mget
    mget java python
    ## 返回结果条数
    *2
    ##字符串回复
    $5
    jedis
    $8
    redis-py
    ## 如果key不存在,返回的就是 $-1
    get not_exist
    ## 无论是字符串回复还是多条字符串回复,如果有nil值,那么会返回 $-1。
    $-1
    复制代码

    总结

    注意点

    由于上面讲的协议都是基于请求-响应,但是需要排除以下功能点:

    1. Redis 支持管道操作,不熟悉的好哥哥们可以看看Redis Pipeline 这一篇就够了(整个系列基本基础都有了)。所以客户可以一次发送多个命令,稍后等待回复。
    2. 当 Redis 客户端订阅 Pub/Sub模式的通道时,协议会改变语义变成推送协议,也就是说,客户端不再需要发送命令,因为服务器一旦收到消息就会自动向客户端发送该新消息(对于订阅了通道的客户端)。
    3. Redis 集群使用的是不同的二进制协议来交换节点之间的消息,并不是该协议。

    Gossip协议

    概述

    确定不了解一下 Redis cluster 的通讯协议吗?其实这一块可以选择不弄的,主要吧cluster 的通讯协议有一个别名,叫做疫情传播算法或者流行病协议。受疫情影响,所以就还是一起来了解一下,因为本身我对这一块了解的还是比较少的(我是个只会CRUD 初级攻城狮)。

    首先呢,cluster 的通讯协议使用的是Gossip 协议。上面也说了,aka 流行病协议疫情传播算法。为什么这么叫等下看看Gossip 协议对应的原理好哥哥们就懂了。

    Gossip协议是一个去中心化思路的分布式通信协议。Gossip 协议于 1987 年在ACM上发表的论文Epidemic Algorithms for Replicated Database Maintenance中被提出,主要用在分布式数据库系统中各个副本节点间的数据同步。这种场景的一个最大特点就是组成网络的节点都是对等的,网络中即使有的节点因宕机而重启,或有新节点加入,但经过一段时间后,这些节点的状态也会与其他节点达成一致,也就是说,Gossip天然具有分布式容错的优点。

    另外Gossip是一个带冗余的容错算法,是一个最终一致性算法。虽然无法保证在某个时刻所有节点状态一致,但可以保证在最终(最终是一个现实中存在,但理论上无法证明的时间点)所有节点一致。实际上Gossip可以用于众多能接受最终一致性的领域,比如说失败检测路由同步Pub/Sub等。但是Gossip的缺点也很明显,冗余通信会对网路带宽、CPU资源造成很大的负载,而这些负载又受限于通信频率,该频率又影响着算法收敛的速度,因此,针对不同的应用场景,也有很多的优化方法。

    Gossip 传播消息的过程主要如下图:

    传播

    注意点

    1. Gossip 过程是由一个种子节点(可以理解成“毒王”)发起,当一个种子节点有状态需要更新到网络中的其他节点时,它会随机的选择周围几个节点散播消息,收到消息的节点也会重复该过程,直至最终网络中所有的节点都收到了消息。
    2. Gossip 过程是异步的,也就是说发消息的节点不会关注对方是否收到,即不等待响应。不管对方有没有收到,它都会每隔 1 秒(假设)向周围节点发消息。异步是它的优点,而消息冗余则是它的缺点。

    Cluster 中的 Gossip

    Gossip 协议工作原理就是节点彼此不断通信交换信息,一段时间后所有的节点都会知道集群完整的信息。在cluster 中,信息的种类分为ping消息pong消息meet消息fail消息等(下面会介绍这几种消息), 整体的节点通讯的过程大概如下:

    1. 集群中的每个节点都会单独开辟一个TCP通道,用于节点之间彼此通信,通信端口号在基础端口上加10000
    2. 每个节点在固定周期内通过特定规则选择几个节点发送ping消息。
    3. 接收到ping消息的节点用pong消息作为响应。

    集群中每个节点通过一定规则挑选要通信的节点,每个节点可能知道全部节点,也可能仅知道部分节点,只要这些节点彼此可以正常通信,最终它们会达到一致的状态。当节点出故障、新节点加入、主从角色变化、槽信息变更等事件发生时,通过不断的ping/pong消息通信,经过一段时间后所有的节点都会知道整个集群全部节点的最新状态,从而达到集群状态同步的目的(最终一致性)。

    Gossip 消息

    Gossip协议的主要职责就是信息交换。信息交换的载体就是节点彼此发送的Gossip消息,常用的Gossip消息就是上面提到的那四种。在cluster 中的每个节点都维护了一份自己视角下的当前整个集群的状态,主要包括:

    • 当前集群状态。

    • 集群中各节点所负责的 slots信息,及其migrate状态。

    • 集群中各节点的master-slave状态。

    • 集群中各节点的存活状态及怀疑fail状态。 节点信息通讯模式如下图:

    gossip 消息

    • meet消息用于通知新节点加入。消息发送者通知接收者加入到当前集群,meet消息通信正常完成后,接收节点会加入到集群中并进行周期性的 ping、pong 消息交换。

    • ping消息是集群内交换最频繁的消息,集群内每个节点每秒向多个其他节点发送ping消息,用于检测节点是否在线和交换彼此状态信息。ping消息发送封装了自身节点和部分其他节点的状态数据。

    • pong消息是当接收到pingmeet消息时,作为响应消息回复给发送方确认消息正常通信。pong 消息内部封装了自身状态数据。节点也可以向集群内广播自身的pong消息来通知整个集群对自身状态进行更新。

    • fail消息是当节点判定集群内另一个节点下线时,会向集群内广播一个fail消息,其他节点接收到fail消息之后把对应节点更新为下线状态。

    节点选择

    上面已经把常用的消息弄清楚了,在注意点中也提到了Gossip是随机来选择节点。那cluster 是怎么选择节点的呢?

    cluster集群下节点通信采用固定频率(定时任务每秒执行 10 次)。因此节点每次选择需要通信的节点列表变得非常重要。通信节点选择过多虽然可以做到信息及时交换但成本过高。节点选择过少会降低集群内所有节点彼此信息交换频率,从而影响故障判定、新节点发现等需求的速度。因此cluster集群的Gossip协议需要兼顾信息交换实时性和成本开销。通讯过程如下图:

    节点选择
    集群内每个节点维护定时任务默认每秒执行10次,每秒会随机选取5个节点找出最久没有通信的节点发送 ping 消息,用于保证Gossip信息交换的随机性。每100毫秒都会扫描本地节点列表,如果发现节点最近一次接受pong消息的时间大于cluster_node_timeout/2,则立刻发送ping消息,防止该节点信息太长时间未更新。

    关于这个定时任务是不是很熟悉,在 图解 Redis 哨兵模式 这一篇中就是用了三个定时任务来监控节点的状态,有不熟悉的好哥哥可以翻一翻。

    总结

    今天这篇的话针对于cluster的通讯协议写的也不是很深,主要理解一下cluster是怎么通讯的。

    展开全文
  • 基于DSP的CANopen通讯协议的实现、电子技术,开发板制作交流
  • 这是一个串行口RS485通讯协议通讯协议实例,遵循modbus规范亲测好用,欢迎大家下载交流学习;这是一个串行口RS485通讯协议通讯协议实例,遵循modbus规范亲测好用,欢迎大家下载交流学习;这是一个串行口RS485通讯...
  • 这是一个(完整w这是一个(完整word版)modbus通讯协议实例,亲测好用,欢迎大家下载交流
  • SPI通讯协议总结

    2019-05-01 00:26:54
    (资料来源于网上,不足之处欢迎指正,技术无边,多多交流) 1、什么是SPI? SPI是串行外设接口(Serial Peripheral Interface)的缩写。是 Motorola 公司推出的一种同步串行接口技术,是一种高速的,全双工,同步的...

    (资料来源于网上,不足之处欢迎指正,技术无边,多多交流)
    1、什么是SPI?
    SPI是串行外设接口(Serial Peripheral Interface)的缩写。是 Motorola 公司推出的一种同步串行接口技术,是一种高速的,全双工,同步的通信总线。

    2、SPI优点
    支持全双工通信
    通信简单
    数据传输速率块

    3、缺点
    没有指定的流控制,没有应答机制确认是否接收到数据,所以跟IIC总线协议比较,在数据,可靠性上有一定的缺陷。

    4、特点
    1):高速、同步、全双工、非差分、总线式
    2):主从机通信模式

    5、协议通信时序详解
    1):SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共
    有的,它们是SDI(数据输入)、SDO(数据输出)、SCLK(时钟)、CS(片选)。
    (1)SDO/MOSI – 主设备数据输出,从设备数据输入;
    (2)SDI/MISO – 主设备数据输入,从设备数据输出;
    (3)SCLK – 时钟信号,由主设备产生;
    (4)CS/SS – 从设备使能信号,由主设备控制。当有多个从设备的时候,因为每个从设 备上都有一个片选引脚接入到主设备机中,当我们的主设备和某个从设备通信时将需 要将从设备对应的片选引脚电平拉低或者是拉高,原理图的连接如下图所示。

    在这里插入图片描述

    6、SPI通信有4种不同的模式,不同的从设备可能在出厂是就是配置为某种模式,这是不能改变的;但我们的通信双方必须是工作在同一模式下,所以我们
    可以对我们的主设备的SPI模式进行配置,通过CPOL(时钟极性)和CPHA(时钟相位)来控制我们主设备的通信模式,具体如下:
    Mode0:CPOL=0,CPHA=0
    Mode1:CPOL=0,CPHA=1
    Mode2:CPOL=1,CPHA=0
    Mode3:CPOL=1,CPHA=1

    例如:
    CPOL=0,CPHA=0:此时空闲态时,SCLK处于低电平,数据采样是在第1个边沿,也就是SCLK由低电平到高电平的跳变,所以数据采样是在上升沿,数据发送是在下降沿。

    CPOL=0,CPHA=1:此时空闲态时,SCLK处于低电平,数据发送是在第1个边沿,也就是SCLK由低电平到高电平的跳变,所以数据采样是在下降沿,数据发送是在上升沿。

    CPOL=1,CPHA=0:此时空闲态时,SCLK处于高电平,数据采集是在第1个边沿,也就是SCLK由高电平到低电平的跳变,所以数据采集是在下降沿,数据发送是在上升沿。

    CPOL=1,CPHA=1:此时空闲态时,SCLK处于高电平,数据发送是在第1个边沿,也就是SCLK由高电平到低电平的跳变,所以数据采集是在上升沿,数据发送是在下降沿。

    需要注意的是:我们的主设备能够控制时钟,因为我们的SPI通信并不像UART或者IIC通信 那样有专门的通信周期,有专门的通信起始信号,有专门的通信结束信号;所以我们的 SPI协议能够通过控制时钟信号线,当没有数据交流的时候我们的时钟线要么是保持高电平要么是保持低电平。

    6、内部工作机制
    SSPSR 是 SPI 设备内部的移位寄存器(Shift Register). 它的主要作用是根据 SPI 时钟信号状态, 往 SSPBUF 里移入或者移出数据, 每次移动的数据大小由 Bus-Width 以及Channel-Width所决定。
    在这里插入图片描述

    展开全文
  • (IM)即时通讯协议

    千次阅读 2017-04-05 11:35:30
    1、即时通讯技术 即时通讯(IM:Instant Messaging):又称实时通讯,支持用户在线实时交谈,允许两人或多人使用网络实时的传递文字消息、文件、语音与视频交流。...它们最大的区别在于各自通讯协议的实现,所以

    转载自点击打开链接

    1、即时通讯技术

    • 即时通讯(IM:Instant Messaging):又称实时通讯,支持用户在线实时交谈,允许两人或多人使用网络实时的传递文字消息、文件、语音与视频交流。

    • 即时通讯在开发中使用的场景有许多,如 AOL、Yahoo IM、MSN、QQ 以及微信等聊天软件,在电商 APP 集成买家与卖家的实时沟通等。它们最大的区别在于各自通讯协议的实现,所以即时通讯技术的核心在于它的传输协议,协议是用来说明信息在网络上如何传输。

    • 如果有了统一的传输协议,那么应当可以实现各个 IM 之间的直接通讯,为了创建即时通讯的统一标准,人们多次努力,试图统一各大主要 IM 供应商的标准(AOL、Yahoo 及 Microsoft),但无一成功,且每一种 IM 仍然继续使用自己所拥有的协议。目前已经出现过的 IM 协议包括:

      • SIP :IETF 的对话初始协议,是建立 VOIP 连接的 IETF 标准,而 VOIP 就是网络电话。
      • SIMPLE:即时通讯对话初始协议和表示扩展协议。
      • APEX :应用交换协议。
      • PRIM :显示和即时通讯协议。
      • XMPP :基于 XML 且开放的可扩展通讯和表示协议,常称为 Jabber 协议。
    • 当前实现即时通讯的方案:

      • XMPP :可扩展通讯和表示协议。
      • EaseMob:环信,提供即时通信的一个第三平台,是在 XMPP 的基础上进行的二次开发。

    2、XMPP

    2.1 XMPP 简介

    • 1、XMPP 诞生的由来

      • 设计一款全世界都使用的即时通讯协议,无论使用什么即时通讯软件,都可以互联互通。
    • 2、XMPP 起源

      • 最初 XMPP 作为一个框架开发,目标是支持企业环境内的即时消息传递和联机状态应用程序。

      • XMPP 的前身是 Jabber(1998 年),是一个开源组织定义的网络即时通信协议。

      • XMPP 是一个分散型通信网络,这意味着,只要网络基础设施允许,任何 XMPP 用户都可以向其他任何 XMPP 用户传递消息。

      • 多个 XMPP 服务器也可以通过一个专门的 “服务器-服务器” 协议相互通信,提供了创建分散型社交网络和协作框架的可能性。

      • XMPP 协议曾经是 Google 力推的即时通信协议,其代表作品是 GTalk。

    • 3、XMPP 概述

      • XMPP:The Extensible Messaging and Presence Protocol,可扩展通讯和表示协议,是一种基于 XML 的即时通讯协议,用于即时消息以及在线现场探测。

        • 它继承了在 XML(可扩展标记语言)环境中灵活的发展性,这表明 XMPP 是可扩展的。
      • XMPP 规范了用于即时通信在网络上的数据传输格式,它的核心是 XML 流传输协议的定义,可用于服务类实时通讯、表示和需求,响应服务中的 XML 数据元流式传输。

        • 使得 XMPP 能够在一个比以往网络通信协议更规范的平台上。借助于 XML 易于解析和阅读的特性,使得 XMPP 的协议能够非常漂亮。

        • XMPP 包含了针对服务器端的软件协议,使之能与另一个进行通话,这使得开发者更容易建立客户应用程序或给一个配置好的系统添加功能。

        • 促进服务器之间的准即时操作。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其操作系统和浏览器不同。

      • XMPP 是一个典型的 C/S 架构,基本的网络形式是客户端通过 TCP/IP 连接到服务器,通过 Socket 建立连接(目的是为了保持长连接),然后在之上传输 XML 流。

      • XMPP 以 Jabber 协议为基础,而 Jabber 是即时通讯中常用的开放式协议。

      • XMPP 的技术规格已被定义在 RFC 3920RFC 3921,文档定义了登录,退出,获取好友,发送消息等等的 XML 数据传输协议。

      • XMPP 的扩展协议 Jingle 使得其支持语音和视频,目前 iOS 尚不支持。

    2.2 XMPP 基本结构

    • C/S 和 P2P 基本结构图

      IM1

    • XMPP 是一个典型的 C/S 架构。

      • 而不是像大多数即时通讯软件一样,使用 P2P 客户端到客户端的架构。

      • 也就是说在大多数情况下,当两个客户端进行通讯时,他们的消息都是通过服务器传递的。

      • 优点:采用这种架构,主要是为了简化客户端,将大多数工作放在服务器端进行。

    • XMPP 中定义了三个角色:客户端,服务器,网关。

      • 通信能够在这三者的任意两个之间双向发生。

      • 服务器:同时承担了客户端信息记录,连接管理和信息的路由功能。

      • 网关:承担着与异构即时通信系统的互联互通,异构系统可以包括 SMS(短信),MSN,ICQ 等。

      • 基本的网络形式,单客户端通过 TCP/IP 连接到单服务器,然后在之上传输 XML 流。

    2.3 XMPP 工作原理

    • 节点连接到服务器。

    • 服务器利用本地目录系统中的证书对其认证。

    • 节点指定目标地址,让服务器告知目标状态。

    • 服务器查找、连接并进行相互认证。

    • 节点之间进行交互。

      IM2

    2.4 XMPP 传输内容

    • XMPP 应用传输的是与即时通讯相关的指令。

      • XMPP 传输的即时通讯指令的逻辑与以往相仿,只是协议的形式变成了 XML 格式的纯文本。这不但使得解析容易了,人也容易阅读了,方便了开发和查错。

      • XMPP 的核心部分就是一个在网络上分片段发送 XML 的流协议。这个流协议是 XMPP 的即时通讯指令的传递基础,也是一个非常重要的可以被进一步利用的网络基础协议,可以说 XMPP 用 TCP 传的是 XML 流。

    • XMPP 是一种类似于 HTTP 协议的一种数据传输协议。

      • 其过程就如同 “解包装 --> 包装” 的过程,只需要理解其接收的类型及返回的类型,便可以很好的利用 XMPP 来进行数据通讯。
    • XMPP 核心文件是基于 TCP 的 XML 流的传输,XMPPFrame 框架是通过代理的方式实现消息传递的。

    • XMPP 客户端获取到服务器发送过来的好友消息,客户端需要对 XML 进行解析,使用的解析框架的 KissXML 框架,而不是 NSXMLParser/GDataXML。

    • 为了简化开发,XMPP 的引用程序通常会将 XMPPStream 放置在 AppDelegate 中,以便于全局访问。

    2.5 XMPP JID

    • 每个 XMPP 客户端用户必须拥有一个全局惟一标识符。

      • 基于历史原因,这些标识符称为 Jabber ID 或 JID。鉴于协议的分布式特征,JID 应包含联系用户所需的所有信息,JID 的结构类似于电子邮件地址,但不要求 JID 同时也是有效的电子邮件收件人。
    • 客户端和服务器节点,被统称为 XMPP 实体,都拥有 JID。例如:SomeCorp 公司的员工 John Doe 可能拥有 JID:用户名@服务器名称

      • John.Doe@somecorp.com,其中 somecorp.com 是 SomeCorp 公司的 XMPP 服务器的地址,John.Doe 是 John Doe 的用户名。

    2.6 XMPP 的优缺点

    • 1、优点

      • 开放:XMPP 协议是自由,开放,公开的,并且易于了解。而且在客户端,服务器,组件,源码库等方面都已经各自有多种实现。
      • 标准:互联网工程工作小组(IETF)已经将 Jabber 的核心 XML 流协议以 XMPP 之名,正式列为认可的实时通信及 Presence 技术。而 XMPP 的技术规格已被定义在 RFC 3920 及 RFC 3921。任何 IM 供应商在遵循 XMPP 协议下,都可与 Google Talk 实现连接。
      • 证实可用:第一个 Jabber(现在 XMPP)技术是 Jeremie Miller 在 1998 年开发的,现在已经相当稳定,数以百计的开发者为 XMPP 技术而努力。今日的互联网上有数以万计的 XMPP 服务器运作著,并有数以百万计的人们使用 XMPP 实时传讯软件。
      • 分布式:XMPP 网络的架构和电子邮件十分相像。XMPP 核心协议通信方式是先创建一个 stream,XMPP 以 TCP 传递 XML 数据流,没有中央主服务器。任何人都可以运行自己的 XMPP 服务器,使个人及组织能够掌控他们的实时传讯体验。
      • 安全:任何 XMPP 协议的服务器可以独立于公众 XMPP 网络(例如在企业内部网络中),而使用 SASL 及 TLS 等技术的可靠安全性,已自带于核心 XMPP 技术规格中。
      • 可扩展:XML 命名空间的威力可使任何人在核心协议的基础上建造客制化的功能。为了维持通透性,常见的扩展由 XMPPStandards Foundation。
      • 弹性佳:XMPP 除了可用在实时通信的应用程序,还能用在网络管理、内容供稿、协同工具、文件共享、游戏、远程系统监控等。
      • 多样性:用 XMPP 协议来建造及布署实时应用程序及服务的公司及开放源代码计划分布在各种领域。用 XMPP 技术开发软件,资源及支持的来源是多样的,使得使你不会陷于被 “绑架” 的困境。
    • 2、缺点

      • 数据负载太重:随着通常超过 70% 的 XMPP 协议的服务器的数据流量的存在和近 60% 的被重复转发,XMPP 协议目前拥有一个大型架空中存在的数据提供给多个收件人。新的议定书正在研究,以减轻这一问题。
      • 没有二进制数据传输:XMPP 协议的方式被编码为一个单一的长的 XML 文件,因此无法提供修改二进制数据。因此, 文件传输协议一样使用外部的 HTTP。如果不可避免,XMPP 协议还提供了带编码的文件传输的所有数据使用的 Base64。至于其他二进制数据加密会话(encrypted conversations)或图形图标(graphic icons)以嵌入式使用相同的方法。

    2.7 XMPP 开发架构

    3、EaseMob 环信

    3.1 环信简介

    • 环信是一个第三平台,提供即时通信(IM:Instant Messaging)的服务。

    • 环信使用的是 XMPP 协议,它是在 XMPP 的基础上进行的二次开发,对服务器 Openfire 和客户端进行功能模型的添加和客户端 SDK 的封装。

    • 环信的本质还是使用 XMPP,基于 Socket 的网络通信,在网络上传输的数据也是 XML。

    • 环信内部实现了数据缓存,会把聊天记录添加到数据库,把附件(如音频文件,图片文件)下载到本地,使程序员更多时间是花到用户即时体验上。

    • 环信内部已经实现了视频,音频,图片,其它附件发送功能。

    • 环信使用公司可以节约时间成本,不需要公司内部搭建服务器,环信日活动量在 30 万以下,永远免费。

    • 客户端的开发,使用环信 SDK 比使用 XMPPFramework 更简洁方便。

    • 公司如要开发即时通讯软件,建议首选环信,环信占用市场份额较大。

    3.2 环信开发架构

    • 开发架构:

      IM4

    • 前提准备:

      • 注册成为环信开发者

      • 在开发者后台创建 APP 获取 Key。

      • 下载官方 SDK

      • 官方 开发文档

      • 根据官网导入 SDK 和相应依赖,初始化应用。

    4、XMPP Openfire 服务器的搭建

    5、XMPP 的使用

    6、EaseMob 环信的使用

    展开全文
  • 哇呼IM即时通讯协议

    2020-06-30 11:47:17
    随着即时通讯(IM : Instant Message)技术的发展,现在即时通讯软件已经占据主流地位,这种技术属于一种终端技术,允许两人或多人使用网路即时bai的传递文字讯息、档案、语du音与视频交流。聊天一直是网民们上网的...

    简介

    随着即时通讯(IM : Instant Message)技术的发展,现在即时通讯软件已经占据主流地位,这种技术属于一种终端技术,允许两人或多人使用网路即时bai的传递文字讯息、档案、语du音与视频交流。聊天一直是网民们上网的主要活动之一,网上聊天的主要工具已经从初期的聊天室、论坛变为以MSN、OICQ(又称QQ)为代表的即时通讯软件。

    它是继电子邮件、Web技术之后的第三大互联网应用。按照IM即时通讯产品的主要使用人群的不同,IM即时通讯产品大致上可分为个人级即时通讯产品和企业级即时通讯产品。

    XMPP

    XMPP(Extensible Messageing and Presence Protocol:可扩展消息与存在协议)是目前主流的四种IM(IM:instant messaging,即时消息)协议之一,而哇呼正是使用了XMPP协议。

    XMPP中定义了三个角色,客户端,服务器,网关,服务器同时承担了客户端信息记录,连接管理和信息的路由功能。网关承担着与异构即时通信系统的互联互通。通信能够在这三者的任意两个之间双向发生

    XMPP的优势
    • 分布式
      XMPP的核心协议通信方式是创建一个stream, XMPP 协议的所有消息都是 XML 格式的,这是 XMPP 协议的另一个充满历史意味的选择,这意味着没有中央服务器。任何人都可以运行自己的XMPP服务器,使个人及组织可以掌控他们的实施传讯体验
    • 安全
      任何XMPP协议的服务器可以独立于公众XMPP网络(例如企业内部网络中),而SASL(1)及TLS(2)等技术的可靠安全性,已经自带与XMPP的核心技术规格中
      XMPP–>SASL–>TLS–>TCP–>IP
      • (1)SASL全称Simple Authentication and Security Layer,是一种用来扩充C/S模式验证能力的机制。在Postfix可以利用SASL来判断用户是否有权使用转发服务,或是辨认谁在使用你的服务器。
      • (2)安全传输层协议(TLS)用于在两个通信应用程序之间提供保密性和数据完整性。它由两部分组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)。
    • 可扩展
      XML命名空间的威力可以使任何人在核心协议的基础上建造客制化的功能
    • 弹性佳
      XMPP除了可用在实时通信的应用程序,还能用在网络管理、内容供稿、协同工具、文件共享、游戏、远程系统监控等,应用范围相当广泛。
    展开全文
  • java技术--通讯协议

    2019-08-30 16:59:05
    3.交流什么、怎样交流及何时交流,都必须遵循某种互相都能接受的规则,这个规则就是通信协议 4.简单地理解为各计算机之间进行相互会话所使用的共同语言 5.工业常用的仪表通信协议主要有3种 (1)modbus通信协议:...
  • 串口(USART)通信-串口通讯协议简介 物理层:规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输。其实就是硬件部分。 协议层:协议层主要规定通讯逻辑,统一收发双方的数据打包、解包...
  • Flash Socket的基本通讯协议流程例子

    千次阅读 2010-07-25 16:45:00
    不过后来发现大家比较感兴趣的,不是具体的通讯协议,而且一些关于通讯的各种技术解决问题。呵呵。希望有继续可以和大家继续交流。大家共同前进。而我自己以后也会陆续贴出自己工作上遇到的问题(例如我自己现在...
  • 随着即时通讯(IM : Instant Message)技术的发展,现在即时通讯软件已经占据主流地位,这种技术属于一种终端技术,允许两人或多人使用网路即时bai的传递文字讯息、档案、语du音与视频交流。聊天一直是网民们上网的...
  • 通讯协议是通讯的双方或多方在交流时遵守的规矩,包括谁先发起通讯,先交流什么,后交流什么,一方如何问,另一方如何答等。在这里通迅的双方指的是读写器和卡片。  首先是谁先发起通讯,很显然有两种,读写器先...
  • 通讯协议是通讯的双方或多方在交流时遵守的规矩,包括谁先发起通讯,先交流什么,后交流什么,一方如何问,另一方如何答等。在这里通迅的双方指的是读写器和卡片。  首先是谁先发起通讯,很显然有两种,读写器先...
  • 前序了解计算机网络基础理论对深入学习网络互联、网络服务器和网络安全都是至关重要的,这部分内容往往枯燥难懂,今天作者以问答作序,形象讲解一下网络通讯协议,希望对大家以后的学习提供帮助。问一:什么是网络...
  • 一直理解的dubbo是作为服务器治理中间件,实现服务之间的远程通信,他的优势是,把服务和... 但是,常见的RPC通讯协议,相比较webservice等,各自的性能比较是如何的呢?  感觉还是测试一下才会更清楚一点,所以找
  • 大多数及时通讯协议已经超过了作为技术工具的 Tcp/Ip 之上的,通用的通信方式。 是现代人通信交流的象征。被大多数人认可。 2.XMPP协议 XMPP(Extensible Messageing and Presence Protocol:可扩展消息与存在协议)...
  • 本文提供这样一种方法:FreeRTOS中串口接收数据中断,然后通过队列将数据传递给任务A,在任务A中对数据进行处理,串口使用的通讯协议为自定义。 依次给出了串口的初始化,中断服务函数;任务A,队列创建的代码;由于...
  • 把这些手机号通通添加到微信去,再然后吧你所提供的客户拉倒您所建立好的交流群里去,一个群40人,群里都是可需所求的客户,它既可以一对多,也可以多对多的精准营销。这样不仅省去了大量时间,...
  • 通讯协议是通讯的双方或多方在交流时遵守的规矩,包括谁先发起通讯,先交流什么,后交流什么,一方如何问,另一方如何答等。在这里通迅的双方指的是读写器和卡片。 首先是谁先发起通讯,很显然有两种,读写器先发言...
  • 在上一章我们做出来一个最基础的demo后,已经可以初步实现Server和Client之间的信息交流了~ 这一章我会介绍一下怎么在Server和Client之间实现一个简单的通讯协议,从而增强整个信息交流过程的稳定性。 在Server和...
  • 这一章我会介绍一下怎么在Server和Client之间实现一个简单的通讯协议。从而增强整个信息交流过程的稳定性。 在Server和client的交互过程中,有时候非常难避免出现网络波动,而在通讯质量较差的时候,Client有...
  • 通讯协议是使通过通信信道和设备互连起来的多个不同地理位置的数据通信系统能协同工作并实现信息交换和资源共享的共同语言,即交流过程中都必须遵循某种互相都能接受的规则。在消防系统中常见的通信协议主要有RS-232...
  • SOAP就是你们之间交流协议,负责把你所需要表达的意思写在信纸上,同时也负责让对方能够看得懂你的信。关soap将信息进行XML的序列化后,再用http协议的方式再打包进行传送,传送的方式还是tcp或者udp。做个比喻就...
  • 对msn认证、发送即时消息、MSN客户端ID、保持连接、MSN音视频交流过程的详细描述。不保证微软后来没有更改相关内容
  • 动物电子耳标阅读器|识读器|读卡器L8600系列Modbus RTU通讯协议与二次开发说明适用于L8600-S-02、L8600-R-02,更多MODBUS TCP协议资料欢迎交流! 出厂默认配置: 从机地址 02 复位配置 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 638
精华内容 255
关键字:

交流通讯协议