在TCP长连接中,会出现应用层消息粘包的现象,解决方法是:
文本协议中采用rn实现隔断;
二进制协议中采用报文结构,如TLV来实现消息分隔;
现在如果TCP长连接是AES加密呢?一种是将加密后的AES码流每16/32字节解密一次,然后在进行回车隔断或者判断报文结构。这样算是透传,可以兼容两种协议。但是感觉上实施起来复杂度挺高。需要两层缓冲:TCP缓冲和AES缓冲。
另外一种是将消息Payload部分进行AES加密进行传输。适合二进制方式,也在AES之外保留了TLV的报文结构。
哪一种更加合适呢?有过经验的开发者请教一下。