网络层建立了客户端和服务器的连接之后,就可以传输数据。传输数据的时候,为了双方都可以识别,需要拟定一个双方都能解析的数据格式(就像讲话的使用同一语言)
数据传输格式
建立网络连接之后,客户端和服务器就可以通过数据传输,从物理本质上来说,网络传输其实是通过一系列的线路,经过电路调整变化,依据网络传输协议进行通信的过程。
数据传输特点:
网络数据大小
网络数据的大小影响带宽的占用,当服务器承受高并发的数据传输时,网络流量会达到峰值(过大会占满带宽),影响服务器的使用效率和用户体验,所以数据传输过程中,应尽量减少冗余数据,节省带宽,提高传输效率。
网络数据安全性
客户端和服务器交互的大多数数据都是对外界隐藏的,所以网络传输过程中的选择数据格式要考虑数据安全。
实现复杂度
数据传输过程中,需要对信息进行序列化和反序列化 ,实际开发中也要注意数据结构的可扩展性和可维护性。
协议通用性
通常情况下,客户端和服务器处于不同的运行环境下,因此需要传输的数据具备跨平台的特性,能够实现同步平台之间的跨平台通信,而不局限于同种平台之间的数据传输。
数据类型
-
自定义二进制 :最直接的数据传输格式,信息体积小,但缺少易读性和易写性,自定义二进制传输需要服务器和客户端自己定义消息格式,并自己实现序列化和反序列化的方式和容错处理等,可扩展性也不强,很难得到广泛应用,但自由度很高。
-
开源协议:最常见的协议库:JSON,SML,Google的Protobuffer及Facebook的Thrift。这些开源库基本都提供了序列化和反序列化的库,在扩展性和容错处理方面也很不错。Protobuffer和Thrift是比JSON,XML,Binary体积更小,效率高,使用方便,支持语言更多,更高级的开源协议等。
-
文本化协议 : 数据传输也可以直接使用文本格式,按照一定的协议标准组织结构进行传输,如JSON,XML等,通过使用这些开源库,实现文本数据的序列化和反序列化。文本文件的数据大小更大,但是可视化好,容易维护和调试。
JSON
JSON(JavaScript Object Notation,Javascript对象)是一种轻量级数据交换格式