HTTP和HTTPS后面的博客会另外介绍.
一.设计应用层协议:
1.明确当前请求和响应中包含哪些内容.
2.明确具体请求和响应格式.
网络上传输的数据,本质上就是字符串(无法直接传对象).
序列号:发送数据的时候,把对象转化成二进制字符串.(注意,网络上传输的数据统一为大端字节序)
反序列化:接收数据的时候,把二进制字符串转化成对象.
3.客户端和服务器要使用同一套协议.
二.通用协议:
1.xml:以成对的标签来表示键值对信息,同时标签支持嵌套,可以表示一些复杂的树形结构数据.
优点:非常清晰度把结构化数据表示出来了.
缺点:引入大量的标签,看起来繁琐,同时也会占用不少的网络带宽.
国内,最贵的网络资源就是带宽.
2.json(当前最主流.常用):本质上也是键值对,比xml要简洁.
json中,使用大括号表示键值对,使用方括号表示数组,数组中的每个元素,可以是数字,字符串,或者大括号和方括号.
网络传输的时候,会压缩(去掉不必要的换行和空格),把所有的数据都放到一行(降低了带宽,但是影响了可读性,不过有现成的格式化工具方便阅读).
3.protobuffer: 谷歌提出的二进制数据序列号方式.
使用二进制方式,约定某几个字节表示哪个属性,这样可以最大程度节省空间(不需要传输key,根据位置和长度,区分属性).
优点:最大化节省带宽,效率高.
缺点:二进制数据,无法肉眼自己观察,不方便调试.