【趣解】粘包和半包:TCP通信的"奇葩"问题开篇:TCP为什么会有粘包?HTTP请求是完整的,TCP发送的数据为什么会"粘"在一起?这其实是TCP的"原罪"——它只保证可靠传输,不保证"消息边界"。什么是粘包?粘包 = 多个小数据包粘在一起发送你发送:数据包A、数据包B、数据包C 实际收到:数据包AB数据包C就像快递:你寄了3个包裹快递公司把3个包粘在一起了收货方收到1个大包什么是半包?半包 = 一个数据包被拆成多次发送你发送:数据包A 实际收到:数据包A的前半段、数据包A的后半段就像锯木头:你锯了一段木头实际被锯成两段运送收货方要拼起来为什么会粘包/半包?根本原因TCP是流式协议,不保留消息边界:发送方:write() 100字节TCP:可能分成10次发送