计算机网络的认识
计算机网络最新的是五层体系结构,依次是:
- 1:物理层
- 2:链路层
- 3:网络层
- 4:传输层
- 5:应用层
HTTP1, HTTP1.1, HTTP2的区别
HTTP1.0
仅仅使用在较简单的网页和网络上,是一种无状态,无连接的应用层协议
HTTP1.1
增加缓存处理
强缓存
浏览器会先通过Cache-Control 判断强缓存是否可用,如果可以直接读取缓存
协商缓存
若强缓存不可用,发起Http请求,请求头携带If-Modified-Since 和 If-None-Match 这些条件请求字段检查资源是否更新,若更新,返回状态码200与新资源。若未更新,告诉浏览器直接使用强缓存
管道化技术
在请求头中会加入一个connection属性,将connection的值设置为keep-aliv,可以实现一个长连接,HTTP会在每次请求结束的时候断开连接,长连接减少了关闭和断开连接的延迟,HTTP1.1中是默认开启长连接的
HTTP2
HTTP2.0大幅度的提高了web性能,在HTTP1.1完全语义兼容的基础上,进一步减少了网络的延迟。实现低延迟高吞吐量。对于前端开发者而言,减少了优化工作。
头部压缩
多路复用
HTTPS相较于HTTP的优势
HTTPS是在HTTP和TCP之间建立了一个安全层,HTTP与TCP通信的时候,必须先经过这个安全层。对于HTTP,安全性更高。HTTPS的安全机制可以更好的被服务器识别。之前的HTTP发送请求,服务端是无法识别是不是需要返回数据的请求,由于多了一层安全机制,导致HTTPS的占用内存会相较于HTTP有所上升。
三次握手,四次挥手
三次握手
客户端与服务器建立连接的过程
- 客户端主动发起请求,发送SYN,将自己变为SYN-SENT, 发送seq = x
- 服务端收到客户的请求,返回seq = y 服务端的状态变为SYN - REVD
- 客户端收到返回值,进入ESTABLISHED状态,完成连接
为什么是三次握手,而不是两次握手, 为什么不是四次握手
客户端无法确定服务端是否收到连接请求, 三次已经可以确定双方的状态,没有必要四次
四次挥手
- 客户端发FIN报文,将seq = x 发送至服务端,进入FIN-WAIT-1 状态
- 服务端收到报文,发送ACK确认, 客户端收到ACK状态,进入FIN-WAIT-2状态等待
- 服务端端将数据处理完成,将数据发送给客户端
- 客户端收到数据发送ACK 向服务端确认
DNS是什么
DNS是域名系统,其实就是将URL的域名解析为IP,根据IP定位到服务器,向服务器去发送连接
DNS也可以说是一个应用层协议,我们发送一个请求,其中包含我们要查询的主机名,它就会给我们返回这个主机名对应的 IP;
DNS 其次是一个分布式的数据库,正式因为DNS的缓存机制,所以我们可以很快的知道域名对应的ip服务器,从而更快的连接。