一步步揭秘:浏览器输入URL后的那些事儿

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 大家好,我是小米!你有没有好奇过,当你在浏览器输入一个网址并按下回车键后,到底发生了什么神奇的过程?从DNS解析到TCP连接,从发送HTTP请求到浏览器渲染,本文将带你深入了解这个复杂而又迷人的过程,让我们一起探索吧!

Hello大家好,我是小米,一个热爱分享技术的IT达人。今天我们一起来聊聊一个大家每天都会用到但可能不太了解的过程:浏览器输入URL之后发生了什么。这是一个从用户输入到浏览器显示页面的完整过程,涉及到很多底层的网络基础知识。今天我们就一起来探究这个神秘的过程!

DNS解析

首先,当你在浏览器地址栏中输入一个URL,比如https://www.example.com,并按下回车键时,浏览器首先要做的事情就是找到这个域名对应的IP地址。这一步骤称为DNS解析。

什么是DNS?

DNS(Domain Name System)是一种分布式数据库,它负责将人类容易记忆的域名(如www.example.com)转换为机器能够理解的IP地址(如192.168.1.1)。就像一个电话簿,你可以通过名字查找到对应的电话号码。

DNS解析的过程

  1. 浏览器缓存:浏览器首先会检查自己是否缓存了这个域名对应的IP地址。如果有缓存并且没有过期,就直接使用这个缓存结果。
  2. 操作系统缓存:如果浏览器没有缓存,就会查询操作系统的缓存。
  3. 路由器缓存:如果操作系统也没有缓存,查询会继续向上,检查路由器的缓存。
  4. ISP DNS服务器:如果路由器也没有缓存,浏览器会向ISP(互联网服务提供商)的DNS服务器发起查询。
  5. 递归查询:如果ISP的DNS服务器也没有结果,它会进行递归查询,向其他DNS服务器询问,直到找到结果为止。

通过以上步骤,浏览器最终获取到了www.example.com对应的IP地址,比如93.184.216.34

TCP连接

获取到IP地址后,浏览器需要与服务器建立连接。这里使用的是TCP(Transmission Control Protocol)协议。

三次握手

TCP连接的建立需要经过所谓的“三次握手”过程:

  1. 第一次握手:浏览器(客户端)向服务器发送一个SYN(synchronize)请求包,表示希望建立连接。
  2. 第二次握手:服务器收到SYN包后,回应一个SYN/ACK包,表示同意建立连接。
  3. 第三次握手:客户端收到SYN/ACK包后,再发送一个ACK(acknowledgement)包,确认连接建立。

通过这三次握手,浏览器与服务器之间的TCP连接正式建立。

发送HTTP请求

在TCP连接建立之后,浏览器会发送HTTP请求来获取网页内容。HTTP(HyperText Transfer Protocol)是一种无状态的协议,客户端向服务器发送请求,服务器处理请求后返回响应。

构建HTTP请求

一个典型的HTTP请求包括以下部分:

请求行:包含请求方法(如GET、POST)、请求URL和HTTP版本。

请求头:包含一些描述客户端环境、请求主体等信息的元数据,如User-Agent、Host等。

请求主体:在POST请求中,包含需要发送的数据。

示例HTTP请求

服务器处理请求并返回HTTP报文

服务器接收到HTTP请求后,会进行处理并返回HTTP响应。

服务器处理请求

服务器会根据请求的内容,进行相应的处理操作:

  • 静态资源请求:如HTML文件、CSS样式表、图片等,服务器会直接从文件系统中读取并返回。
  • 动态资源请求:如使用PHP、Node.js等动态语言生成的内容,服务器会先执行相应的代码,生成内容后再返回。

构建HTTP响应

一个典型的HTTP响应包括以下部分:

  • 状态行:包含HTTP版本、状态码(如200表示成功,404表示未找到)和状态描述。
  • 响应头:包含一些描述响应内容的元数据,如Content-Type、Content-Length等。
  • 响应主体:包含实际的响应数据,如HTML文档、图片等。

示例HTTP响应

浏览器渲染

浏览器接收到服务器返回的HTTP响应后,会进行渲染,将网页内容展示给用户。

渲染过程

  1. 解析HTML:浏览器会将HTML解析成DOM(Document Object Model)树。
  2. 解析CSS:浏览器会解析CSS,生成CSSOM(CSS Object Model)树。
  3. 构建渲染树:将DOM树和CSSOM树结合,构建渲染树。
  4. 布局:根据渲染树计算每个节点在屏幕上的位置和大小。
  5. 绘制:将渲染树的每个节点绘制到屏幕上。

JavaScript的执行

在解析HTML的过程中,如果遇到JavaScript代码,浏览器会暂停HTML的解析,先执行JavaScript。JavaScript可以修改DOM和CSSOM,因此会影响最终的渲染结果。

END

当所有的资源都加载并渲染完毕后,整个过程就结束了。用户可以看到完整的网页内容,并与之进行交互。

以上就是从你在浏览器输入URL到页面展示的完整过程,是不是非常有趣呢?如果大家对某个步骤还有疑问或者想了解更多的细节,欢迎在评论区留言哦!

我是小米,一个喜欢分享技术的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号软件求生,获取更多技术干货!

相关文章
|
3月前
|
缓存 JavaScript 前端开发
|
11天前
|
缓存 网络协议 JavaScript
浏览器输入url之后最后网页渲染出来经过了什么
【10月更文挑战第31天】从浏览器输入 URL 到网页渲染出来是一个涉及多个环节和技术的复杂过程,每个环节都对最终的网页显示效果和用户体验有着重要的影响。
23 3
|
14天前
|
存储 缓存 网络协议
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密
|
16天前
|
域名解析 缓存 网络协议
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手
|
1月前
|
缓存 网络协议 前端开发
浏览器输入一个URL后,发生了什么?
浏览器输入一个URL后,发生了什么?
25 1
|
30天前
|
域名解析 缓存 网络协议
浏览器输入 URL 回车后会经历哪些步骤?
本文首发于微信公众号“前端徐徐”,详细解析了从在浏览器中输入URL到页面完全呈现的全过程,涵盖检查缓存、URL解析、DNS解析、TCP连接、HTTP请求、服务器响应、浏览器处理响应、页面解析与渲染、关闭TCP连接等关键步骤。通过这些步骤,帮助读者深入了解互联网的工作原理,提升网站性能和用户体验。
16 0
|
3月前
|
网络协议 前端开发 JavaScript
浏览器加载网页的幕后之旅:从URL到页面展示详解
【8月更文挑战第31天】当在浏览器地址栏输入URL并回车后,一系列复杂过程随即启动,包括DNS解析、TCP连接建立、HTTP请求发送、服务器请求处理及响应返回,最后是浏览器页面渲染。这一流程涉及网络通信、服务器处理和客户端渲染等多个环节。通过示例代码,本文详细解释了每个步骤,帮助读者深入理解Web应用程序的工作机制,从而在开发过程中作出更优决策。
62 5
|
4月前
|
缓存 网络协议 Java
(六)网络编程之化身一个请求感受浏览器输入URL后奇妙的网络之旅!
在浏览器上输入一个URL后发生了什么? 这也是面试中老生常谈的话题,包括网上也有大量关于这块的内容。
133 2
|
3月前
|
存储 API 网络架构
【Azure 存储服务】MP4视频放在Azure的Blob里面,用生成URL在浏览器中打开之后,视频可以正常播放却无法拖拽视频的进度
【Azure 存储服务】MP4视频放在Azure的Blob里面,用生成URL在浏览器中打开之后,视频可以正常播放却无法拖拽视频的进度
|
2月前
|
前端开发 JavaScript
前端JS截取url上的参数
文章介绍了两种前端JS获取URL参数的方法:手动截取封装和使用URLSearchParams。
48 0

热门文章

最新文章