建立Socket安全机制,是用于防止数据被窃取,数据在传输过程中丢失,从而导致服务器或客户端数据异常等。
实现Socket安全手段有多种,如CRC二次验证,异或,压缩,以及其他代码逻辑。
在这要声明的是:客户端和服务器的验证逻辑必须一样,如果有两种或两种以上手段,在接收消息后要按照倒序的方式解析。比如服务器对消息进行了压缩,然后又异或加密,当客户端解析时,就要先解异或再解压缩。
在这里我们详细说一下常见的信息格式,在开发游戏中,我们会发现信息的种类和用途有很多,例如请求背包信息,玩家同步,请求服务器信息等,所以为了方便管理,我们用协议来规范信息种类。然后将内容字符串转为二进制byte数组,写进Stream流里面发送。
所以格式如下:
在主体内容前放入协议编码,以便区分你所发送的内容是干什么的。然后我们可以先对内容进行压缩,当然也可以判定一下内容长度,如果内容很短的话就跳过压缩环节。然后再对内容进行一次异或处理,使信息更加安全,不易被破解。然后在进行CRC校验,把校验码写在编码前面。最后获取总长度,将总长度、是否压缩(bool值,用0,1表示)、信息写入数据流发送。另一端接收后,自然要先获取总长度,对分包和粘包的数据进行处理,然后获取压缩标识和信息,最后按照顺序将信息CRC验证、解异或、解压缩、读取编码获得真正的内容。
关于如何CRC校验、异或、压缩、序列化、数据流的操作等大家可以浏览一下相关文章。