浏览器输入URL后的过程

总体流程:

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

当用户在浏览器的地址栏中输入一个 URL 并按下回车,浏览器开始解析用户输入并判断这是一个合法的 URL。

2. DNS 解析

  1. 缓存查找:浏览器首先查看本地 DNS 缓存中是否有对应的 IP,如果有则直接使用。
  2. 主机文件查找:如果本地缓存没有找到,浏览器则会查询操作系统的 hosts 文件。
  3. 系统缓存查找:接着浏览器会查询系统缓存中的 DNS 记录。
  4. 路由器缓存查找:系统缓存没有找到时,会向路由器请求,查看路由器缓存。
  5. ISP DNS 服务器查找:如果路由器缓存也没有找到,最终请求会被发送到 ISP(互联网服务提供商)的 DNS 服务器。
  6. 递归查询:如果 ISP DNS 服务器也没有找到对应记录,则会进行递归查询,即向根 DNS 服务器、顶级域名服务器等逐步查询。

3. 建立 TCP 连接

获得 IP 地址后,基于三次握手(TCP 三次握手过程),浏览器与服务器建立 TCP 连接,以确保通信的可靠性。

4. 发送 HTTP 请求

TCP 连接建立成功后,浏览器会发送一个 HTTP 请求给服务器,这个请求包含了 URL、请求方法(GET、POST 等)、请求头等信息。

5.1 服务器处理请求

服务器接收到 HTTP 请求后,会根据请求路径和参数处理请求,并生成 HTTP 响应。这个过程可能涉及:

  • 查询数据库
  • 调用内部服务或第三方 API
  • 读取文件系统的静态资源(如 HTML 文件、图片、CSS 文件等)

5.2. 服务器返回 HTTP 响应

服务器将处理结果封装成 HTTP 响应,返回给浏览器。HTTP 响应包括状态码、响应头和响应体。

6. 浏览器开始处理 HTTP 响应

浏览器接收到 HTTP 响应后,将响应内容交给渲染引擎进行处理:

7. 关闭TCP连接(四次挥手)

相关推荐

  1. 浏览器输入一个url,它解析过程

    2024-07-12 05:00:03       51 阅读
  2. 浏览器输入url到渲染过程

    2024-07-12 05:00:03       33 阅读
  3. 输入URL到页面加载过程

    2024-07-12 05:00:03       68 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-12 05:00:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-12 05:00:03       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-12 05:00:03       58 阅读
  4. Python语言-面向对象

    2024-07-12 05:00:03       69 阅读

热门阅读

  1. 【问题记录】xxl-job admin端锁超时问题

    2024-07-12 05:00:03       25 阅读
  2. CNN -1 神经网络-概述2

    2024-07-12 05:00:03       24 阅读
  3. 使用 CSS 实现多列布局

    2024-07-12 05:00:03       21 阅读
  4. 【LeetCode】633. 平方数之和

    2024-07-12 05:00:03       20 阅读
  5. 深度优先算法-DFS(算法篇)

    2024-07-12 05:00:03       24 阅读
  6. C++ override关键字

    2024-07-12 05:00:03       24 阅读
  7. LeetCode 2974.最小数字游戏:排序+交换奇偶位

    2024-07-12 05:00:03       30 阅读
  8. 实现前端用户密码重置功能(有源码)

    2024-07-12 05:00:03       28 阅读
  9. [XCUITest] 处理iOS权限点击授权 有哪些权限?

    2024-07-12 05:00:03       23 阅读