从输入URL之后发生了什么

142 阅读2分钟

1、输入URL之后,浏览器本身不能识别URL,所以要通过域名解析获得IP。

通过DNS缓存信息;
没有缓存则从根域名服务器查找到对应的IP;

2、获得IP后,客户端会像服务器发送HTTP请求,建立TCP连接。

TCP连接的三次握手:
    第一次握手:客户端向服务器发送SYN报文;
    第二次握手:服务端接收报文后会返回一个SYN+ACK的响应;
    第三次握手:客服端接收到响应报文后,会响应一个ACK报文;
为什么是三次握手?
    服务器--(确认客户端发送能力,服务器的接收能力);
    客户端--(确认客户端的发送和接收能力,服务器的发送和接收能力);
    服务端--(确认客户端的接收能力,服务端的发送能力);

3、服务器处理数据后,返回给客户端,关闭TCP连接。

四次挥手:假设客户端发起
    第一次挥手:客户端发送FIN(序列号),客户端处于FIN_WAIT状态;
    第二次挥手:服务端接收到FIN后发送ACK(序列号+1),表明收到客户端报文了,此时处于
    CLOSE_WAIT状态;
    第三次挥手:如果服务端也想断开连接,会发送FIN报文,此时处于LAST_ACK;
    第四次挥手:接收到FIN后,发送ACK报文,此时处于TIME_WAIT状态,等待一段时间后,确保
    服务端接收到ACK后进行关闭。
    
等待时间可以设置为一个报文发送来回的时间,在这个时间内,如果客户端没有再次收到FIN,
则可确保服务端已经成功接收ACK,如果收到FIN,则表示之前发送的ACK丢失了,重新发送ACK。

4、客户端接收到数据后进行页面渲染。

解析HTML文件,创建DOM树;
解析css文件,将DOM树对应的节点进行样式的渲染,render树。