从输入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树。