“检查缓存、先解析URL、然后DNS域名解析、再发起HTTP请求建立TCP连接、服务端响应返回页面资源进行渲染、然后断开TCP连接”
1.合成URL
用户输入URL,浏览器会自动判断用户输入的信息是搜索内容还是URL,如果是搜索内容,就将搜索内容+默认搜索引擎合成新的URL地址;如果用户输入的是URL,就在这段内容上加上协议合成符合规则的URL。
2.DNS域名解析
合成URL后,先用递归的方式在本地查找,如果找不到,就用本地DNS服务器设置的转发器进行查询,若为转发器查询,则用迭代的方式从域名服务器上进行查询。
3.建立TCP连接,三次握手
客户端向服务器端发送连接请求;服务器端收到客户端的连接请求,回应一个处于响应状态的信息;客户端收到服务器端回应的信息,客户端再发送一个确认连接的请求,双方都处于建立连接的状态。
4.发送HTTP请求,服务器处理请求,响应结果
TCP建立连接后,浏览器就可以利用HTTP/HTTPS协议向服务器发送请求;服务器收到请求,对请求的内容进行解析,解析完毕后返回相应的状态码。
5.关闭TCP连接,四次挥手
挥手操作可以是客户端发起,也可以是服务器端发起。
1.客户端向服务器端发送一个关闭连接请求,并处于关闭等待状态;
2.服务器端收到了客户端发送的关闭请求,回应一个确认信息,表示我“同意”你的关闭请求;
3.服务器端也向客户端发送一个关闭连接请求,同时进入最终确认状态;
4.客户端收到服务器端发来的响应信息,然后向服务器端发送确认信息并进入等待状态中,服务器收到客户端的确认信息后就关闭连接,此时客户端等待时间超时后依然没有收到回复则证明服务端已关闭,那客户端也可以关闭连接了。
6.浏览器渲染
从服务器获取到的数据进行解析,HTML解析器将HTML先生成DOM树,同时CSS解析器将css样式表成CSSOM,然后二者合并生成Render Tree(渲染树),然后渲染引擎根据Render Tree计算好每个节点的信息,最后根据计算好的信息绘制整个页面。
这道题没有最详细的解答,只有更详细的解答,答得越完整越深入,说明你技术的广度和深度都是很不错的