66、TCP粘包问题是什么?你会如何去解决它?

TCP粘包是指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧 接着前一包数据的尾。

1.由TCP连接复用造成的粘包问题。

2.因为TCP默认会使用Nagle算法,此算法会导致粘包问题。

  只有上一个分组得到确认,才会发送下一个分组;

  收集多个小分组,在一个确认到来时一起发送。

3.数据包过大造成的粘包问题。

4.流量控制,拥塞控制也可能导致粘包。

5.接收方不及时接收缓冲区的包,造成多个包接收

解决:

1. Nagle算法问题导致的,需要结合应用场景适当关闭该算法

2. 尾部标记序列。通过特殊标识符表示数据包的边界,例如 , ,或者一些隐藏字符。

3. 头部标记分步接收。在TCP报文的头部加上表示数据长度。

4. 应用层发送数据时定长发送。

原文地址:https://www.cnblogs.com/crbhf/p/15122654.html