应用层通信协议设计TCP/UDP是基于字节流的传输层通信协议,对于其的编程是基于IO流编程,所谓“流”,就是没有界限的一长串二进制数据。TCP/UDP作为传输层协议,并不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际情况进行数据包的划分。所以在业务上一个完整的数据包在进行传输时,可能会被拆分成多个包进行发送,也可能将很多小的数据包封装成一个大的数据包发送,也就是TCP/UDP的拆包和粘包问题。如果直接序列化发出数据包,接收方无法知道一个完整的报文从哪里开始,到哪里结束,这个问题需要通过上层的应用协议设计来解决。