百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

从输入URL地址到网页呈现,中间都经历了啥过程。

zhezhongyun 2024-12-08 20:01 52 浏览

当你在浏览器中输入一个 URL 地址到网页呈现出来,中间经历了以下复杂而精彩的过程:

一、用户输入 URL

用户在浏览器地址栏中输入 URL(Uniform Resource Locator,统一资源定位符),比如 “https://www.example.com”。

二、DNS 解析


  1. 浏览器首先检查自身的缓存中是否有该 URL 对应的 IP 地址。如果有,直接使用该 IP 地址进行后续步骤。
  2. 如果浏览器缓存中没有,浏览器会查询操作系统的缓存,看是否有该 URL 的 IP 地址记录。
  3. 若操作系统缓存中也没有,操作系统会向本地 DNS 服务器发起查询请求。本地 DNS 服务器通常由你的网络服务提供商(ISP)提供。
  4. 本地 DNS 服务器也可能没有该 URL 的 IP 地址记录,这时它会向根 DNS 服务器发起查询。根 DNS 服务器会告知本地 DNS 服务器负责该顶级域名(如 “.com”)的 DNS 服务器地址。
  5. 本地 DNS 服务器接着向顶级域名 DNS 服务器查询,顶级域名 DNS 服务器又会告知负责该二级域名(如 “example.com”)的 DNS 服务器地址。
  6. 本地 DNS 服务器继续向二级域名 DNS 服务器查询,最终获得该 URL 对应的 IP 地址,并将其返回给操作系统,操作系统再将 IP 地址返回给浏览器。

三、建立 TCP 连接(对于 HTTP/1.1 及以下版本通常需要建立连接,HTTP/2 和 HTTP/3 有所不同)

  1. 浏览器获得 IP 地址后,使用该 IP 地址和目标服务器的端口号(通常 HTTP 为 80 端口,HTTPS 为 443 端口)尝试建立 TCP 连接。
  2. 首先进行 “三次握手”:
    • 第一次握手:客户端(浏览器)向服务器发送一个带有 SYN(同步)标志的数据包,请求建立连接,并随机生成一个初始序列号(seq=x)。
    • 第二次握手:服务器接收到客户端的数据包后,向客户端发送一个带有 SYN 和 ACK(确认)标志的数据包,表示服务器同意建立连接,并确认收到了客户端的请求。服务器也随机生成一个初始序列号(seq=y),同时将客户端的序列号加 1 后作为确认号(ack=x+1)。
    • 第三次握手:客户端接收到服务器的数据包后,向服务器发送一个带有 ACK 标志的数据包,表示客户端确认收到了服务器的同意,并确认服务器的序列号。客户端将服务器的序列号加 1 后作为确认号(ack=y+1)。

四、发送 HTTP 请求

  1. TCP 连接建立成功后,浏览器向服务器发送 HTTP 请求报文。请求报文包含请求方法(如 GET、POST 等)、请求 URL、HTTP 版本号、请求头(包含各种元数据,如用户代理、接受的内容类型等)和请求体(如果有)。

五、服务器处理请求

  1. 服务器接收到 HTTP 请求后,根据请求的 URL 和方法进行相应的处理。
  2. 如果是静态资源请求(如 HTML 文件、图片、CSS 文件、JavaScript 文件等),服务器直接从文件系统中读取相应的文件,并将其返回给浏览器。
  3. 如果是动态资源请求(如 PHP、JSP、ASP.NET 等动态网页),服务器会执行相应的脚本或程序,生成动态内容,并将其返回给浏览器。在这个过程中,服务器可能会与数据库进行交互,获取数据并进行处理。

六、服务器返回 HTTP 响应

  1. 服务器处理完请求后,向浏览器发送 HTTP 响应报文。响应报文包含 HTTP 版本号、状态码(如 200 表示成功、404 表示未找到资源等)、响应头(包含各种元数据,如内容类型、内容长度等)和响应体(即请求的资源内容)。

七、浏览器解析渲染页面

  1. 浏览器接收到 HTTP 响应后,首先解析响应头,获取响应的内容类型、编码方式等信息。
  2. 如果响应的内容是 HTML 文件,浏览器会开始解析 HTML 文档:
    • 构建 DOM 树:浏览器逐行解析 HTML 代码,将标签转换为 DOM(Document Object Model,文档对象模型)节点,并构建成一棵 DOM 树。
    • 下载并解析 CSS:浏览器会发现 HTML 文档中引用的 CSS 文件,并发送请求下载这些文件。下载完成后,浏览器解析 CSS 代码,构建 CSSOM(CSS Object Model,CSS 对象模型)。
    • 构建渲染树:结合 DOM 树和 CSSOM,浏览器构建渲染树,渲染树只包含需要显示在页面上的节点和对应的样式信息。
    • 布局:浏览器根据渲染树进行布局计算,确定每个节点在屏幕上的位置和大小。
    • 绘制:最后,浏览器根据布局结果,将页面绘制到屏幕上。
  1. 如果响应的内容是图片、视频等其他资源,浏览器会根据资源的类型进行相应的处理,如显示图片、播放视频等。

至此,网页就完整地呈现在用户面前了。

相关推荐

perl基础——循环控制_principle循环

在编程中,我们往往需要进行不同情况的判断,选择,重复操作。这些时候我们需要对简单语句来添加循环控制变量或者命令。if/unless我们需要在满足特定条件下再执行的语句,可以通过if/unle...

CHAPTER 2 The Antechamber of M de Treville 第二章 特雷维尔先生的前厅

CHAPTER1TheThreePresentsofD'ArtagnantheElderCHAPTER2TheAntechamber...

CHAPTER 5 The King'S Musketeers and the Cardinal'S Guards 第五章 国王的火枪手和红衣主教的卫士

CHAPTER3TheAudienceCHAPTER5TheKing'SMusketeersandtheCardinal'SGuard...

CHAPTER 3 The Audience 第三章 接见

CHAPTER3TheAudienceCHAPTER3TheAudience第三章接见M.DeTrévillewasatt...

别搞印象流!数据说明谁才是外线防守第一人!

来源:Reddit译者:@assholeeric编辑:伯伦WhoarethebestperimeterdefendersintheNBA?Here'sagraphofStea...

V-Day commemorations prove anti-China claims hollow

People'sLiberationArmyhonorguardstakepartinthemilitaryparademarkingthe80thanniversary...

EasyPoi使用_easypoi api

EasyPoi的主要特点:1.设计精巧,使用简单2.接口丰富,扩展简单3.默认值多,writelessdomore4.springmvc支持,web导出可以简单明了使用1.easypoi...

关于Oracle数据库12c 新特性总结_oracle数据库12514

概述今天主要简单介绍一下Oracle12c的一些新特性,仅供参考。参考:http://docs.oracle.com/database/121/NEWFT/chapter12102.htm#NEWFT...

【开发者成长】JAVA 线上故障排查完整套路!

线上故障主要会包括CPU、磁盘、内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍。同时例如jstack、jmap等工具也是不囿于一个方面的问题...

使用 Python 向多个地址发送电子邮件

在本文中,我们将演示如何使用Python编程语言向使用不同电子邮件地址的不同收件人发送电子邮件。具体来说,我们将向许多不同的人发送电子邮件。使用Python向多个地址发送电子邮件Python...

提高工作效率的--Linux常用命令,能够决解95%以上的问题

点击上方关注,第一时间接受干货转发,点赞,收藏,不如一次关注评论区第一条注意查看回复:Linux命令获取linux常用命令大全pdf+Linux命令行大全pdf为什么要学习Linux命令?1、因为Li...

linux常用系统命令_linux操作系统常用命令

系统信息arch显示机器的处理器架构dmidecode-q显示硬件系统部件-(SMBIOS/DMI)hdparm-i/dev/hda罗列一个磁盘的架构特性hdparm-tT/dev/s...

小白入门必知必会-PostgreSQL-15.2源码编译安装

一PostgreSQL编译安装1.1下载源码包在PostgreSQL官方主页https://www.postgresql.org/ftp/source/下载区选择所需格式的源码包下载。cd/we...

Linux操作系统之常用命令_linux系统常用命令详解

Linux操作系统一、常用命令1.系统(1)系统信息arch显示机器的处理器架构uname-m显示机器的处理器架构uname-r显示正在使用的内核版本dmidecode-q显示硬件系...

linux网络命名空间简介_linux 网络相关命令

此篇会以例子的方式介绍下linux网络命名空间。此例中会创建两个networknamespace:nsa、nsb,一个网桥bridge0,nsa、nsb中添加网络设备veth,网络设备间...