IPv4 路由器中途也可以对超大 IP 报文进行分片;把 IP 包拆成多个 IP 小分片,到达目标主机才做重组。⚠️重大缺陷:只要任意一个 IP 分片丢包,整个原始报文全部作废,必须全部重传;还存在 Teardrop 死亡 Ping 等分片类安全攻击风险,现代网络尽量避免路由器层面 IP 分片腾讯云。
IPv6 做了改动:中间路由器禁止分片,只允许源主机做分片,减少路由器带来的安全与性能问题。
2、传输层:TCP 分段(MSS)
TCP 采用 MSS 最大分段大小,在发送主机就把数据切割成合适大小,适配下层 MTU,尽量让每个 TCP 报文封装之后刚好填满 MTU,尽可能避免 IP 层再二次分片。以太网环境 MSS 常见取值 1460 字节。TCP 拥有完善确认、重传机制,丢失的只是单个 TCP 分段,只重传丢失分段,不需要重传全部大文件,可靠性远高于 IP 分片。
UDP 没有内置分段重传逻辑,超大 UDP 报文高度依赖 IP 分片,线上业务尽量避免超大 UDP 报文。
1 报文分片是因为链路 MTU 存在最大传输上限,大数据必须切割成小片传输,接收端重组恢复完整数据;分为 IP 网络层分片、TCP 传输层分段、应用层业务分块三层。2 IP 分片风险高,一个分片丢失整体报文失效,现代业务尽量规避;TCP 分段由操作系统内核自动处理;AI 项目 SSE、大文件上传优先使用应用层分片。3 分片带来三大收益:适配链路硬件上限、降低重传代价、多业务网络公平调度;同时带来头部开销、接收缓存、安全攻击等代价。4 AI 场景:SSE 流式输出属于应用分片,TCP 底层会随意拆包合并,前端务必要做消息缓冲区按分隔符解析;大知识库文件上传采用业务层分块实现断点续传。5 网络故障排查要区分:底层协议分片问题,和业务应用层分块解析问题,不要把内核分片和业务层分片概念混淆。