从输入url到页面加载完成都发生了什么?

2019/2/11 Javascript

这个问题是一个比较经典的问题,答案如下: 1、浏览器的地址栏输入URL并按下回车。 2、浏览器查找当前URL是否存在缓存,并比较缓存是否过期。 3、DNS解析URL对应的IP。 4、根据IP建立TCP连接(三次握手)。 5、发起HTTP请求。 6、服务器处理请求,浏览器接收HTTP响应。 7、渲染页面,构建DOM树。 8、关闭TCP连接(四次挥手)。

  • 缓存,通过cache-control来控制。
  • DNS解析是指把域名URL转成对应的ip
  • TCP连接   在通过第一步的DNS域名解析后,获取到了服务器的IP地址,在获取到IP地址后,便会开始建立一次连接,这是由TCP协议完成的,主要通过三次握手进行连接。   第一次握手: 建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;   第二次握手: 服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;   第三次握手: 客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。   完成三次握手,客户端与服务器开始传送数据。

三次握手,如果某一次握手莫名的失败,tcp会把同样的包再发送一次

  • 浏览器向服务器发送HTTP请求   完整的HTTP请求包含请求起始行、请求头部、请求主体三部分。

  • 渲染页面包括:解析和渲染,生成DOM树和CSSOM树。