昨天面试碰到的网络基础的题,被问懵了,记录一下

253 阅读3分钟

计算机网络的认识

计算机网络最新的是五层体系结构,依次是:

  • 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服务器,从而更快的连接。

输入一个url到浏览器,中间经历了哪些过程

通过DNS协议解析域名为IP

检查浏览器是否有缓存,判断使用强缓存还是协商缓存

三次握手

建立长连接

四次挥手

返回数据

解析HTML 渲染页面

请求结束,断开连接