从输入url敲下回车到显示页面,都发生了什么

本文详细介绍了从在浏览器地址栏中输入URL到页面完全加载并显示的整个过程,包括浏览器缓存检查、DNS解析、TCP连接建立、HTTP请求与响应、页面渲染等多个步骤。

从输入url到显示页面,发生了什么

第1种解释
第一步:客户机提出域名解析请求,并将该请求发送给本地的域名服务器。

第二步:当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回。

第三步:如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域)的主域名服务器的地址。
第四步:本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的域名服务器的地址。
第五步:重复第四步,直到找到正确的纪录。

第2种解释:
一般会经历以下几个过程:

1、首先,在浏览器地址栏中输入url

2、浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存中有,会直接在屏幕中显示页面内容。若没有,则跳到第三步操作。

3、在发送http请求前,需要域名解析(DNS解析)(DNS(域名系统,Domain Name System)是互联网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住IP地址。),解析获取相应的IP地址。

4、浏览器向服务器发起tcp连接,与浏览器建立tcp三次握手。(TCP即传输控制协议。TCP连接是互联网连接协议集的一种。)

5、握手成功后,浏览器向服务器发送http请求,请求数据包。

6、服务器处理收到的请求,将数据返回至浏览器

7、浏览器收到HTTP响应

8、读取页面内容,浏览器渲染,解析html源码

9、生成Dom树、解析css样式、js交互

10、客户端和服务器交互

11、ajax查询

### 浏览器地址栏输入URL和参数后回车的整个处理流程 当用户在浏览器地址栏输入一个URL和参数并按下回车时,浏览器会经历一系列复杂的操作来成从请求到页面展示的全过程。以下是详细解析: #### 1. **DNS 解析** - 浏览器首先会检查是否需要进行域名解析。如果输入的是IP地址,则跳过此步骤。 - 浏览器会按照以下顺序查找DNS缓存: - 检查 **浏览器缓存** 中是否有该域名对应的IP地址[^2]。 - 如果未命中,浏览器会查询 **操作系统缓存**[^2]。 - 接着,浏览器会检查 **路由器缓存** 和 **ISP服务器缓存**。 - 如果以上均未找到,浏览器将向本地DNS服务器发起递归查询[^5]。递归查询会依次经过根域名服务器、顶级域名服务器和权限域名服务器,最终获取目标域名对应的IP地址。 #### 2. **建立TCP连接** - 获取到目标服务器的IP地址后,浏览器会通过三次握手与目标服务器建立TCP连接[^3]。 - 如果使用的是HTTPS协议,还需要进行SSL/TLS握手以确保通信安全[^3]。 #### 3. **发送HTTP/HTTPS请求** - TCP连接建立成后,浏览器会根据输入URL和参数构造HTTP请求,并将其发送至目标服务器。 - 请求中包含方法(如GET或POST)、URL、头部信息以及可能的请求体数据。 #### 4. **处理重定向(如果存在)** - 如果服务器返回的状态码为301或302,表示需要重定向到其他URL[^1]。 - 浏览器会从响应头中的`Location`字段读取新的URL地址,并重新发起请求。 #### 5. **接收HTTP响应** - 服务器处理请求后,会返回一个HTTP响应,其中包含状态码、响应头和响应体[^3]。 - 响应体通常是一个HTML文档,也可能包含其他资源(如CSS、JavaScript、图片等)的链接。 #### 6. **构建DOM树** - 浏览器接收到HTML文档后,开始解析HTML结构并将其转换为DOM树[^4]。 - 在构建DOM树的过程中,浏览器可能会遇到外部资源(如CSS、JavaScript文件),此时会发起额外的网络请求下载这些资源。 #### 7. **渲染页面** - DOM树构建成后,浏览器会结合CSS样式生成渲染树[^4]。 - 渲染树中的每个节点都包含了可见元素的位置和尺寸信息。 - 浏览器随后会执行布局计算和绘制操作,将页面内容呈现给用户。 #### 8. **执行JavaScript** - 如果HTML文档中包含JavaScript代码,浏览器会在适当的时间点执行这些脚本。 - JavaScript可能会动态修改DOM树或触发额外的网络请求。 #### 9. **加载次级资源** - 页面中的图片、字体、视频等资源会被逐一加载。 - 浏览器会为每个资源发起独立的HTTP请求,并将其插入到页面中。 --- ### 示例代码:模拟HTTP请求 以下是一个简单的Python代码示例,用于模拟浏览器发送HTTP请求的过程: ```python import requests url = "https://example.com" response = requests.get(url) # 输出响应状态码和内容 print(f"Status Code: {response.status_code}") print(f"Response Body: {response.text}") ``` --- ### 总结 从输入URL页面全加载,浏览器经历了DNS解析、TCP连接建立、HTTP请求发送、响应接收、DOM树构建、页面渲染等多个阶段。每个阶段都可能涉及复杂的逻辑和网络交互。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值