从页面输入url到页面呈现的过程

第一步:查找浏览器缓存
首先会查找浏览器强缓存,如果强缓存数据没有失效,就会直接使用缓存数据,如果强缓存数据失效,就需要通过http请求获取资源。

第二步:通过DNS解析得到url的IP地址
浏览器提供了DNS数据缓存功能。如果一个域名已经解析过,会将解析结果缓存下来,下次直接使用缓存,不需要再经过DNS解析。不同的浏览器有不同的缓存时间。
**备注:**本地缓存的查询过程:(1).通过浏览器缓存。浏览器会缓存DNS记录一段时间,不同的浏览器有不同的缓存时间。(2).如果在浏览器缓存中没有找到该记录,浏览器会做一个系统调用,来查找系统缓存的记录。(3).如果在系统缓存中还未找到,则检查路由器缓存。

DNS迭代查询:
如果缓存都没有命中,会去请求本地域名服务器
如果本地域名服务器没有命中,会去请求根域名服务器;
根域名服务器告诉本地域名服务器去查询顶级域名服务器,本地域名服务器向顶级域名服务器进行查询;
顶级域名服务器告诉本地域名服务器去查询权限域名服务器,于是本地域名服务器向权限域名服务器进行查询;
权限域名服务器告诉本地域名服务器所查询的IP地址。
迭代查询过程如下:
这里写图片描述
至此,浏览器就得到了url的IP地址。

第三步:浏览器得到服务器端的IP地址后,与服务器端建立TCP连接

建立TCP连接的过程就是三次握手过程。
这里简述一下三次握手的过程:

  1. 客户端向服务器端发送连接请求的报文;
  2. 服务器端收到请求后,同意建立连接,向客户端发送确认报文;
  3. 客户端收到服务器端的确认报文后,再次向服务器端发出报文,确认已收到确认报文。

至此,浏览器与服务器已经建立了TCP连接,开始进行通信。
具体的TCP三次握手连接参考:tcp三次握手和四次挥手

第四步:建立TCP连接后,浏览器向服务器发送http请求
例如:浏览器发出取文件指令GET。

第五步:服务器响应http请求,将请求的指定资源发送给浏览器

第六步:浏览器释放TCP连接

释放TCP连接的过程就是四次挥手过程。
这里简述一下四次挥手过程:
1.浏览器向服务器发送释放连接报文;
2.服务器收到释放报文后,发出确认报文,然后将服务器上未传送完的数据发送完;
3.服务器数据传输完成后,向浏览器发送释放连接请求;
4.浏览器收到报文后,发出确认,然后等待一段时间后,释放TCP连接。

第七步:浏览器得到完整的html代码开始进行解析与渲染,如果遇到外部引用的css,图片等资源,同样发送一个http请求。
具体的解析渲染参考:浏览器渲染过程
第八步:浏览器根据拿到的资源对页面进行渲染,最终把一个完整的页面呈现出来。

补充:DNS域名系统的工作原理:

当一个应用进程需要把某个域名解析成为IP地址时,该应用进程会调用解析程序,并成为一个DNS用户。把待解析的域名放在DNS请求报文中,以UDP数据报的形式发送给本地域名服务器,本地域名服务器查找到相对应的IP地址后,就将该域名的IP地址信息放入应答报文中返回给应用进程。
如果本地域名服务器没有直接找到相对应的IP地址,则向根域名服务器发出迭代查询,再将查询到的IP地址返回给应用进程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值