【计算机网络】应用层介绍
今天我们还是来介绍一下我们之前提到的TCP/IP五层协议
应用层,传输层,网络层,数据链路层,物理层
我们的前端和后端之所以可以正常的进行请求和响应,就是根据这五层协议的作用呢
对于以上的五层协议来说,我们最需要关注的就是应用层了
应用层
应用层是我们打交道最多的一层,我们主要的工作就是设计出一套应用层的协议出来
我们的客户端和服务器建立连接的过程,这个就是交给了应用层的协议来做这件事情,
应用层协议的两大因素:
- 传输的信息是什么
- 传输的格式是什么
应用层的信息
应用层协议是和需求有关的:
下面有一个图书管理系统,想要查询小明的借书记录,
那我们客户端发送的数据就是:
用户名,ID卡号,
我们的服务器返回的信息是:
用户名,ID卡号,书籍名,借书时间,应还时间
上面我们已经指定了双方要传输的信息,下面我们就 来看看格式
应用层的格式
xml
xml和我们的html的格式是非常的像的
都是标签+键值对的方式
<request>
<name> 小明</name>
</request>
标签里面是key 里面的内容是value
它有很多优点和缺点
优点:
可读性较强,可以清楚的知道每一个数据的代表含义,方便调试
缺点:
因为加上了太多的标签来表示数据的含义,所以会占用较多的资源.
在网络带宽有限的情况下,标签占用的多的话,就会使数据的传输变少
所以,我们一般是在配置文件中使用xml,因为描述的比较清晰,但是在传输的时候我们一般就较少使用它了,运行效率会比较低
json
json是一个非常常见的一个应用层协议了
格式:
{
name:'小明',
ID:0012
}
- 最外层是使用一个大括号包裹起来的
- 里面也是使用key-value的键值对的方式
- 键值对内部使用冒号相连,键值对之间使用逗号相连,最后一个键值对后面最好不加逗号
- 对单引号和双引号同样支持
- key一定是字符串,这里可以省略引号不写,但是又特殊字符(空格,…,?)就要加上了
- value可以是任意类型,甚至可以是json
上面的json比xml简洁,而且可以清楚的表达内容,所以json使用更广一点
protobuffer
protobuffer是一个更加注重运行效率的一种格式,它的可读性比较差,但是体积小,占用的资源比较少
格式:
它是一个二进制文件,另外,它使用一些数字和特殊的字符来代替key,这样的话就减少了空间.
它将这样数字和特殊字符所表示的含义另外写在一个IDL文件中,不参与传输,只是配置文件
例子:
小明/0012/2022-1-22/2022-8-9
非常简练
DNS
domain name system 就是域名解析服务器
什么是域名?
就是网站的名字:
https://www.zhihu.com/
这个英文名就是域名
但是其实这个域名是我们给ip地址起的大名罢了.
我们不是通过IP地址来进行消息的传输吗?但是IP地址太难记了,总不能没回访问网站都要记录一大堆的数字吗?
为了解决这个问题,我们就把IP地址起一个名字就是域名,通过域名来访问,也即是直接输入英文就可以访问数据了.
所以我们需要一个系统来报文这样的IP地址和域名的关系,就是DNS
DNS里面有着每一个服务器的IP地址的对应的域名.
所以我们访问域名的时候,经过DNS进行映射,返回一个IP地址,这样我们就可以通过域名来范文服务器了
对于浏览器来说,如果你已经访问过这个域名了,浏览器就自动的保存到浏览器里面,下次再访问的时候就直接从浏览器中取,不用从DNS里面取了,访问速度快
另外,因为DNS里面保存的是全世界的IP地址,所以这个服务器的压力是很大的.
所以全世界的各各国家的网络运营商们就自己建立一个镜像网站来分散压力,这样也是可以的
DNS的版本有很多,下面是我的电脑上的DNS版本
浏览器上的:
](https://img-blog.csdnimg.cn/ffdc0eef32714de0948689977a959b4a.png)