# TCP 分片乱序发射

TCP 分片乱序发射会拆分选定 TCP payload 并发送修改后的包，使 DPI 设备必须处理乱序与重传相关状态。

UA3F 会针对早期 TCP payload 进行二分分片，并优先转发尾片、丢弃首片，从而制造分片乱序发射现象。随后首片会触发 TCP 重传，继续进入下一轮分片乱序处理。

`reorder-bytes` 与 `reorder-packets` 用于控制分片乱序发射的处理范围和轮数。由于该功能会影响连接建立后的早期数据包，开启后可能出现短时间网络通信波动，但通常不会影响后续长时间通信。

```yaml
desync:
  reorder: true
  reorder-bytes: 8
  reorder-packets: 1500
```

UA3F 会跳过没有 TCP payload、payload 长度小于等于 1 字节、以及带 `FIN` 标志的包。

该功能可能影响连接开始阶段的少量包。建议先在目标网络上使用保守参数测试。

## 为什么可以影响 DPI

DPI 设备通常会对经过的流量进行重组和特征匹配，目标是在尽可能接近真实通信内容的层面上分析数据包，从而识别特定协议、特征字符串或行为模式。

在实际部署中，DPI 重组 TCP 流的能力受到性能和实现策略限制。TCP 异常、分片乱序、重传、窗口变化等情况都会增加 DPI 的处理复杂度与缓存压力。

UA3F 通过制造分片乱序与伪重传现象，使 DPI 面临以下问题：

| 影响 | 说明 |
| --- | --- |
| 状态错乱 | DPI 在重组 TCP 流时需要跟踪连接序列号和数据内容。乱序分片、覆盖和重传冲突可能让 DPI 与真实端点 TCP 栈对“哪段数据有效”的判断出现分歧，从而产生脱同步。 |
| 缓存开销 | 高速环境下完整缓存所有乱序段直到重组完成成本很高。设备如果因超时丢弃部分段，或采用只取首片等简化策略，就可能漏检或误判。 |
| 协议歧义 | DPI 常依赖早期包进行协议嗅探。传输层不确定性可能让 DPI 在早期识别阶段进入错误解析路径。 |
