浏览器输入一个网址后发生了什么

本文详细介绍了HTTP请求从DNS解析到页面显示的完整流程,包括浏览器如何查找IP地址,发送HTTP请求,服务器处理及返回响应,浏览器解码渲染页面,以及异步请求的发送。重点讲解了DNS解析的多级缓存机制和HTTP请求与响应的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. DNS解析

浏览器根据输入的URL去查找对应的IP地址。

  1. 查找浏览器缓存。浏览器会保存一段时间内访问过的一些网址的DNS信息,不同浏览器保存的时长不等。
  2. 若未找到对应记录,浏览器就会做一个系统调用查找系统缓存
  3. 若还未找到对应记录,浏览器就会发送一个请求到路由器上,然后路由器在自己的DNS缓存中查找记录
  4. 若还未找到对应记录,该请求会被发往ISP(互联网服务提供商,即中国移动、中国电信等),查找ISP缓存DNS的服务器,即本地DNS服务器。
  5. 若还未找到对应记录,ISP的DNS服务器就会从根域名服务器开始进行递归搜索
  6. 若还未找到对应记录,说明该域名不存在(未在网上正式注册过或域名已过期)

也就是说,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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值