场景的即时通讯协议、服务

SMS

短信,到底是怎么工作的? - 知乎 (zhihu.com)

SMS表示短信服务。简单来讲,它是在手机之间发送文字信息或从个人计算机或手持设备向手机发送信息的一种方式。短信的“短”指的是文本信息的最大发送量:160个字符(字母、数字或拉丁字母中的符号)。至于其他字母,例如中文,一条短信的最大发送量为70个字符。

SMS攻击近期发现,SMS短信可以用来攻击手机系统。基本原理非常简单。如果在小范围的区域(像城市)内,大量的SMS短信通过计算机发送到手机,这些信息会塞满手机的控制通道,手机系统将无法建立呼叫。目前手机供应商了解到这种威胁的可能性,开始设计可以节制从SMSC将短信发送到网络的系统。

为什么是160个字符?主要是因为害怕系统过载。早期系统容量很低,开发人员经过协商后,一致同一使用一次160个字符的最大发送量

但是160个字符的限制并不是绝对的。许多手机可以自动将短信拆分成若干个小于等于160个字符的信息块。这样,您就可以键入并发送一长条短信,只不过它会以几条短信的方式传输(当然,钱也多收几次)。

手机短信是一种存储和转发服务,这意味着,如果向朋友发送一条短信,短信不回直接进入到朋友的手机上,而是存储在运营商的短信中心(SMC,SHort Message Center)

这种方法的优势在于,您朋友的手机不必开机或处于服务区内,您也可以发送短信。您发出的短信将被存储在短信中心(可以根据需要存储数日),当您的朋友打开手机或进入服务区时,就会立即收到这条信息。如果不将它删除,这条短信将始终存储在您朋友的SIM卡上。

AIM

AIM消息,实际上是一种解析短信,原来上网关推送一条带有URL链接的短信,手机中断收到短信后,手机中断短信增强技术,自动从服务器拉取报备消息,解析为富媒体消息,在中断上内容更加丰富。可将传统短信变成可交互的富媒体消息,提升用户体验。

IRC协议

IRC - 维基百科,自由的百科全书 (wikipedia.org)

IRC(internet Reply Chat)因特网中继聊天。是一种应用层协议。其主要用于群体聊天,但同样也可以用于对个人的聊天。IRC使用的服务器端口有66676667(明文传输,如irc://irc.libera.chat)、6697(SSL加密传输,如ircs://irc.libera.chat:6697)等。

IRC是一种公开的协议,采用TCP和SSL协议。一个IRC服务器可以连接其他的IRC服务器以扩展为一个IRC网络。IRC用户透过客户端软件和服务器相连。大多数的IRC服务器都不需要客户注册登录,虽然在连接前必须设定好昵称(nickname),但客户端一般都会自动分配一个。

IRC是一个分布式的C/S。连接到一个IRC服务器后,我们可以访问这个服务器的频道以及它所连接的其他服务器上的频道。 要使用IRC,必须先登录到一个IRC服务器上,最常见的为irc.freenode.netirc.libra.chat

RSS

RSS - 维基百科,自由的百科全书 (wikipedia.org)

RSS(Really Simple Syndication或者RDF Site Summary),中文称作建议信息聚合,也成聚合内容,是一种消息来源格式规范,所以聚合多个网站更新的内容自动通知网站订阅者。使用RSS后,网站订阅者便无需在动手查看网站是否有更新内容,同时RSS可以将多个网站更新的内容进行整合,以摘要的形式呈现,有助于订阅者快速获取重要消息,并选择性地点阅查看

MQTT

MQTT 入门介绍 | 菜鸟教程 (runoob.com)

简介

MQTT(Message Queuing Telemery Transport,消息队列遥测传输协议),是一种基于发布、订阅(publish/subscribe)模式的轻量级通讯协议,该协议构建与TCP/IP协议上,由IBM在1999年发布。MQTT最大的优点在于,可以以绩效的代码和有限的带宽,为远程连接设备提供实时的消息服务。作为一种低开销、地贷款占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有广泛的应用。

MQTT是一个基于客户端-服务端的消息发布、订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适合范围非常广。很多情况下,包括受限的环境中,如:机器与机器(m2m)通信和物联网(IOT)。其在,通过微信链路通信传感器、偶尔拨号的医疗设备、只能家具及一些小型化设备中已广泛使用

设计规范

MQTT最开始就是为物联网设备的网络接入设计的,物联网设备大多都是性能低下,功耗较低的计算机设备,而且网络连接质量也是不可靠的,所以在设计协议的时候需要考虑的几个重点是:

  1. 协议足够轻量,方便嵌入式设备去快速地响应和解析。
  2. 具备足够的灵活性,使其足以成为IOT设备和服务的多样化提供支持。
  3. 应该设计为异步消息协议而非同步协议,这么做是因为大多数IOT设备的网络延迟可能非常不稳定,若使用同步消息协议,IOT设备需要等待服务器的响应,对于为大量IOT设备提供服务的这一情景,显然是非常不现实的。
  4. 必须是双向通讯,服务器和客户端应该可以互相发送消息

特性

  1. 使用发布订阅消息模式,异同一对多的消息发布,接触应用程序耦合。
    这一点类似于XMPP,但MQTT的信息冗余远小于XMPP,因为XMPP使用XML格式来传递数据
  2. 对负载内容屏蔽的消息传输
  3. 使用TCP网络进行连接
    主流的MQTT是基于TCP连接进行数据推送的,但是同样有基于UDP的版本,叫做MQTT-SN。这两种版本由于基于不同的连接方式,优缺点自然也就各有不同了。
  4. 由三种发布服务质量:

"至多一次",消息发布完全依赖底层TCP/IP网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。这一种方式主要普通APP的推送,倘若你的智能设备在消息推送时未联网,推送过去没收到,再次联网也就收不到了。

"至少一次",确保消息到达,但消息重复可能会发生。

"只有一次",确保消息到达一次。在一些要求比较严格的计费系统中,可以使用此级别。在计费系统中,消息重复或丢失会导致不正确的结果。这种最高质量的消息发布服务还可以用于即时通讯类的APP的推送,确保用户收到且只会收到一次。

  1. 小型传输,开销很小(固定长度的头部是2字节),协议交换最小化,以降低网络流量。

这就是为什么在介绍里说它非常适合"在物联网领域,传感器与服务器的通信,信息的收集",要知道嵌入式设备的运算能力和带宽都相对薄弱,使用这种协议来传递消息再适合不过了。

  1. 使用Last Will和Testament特性通知有关各方客户端异常中断的机制。

Last Will:即遗言机制,用于通知同一主题下的其他设备发送遗言的设备已经断开了连接。

Testament:遗嘱机制,功能类似于Last Will。

协议原理

实现方式

实现MQTT协议需要客户端和服务端通讯完成,在通讯过程中,MQTT协议中有三种身份:发布者(Publish)代理(Broker)(服务器)、订阅者(Subscribe)。其中消息的发布者和订阅者都是客户端,消息dialing是服务器,消息发布者可以同时是订阅者。

MQTT传输的消息氛围主题(Topic)和负载(payload)俩部分:

  1. topic:可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload)
  2. payload,可以理解为消息的内容,是指订阅者具体要使用的内容。

网络传输与应用消息

MQTT会构建底层网络传输:它将建立客户端到服务器的连接,提供俩者之间一个有序的,无损的、基于字节的双向传输。当应用数据通过MQTT网络发送时,MQTT会把与之相关的服务质量QoS和主题名称(Topic)相关联

MQTT客户端

一个使用MQTT协议的应用程序或者设备,它总是建立到服务器的网络连接。客户端可以:

  1. 发布其他客户端可能会订阅的信息
  2. 订阅其他客户端发布的消息
  3. 退订或删除应用程序消息
  4. 断开与服务器连接

MQTT服务器

MQTT服务以成为消息代理(Broker),可以是一个应用程序或一台设备。它是位于消息发布者和订阅者之间

  1. 接收来自客户的网络连接
  2. 接收客户发布的应用信息
  3. 处理来自客户端的订阅和退订请求
  4. 像订阅的客户端转发应用程序信息

MQTT协议中的订阅、主题、会话

一、订阅(Subscription)

订阅包含主题筛选器(Topic Filter)和最大服务质量(QoS)。订阅会与一个会话(Session)关联。一个会话可以包含多个订阅。每一个会话中的每个订阅都有一个不同的主题筛选器。

二、会话(Session)

每个客户端与服务器建立连接后就是一个会话,客户端和服务器之间有状态交互。会话存在于一个网络之间,也可能在客户端和服务器之间跨越多个连续的网络连接。

三、主题名(Topic Name)

连接到一个应用程序消息的标签,该标签与服务器的订阅相匹配。服务器会将消息发送给订阅所匹配标签的每个客户端。

四、主题筛选器(Topic Filter)

一个对主题名通配符筛选器,在订阅表达式中使用,表示订阅所匹配到的多个主题。

五、负载(Payload)

消息订阅者所具体接收的内容。

MQTT协议中的方法

MQTT协议中定义了一些方法(也被称为动作),来表示对确定资源所进行的操作。这个资源可以代表预先存在的数据或动态生成数据,这取决于服务器的视线。通常来说,资源指服务器上的文件或输出。主要反复噶有

  • connect:等待与服务器断开连接
  • DisConnect:等待MQTT客户端完成所做的工作,并与服务器断开TCP/IP会话。
  • Subscribe:等待完成订阅
  • UnSubscribe。等待服务器取消客户端的一个或多个topics订阅。
  • Publish。MQTT客户端发送消息请求,发送完成后返回应用程序线程。

MQTT协议数据包结构

在MQTT协议中,一个MQTT数据包由:固定头(Fixed header)、可变头(Variable header)、消息体(payload)三部分构成。MQTT数据包结构如下:

  • 固定头(Fixed header)。存在于所有MQTT数据包中,表示数据包类型及数据包的分组类标识。
  • 可变头(Variable header)。存在于部分MQTT数据包中,数据包类型决定了可变头是否存在及其具体内容。
  • 消息体(Payload)。存在于部分MQTT数据包中,表示客户端收到的具体内容。

略。。。

Last modification:January 17, 2024
如果觉得我的文章对你有用,请随意赞赏