在浏览器中输入一个URL并按下回车键后,会发生一系列复杂且有条不紊的步骤,从请求服务器到最终页面展示在你的屏幕上。这个过程可以分为以下几个关键步骤:

  1. URL 解析
  2. DNS 查询
  3. TCP 连接
  4. 发送 HTTP 请求
  5. 服务器处理请求
  6. 接收 HTTP 响应
  7. 浏览器渲染页面

1. URL 解析(示例)

URL(Uniform Resource Locator)是一种统一资源定位符,它包含了访问资源所需的所有信息。一个典型的URL格式如下:

http://www.example.com:80/path/to/resource?query=param#fragment

解析过程中,浏览器会将URL拆分为多个部分:

  • 协议(Scheme):如httphttps
  • 主机(Host):如www.example.com
  • 端口(Port):默认为80(HTTP)或443(HTTPS),如果没有显式指定,浏览器会使用默认端口。
  • 路径(Path):服务器上的资源路径。
  • 查询参数(Query Parameters):以?开头的参数部分。
  • 片段标识符(Fragment Identifier):以#开头的部分,指向页面内的某个位置。

2. DNS 查询

浏览器需要将URL中的主机名转换为IP地址,这个过程通过DNS(Domain Name System)来完成。DNS 查询的步骤包括:

  • 浏览器首先检查本地缓存中是否有该域名的IP地址。
  • 如果没有,浏览器会向本地DNS服务器发送查询请求。
  • 本地DNS服务器会递归查询其他DNS服务器,直到找到对应的IP地址并返回给浏览器。

3. TCP 连接

得到了IP地址后,浏览器需要与服务器建立连接。这个过程使用TCP(Transmission Control Protocol)完成。TCP连接的过程包括三次握手:

  1. 客户端发送SYN(同步)包:请求建立连接。
  2. 服务器返回SYN-ACK(同步-确认)包:同意建立连接。
  3. 客户端发送ACK(确认)包:确认连接建立。

4. 发送 HTTP 请求

TCP连接建立后,浏览器会发送一个HTTP请求。一个典型的HTTP请求包括以下部分:

  • 请求行(Request Line):包含请求方法(如GET或POST)、请求的URL路径和HTTP版本。
  • 请求头(Headers):包含客户端信息、期望的响应格式等。
  • 请求体(Body):POST请求时可能包含提交的数据。

5. 服务器处理请求

服务器接收到HTTP请求后,会进行处理:

  • 解析请求:服务器解析请求行和请求头,提取所需信息。
  • 路由请求:根据请求路径和方法,将请求路由到对应的处理程序。
  • 生成响应:处理程序处理请求后生成HTTP响应,包括响应行、响应头和响应体。

6. 接收 HTTP 响应

浏览器接收到服务器的HTTP响应后,会进行解析:

  • 解析响应行:确定HTTP状态码(如200表示成功,404表示资源未找到)。
  • 解析响应头:提取响应的元数据,如内容类型、内容长度等。
  • 解析响应体:获取实际的数据内容(如HTML、CSS、JavaScript)。

7. 浏览器渲染页面

浏览器解析并渲染HTML内容的过程包括以下步骤:

  • 构建DOM树:解析HTML文档并构建DOM(文档对象模型)树。
  • 构建CSSOM树:解析CSS文件并构建CSSOM(CSS对象模型)树。
  • 执行JavaScript:如果HTML中包含JavaScript文件,浏览器会下载并执行它们。
  • 构建渲染树:将DOM树和CSSOM树结合,构建渲染树。
  • 布局和绘制:根据渲染树进行布局计算,将元素的位置和大小确定后进行绘制,将页面内容显示在屏幕上。

这篇博客可以作为面试八股,拱大家使用

从输入URL到页面展示到底发生了什么?--01的更多相关文章

  1. 【原】老生常谈-从输入url到页面展示到底发生了什么

    刚开始写这篇文章还是挺纠结的,因为网上搜索“从输入url到页面展示到底发生了什么”,你可以搜到一大堆的资料.而且面试这道题基本是必考题,二月份面试的时候,虽然知道这个过程发生了什么,不过当面试官一步步 ...

  2. 【转】老生常谈-从输入url到页面展示到底发生了什么

    今天看到了一篇很详细地解释了从输入url到页面展示过程的文章,好文章不能错过,所以转到自己这里来了. 原文地址:老生常谈-从输入url到页面展示到底发生了什么 以下为原文: 刚开始写这篇文章还是挺纠结 ...

  3. (转)老生常谈-从输入url到页面展示到底发生了什么

    刚开始写这篇文章还是挺纠结的,因为网上搜索"从输入url到页面展示到底发生了什么",你可以搜到一大堆的资料.而且面试这道题基本是必考题,二月份面试的时候,虽然知道这个过程发生了什么 ...

  4. 转载--从输入URL到页面展示到底发生了什么

    最近我也在看http协议, tcp相关知识, 在吃饭时无意看到来一篇文章讲解“从输入URL到页面展示到底发生了什么”, 细细看完, 很值得回味, 所以转载, 以供日后在温习. (PS, 作者这篇文章发 ...

  5. 从输入url到页面展示到底发生了什么

    阅读目录 1.输入地址 2.浏览器查找域名的 IP 地址 3.浏览器向 web 服务器发送一个 HTTP 请求 4.服务器的永久重定向响应 5.浏览器跟踪重定向地址 6.服务器处理请求 7.服务器返回 ...

  6. 从输入 URL 到页面展示到底发生了什么?

    1.输入地址 当我们开始在浏览器中输入网址的时候,浏览器其实就已经在智能的匹配可能得 url 了,他会从历史记录,书签等地方,找到已经输入的字符串可能对应的 url,然后给出智能提示,让你可以补全ur ...

  7. 老生常谈-从输入url到页面展示到底发生了什么

    来自:咸鱼老弟 - 博客园 链接:http://www.cnblogs.com/xianyulaodi/p/6547807.html

  8. 从输入url到页面返回到底发生了什么

    1. 前言 Google应该是开发者平日里用得最多的网站之一,今早笔者在浏览器地址栏里键入www.google.com的时候,突然想了解下这背后的网络通信过程究竟是怎么样的.毕竟自己也算是一名Web开 ...

  9. 从输入 URL 到页面展示,到底发生了什么

    从输入 URL 到页面展示,到底发生了什么 1.输入URL 当我们开始在浏览器中输入网址的时候,浏览器其实就已经在智能的匹配可能得 url 了,他会从历史记录,书签等地方,找到已经输入的字符串可能对应 ...

  10. 《浏览器工作原理与实践》<04>从输入URL到页面展示,这中间发生了什么?

    “在浏览器里,从输入 URL 到页面展示,这中间发生了什么? ”这是一道经典的面试题,能比较全面地考察应聘者知识的掌握程度,其中涉及到了网络.操作系统.Web 等一系列的知识. 在面试应聘者时也必问这 ...

随机推荐

  1. Maven工程报错org.codehaus.plexus.component.repository.exception.ComponentLookupException

    本人电脑环境:jdk1.8,idea2021,maven 3.6.3 问题:今天调整maven项目的三个配置参数后,idea报了下面的错误 org.codehaus.plexus.component. ...

  2. tar解压报错——Not found in archive tar: Exiting with failure status due to previous errors

    tar解压报错--Not found in archive [root@master software]# tar -xzf scala-2.11.8.tgz /usr/local/ tar: /us ...

  3. docker——容器的基本操作

    docker 容器的基本操作 run 格式 docker run [选项] 镜像 [命令] [参数...] 选项 选项 解释 -d 后台运行 -i 交互模式 -t 分配一个伪终端 -p 设置端口 -- ...

  4. .NET 中使用 OpenTelemetry Traces 追踪应用程序

    上一次我们讲了 OpenTelemetry Logs.今天继续来说说 OpenTelemetry Traces. 在今天的微服务和云原生环境中,理解和监控系统的行为变得越来越重要.在当下我们实现一个功 ...

  5. 分布式定理--CAP定理

    cap定理指的是,在一个分布式系统中,只能满足cap中的两项. C consistency 一致性 A availability 可用性 P partition tolerance 分区可容错性 -- ...

  6. centos7 添加极点五笔

    打开终端,输入: yum install ibus ibus-table-wubi 遇到"Is this OK",输入y回车. 完成后重启电脑. 打开"应用程序" ...

  7. TiDB 多集群告警监控-中章-融合多集群 Grafana

    author:longzhuquan 背景 随着公司XC改造步伐的前进,越来越多的业务选择 TiDB,由于各个业务之间需要物理隔离,避免不了的 TiDB 集群数量越来越多.虽然每套 TiDB 集群均有 ...

  8. 知名火锅连锁企业,IT 团队如何在数千家门店中先于用户发现故障

    该知名火锅连锁企业是中国领先的餐饮企业,上千家门店遍布全球,由于门店餐饮行业的特殊性,需要靠前部署服务,所以在每家餐厅中,会部署相应的服务器,及相应 IT 设备,本地会运行POS.会员.下单等业务.公 ...

  9. leetcode_2-两数相加_javascript

    题目 2.两数相加 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新 ...

  10. 三月二十四日 安卓app打卡开发日志

    目前打卡系统基本完成 没有实现的功能有无法统计次数 和 连接本地数据库 我全程连接的远程数据库 package com.example.test_four.utils; import java.sql ...