面试经典题汇总📝

输入网址之后发生了什么?

我们在浏览器输入网址之后发生了什么,为什么我们能收到这个页面呢?

路径纠错

第一步❗️路径纠错

我们输入的路径可能有错,也可能缺少协议等东西,就比如我们输入了www..baidu.com,那么浏览器就会自动加上协议,变成http://www.baidu.com,路径补全后变成http://www.baidu.com/

DNS解析

第二步❗️DNS解析
DNS解析,就是把域名解析成IP地址,比如www.baidu.com,那么DNS解析之后,就会变成192.168.3.11

❗️这里需要注意DNS缓存和DNS载荷均衡❗️

  1. DNS缓存

    • 本地缓存
    • 浏览器缓存
    • 系统缓存
  2. DNS载荷均衡

    我们知道DNS解析后会获取到一个IP地址,这个地址对应网站服务器地址;但是一个大公司可能有上千台服务器,那么返回的到底是哪台服务器呢?

    这里就需要到DNS负载均衡了,所谓的负载均衡是根据我们的地理位置距离服务器的距离来决定解析出的IP地址,这样就很好的分散了服务器的压力,提高我们的访问速度。

TCP连接

第三步❗️TCP连接
简单来说,TCP连接就是我们为发送和接受数据建立的通道,而TCP连接的建立需要三次握手和四次挥手。

三次握手

  1. 客户端向服务端发送一个SYN包
  2. 服务端在接收到SYN包之后,向客户端发送一个SYN+ACK包
  3. 客户端在接收到SYN+ACK包之后,向服务端发送一个ACK包

经过这三次握手,TCP连接就建立起来了。

发送HTTP请求

第四步❗️发送HTTP请求
客户端向服务端发送一个HTTP请求,请求包括请求行,请求头,请求体

  • 请求行
    • 请求方法: GET/POST/PUT/DELETE
    • 请求路径
  • 请求头
  • 请求体(GET请求没有)

服务端响应数据

第五步❗️服务端响应数据
服务端接收到http请求后会返回一个http响应:

  • 状态行
    • 响应码
  • 响应头
    • content-type: text/html;charset=utf-8
  • 响应体

渲染

关于浏览器渲染可以看这篇博客浏览器渲染原理

断开连接

第六步❗️断开连接