从输入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 等一系列的知识. 在面试应聘者时也必问这 ...
随机推荐
- TS码流解析(一)TS Header
有一些音视频初学者想要了解TS码流结构,但网上资料不全或者讲得不够清楚,使得学习过程变得异常艰难.这一篇内容将对TS码流结构做详尽解析,争取做到通俗易懂,成为最好的TS码流解析文章. 本篇TS码流解析 ...
- WPF开发快速入门【6】下拉框与枚举类型
概述 本文讲述下拉框和枚举类型进行绑定的一些操作. 下拉框的基本操作 设计部分: <ComboBox ItemsSource="{Binding Fruits}" Selec ...
- Win11安装VMware Workstation Pro,Centos,Xshell,Xftp(Linux学习需要)
注意:1.win11不能安装太低版本的VMware Workstation Pro,否则启动linux会出现蓝屏 2.win11是默认没有开虚拟机平台支持的,所以同时也要开启,否则也会出现蓝屏. ...
- mescroll.js 使用
mescroll.js 使用 附:点击查看中文文档 第一步:引入css和js // unpkg的CDN: <link rel="stylesheet" href=" ...
- 面试官:说说Netty对象池的实现原理?
Netty 作为一个高性能的网络通讯框架,它内置了很多恰夺天工的设计,目的都是为了将网络通讯的性能做到极致,其中「对象池技术」也是实现这一目标的重要技术. 1.什么是对象池技术? 对象池技术是一种重用 ...
- Linux C操作XML文件
1 简介 介绍使用C语言操作xml文件. 使用的开源库:mxml mxml源码路径:michaelrsweet/mxml: Tiny XML library. (github.com) mxml官网: ...
- 语义化结构标签 多媒体标签 H5新增表单内容
语义化结构标签: section 更偏向于一个区域类似div(块) article 更偏向于显示内容(块) aside 标签作为article呢绒的辅助板块(块) header 标签做为一个网页头部 ...
- go 1.6 废弃 io/ioutil 包后的替换函数
go 1.6 废弃 io/ioutil 包后的替换函数 io/ioutil 替代 ioutil.ReadAll -> io.ReadAll ioutil.ReadFile -> os.R ...
- springmvc组件说明
DispatcherServlet:前端控制器,也称为中央控制器,它是整个请求响应的控制中心,组件的调用由它统一调度. HandlerMapping:处理器映射器,它根据用户访问的 URL 映射到对应 ...
- monaco-editor 的 Language Services
我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品.我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值. 本文作者:修能 这是一段平平无奇的 SQL 语法 SELECT id ...