具体可以分为一下几步:
- 输入url,回车
- 浏览器先查看浏览器缓存 -> 系统缓存 -> 路由器缓存 如果缓存中有,会直接在屏幕中显示页面内容。若没有,则跳到第三步操作。
- 在发送http请求前,需要域名解析(DNS解析),获取解析对应的url。
- 浏览器与服务器进行tcp三次握手
- 握手成功之后, 浏览器向服务器发送http请求,请求数据包
- 服务器处理浏览器的请求,将数据返回给浏览器
- 浏览器收到http响应
- 浏览器读取数据,并解析html结构。
- 生成Dom树、解析css样式、js交互
- 客户端和服务器交互
- ajax查询
其中,步骤2的具体过程是:
浏览器缓存:浏览器会记录DNS一段时间,因此,只是第一个地方解析DNS请求;
操作系统缓存:如果在浏览器缓存中不包含这个记录,则会使系统调用操作系统,获取操作系统的记录(保存最近的DNS查询缓存);
路由器缓存:如果上述两个步骤均不能成功获取DNS记录,继续搜索路由器缓存;
ISP缓存:若上述均失败,继续向ISP搜索。