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

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

myzbx 2024-12-14 13:52 11 浏览

当你在浏览器中输入一个 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. 如果响应的内容是图片、视频等其他资源,浏览器会根据资源的类型进行相应的处理,如显示图片、播放视频等。

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

相关推荐

Django零基础速成指南:快速打造带用户系统的博客平台

#python##服务器##API##编程##学习#不是所有教程都值得你花时间!这篇实战指南将用5分钟带你解锁Django核心技能,手把手教你从零搭建一个具备用户注册登录、文章管理功能的完整...

iOS 17.0 Bootstrap 1.2.9 半越狱来啦!更新两点

这款Bootstrap半越狱工具终于更新,离上一次更新已相隔很久,现在推出1.2.9版本,主要为内置两点功能进行更新,也是提升半越狱的稳定性。如果你正在使用这款半越狱工具的,建议你更新。注意!...

iOS 16.x Bootstrap 1.2.3 发布,支持运行清理工具

本文主要讲Bootstrap半越狱工具更新相关内容。如果你是iOS16.0至16.6.1和17.0系统的,想体验半越狱的果粉,请继续往下看。--知识点科普--Bootstrap...

SpringBoot整合工作流引擎Acticiti系统,适用于ERP、OA系统

今日推荐:SpringBoot整合工作流引擎Acticiti的源码推荐理由:1、SpringBoot整合工作流引擎Acticiti系统2、实现了三级权限结构3、持久层使用了mybatis框架4、流程包...

SpringCloud自定义Bootstrap配置指南

在SpringCloud中自定义Bootstrap配置需要以下步骤,以确保在应用启动的早期阶段加载自定义配置:1.添加依赖(针对新版本SpringCloud)从SpringCloud2020...

Python使用Dash开发网页应用(三)(python网页开发教程)

PlotlyDash开发Web应用示例一个好的网页设计通常都需要编写css甚至js来定制前端内容,例如非常流行的bootstrap框架。我们既然想使用Dash来搭建web应用,很大的一个原因是不熟悉...

Oxygen XML Editor 27.1 中的新功能

OxygenXMLEditor27.1版是面向内容作者、开发者、合作者和出版商的行业领先工具包的增量版本。在27.1版本中,AIPositronAssistant得到了增强,包括用于...

【LLM-多模态】Mini-Gemini:挖掘多模态视觉语言模型的潜力

一、结论写在前面论文提出了Mini-Gemini,一个精简而强大的多模态VLM框架。Mini-Gemini的本质在于通过战略性框架设计、丰富的数据质量和扩展的功能范围,发掘VLM的潜在能力。其核心是补...

谐云课堂 | 一文详解分布式改造理论与实战

01微服务与分布式什么是分布式?首先,我们对上图提到的部分关键词进行讲解。单体,是指一个进程完成全部的后端处理;水平拆分,是同一个后端多环境部署,他们都处理相同的内容,使用反向代理来均衡负载,这种也叫...

基于Abaqus的手动挡换挡机构可靠性仿真

手动挡,也称手动变速器,英文全称为Manualtransmission,简称MT,即用手拨动换挡操纵总成才能改变变速器内的齿轮啮合位置,改变传动比,从而达到变速的目的。家用轿车主要采用软轴连接的换挡...

【pytorch】目标检测:彻底搞懂YOLOv5详解

YOLOv5是GlennJocher等人研发,它是Ultralytics公司的开源项目。YOLOv5根据参数量分为了n、s、m、l、x五种类型,其参数量依次上升,当然了其效果也是越来越好。从2020...

超实用!50个非常实用的PS快捷键命令大全分享

今天,给大家介绍50个非常实用的快捷键命令大全,大家伙都是设计师,关于软件使用那是越快越好啊。一、常用的热键组合1、图层混合模式快捷键:正常(Shift+Option+N),正片叠底(Shif...

Pohtoshop中深藏不露的小技巧(科目一考试技巧记忆口诀看完必过)

邢帅教育ps教程为大家总结了一些Pohtoshop中深藏不露的小技巧,可以帮助到大家在设计时减少不必要的麻烦,提高工作效率哦~~~1.设置网格线保持像素完美不在1:1分辨率下也能保持像素完美,可以...

Ganglia监控安装总结(监控安装工作总结)

一、ganglia简介:Ganglia是一个跨平台可扩展的,高性能计算系统下的分布式监控系统,如集群和网格。它是基于分层设计,它使用广泛的技术,如XML数据代表,便携数据传输,RRDtool用于数据...

谁说Adobe XD做不出好看的设计?那是你没搞懂这些功能

AdobeXD的美化栏具有将设计视图美化的功能,它能使界面设计和原型设计更漂亮、更吸引眼球。美化栏的7个功能包括竖线布局设计、横线布局设计、重复网格、图形大小和位置设置、响应式调整大小、文字美化以及...