TCP是一对一的面向连接的传输控制协议。
在TCP协议中存在一种问题——粘包
字面解释下,就是两个包子粘一起了馅多皮厚一口吃不下,??
在网上查找一圈资料参考,做下记录和总结。
1. TCP粘包是什么,什么是粘包?
多个数据段被连续的储存在缓冲区,当读取的时候没有进行有效或精确的拆分从而发生粘包。
2. 粘包产生的原因?
TCP是一种面向连接流传输协议,在收发两端间进行通讯,如果要发送的数据小于TCP发送缓冲区的大小,TCP将多次写入缓冲区的数据一次发送出去发生粘包,接收数据端的应用层没有及时读取接收缓冲区中的数据发生粘包。
3. 如何解决粘包问题?
- 每个发送数据增加包头信息,使接收端根据包头信息去获取数据。
- 定长统一数据长度,长度不够的使用指定字符补足,接收端根据约定长度读取。
- 定界符划分在不同数据之间指定分割的定界符,接收端根据定界符进行拆分。