浏览器输入一处网址的时候,会发生什么事情

当在浏览器中输入网址,首先会判断是否为域名并进行DNS查询找到主机号,接着通过TCP三次握手建立连接,请求数据。后台接收到请求后处理业务逻辑,如读取静态文件。最后,浏览器接收数据,解析HTML构建DOM树,同时加载CSS和JavaScript,完成页面渲染。

浏览器输入一处网址的时候,会发生什么事情

1.请求部分

  1. 首先判断请求的地址是不是一个域名,如果是域名,则进入步骤2
  2. 地址是一个域名,需要向DNS服务器进行查询域名所对应的主机号,因为只有主机号才能找到互联网中的主机,首先确定采取的是运输层的UDP协议,即应用层发一个报文下去UDP发送请求
    • DNS查询的时候,会优先向本地域名服务器进行查询(可能不止一个),如果查询不到的话,会采用递归查询的方式向另外一个本地域名服务器进行请求。(递归即域名服务器会进行代理查询)。
    • 如果查询不到的话,会向权限域名服务器进行查询,权限域名服务器采取迭代查询的方式,即如果没有对应关系的话,会找到下一台权限域名服务器的地址返回给客户端,由客户端开启另外的UDP请求
  3. 拿到ip地址后。先明确输入地址是一个get请求,以http为例吧,会将请求加上请求头,然后转为字节流传到运输层,然后发送TCP请求。
  4. TCP首先要进行三次握手创建连接状态。建立连接后,将应用层下来的字节流根据大小封装成TCP数据包,然后进行传输,采用滑动窗口的形式进行传输数据。
  5. 服务端的TCP接受到所有数据后,会将字节流按正确的顺序合并在一起,然后进行协议升级,确认是http协议,根据端口发送到对应的后台应用。

2.后台部分

  1. 后台应用拿到请求头,根据url路径,在后台的router里面判断是对应哪个方法,如果是文件读取的话,会根据url读取对应的静态文件,以字节流的方式写回到TCP进行返回数据。

3.页面渲染部分

  1. 浏览器拿到所有数据后,TCP进行四次挥手结束会话。
  2. 解析HTML文件,将HTML转为DOM树,遇到css的话,阻塞去请求css文件。在加载完一个css的时候会跟dom树进行渲染,所以在加载的过程中会发生页面布局的重排和重绘。
  3. 加载script标签,由同步加载、异步加载。其中异步加载还分为加载完毕后直接执行、等到文档加载完毕后再执行。
  4. 文档加载完毕后,调用DOMContentLoaded事件
  5. 所有资源文件加载完毕后,调用window.onload事件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值