目录
1. DNS解析
浏览器根据输入的URL去查找对应的IP地址。
- 查找浏览器缓存。浏览器会保存一段时间内访问过的一些网址的DNS信息,不同浏览器保存的时长不等。
- 若未找到对应记录,浏览器就会做一个系统调用查找系统缓存。
- 若还未找到对应记录,浏览器就会发送一个请求到路由器上,然后路由器在自己的DNS缓存中查找记录。
- 若还未找到对应记录,该请求会被发往ISP(互联网服务提供商,即中国移动、中国电信等),查找ISP缓存DNS的服务器,即本地DNS服务器。
- 若还未找到对应记录,ISP的DNS服务器就会从根域名服务器开始进行递归搜索。
- 若还未找到对应记录,说明该域名不存在(未在网上正式注册过或域名已过期)
也就是说,DNS根据域名查询IP地址的过程为:浏览器缓存——操作系统缓存——本地域名服务器缓存——根域名服务器
2. 浏览器根据IP地址向Web服务器发送一个HTTP请求(服务器可能会发生重定向)
浏览器和服务器建立连接后,浏览器给web服务器发送一个HTTP请求,方式为GET,例如访问www.baidu.com,本质是在建立起的TCP连接中,按照HTTP协议标准发送一个索要网页的请求。
服务器发生重定向的话,浏览器就会跟踪重定向地址,发送另一个获取请求到该地址。
3. 服务器收到请求并进行处理
4. 服务器返回一个HTTP响应
5. 浏览器对响应进行解码,渲染显示
在浏览器没有完整接受全部HTML文档时,它就已经开始显示这个页面了,如果是个静态的页面,到此就基本结束了。
如果是是动态的,那么在浏览器显示HTML时,会获取嵌入在HTML中的对象,浏览器会发送获取请求来重新获得这些文件。这些请求都要经历一个和HTML读取类似的过程。
对于静态的页面内容,浏览器通常会进行缓存,而对于动态的内容,浏览器通常不会进行缓存。
6. 页面显示完成,浏览器发送异步请求
页面显示完成后客户端仍与服务器端保持着联系,从而及时更新一些页面信息。
在浏览器中执行的JavaScript代码会给服务器发送异步请求。这个异步请求发送给特定的地址,它是一个按照程式构造的获取或发送请求。
参考1
参考2
参考3