返回首页

SMS 的 SOS 协议:规范

SOS 协议使用状态、标志和校验和标准化通过 SMS 的文本交换。描述消息格式、有限自动机、转换和错误处理。适用于无互联网移动设备实现。

SOS 协议:SMS 完整解析
Advertisement 728x90

SOS协议:亲密短信通信技术规范

SOS协议定义了基于短信的亲密文本通信的结构与逻辑。它采用严格的消息格式,包含状态、标志位和校验和,以确保通信同步与完整性校验。本文档详细说明消息格式、有限状态机行为及错误处理机制——使系统在完全离线(无互联网连接)环境下仍能稳定可靠运行。

消息格式与结构

SOS消息遵循如下模式:SOS消息 = 起始标记 "|" 版本号 "|" 状态 "|" 会话ID "|" 标志位 "|" 负载长度 "|" 负载 ["|" 校验和]。各字段以竖线(|)分隔。

  • 起始标记:"SOS" —— 协议标识符。
  • 版本号:"1" —— 当前唯一版本。
  • 状态:取值为以下之一(IDLE、SYNS、SYNR、ESTD、FINW、PRMT、BUSY、SUSP、CLSD、MORE)。
  • 会话ID:5位数字(1–65535),每轮会话内单调递增。
  • 标志位:"A"(确认应答)、"F"(终止请求)、"R"(重置)、或为空。
  • 负载长度:三位数字,表示负载内容的字符数(0–160)。
  • 负载:纯文本,可选嵌入控制序列。
  • 校验和:两个大写十六进制字符(可选)。

示例:SOS|1|SYNS|42||12|你好美极了|3E

Google AdInline article slot

校验和计算方法

算法步骤:

  • 将负载按空格拆分为单词(忽略所有空白字符);
  • 计算各单词长度乘积(若负载为空,则乘积默认为1);
  • 减去原文中空格总数;
  • 对256取模,并转换为两位大写十六进制字符串。

该方法兼顾简洁性与鲁棒性,能有效抵御移动终端短信传输中常见的字符失真问题。

术语与控制序列

核心概念:

Google AdInline article slot
  • 发起方:发送首条消息的一方。
  • 目标接收方:接受或拒绝本次交互的一方。
  • 状态:协议有限状态机中的某一阶段。
  • 控制序列:嵌入在负载中的情感提示或功能标记。

常见负载内控制序列:

| 序列 | 含义 |

|----------|---------|

Google AdInline article slot

| Y | 同意 |

| N | 拒绝 |

| ... | 暂停/留白 |

| :-) | 友好暗示 |

| ;-) | 调皮潜台词 |

| :-D | 开怀大笑 |

| ^_^ | 欣喜确认 |

| >_< | 尴尬 |

| ~ | 模糊态度 |

| (.)(.) | 暗指身体特征 |

| ¯\\_(ツ)_/¯ | 不确定 |

实际实现中可解析这些序列,用于自动回复或界面情感化增强。

协议状态机与状态定义

双方各自维护一个有限状态机,通过状态标志位字段实现同步。

状态说明:

  • IDLE:初始空闲态。
  • SYNS:已发出邀请,等待对方响应。
  • SYNR:收到邀请,已发出应答。
  • ESTD:会话已建立,正常交互中。
  • FINW:已发起终止,等待对方确认。
  • PRMT:异常提前终止。
  • BUSY:当前暂时不可用。
  • SUSP:检测到可疑行为。
  • CLSD:会话已关闭。
  • MORE:FIN后需继续交互,进入续传态。

状态迁移规则

由收发SOS消息触发的状态迁移:

  • IDLE → SYNS:主动发送SYNS;10分钟未响应则超时进入PRMT。
  • SYNS → ESTD:收到SYNR且含ACK标志(A)。
  • SYNS → PRMT:超时或收到RST标志(R)。
  • ESTD → FINW:发送FIN标志(F);2分钟未确认则超时。
  • FINW → CLSD:收到ACK(A)。
  • FINW → MORE:收到MORE + ACK(A),返回ESTD。
  • 任意状态 → PRMT:收到RST或发生超时。
  • IDLE → BUSY:收到SYN但自身处于忙线,立即回BUSY。
  • SYNR → SUSP:会话ID非单调递增或校验和异常。

超时机制与惩罚策略

  • SYN阶段:10分钟无响应 → 进入PRMT。
  • ESTD阶段:连续10分钟未收到ACK → 进入PRMT。
  • FINW阶段:2分钟无确认 → 直接进入CLSD。
  • MORE阶段:10分钟无后续 → 进入CLSD。

惩罚机制:

  • PRMT:封禁30分钟;累计3次 → 7天永久封禁。
  • BUSY:需等待15分钟后方可重试。
  • SUSP:立即发送RST并封禁24小时。

冲突处理

若新SYN到达时已有活跃会话:立即回复BUSY,附带消息"会话已存在";发起方退回IDLE态。若检测到会话ID非单调递增 → 触发SUSP → 自动发送RST。

核心要点:

  • SOS协议通过状态感知与内置校验和,为短信通信提供标准化、高可靠性保障。
  • 全流程同步(SYNS/SYNR/ESTD)完全离线完成,无需任何网络支持。
  • 控制序列让文字交流更富表现力,精准传递情绪与潜台词。
  • 科学的超时与惩罚机制,有效遏制垃圾信息、恶意滥用及协议异常。
  • 轻量级校验和设计,在典型短信信道干扰下依然保持高度鲁棒性。

— Editorial Team

Advertisement 728x90

继续阅读