
应用层数据组织与传输我们所写的提供网络服务的程序都是运行在应用层上的。在这些程序中,我们往往会使用结构体、类和对象等结构化的方式组织数据
但是在使用socket api接口时,我们只能使用字符串/字节流的格式来发送/接收信息,实现网络通信。但是对于提到的结构化数据,又该怎么使用网络通信传输呢?
应用层协议针对应用层内的通信问题,我们依然使用协议解决。只要发送方和接收方按照同一’约定’对结构化数据进行字节流编码和字节流解析,就能够实现通过网络进行通信。这样的约定就是 协议。
既然协议是一种约定,那么就能开发出各种各样的的应用层协议。但它们往往会用到序列化和反序列化技术,所以我们先了解一下什么是序列化和反序列化
序列化与反序列化这一技术能够在对象(结构化数据)和字节流之间架起桥梁,使对象能够更方便地支持网络通信,或者文件持久化。简单来说序列化就是基于某种规则把对象/结构化数据转化成字节流,反序列化就是基于同样的规则,把字节流还原成对象/结构化数据。
相关的序列化格式可以自己定义,当然也可以直接使用别人封装好的现成的格式。就比如常见的JSON,XML,YAM ...