计算机网络 · 单选题 · 第 12 题
计算机基础面试八股 · 第 12 题
基于 TCP 的应用常出现「粘包」「半包」问题,根本原因是?
- ATCP 是面向字节流的协议,不保留应用层消息的边界
- BIP 层分片后重组出错,把两个数据报拼在了一起
- C网卡驱动为了提高吞吐,会随机合并相邻的数据帧
- D接收窗口变为 0 时,TCP 会主动丢弃部分已收数据
答案
A A. TCP 是面向字节流的协议,不保留应用层消息的边界
解析
TCP 只保证字节按序、可靠地到达,一次 send 的数据可能被拆开发送,多次 send 也可能被一次 recv 读到。所以应用层必须自己定协议划分消息,常用固定长度、分隔符或「长度字段 + 消息体」。这不是网络出错,而是字节流语义本身的特点。