本节摘要:无线信道丢包常见,传输层负责"到底可不可靠、谁负责重传"。本节先讲传统 TCP 为什么在 WSN 里"水土不服",再给轻量替代思路——部分可靠、轻量重传、把可靠性上提到应用层或跨层协作,最后用一个数据上报的可靠性对比表收尾。
路由把数据往基站方向带,但中间站在无线的坑坑洼洼里穿行,包丢了怎么办?这就轮到传输层自问"可靠性谁来扛"。
TCP 靠"三次握手、序号确认、超时重传、拥塞控制"保证端到端可靠。这套机制在有线、稳定、能量充沛的网络里很有效,在 WSN 里却四处碰壁:
所以 WSN 大多不指望完整 TCP,而是走"够用即可"的轻量可靠。
部分可靠(partial reliability):完全可按应用约定"这个包必须到,那个包可以丢"。趋势数据丢一两帧没关系,报警帧必须稳。按需分级,比一刀切的可靠更省。
轻量重传(local retransmission):不在端到端做全套确认,而在链路/本地做快速重传——丢了就这一段补发,避免端到端的来回等待与整站重发。本地补救往往比"全路重传"便宜得多。
重传上提到应用层:把可靠性责任递给最懂业务的地方,由应用决定"这个消息值不值得再花一次发射"。
跨层设计(cross-layer):传输层与 MAC/网络层共享信息。例如知道链路很差,就提前调整重传策略,而不是等传输层一次次超时。

没有万能答案,重点是"不同数据给不同可靠等级",把有限的能量花在真正值得的报文上。
设一套森林烟感网络:平时温湿度与烟雾浓度趋势值,多跳回传,偶尔在链路抖动中丢一两帧——趋势图有点小缺口完全可以接受,不值得为它反复重传。可一旦出现"烟雾超阈值"这类的关键报警,就必须保证送达。做法是:普通读数走"尽力而为",报警计算多跳复核 + 必要时重传。这个"分级"最终让整个网络在满足安全前提下,把能量花在关键处,而非为几帧趋势数据挥霍宝贵的电池。
💡 关键直觉:可靠不是"有或无",而是"值不值得重传这一次"。用业务价值给报文划档,是 WSN 传输设计的心法。
"在哪一层负责重传"决定了一笔账单的大小。两条路线算个粗略账:
端到端重传: 源到目标全程只认一次, 中间任一段丢整体重来 → 常常白走一大段路 逐跳/本地重传: 中间每一段丢了就在本段补发 → 补救范围小, 一般更省、更快 代价: 逐跳需要中间节点能缓存与短时重发, 略微多点局部状态
多数多跳 WSN 偏向"本地补救",因为它避免了"最后一段才暴露失败却从头重传"的灾难性浪费。不过这也有取舍——逐跳要每个中继都"背一小笔缓存与状态账",网络层维护成本上升。真正稳妥的做法是视链路质量灵活切换:链路稳时端到端够用,链路烂时逐跳接管,让两种方式互为兜底。
传输层常顺带处理拥塞。当上报方向集中、一段时间内大家都往上涌,中间的汇聚点会被"水泄不通"。拥塞不像丢包那样"静悄悄",它会引发强烈的重传与排队,账单瞬间暴涨:
拥塞前兆: 缓冲区堆积、时延爬升、大量重传 轻处理: 退避、降上报频率(节流) 重处理: 丢出低优先级包、加快丢弃次要数据保关键数据
关键是别等到"堆满再炸"。能早一点按数据重要级做取舍,能避免连锁的重传风暴。这也再次回到"分级":拥堵时先保最关键的那几条, 而不是平均用力互相拖死。
把"该不该可靠"的决定权交回业务,落地成一张表,工程上最顺手:
| 数据类型 | 可接受丢失 | 该不该重传 | 理由 |
|---|---|---|---|
| 环境趋势读数 | 可丢一两帧 | 不必 | 冗余高、重传不值 |
| 关键报警 | 必须到 | 一定重传 | 错过就可能出事 |
| 参数下发/固件 | 必须到 | 可靠+校验 | 错一点就出错 |
| 低电量救助信号 | 尽量 | 在能力内 | 保命优先 |
这张表的核心就一句:"花多少电保可靠"由"数据多重要"说了算。 设计传输策略前,先问应用"哪类包值得多花一次发射",答案往往比任何算法都省钱。
把本节揉成一句可以随身带走的话:WSN 的可靠不是"要不要保证",而是"哪一类数据值得为它多花一次发射"。 TCP 之所以吃瘪,是因为它对所有包一视同仁地重传;WSN 的聪明之处在于先问"这包丢了要不要紧",再决定费多大的劲去保。做到这一点,传输层就同时把"可靠"和"省电"都握在手里了。以后设计任何上报机制,第一件事就是给数据按价值分档——分好了,传输层怎么取舍自然就有了答案。
可靠分级若只停在"哪类保、哪类丢"的话头上,工程上仍无从量起。更实用的做法是给每条数据流设一个可容忍的丢失率额度,用这张尺子去选方案。刚联网时链路不错,额度可以定严一点;设备老化、树林遮挡加重后,把"值得重传"的档位悄悄放宽,比死守一个一成不变的质量目标更扛得住实际。
趋势流: 容忍 5–10% 丢失, 不必重传 报警流: 容忍 0, 必须多跳复核 + 可靠重传 参数流: 容忍 0, 且要校验, 错一位就废止 额度会变: 链路随季节/遮挡波动, 定期重估再调档
把"丢多少能忍"先谈出来,传输层的每一档策略就都有了落点。否则光喊"要可靠"无从下手;有了额度,要不要重传、重传几次、要不要提前跨层告警,全部有了明确依据。可靠工程常常不是第一步选协议,而是先给每条数据标好一件"损耗额度"。
传输把"能不能到"夯实后,还差顶层的地图——应用层决定"要什么数据、何时取、取多少"。下一节看应用层协议。