MPTCP:一次网络连接能不能同时走 Wi-Fi 和蜂窝网络?
TL;DR
MPTCP 将多个 TCP 子流组织成一个逻辑连接,可在多条路径间维持韧性或调度数据。本文说明它与普通负载均衡、应用层重试的差异,并解释为何并非每个网络都会自动聚合带宽。
MPTCP 将多个 TCP 子流组织成一个逻辑连接,可在多条路径间维持韧性或调度数据。本文说明它与普通负载均衡、应用层重试的差异,并解释为何并非每个网络都会自动聚合带宽。

手机从 Wi-Fi 走到室外,网络可能切换到蜂窝;笔记本也可能同时连接有线网与无线网。传统 TCP 连接通常绑定一条传输路径,路径变化时连接可能中断或重新建立。MPTCP(Multipath TCP)是在 TCP 基础上扩展的一组机制,允许一个逻辑连接由多个子流组成,并在多个网络路径间传输数据。
这里的“多路径”不是把 IP 数据包随意复制到每张网卡,也不是单纯的路由器负载均衡。MPTCP 的两个端点协商能力后,可以为同一连接建立多个 TCP 子流,并通过连接级序列空间重组数据。操作系统或应用可以利用不同网络接口,让连接在路径变化时继续工作,或在策略允许时同时使用多条链路。
举例来说,手机应用正在下载内容,Wi-Fi 信号逐渐变弱,蜂窝网络仍然可用。若两端和系统支持 MPTCP,连接可以创建或保留一个蜂窝子流,逐渐迁移数据,而不必让应用感知一次全新的 TCP 会话。若两条路径同时可用,调度器也可以按延迟、带宽、费用或系统策略分配数据。
但“能同时用 Wi-Fi 和蜂窝”不是所有设备上的自动承诺。通信双方需要支持相应扩展;网络中间设备、运营商策略、操作系统配置和应用实际使用的接口都会影响能否建立子流。某些场景下,多路径的目标是保持连接韧性,而非聚合带宽;如果一条链路延迟明显更高,简单地把数据平均分配过去甚至会拖慢整体完成时间。
MPTCP 与应用层重试也不同。应用层可以在失败后重新请求,而 MPTCP 尽量在传输层维持同一个逻辑连接;它也不同于把一个文件拆分成多个独立下载任务。它通过 TCP 子流保留传统端点交互方式,同时增加连接级路径管理。
最合适的理解是:MPTCP 给一个 TCP 连接增加了跨路径的韧性与调度空间,但是否能利用多条链路、收益是连续性还是吞吐,都取决于端点、网络和策略。它是连接层机制,不是自动加速开关。移动设备和数据中心可以用它缓解路径变化,但仍需根据网络成本与服务端能力进行部署。
来源:IETF RFC 8684:TCP Extensions for Multipath Operation with Multiple Addresses



