Halo
发布于 2022-06-10 / 114 阅读 / 0 评论 / 0 点赞

tcp 粘包

粘包

多个数据包被连续存储于连续的缓存中,在对数据包进行读取时由于无法确定发生方的发送边界,而采用某一估测值大小来进行数据读出

粘包的本质

粘包问题的本质就是数据读取边界错误所致
网络通信程序中,由于实际业务的要求, 有时是发送几个字节的包, 有时时发送几千字节的包, 发送数据的分包大小无法固定,接收端也就无法固定。所以一般采用一个较为合理的预估值进行轮询接收

解决办法

  • 定长发送数据, 弊端是可能需要填充, 浪费带宽
  • 尾部做标记, 弊端是标记字符可能和数据里面的字符相同, 引进新的问题
  • 头部标记数据长度, 比较通用的做法, 解决了上面两个方法的弊端

评论