1、TCP粘包/拆包
一个完整的业务可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这个就是TCP的拆包和粘包问题。
2、发生原因
1、应用程序写入数据的字节大小大于套接字发送缓冲区的大小。
2、进行MSS大小的TCP分段。( MSS=TCP报文段长度-TCP首部长度)
3、以太网的payload大于MTU进行IP分片。( MTU指:一种通信协议的某一层上面所能通过的最大数据包大小。)
3、解决方案
1、消息定长。
2、在包尾部增加回车或者空格符等特殊字符进行分割。
3、将消息分为消息头和消息尾。
4、使用其它复杂的协议,如RTMP协议等。