当你在浏览器输入一个地址

你在浏览器中输出了一个地址,回车后,一直到显示页面,中间经历了哪些过程 ?

1. 用户输入 URL 并按下回车

  • 用户在浏览器的地址栏中输入一个 URL(例如 http://example.com)并按下回车键。

2. DNS 解析

  • 浏览器检查本地缓存中是否有该域名对应的 IP 地址。
  • 如果本地缓存没有,浏览器会向本地 DNS 服务器(通常是由 ISP 提供)发送 DNS 查询请求。
  • 本地 DNS 服务器查找该域名的 IP 地址,如果找不到,会递归查询上级 DNS 服务器,直到找到对应的 IP 地址。
  • 找到 IP 地址后,DNS 服务器将其返回给浏览器。

3. 建立 TCP 连接

  • 浏览器使用之前获得的 IP 地址,通过 TCP/IP 协议与目标服务器建立连接。
  • 浏览器向服务器的默认端口(通常是 80 或 443)发送 TCP SYN 请求,开始三次握手过程:
    1. 浏览器发送 SYN 包。
    2. 服务器收到 SYN 包后,回复 SYN-ACK 包。
    3. 浏览器收到 SYN-ACK 包后,回复 ACK 包,三次握手完成,TCP 连接建立。

4. 发送 HTTP 请求

  • TCP 连接建立后,浏览器向服务器发送 HTTP 请求:
    • 请求行(Request Line):包含请求方法(GET、POST 等)、请求 URL 和 HTTP 版本。
    • 请求头(Headers):包含浏览器的各种信息,如 User-Agent、Accept、Host 等。
    • 请求体(Body):在 GET 请求中通常为空,在 POST 请求中包含提交的数据。

5. 服务器处理请求

  • 服务器收到请求后,根据请求的 URL 和其他信息,进行处理。
  • 服务器可能需要:
    • 读取静态资源(如 HTML、CSS、JavaScript 文件等)。
    • 调用后台程序(如 PHP、Python、Java 等)生成动态内容。
    • 查询数据库以获取数据。
  • 处理完成后,服务器将生成 HTTP 响应。

6. 服务器发送 HTTP 响应

  • HTTP 响应包含以下部分:
    • 状态行(Status Line):包含 HTTP 版本、状态码(如 200 OK、404 Not Found 等)。
    • 响应头(Headers):包含服务器信息、内容类型、内容长度等。
    • 响应体(Body):包含请求的实际内容(如 HTML 页面、图像等)。

7. 浏览器接收响应并渲染页面

  • 浏览器接收到服务器的响应后,开始解析 HTML 内容。
  • 浏览器根据 HTML 内容,逐步下载并解析嵌入的资源(如 CSS、JavaScript、图像等)。
  • 浏览器构建 DOM 树(Document Object Model)和 CSSOM 树(CSS Object Model),结合成渲染树(Render Tree)。
  • 浏览器根据渲染树进行布局计算,将元素放置在正确的位置。
  • 浏览器绘制页面,将内容显示在屏幕上。

8. 执行 JavaScript 和动态更新页面

  • 浏览器继续解析并执行嵌入的或外部引用的 JavaScript 代码。
  • JavaScript 代码可能进行 DOM 操作或通过 AJAX 请求获取更多数据,动态更新页面内容。

总结

整个过程涉及 DNS 解析、TCP 连接、HTTP 请求和响应、页面解析和渲染、JavaScript 执行等多个步骤。每个步骤都可能涉及多个底层协议和技术细节,共同确保用户最终能够看到完整的网页。

在这里插入图片描述

  • 15
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

依旧风轻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值