- 首先,在浏览器中输入url
- 浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存存在,就会直接在屏幕中显示页面内容,如果没有,则进入第三步
- 在发送http请求前,需要域名解析(DNS解析),解析出相应的IP地址
- 浏览器想服务器发送tcp连接,在浏览器建立tcp三次握手
- 握手成功后,浏览器向服务器发送http请求,请求数据包
- 服务器处理收到的请求,将数据返回至浏览器
- 浏览器收到http响应
- 读取页面内容,浏览器渲染,解析html源码
- 生成DOM树,解析CSS样式,js交互
- 客户端与服务器交互
- ajax查询
其中步骤2的具体过程是:
- 浏览器缓存:浏览器会记录DNS一段时间,因此,只是第一个地方解析DNS请求
- 操作系统缓存:如果在浏览器中不包含这个记录,则会使系统调用操作系统获取操作系统的记录(保存最近的DNS查询缓存);
- 路由器缓存:如果上述两个步骤均不能成功获取DNS记录,继续搜索路由器缓存
- ISP缓存:如果上述均失败,继续向ISP搜索
另一种答案
- 浏览器输入url并解析
- 查询当前url是否存在缓存,并对比缓存是否过期
- DNS解析URL到指定的ip
- 建立TCP连接(三次握手)
- 发送http请求
- 服务器收到的请求,将数据返回到浏览器
- 浏览器收到http响应
- 浏览器解析并渲染页面
- 关闭tcp连接