从输入URL到页面展示到底发生了什么?--01
在浏览器中输入一个URL并按下回车键后,会发生一系列复杂且有条不紊的步骤,从请求服务器到最终页面展示在你的屏幕上。这个过程可以分为以下几个关键步骤:
- URL 解析
- DNS 查询
- TCP 连接
- 发送 HTTP 请求
- 服务器处理请求
- 接收 HTTP 响应
- 浏览器渲染页面
1. URL 解析(示例)
URL(Uniform Resource Locator)是一种统一资源定位符,它包含了访问资源所需的所有信息。一个典型的URL格式如下:
http://www.example.com:80/path/to/resource?query=param#fragment
解析过程中,浏览器会将URL拆分为多个部分:
- 协议(Scheme):如
http或https。 - 主机(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连接的过程包括三次握手:
- 客户端发送SYN(同步)包:请求建立连接。
- 服务器返回SYN-ACK(同步-确认)包:同意建立连接。
- 客户端发送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的更多相关文章
- 【原】老生常谈-从输入url到页面展示到底发生了什么
刚开始写这篇文章还是挺纠结的,因为网上搜索“从输入url到页面展示到底发生了什么”,你可以搜到一大堆的资料.而且面试这道题基本是必考题,二月份面试的时候,虽然知道这个过程发生了什么,不过当面试官一步步 ...
- 【转】老生常谈-从输入url到页面展示到底发生了什么
今天看到了一篇很详细地解释了从输入url到页面展示过程的文章,好文章不能错过,所以转到自己这里来了. 原文地址:老生常谈-从输入url到页面展示到底发生了什么 以下为原文: 刚开始写这篇文章还是挺纠结 ...
- (转)老生常谈-从输入url到页面展示到底发生了什么
刚开始写这篇文章还是挺纠结的,因为网上搜索"从输入url到页面展示到底发生了什么",你可以搜到一大堆的资料.而且面试这道题基本是必考题,二月份面试的时候,虽然知道这个过程发生了什么 ...
- 转载--从输入URL到页面展示到底发生了什么
最近我也在看http协议, tcp相关知识, 在吃饭时无意看到来一篇文章讲解“从输入URL到页面展示到底发生了什么”, 细细看完, 很值得回味, 所以转载, 以供日后在温习. (PS, 作者这篇文章发 ...
- 从输入url到页面展示到底发生了什么
阅读目录 1.输入地址 2.浏览器查找域名的 IP 地址 3.浏览器向 web 服务器发送一个 HTTP 请求 4.服务器的永久重定向响应 5.浏览器跟踪重定向地址 6.服务器处理请求 7.服务器返回 ...
- 从输入 URL 到页面展示到底发生了什么?
1.输入地址 当我们开始在浏览器中输入网址的时候,浏览器其实就已经在智能的匹配可能得 url 了,他会从历史记录,书签等地方,找到已经输入的字符串可能对应的 url,然后给出智能提示,让你可以补全ur ...
- 老生常谈-从输入url到页面展示到底发生了什么
来自:咸鱼老弟 - 博客园 链接:http://www.cnblogs.com/xianyulaodi/p/6547807.html
- 从输入url到页面返回到底发生了什么
1. 前言 Google应该是开发者平日里用得最多的网站之一,今早笔者在浏览器地址栏里键入www.google.com的时候,突然想了解下这背后的网络通信过程究竟是怎么样的.毕竟自己也算是一名Web开 ...
- 从输入 URL 到页面展示,到底发生了什么
从输入 URL 到页面展示,到底发生了什么 1.输入URL 当我们开始在浏览器中输入网址的时候,浏览器其实就已经在智能的匹配可能得 url 了,他会从历史记录,书签等地方,找到已经输入的字符串可能对应 ...
- 《浏览器工作原理与实践》<04>从输入URL到页面展示,这中间发生了什么?
“在浏览器里,从输入 URL 到页面展示,这中间发生了什么? ”这是一道经典的面试题,能比较全面地考察应聘者知识的掌握程度,其中涉及到了网络.操作系统.Web 等一系列的知识. 在面试应聘者时也必问这 ...
随机推荐
- 如果个人pc上要装不同社区版本的pycharm,安装时需要注意的一点
pycharm下载地址[包含了目前发行的所有版本]:https://www.jetbrains.com/pycharm/download/other.html 选择指定的版本,点击 勾选uninsta ...
- Vue cli之路由router
一.安装路由 Vue-router用于提供给vue项目在开发中用于绑定url和组件页面的关系的核心插件. 默认情况下,vue没有提供路由的功能,所以我们使用vue-router,并需要在项目根目录. ...
- FFmpeg中的关键方法及结构体(二)avformat_open_input
1.avformat_open_input 该方法声明在libavformat/avformat.h:2093 int avformat_open_input(AVFormatContext **ps ...
- rabbitmq添加延时通道时报错
rabbitmq添加延时通道时报错 'x-delayed-type' must be an existing exchange type 解决方案: 我实际用的是x-delayed-type:topi ...
- nginx37条优化
nginx优化: 1. cpu:核心配置 方法1: worker_processes auto; 自动调用[推荐] 方法2: worker_processes 4; 手工配置 检查CPU核心:yum ...
- Qt-FFmpeg开发-实现录屏功能(10)
音视频/FFmpeg #Qt Qt-FFmpeg开发-实现录屏功能 目录 音视频/FFmpeg #Qt Qt-FFmpeg开发-实现录屏功能 1.概述 2.实现效果 3.FFmpeg录屏代码流程️️ ...
- itest(爱测试) 开源接口测试,敏捷测试管理平台10.1.0发布
一:itest work 简介 itest work 开源敏捷测试管理,包含极简的任务管理,测试管理,缺陷管理,测试环境管理,接口测试,接口Mock,还有压测 ,又有丰富的统计分析,8合1工作站.可按 ...
- Java synchronized与ReentrantLock的区别
synchronized与ReentrantLock的区别 synchronized是一个关键字,ReentrantLock是一个类 synchronized修饰代码块和方法,ReentrantLoc ...
- 剑指Offer-47.求1+2+3+...+n(C++/Java)
题目: 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 分析: 利用短路与来判断n是否大于0,从而实现递 ...
- vm ware 虚拟WIN XP 时卡
主机是I7 9700,SN750 NVME 1T SSD, 32G 内存,VM WARE 14,理论上虚拟WIN XP 不会卡,但实际情况就是很卡. 虚拟WIN7 ,WIN 10,UBUNTU LIN ...