星海

计算机网络 · 单选题 · 第 12 题

计算机基础面试八股 · 第 12 题

基于 TCP 的应用常出现「粘包」「半包」问题,根本原因是?

  1. ATCP 是面向字节流的协议,不保留应用层消息的边界
  2. BIP 层分片后重组出错,把两个数据报拼在了一起
  3. C网卡驱动为了提高吞吐,会随机合并相邻的数据帧
  4. D接收窗口变为 0 时,TCP 会主动丢弃部分已收数据

答案

A A. TCP 是面向字节流的协议,不保留应用层消息的边界

解析

TCP 只保证字节按序、可靠地到达,一次 send 的数据可能被拆开发送,多次 send 也可能被一次 recv 读到。所以应用层必须自己定协议划分消息,常用固定长度、分隔符或「长度字段 + 消息体」。这不是网络出错,而是字节流语义本身的特点。

在线刷这套题:即时判分、错题本、闪卡复习,不用登录就能练。