输入URL后,接下来会发生什么--经典前端面试题

问题:在浏览器输入一个网址,接下来会做什么?

Step1: DNS(Domain Name System)解析

1
2
DNS(Domain Name System)服务是和HTTP协议一样位于应用层的协议。它提供域名到IP地址之间的解析。
用户通常使用主机名或域名来访问对方的计算机,而不是通过IP地址访问。

DNS作用.png

1
2
首先,找缓存。浏览器缓存,系统缓存,路由器缓存,ISP DNS 缓存, 递归搜索(你的ISP(Internet Service Provider)的DNS从根域名服务器开始进行递归搜索,从.com顶级域名服务器到对应网址的域名服务器)
DNS解析是一个递归查询的过程

完整请求过程

完整的网络请求.png

Step2-TCP连接

1
2
3
HTTP协议作为TCP作为传输层协议。HTTP报文是包裹在TCP报文中发送;
服务器在收到TCP报文时提取出HTTP报文;
HTTPS则在进入TCP报文之前对HTTP做一次加密,使用SSL或TLS对HTTP报文加密。

HTTP请求报文: 请求行,请求报文和请求正文

  • 请求行:GET index.html HTTP/1.1
  • 请求报文:Accept, Accept-Charset, Accept-Encoding, Accept-Language, Content-Type, Authorization, Cookie, User-Agent等;
  • 请求正文:一般客户端想服务器传递数据,这些数据就存储在请求正文中。
    image.png

HTTP响应报文: 状态码,响应报头报文和响应正文

  • 状态码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    1xx:指示信息–表示请求已接收,继续处理。
    2xx:成功–表示请求已被成功接收、理解、接受。
    200:请求成功
    204:无内容。
    3xx:重定向–要完成请求必须进行更进一步的操作。
    301:永久性转移
    302:暂时性转移
    304:未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源
    4xx:客户端错误–请求有语法错误或请求无法实现。
    400:客户端请求的语法错误,服务器无法理解
    401:请求要求用户的身份认证
    403:服务器理解请求客户端的请求,但是拒绝执行此请求
    404:请求资源不存在
    422:参数错误,同400
    5xx:服务器端错误–服务器未能实现合法的请求。
    500:内部服务器错误
    501:服务器不支持请求的功能,无法完成请求
    503:服务器停机维护
  • 响应报头
    Server,Content-Type等

  • 响应报文
    服务器返回给浏览器的文本信息,通常HTML,CSS,图片等
    响应头.png

Step3-浏览器渲染

显示过程