9.3.1网络原理(应用层)

HTTP和HTTPS后面的博客会另外介绍. 

一.设计应用层协议:

1.明确当前请求和响应中包含哪些内容.

2.明确具体请求和响应格式.

网络上传输的数据,本质上就是字符串(无法直接传对象).

序列号:发送数据的时候,把对象转化成二进制字符串.(注意,网络上传输的数据统一为大端字节序)

反序列化:接收数据的时候,把二进制字符串转化成对象.

3.客户端和服务器要使用同一套协议.

二.通用协议:

1.xml:以成对的标签来表示键值对信息,同时标签支持嵌套,可以表示一些复杂的树形结构数据.

优点:非常清晰度把结构化数据表示出来了.

缺点:引入大量的标签,看起来繁琐,同时也会占用不少的网络带宽.

国内,最贵的网络资源就是带宽. 

2.json(当前最主流.常用):本质上也是键值对,比xml要简洁.

json中,使用大括号表示键值对,使用方括号表示数组,数组中的每个元素,可以是数字,字符串,或者大括号和方括号.

 网络传输的时候,会压缩(去掉不必要的换行和空格),把所有的数据都放到一行(降低了带宽,但是影响了可读性,不过有现成的格式化工具方便阅读).

3.protobuffer: 谷歌提出的二进制数据序列号方式.

使用二进制方式,约定某几个字节表示哪个属性,这样可以最大程度节省空间(不需要传输key,根据位置和长度,区分属性).

优点:最大化节省带宽,效率高.

缺点:二进制数据,无法肉眼自己观察,不方便调试.

猜你喜欢

转载自blog.csdn.net/m0_73345579/article/details/132244121