应用层位于传输层之上,在OSI七层模型中,分为了三层,从上到下分别是应用层、表示层、会话层。这里对这三层不做具体区分。
应用层是面向用户的一层,主要包括FTP、HTTP、HTTPS、DNS、TELNET等协议。
1、DNS协议
1.1 DNS和域名
DNS(Domain Name System),域名系统。域指的是自治系统网络,名指的是IP对应的名字。域名系统可以将自治系统不容易记忆的IP,转化为容易记忆的域名,然后在通信的时候,再将域名解析为IP进行通信。
域名由点、字母、数字组成,点分割不同的域。例如对于www.taobao.com,com是*域,taobao是二级域,www是三级域。当然,还可以继续去分隔四级域、五级域等。*域是国际通用的。
1.2 *域:
- 国家专用的*域,例如cn(中国)、us(美国)、uk(英国)、ca(加拿大);
- 通用的*域,例如com(商业机构)、net(网络服务器机构)、gov(*机构)、org(组织)等。
注意,edu是cn下的二级域。
1.3 DNS服务器
DNS服务器,也叫域名服务器。只要有外网服务器,就可以搭建一个DNS服务器。
DNS服务器分为:
- 根域名服务器:最高等级的服务器,每个国家自行维护,分布在不同的国家,它可以知道所有的*域名服务器的地址;
- *域名服务器:主要由不同国家和地区自行维护,用于解析*域名;
- 本地域名服务器:主要由各个公司、机构自行维护,用于解析二级、三级等域名。
如果一个本地域名服务器要查询baidu.com对应的IP,主要流程
- 首先要解析*域名com,如果它不知道去哪里找相应的*域名服务器,就会去查询根域名服务器,以获取到相应的*域名服务器的地址;
- 本地域名服务器去*域名服务器中查询,二级域名baidu应该去查询那个本地域名服务器,*域名服务器会告诉本地域名服务器,需要去查询的本地域名服务器的地址是多少;
- 本地域名服务器再去查询相应的本地域名服务器,查询baidu.com对应的IP是什么。
2、DHCP协议
DHCP(Dynamic Host Configuration Protocol),动态主机设置协议,是一个局域网协议,使用UDP协议进行通信。
DHCP提供了即插即用联网的功能,让在不同环境的计算机,可以不需要手动配置IP信息,即可使用网络。
在电脑IPV4协议的配置中,通过配置自动获取IP地址,可以启用DHCP协议,DHCP会给自动用户分配一个临时IP。这个IP是有“租期”的,如果“租期”到了,计算机仍然在使用这个IP,则可以“续租”。
DHCP为计算机自动获取IP的过程:
- DHCP的监听端口默认是67,主机会使用UDP协议广播DHCP发现报文,通过这个发现报文发现DHCP服务器的位置;
- DHCP服务器收到后,会回复DHCP提供报文,通知对方自己可以提供DHCP服务;
- 主机收到DHCP服务器的DHCP提供报文后,会向DHCP服务器发出DHCP请求报文,用于请求IP地址;
- DHCP服务器响应请求,并提供IP地址。
3、HTTP协议
HTTP(Hyper Text Transfer Protocol),超文本传输协议。超文本指的是,超级文本,即带有超链接的文本,可以有图片、动图、音频、视频等。
HTTP协议的地址:http(s)://<主机>:<端口>/<路径>。HTTP默认端口是80,HTTPS默认端口是443.
HTTP协议详情参考:HTTP协议
3.1 web服务器对连接的处理过程
- 接受客户端连接;
- 接受请求报文;
- 处理请求;
- 访问web资源;
- 构造应答;
- 发送应答。
3.2 HTTP请求方法
3.3 指定资源的方式
- 在地址中指定:在路径后面拼接参数;
- 在请求体中指定。
HTTP的结构:
3.4 状态码
3.5 Web缓存
二八原则:缓存访问的最多的热门数据。
存储器层次结构:
- 缓存速度最快,空间最小。包括Redis、Memcached、内存等,都可以作为缓存的载体;
- 主存速度比缓存慢,但是空间更大一些;
- 辅存速度比主存慢,但是空间比主存大得多。
web代理:代理可以用来屏蔽后端Server的结构,并起到保护服务端安全的概念。
正向代理:代表客户端访问服务器
反向代理:代表服务器和客户端通信
3.6 内容分发网络CDN
CDN(Content Delivery Network),内容分发网络,用来对多媒体内容加速。
一般,网站公司会把比较大的内容在距离较远的其他地点进行备份,以此来减少时间损耗。
3.7 爬虫
爬虫用来在互联网中采集相应的信息。
不合理的爬虫,会带来一定的负面作用:
- 增加网络拥塞;
- 损害服务器资源。
4、HTTPS协议
HTTP是明文传输,会有信息安全的问题。
HTTPS的S,表示的是Secure,安全的意思。
HTTP协议的地址:http(s)://<主机>:<端口>/<路径>。HTTP默认端口是80,HTTPS默认端口是443。
4.1 加密模型
对称加密:
在加密模型中,如果数据加密和解密使用的秘钥是一致的,就被称为对称加密。
非对称加密:
在加密模型中,如果数据加密和解密使用的秘钥是不一致的,就被称为非对称加密。加密和解密是拥有一定数学关系的一组秘钥。其中的一个是私钥,不对外公开,另一个是公钥,对外提供的。
如果使用公钥进行加密后,则只有服务端使用不对外公开的私钥,才能对数据进行解密,其他人是解不开的。
4.2 数字证书
数字证书是可信任组织颁发给特定对象的认证。可信任组织指的是,客户端和服务端都认为是安全的组织。
数字证书的内容:需要注意的是,数字证书中包含对象的公开秘钥。
4.3 安全套接层SSL
SSL(Secure Sockets Layer),安全套接层,位于运输层和应用层之间,提供数据安全和数据完整性的服务,并对传输层数据进行加密后传输。
使用SSL的话,应用层交给运输层的数据,会先经过SSL加密后,再让运输层去运输。
4.4 HTTPS建立过程
4.5 SSL安全参数握手
SSL安全参数握手:
前三步中,前两步是明文的,从第三步开始,使用加密的信息进行传输。然后,还有第四步,对称秘钥的获取:
双方分别生成秘钥,没有秘钥的传输,就避免了秘钥的泄露。
5、要点总结
1、应用层相对于其他层,是面向用户的一层,应用层协议主要解决了什么问题?
应用层是为了解决某一领域应用问题,比如视频领域、音频领域等。应用层定义了应用间通信的规则,包括应用进程间通信的报文类型(请求报文、应答报文等)、报文的语法和格式、应用进程发送数据的时机和规则等。
2、请列举5个以上的应用层协议。
DNS,动态主机设置协议DHCP,HTTP,HTTPS,TELNET,简单邮件传送协议SMTP
3、什么是域名?为什么需要域名?
域名是由点、字母、数字组成一个名称,一个域名代表一个IP地址。
4、把域名解析成IP地址的服务叫做什么服务?它有什么特点。
DNS服务,DNS服务器分为三级:根域名服务器、*域名服务器、本地域名服务器,用来查询下一级域名服务器的地址和解析不同不同级别的域名。
5、DHCP协议是应用层中重要的一个协议,DHCP协议主要干了什么工作?
动态主机设置协议DHCP提供了即插即用联网的功能,主要用来实现局域网中设备IP地址的自动化配置。
6、HTTP协议是广泛使用的一个协议,也是最重要的应用层协议之一,HTTP协议解决了什么问题?
HTTP协议主要解决了从万维网服务器到本地浏览器之间的超文本的传输问题。
7、HTTP地址有什么特点,一个完整的HTTP地址由哪几个部分组成?
HTTP地址由五部分组成:<协议>://<主机>:<端口>/<路径>?<参数>。
8、HTTP协议中常用的HTTP请求方法有什么?他们分别表示什么意思。
POST,GET,DELETE,UPDATE。POST用来提交数据,GET用来获取URL标注的特定资源,DELETE用来删除特定的资源,UPDATE用来更新数据。
9、HTTP服务的状态码由3位十进制数组成,主要可以分成几类呢?
五类:1xx表示通知信息,服务器已经收到,需要进一步的处理;2xx表示消息接收成功;3xx表示重定向,需要客户端进一步请求;4xx消息表示客户端请求出错,需要检查请求链接;5xx表示服务器出错,例如服务器故障等。
10、一个浏览器在请求服务器时,拿到了404状态码的回应,请问是什么意思?
404 Not Found,请求的资源在服务器上未被发现。
11、一个浏览器在请求服务器时,拿到了502状态码的回应,请问是什么意思?
502 Bad Gateway,网关或代理服务器在执行请求时,收到下游服务器无效的响应。
12、请简述HTTP请求报文的主要结构。
请求报文分为三部分:
- 请求行:包括请求方法、URL和版本号;
- 首部行:每行表示一对键值对,由参数的名称和参数值组成;
- 实体:可能不使用。
13、请简述HTTP应答报文的主要结构。
应答报文分为三部分:
- 状态行:包括版本、状态码、短语,短语是状态码的描述,例如404对应的短语是Not Found;
- 首部行:每行表示一对键值对,由参数的名称和参数值组成;
- 实体:可能不使用
14、什么是缓存,什么是Web缓存?
缓存是将一些请求和对应的响应预先存储起来,在用户访问的时候可以快速给用户返回相应的结果。web缓存是用于web请求的缓存。
15、Web代理在生成环境中应用非常广泛,一般使用Nginx来完成代理,请问什么是Web代理,Web代理有什么作用?
web代理是一组服务器,用来代替真正的服务器接收用户请求。可以起到保护真正的服务器,以及让复杂的服务器集群结构对用户透明。
16、什么是CDN,什么是爬虫?搜索引擎的本质是什么?
CDN是内容分发网络,通过在不同的地方部署资源服务器,来加快相应地区的资源请求的塑速率。
爬虫是一种在互联网中采集特定信息的程序。
搜索引擎本质上是将通过爬虫采集到的信息缓存起来,并按用户需要返回相应信息给用户。
17、HTTPS是安全的HTTP协议,HTTPS应用了密码学的知识,其中就包括对称加密和非对称加密,请问什么是对称加密,什么是非对称加密?
对称加密指的是,加密和解密的秘钥是一致的;非对称加密指的是,加密和解密的秘钥是不一致的。
18、SSL为现代Web应用的安全作出了重要的贡献,请简述SSL握手的主要过程。
SSL握手分成四步:
- 协商加密算法:客户端发送SSL版本号和自己支持的一些加密算法;服务器从中选出自己支持的加密算法,并通知客户端。
- 服务器鉴别:服务器发送包含选定加密算法公钥的数字证书给客户端;客户端使用该证书认证机构公开发布的公钥验证数字证书。
- 会话秘钥计算:客户端产生一个随机数,用服务器的公钥进行加密后发送给服务器;服务器解密获取秘钥。
- 安全数据传输:双方用会话秘钥加密和解密它们之间传送的数据,并验证其完整性。
19、数字证书是什么?
数字证书是可信任组织颁发给特定对象的认证。可信任组织指的是,客户端和服务端都认为是安全的组织。