ESSO

ESSO 10001-2026

Ethernos Universal Telegraph Text Encoding (EUTTE) Protocol

Ethernos 通用电报文本编码协议


标准编号:ESSO 10001-2026
英文名称:Ethernos Universal Telegraph Text Encoding (EUTTE) Protocol Specification
中文名称:Ethernos 通用电报文本编码协议规范
版本:Version 1.0
发布机构:Ethernos Standardization & Specification Organization (ESSO)
发布日期:2026-05-02
适用范围:高噪声、低带宽信道(短波/海事/应急通信)下的可靠文本传输
替代标准:无(首版)
兼容性声明:本标准向下兼容 ESSO 10001 后续修订版的核心帧结构


目 录

  1. 范围
  2. 规范性引用文件
  3. 术语和定义
  4. 符号与缩略语
  5. 协议概述
  6. 块结构规范
  7. 物理层调制规范
  8. 传输控制流程
  9. 字符编码处理
  10. 实现参考模型
  11. 安全与隐私要求
    附录 A(规范性)CRC-64-ECMA 实现参考
    附录 B(资料性)典型应用场景与链路预算

1. 范围

本标准规定了在高噪声、低带宽通信信道(包括但不限于短波无线电、海事 VHF/UHF、应急卫星链路)中传输 UTF-8 文本数据的二进制协议格式、物理层调制参数、传输控制流程及安全机制。

本标准适用于:


2. 规范性引用文件

下列文件对于本标准的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本标准。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本标准。


3. 术语和定义

下列术语和定义适用于本标准。

3.1 块(Block)
EUTTE 协议的基本传输单元,固定长度 64 字节,包含头部、有效载荷和尾部校验。

3.2 符号(Symbol)
物理层调制中的最小传输单位,在 MFSK-16 调制中一个符号携带 4 bit 信息,持续 10 ms。

3.3 前导(Preamble)
位于每个块之前的同步序列,用于接收端自动增益控制(AGC)和时钟恢复。

3.4 交织(Interleaving)
将数据按特定矩阵重新排列,以分散突发噪声造成的连续误码。

3.5 分片(Fragmentation)
将超过单块载荷容量的消息分割为多个块传输的机制。


4. 符号与缩略语

缩略语 英文全称 中文含义
EUTTE Ethernos Universal Telegraph Text Encoding Ethernos 通用电报文本编码
MFSK Multiple Frequency Shift Keying 多频移键控
FEC Forward Error Correction 前向纠错
ARQ Automatic Repeat reQuest 自动重传请求
CRC Cyclic Redundancy Check 循环冗余校验
ECC Error Correcting Code 纠错码
AGC Automatic Gain Control 自动增益控制
PSK Pre-Shared Key 预共享密钥
LSB/MSB Least/Most Significant Byte 最低/最高有效字节

5. 协议概述

EUTTE 协议采用固定块长的传输方式,在物理层使用 MFSK-16 调制,在数据链路层提供可选的 ARQ 重传机制。协议栈分层如下:

┌─────────────────────────────────────┐
│         应用层 (UTF-8 文本)          │
├─────────────────────────────────────┤
│   表示层 (压缩/加密/分片重组)        │
├─────────────────────────────────────┤
│   数据链路层 (块封装/ARQ/交织)       │
├─────────────────────────────────────┤
│   物理层 (MFSK-16 调制/解调)         │
└─────────────────────────────────────┘

核心设计目标:


6. 块结构规范

6.1 总体结构

每个传输块固定长度为 64 字节,按大端序(Big-Endian)排列:

┌──────────────────┬──────────────────────┬────────────────┐
│   Header (16B)   │    Payload (40B)     │  Trailer (8B)  │
├──────────────────┼──────────────────────┼────────────────┤
│ 同步字 │ 控制字段 │   UTF-8 文本数据     │ CRC-64 / ECC   │
│ (4B)   │  (12B)   │   (变长,允许填充)    │    (8B)        │
└──────────────────┴──────────────────────┴────────────────┘
偏移: 0x00~0x0F      0x10~0x37              0x38~0x3F

6.2 头部段(Header Segment, 16 Bytes)

偏移 字段 长度 类型 说明
0x00 SYNC_WORD 4B uint32 固定同步字 0xE7545445(”ETTE” 倒序,大端)
0x04 SEQ_NUM 3B uint24 块序列号,范围 0 ~ 16,777,215(16M 连续块)
0x07 FLAGS 1B uint8 控制标志位(见 6.2.1)
0x08 PAYLOAD_LEN 1B uint8 有效文本字节数,范围 0 ~ 40
0x09 BLOCK_TYPE 1B uint8 块类型标识(见 6.2.2)
0x0A CHANNEL_ID 2B uint16 多路复用通道标识,范围 0 ~ 65535
0x0C TIMESTAMP 3B uint24 相对时间戳(秒级,从会话起始计数)
0x0F HEADER_CSUM 1B uint8 头部校验:字节 0x00~0x0E 的异或累加和

6.2.1 FLAGS 位定义

Bit 7 (MSB): 压缩标志  [COMP]   0 = 未压缩, 1 = LZ4 压缩
Bit 6:       加密标志  [CRYPT]  0 = 明文, 1 = AES-256-GCM 加密
Bit 5:       优先级    [PRIOR]  0 = 普通, 1 = 紧急
Bit 4:       分片标志  [FRAG]   0 = 完整消息, 1 = 分片消息
Bit 3:       重传标志  [RETX]   0 = 原始块, 1 = 重传块
Bit 2~0:     保留位    [RESV]   必须置 0

6.2.2 BLOCK_TYPE 定义

含义 说明
0x00 DATA 标准数据块
0x01 ACK 确认响应
0x02 NACK 否定确认 / 重传请求
0x10 FRAG_FIRST 分片消息首块(Payload 前 2B 为总长度)
0x11 FRAG_MID 分片消息中间块
0x12 FRAG_LAST 分片消息末块
0xFF END 会话结束标记

6.3 载荷段(Payload Segment, 40 Bytes)

6.4 尾部段(Trailer Segment, 8 Bytes)

采用 CRC-64-ECMA(多项式 0x42F0E1EBA9EA3693),覆盖头部(16B)与载荷(40B)共 56 字节。

校验和布局(小端序):

偏移 字段 说明
0x38 CRC64[0] 最低有效字节(LSB)
0x39 CRC64[1]  
 
0x3F CRC64[7] 最高有效字节(MSB)

校验范围:字节 0x00 ~ 0x37(含头部与载荷)。


7. 物理层调制规范

7.1 调制参数

参数 规格
调制方式 MFSK-16(16 频移键控)
载波频段 1000 Hz ~ 3000 Hz
符号率 100 Baud(10 ms / 符号)
频率间隔 125 Hz
每符号比特数 4 bit

频率-符号映射表:

符号 (hex) 频率 (Hz) 符号 (hex) 频率 (Hz)
0x0 1000 0x8 2000
0x1 1125 0x9 2125
0x2 1250 0xA 2250
0x3 1375 0xB 2375
0x4 1500 0xC 2500
0x5 1625 0xD 2625
0x6 1750 0xE 2750
0x7 1875 0xF 2875

7.2 块传输时序

[前导]      [同步头]        [数据块]         [静默间隔]
 1.0 s        0.5 s          6.4 s            0.1 s
├────────┼────────────┼──────────────────┼──────────┤

7.3 纠错与交织

7.3.1 块内交织

采用 8×8 矩阵交织

  1. 将 64 字节数据按行写入 8×8 矩阵;
  2. 按列读出并发送;
  3. 可抵抗最长 80 ms 的连续突发噪声(8 符号 × 10 ms)。

7.3.2 前向纠错(可选)

支持 Reed-Solomon (40, 32) 外层编码:

7.4 解调要求


8. 传输控制流程

8.1 单工广播模式(Simplex Broadcast)

适用于单向应急广播、海事安全信息播发等场景。

发送方: [SYNC] [BLK-0] [BLK-1] ... [BLK-N] [END] [END] [END]
接收方: (被动接收,无确认)

8.2 半双工 ARQ 模式(Half-Duplex ARQ)

适用于点对点或点对多点可控链路。

发送方: [SEQ=X, DATA] ────────────────────────────────→
接收方: ←──────────────────── [SEQ=X, ACK]  (CRC 正确)
        ←──────────────────── [SEQ=X, NACK] (CRC 失败/超时)
发送方: 超时 30s 自动重传 (FLAGS Bit 3 [RETX] 置 1)

8.3 分片重组

FLAGS Bit 4 [FRAG] = 1 时,启用分片传输:

BLOCK_TYPE 含义 特殊载荷格式
0x10 首块 前 2 字节为 uint16 大端总长度,后 38 字节为数据
0x11 中间块 40 字节纯数据
0x12 末块 40 字节纯数据(末块可能含填充)

重组规则:


9. 字符编码处理

9.1 UTF-8 边界保护算法

发送端在填充或截断载荷时,必须保证不截断多字节 UTF-8 字符。

发送端伪代码:

uint8_t payload[40];
uint16_t remaining = MIN(40, text_len - pos);

// UTF-8 边界检查
if (remaining < 40 && remaining > 0) {
    uint8_t last_byte = text[pos + remaining - 1];
    // 若最后一字节属于多字节序列的中间字节 (10xxxxxx)
    if ((last_byte & 0xC0) == 0x80) {
        // 回退至字符起始字节 (11xxxxxx 或 0xxxxxx)
        while (remaining > 0 && ((text[pos + remaining - 1] & 0xC0) == 0x80)) {
            remaining--;
        }
    }
}

memcpy(payload, text + pos, remaining);
memset(payload + remaining, 0x00, 40 - remaining);  // NULL 填充

接收端处理:

9.2 控制字符语义

序列 (hex) 名称 语义
0x00 NUL 块结束标记 / 填充字节
0x02 STX 消息起始(可选)
0x03 ETX 消息结束(可选)
0x0A LF 换行
0x0D CR 回车(与 LF 组合为 CRLF)
0x1B ESC 转义前缀(下一字节原样输出,用于传输控制字符本身)

10. 实现参考模型

10.1 最小解码器状态机

STATE_IDLE
    └── 检测 SYNC_WORD (0xE7545445)
        └── STATE_HEADER
            └── 接收 12B 控制头,验证 HEADER_CSUM
                └── STATE_PAYLOAD
                    └── 接收 40B 数据
                        └── STATE_TRAILER
                            └── 接收 8B CRC64,验证全块
                                └── STATE_READY
                                    └── 输出 UTF-8 文本,返回 STATE_IDLE

10.2 性能指标

指标 数值
协议标识符 EUTTE/1.0
标准符号率 100 symbols/sec
最大理论带宽 400 bps
有效数据率 ~50 bytes/sec
典型文本吞吐量 ~3 汉字/秒 或 ~5 字母/秒
单块传输时长 ~12 秒
最大消息长度 ~640 MB 原始文本
时钟容差 ±2.5%

11. 安全与隐私要求

11.1 明文传输模式

默认状态下 FLAGS Bit 6 [CRYPT] = 0,载荷为明文 UTF-8 数据。适用于公共应急广播场景。

11.2 加密传输模式

FLAGS Bit 6 [CRYPT] = 1 时:

11.3 源认证

通过 预共享密钥(PSK) 验证消息来源,防止伪造 ACK/NACK 的拒绝服务攻击。PSK 长度不少于 256 bit。

11.4 抗重放保护

接收端维护已接收 SEQ_NUM 的滑动窗口(建议窗口大小 1024),拒绝重复或乱序的过时块。


附录 A(规范性)CRC-64-ECMA 实现参考

多项式0x42F0E1EBA9EA3693
初始值0xFFFFFFFFFFFFFFFF
输入反射:否
输出反射:否
最终异或值0xFFFFFFFFFFFFFFFF

// CRC-64-ECMA 查找表生成(伪代码)
uint64_t crc64_table[256];
const uint64_t POLY = 0x42F0E1EBA9EA3693ULL;

for (int i = 0; i < 256; i++) {
    uint64_t crc = i;
    for (int j = 0; j < 8; j++) {
        crc = (crc & 1) ? ((crc >> 1) ^ POLY) : (crc >> 1);
    }
    crc64_table[i] = crc;
}

// 校验计算(覆盖 56 字节)
uint64_t crc64(const uint8_t *data, size_t len) {
    uint64_t crc = 0xFFFFFFFFFFFFFFFFULL;
    for (size_t i = 0; i < len; i++) {
        crc = crc64_table[(crc ^ data[i]) & 0xFF] ^ (crc >> 8);
    }
    return crc ^ 0xFFFFFFFFFFFFFFFFULL;
}

附录 B(资料性)典型应用场景与链路预算

B.1 短波应急广播

B.2 海事 VHF 数据链路

B.3 低轨卫星物联网


如需我将其导出为 Markdown 文件保存到输出目录,或针对特定章节(如安全部分、物理层参数)进行扩展/调整,请告诉我。