浏览器输入URL到页面展示到底发生了什么?

用户在浏览器输入www.baidu.com这个URL到页面显示这个过程中,发生了一系统的操作:

​ 首先,浏览器会请求DNS把这个域名解析成IP地址,然后根据这个IP地址在互联网上寻找对应的服务器,经过TCP三次握手后与服务器建立TCP连接,并根据HTTP协议向这个服务器的默认80端口发起get请求,这个服务器处理完请求后以HTTP报文格式返回默认的数据资源给访问的用户,用户接受到响应报文后浏览器根据HTML解析DOM树,加载CSS,JS图片并渲染页面,数据传输完毕后发起TCP四次挥手,断开TCP连接

​ 实际上,在服务端还有一系列复杂的业务逻辑:服务器可能有多台,到底指定哪一台服务器到处理请求,这就需要一个负载均衡设备来平均分配所有的用户请求,如软件负载均衡常用的nginx,或硬件实现的负载均衡如F5;请求的数据可能存储在分布式缓存,还是一个静态文件,还是在数据库里;

​ 值得注意的是,当数据返回浏览器时,浏览器解析的过程中发现一些静态资源(如CSS,JS或者图片)时,又会发起另外的HTTP请求(此时TCP连接未断开,HTTP1.1协议中默认开户持久连接,Connection: keep-alive ),而这些请求很可能会在CDN上,那么CDN服务器又会处理这个用户的请求

总体来说分为以下几个过程:

  • DNS 解析:将域名解析成 IP 地址
  • TCP 连接:TCP 三次握手
  • 发送 HTTP 请求
  • 服务器处理请求并返回 HTTP 报文
  • 浏览器解析渲染页面
  • 断开连接:TCP 四次挥手

以上是对URL到页面显示这个过程的一个总体概括,很多可以扩展的细节文中没有提到:

如其中DNS的解析可能会经过漫长的10个步骤

TCP连接是如何建立的,三次握手四次握手工作过程

HTTP报文格式与解析过程

CDN工作机制

这样细节我会在后面专门写几篇博客介绍,敬请关注吧

参考图:
在这里插入图片描述

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值