从输入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 等一系列的知识. 在面试应聘者时也必问这 ...
随机推荐
- Android 13 - Media框架(22)- ACodec(四)
关注公众号免费阅读全文,进入音视频开发技术分享群! 前面两节我们了解了 ACodec 的创建及配置流程,配置完成后 ACodec 进入了 LoadedState,这一节开始将会了解 ACodec 的启 ...
- itest(爱测试) 开源接口测试,敏捷测试管理平台10.0.0GA 发布
一:itest work 简介 itest work 开源敏捷测试管理,包含极简的任务管理,测试管理,缺陷管理,测试环境管理,接口测试,接口Mock,还有压测 ,又有丰富的统计分析,8合1工作站.可按 ...
- xv6 内存管理
前文讲述了 xv6 的启动过程,本文接着讲述 xv6 内存管理的部分,直接来看. 公众号:Rand_cs 启动部分完善 前文只是介绍了启动的过程,但是各类函数之间的调用,地址的变换,内存布局的变化并没 ...
- EF,lambda 反向模糊查询
SELECT * FROM table as t WHERE "张三的偶像" LIKE t.userName; bool thisMchBelong = _mch_blackSer ...
- ftl生成模板并从前台下载
1.生成模板的工具类 package com.jesims.busfundcallnew.util; import freemarker.template.Configuration; import ...
- Java格式化手机号和身份证号,中间使用星号*隐藏
Java格式化手机号和身份证号,中间使用星号*隐藏 package com.example.core.mydemo.java; /** * renterMobile=111****1198 * idN ...
- 为什么https要使用证书
为什么https要使用证书 什么是httpshttps不是一种新的协议,只是http的通信接口部分使用了ssl和tsl协议替代,加入了加密.证书.完整性保护的功能. 加密:共享密钥加密加密和解密公用一 ...
- Python做点击率数据预测
点击率(Click-Through Rate, CTR)预测是推荐系统.广告系统和搜索引擎中非常重要的一个环节.在这个场景中,我们通常需要根据用户的历史行为.物品的特征.上下文信息等因素来预测用户点击 ...
- mysql子查询不支持limit问题解决
如果sql语句中的子查询包含limit 例如: select * from table where id in (select id from table limit 3) 会报错: This ver ...
- 详解Web应用安全系列(3)失效的身份认证
大多数身份和访问管理系统的设计和实现,普遍存在身份认证失效的问题.会话管理是身份验证和访问控制的基础,并且存在于所有有状态的应用程序中.攻击者可以使用指南手册来检测失效的身份认证,但通常会关注密码转储 ...