第2章 通信基础回顾:OSI七层模型与TCP/IP四层模型对比、物理层与数据链路层核心概念、信道编码基础(CRC、汉明码)
各位同学,欢迎来到《弹载数据链通信协议栈设计实战》的第二讲。
做数据链设计,说白了就是跟通信模型打交道。你想想看,一枚导弹飞出去,几毫秒的延迟可能就决定了任务成败。这时候,你对通信协议的理解必须深入到骨子里。
今天咱们不聊虚的,直接扎进最基础、也最关键的几个概念。我个人习惯,每次带新人做项目,第一件事就是让他们把OSI模型和TCP/IP模型给我默写出来。为什么?因为这是你设计协议栈的“地图”。
2.1 OSI七层模型 vs TCP/IP四层模型
先看这张经典的对比表。别急着背,咱们边看边聊。
| OSI七层模型 | TCP/IP四层模型 | 核心功能(弹载视角) |
|---|---|---|
| 应用层 | 应用层 | 弹载任务指令、遥测数据格式 |
| 表示层 | 数据加密、压缩(弹载场景常省略) | |
| 会话层 | 建立/维护通信链路(弹载多为无连接) | |
| 传输层 | 传输层 | 端到端可靠传输(UDP居多,TCP慎用) |
| 网络层 | 网络层 | 路由选择、IP地址(弹载常用静态路由) |
| 数据链路层 | 网络接口层 | 帧封装、差错控制、介质访问 |
| 物理层 | 比特流传输、信号调制 |
我在项目中遇到过不少新手,上来就纠结“OSI七层是不是过时了”。其实不然。OSI模型是理论框架,TCP/IP是实战派。做弹载数据链,我建议你把重点放在下面三层:物理层、数据链路层、网络层。上面几层,很多时候我们直接拿UDP裸奔。
2.2 物理层核心概念
物理层,说白了就是“怎么把0和1变成电磁波发出去”。
嗯,这里要注意几个关键参数:
- 比特率 vs 波特率: 比特率是每秒传输的比特数,波特率是每秒信号变化的次数。我见过有人把这两个搞混,结果算链路预算时差了一倍。
- 调制方式: BPSK、QPSK、16QAM……弹载场景下,我一般推荐BPSK或QPSK。为什么?抗干扰能力强。虽然速率低一点,但可靠性是第一位的。
- 发射功率与灵敏度: 这直接决定了通信距离。记得有一次做外场测试,发现链路预算算错了3dB,结果导弹飞出去2公里就丢包了……从那以后,我每次都会留至少6dB的余量。
2.3 数据链路层核心概念
数据链路层,负责把物理层的“比特流”打包成“帧”。
我个人习惯,把数据链路层拆成两个子层:
- LLC(逻辑链路控制): 负责复用、流量控制。弹载场景下,这部分通常简化。
- MAC(介质访问控制): 这是重点。谁先发?怎么避免碰撞?
弹载数据链里,MAC层常用TDMA(时分多址)。为什么?因为确定性高。每个节点在固定的时隙发送,不会撞车。我曾经试过CSMA/CA,结果在密集编队场景下,碰撞概率高得离谱,后来果断换回TDMA。
2.4 信道编码基础:CRC与汉明码
信道编码,说白了就是“给数据加个保险”。
你想想看,导弹在飞行过程中,电磁环境极其恶劣。一个比特翻转,可能就把目标坐标搞错了。这时候,信道编码就派上用场了。
2.4.1 CRC(循环冗余校验)
CRC是检错码,不能纠错。它的原理是:发送端计算一个校验值,接收端重新计算,如果对不上,说明数据出错了。
常用的CRC有CRC-16、CRC-32。弹载场景下,我一般用CRC-16,因为计算快,开销小。
// CRC-16 计算示例(C语言风格)
uint16_t crc16(uint8_t *data, uint16_t len) {
uint16_t crc = 0xFFFF;
for (uint16_t i = 0; i < len; i++) {
crc ^= data[i];
for (uint8_t j = 0; j < 8; j++) {
if (crc & 0x0001) {
crc = (crc >> 1) ^ 0xA001;
} else {
crc >>= 1;
}
}
}
return crc;
}
2.4.2 汉明码
汉明码是纠错码,可以纠正单比特错误。它的原理是:在数据位中插入若干校验位,通过校验位的位置来定位错误。
举个例子,对于4位数据,汉明码需要3位校验位,组成7位码字。校验位的位置是2的幂次(1, 2, 4)。
// 汉明码(7,4) 编码示例
// 输入: 4位数据 d3 d2 d1 d0
// 输出: 7位码字 p1 p2 d3 p3 d2 d1 d0
// 其中 p1 = d3 ^ d1 ^ d0
// p2 = d3 ^ d2 ^ d0
// p3 = d3 ^ d2 ^ d1
我在项目中用过汉明码做遥测数据的保护。效果不错,但要注意:汉明码只能纠1位错。如果信道误码率太高,还是得用更猛的编码,比如卷积码或LDPC。
2.5 本章小结
好,咱们捋一捋今天的内容:
- OSI七层模型是理论框架,TCP/IP四层模型是实战指南。弹载数据链重点关注下面三层。
- 物理层决定“怎么传”,数据链路层决定“怎么封装”。
- CRC是检错码,汉明码是纠错码。选哪个,看你的信道质量。
下一章,咱们开始真正动手设计数据链路层的帧结构。到时候我会拿出一个真实的弹载数据链协议,咱们一行一行地拆解。敬请期待。