目录
前言:
在进行网络通信时,应用层协议是需要程序员手动定制的,序列化与反序列化是对协议进行字符串形式的转换。应用层协议表示发送端和接收端共同遵守的规则,依照这个规则,通信的双方才能够分析出传输数据的真正含义,只有理解了数据的真正含义,才能对数据进行处理,因此应用层协议在网络通信中非常重要。传输层协议为TPC\UDP,网络层协议为ipv4\ipv6,这些协议都是设置好的,而应用层协议需要程序员手动实现,传输应用层协议需要进行序列化与反序列化。
1、序列化与反序列化概念
序列化与反序列化是发送端和接收端对网络中传输数据的处理,是一种对传输数据的解释行为,通信双方制定好协议后,发送端需要将协议化的数据通过序列化传给接收端,而接收端拿到数据后需要对其进行反序列化以拿到协议的对应内容,具体示意图如下:
如上图所示,序列化和反序列化实际上就是结构体->字符串,字符串->结构体的过程。
2、正、反序列化的目的
反序列化的目的好理解,因为数据在传输前进行了正序列化,此时数据已经被“修饰”了,那么接收端必须采用同样的方式去掉“修饰”才能拿到有效数据,把这种行为叫做反序列化。那么为什么在传输数据前要将协议进行序列化呢?
答:因为结构体类型在不同平台上的大小、存放形式不一样,因此不能直接将结构体传输给对方,并且结构体难以用字节流的形式在网络上传输。所以要进行序列化将其转换成字符串的形式传递。
3、添加报头的目的
上图中对协议内容进行添加报头,该行为的目的是为了接收方可以更好的解析序列化内容,还能够给在报头中进行数据加密,提供安全性。最主要的是若传输过程中出现数据丢