经典问题:在浏览器输入一个url后,会发生什么事情呢?
(1)假设是简单的http请求(GET),IPV4,无代理。
-
浏览器先查看浏览器缓存-系统缓存-路由器缓存,若缓存中有,请略过中间步骤,直接跳到第9步~若没有,则按照下面的步骤进行操作。
-
浏览器从url中解析出服务器的主机名,并将主机名转换成服务器的IP地址。PS:DNS查找域名的过程
-
浏览器从url中解析出端口号,默认80
-
浏览器建立一条与服务器的tcp连接(建立过程:三次握手)。
PS:一个完整的TCP连接 -
浏览器通过tcp连接向服务器发送http请求,请求数据包。
-
服务器处理HTTP请求,返回响应。
-
浏览器检查HTTP响应是否为一个重定向(3XX结果状态码)、一个验证请求(401)、错误(4XX、5XX)等等,这些都需要根据具体情况分类处理。PS:浏览器对于常见HTTP状态码的反应
-
浏览器接收HTTP响应并且可能关掉TCP连接,或者是重新建立连接使用新情求,获得新响应。
-
浏览器解码响应,如果响应可以缓存,则存入缓存。
-
浏览器显示HTML页面。
-
浏览器发送请求获取嵌入在HTML中的资源(html,css,javascript,图片,音乐······),对于未知类型,会弹出对话框。
-
浏览器发送异步请求。
-
页面全部渲染结束。