目录
4.除此之外,应用层也有一些现成的协议,如HTTP协议(超文本传输协议)
应用层
前文中提到的应用层协议使用字符串拼接实际上很少用,下面介绍几个开发中常用的协议(组织格式)
1.xml(叉ml)
通过标签来组织数据
//请求
<request>
<userId>1000</userId>
<position>100,30</position>
</request>
xml优势:数据可读性好
xml劣势:标签写起来繁琐,传输时也会占用更多网络带宽
html属于xml的变种,xml是一个通用的数据格式,有什么标签、标签什么含义,都是程序猿自定义的,而html是一个专属的数据格式,有什么标签、标签说明含义,都会定义好的
如<a>超链接 <img>图片 <li>有序列表...
2.json
(当下最流行的一种数据组织格式)
{
userId:"1000",
position:"100,30"
}
键值对结构,用{ }把所有的键值对包裹起来,键值对之间用“,”分割,键和值之间用“:”分割,键固定是string,值可以是数字、字符串、json、数组...
json优势:可读性比较好,比xml更简洁
json劣势:在网络传输中消耗额外带宽(需要把key也进行传输)
即便如此,除了在一些对性能要求非常高的场景,其他网络通信普遍使用json
3.protobuffer(pb)
使用二进制来组织数据,可以保证带宽占用最低(相当于把信息按照二进制形式压缩了)
pd优势:占用带宽最低,传输效率最高,适合于对性能要求高的场景
pd劣势:可读性差,影响一定的开发效率
4.除此之外,应用层也有一些现成的协议,如HTTP协议(超文本传输协议)
DNS应用层协议——域名解析系统
域名:为了方便展现IP 如www.baidu.com
当访问某个域名时,会先给DNS服务器发送请求,查询当前域名对应的IP,然后再访问目标网站
DNS服务器如何抗住高请求量?
”高并发“问题思路就是两条①开源②节流
①开源:各个网络运营商镜像DNS服务器的数据,用户会优先访问离自己近的镜像服务器
②节流:每个上网的设备将DNS请求得到的结果保存到本地缓存,后续访问时直接访问本地缓存即可