Netty学习(九)介绍拆包粘包

97 阅读1分钟

一、介绍TCP拆包粘包

1、啥是拆包粘包

上图:

这个图就描述了拆包粘包的现象:

  • 拆包粘包只会发生在TCP协议下,udp协议不会。主要原因是TCP没有消息保护边界
  • TCP在发送时,会根据缓冲区的发小进行包的合并和拆解:
    • 粘包:假如你的缓冲区很大时,发出去的数据包就是若干包的聚合,这里假定都是整数个包聚合。就是上图的第二种情况。
    • 拆包:假如你的缓冲区和数据包大小不是整数关系,简单理解就是不能装下完整的包,这时候,就会把一个数据包拆解开,然后分批次发出去。就是上如的3、4情况。
  • TCP在接受时,也会发生粘包。
    • 当服务器没有及时处理发送过来的数据包时

二、解决办法

通过自定义协议:协议内容包含数据包大小和数据包内容。