一文搞懂从浏览器输入一个URL到页面出现都经历了哪些过程

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 一文搞懂从浏览器输入一个URL到页面出现都经历了哪些过程

1 过程一览

  1. DNS解析(如果IP直接访问则此过程省略)
  2. 客户端与服务端进行TCP三次握手连接
  3. 客户端发送HTTP请求
  4. 服务器处理请求并返回HTTP报文
  5. 浏览器解析渲染页面
  6. 连接结束

2 细节剖析

2.1 DNS解析

域名系统(英文全称:Domain Name System,简称DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。

域名系统是Internet上解决网上机器命名的一种系统。就像拜访朋友要先知道别人家怎么走一样,Internet上当一台主机要访问另外一台主机时,必须首先获知其地址,TCP/IP中的IP地址是由四段以“.”分开的数字组成(此处以IPv4的地址为例,IPv6的地址同理),记起来总是不如名字那么方便,所以,就采用了域名系统来管理名字和IP的对应关系。

2.1.1 解析类型

虽然DNS的功能可以概括为将域名和IP地址相互映射,但是实际上并不是只有简单的映射,而是有多重类型的不同映射关系,就好比我们开发Java系统时的ORM对象关系映射,也可能会在期间进行一些联表查询和验证策略,具体DNS有哪些规则,如下:

  • SOA:起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须位于解析库的第一条记录SOA,是起始授权机构记录,说明了在众多 NS 记录里哪一台才是主要的服务器。
  • A:域名解析成IP地址
  • AAAA(FQDN):域名解析成IPv6地址
  • PTR:反向解析,IP地址解析成域名
  • NS:专用于标明当前区域的DNS服务器,服务器类型为域名服务器
  • CNAME :别名记录
  • MX:邮件交换器
  • TXT:对域名进行标识和说明的一种方式,一般做验证记录时会使用此项,如:反垃圾邮件记录、https验证等
2.1.1 A类型解析过程

image.png

(图片来源:https://s3.51cto.com/wyfs02/M01/8F/4E/wKiom1jaWlKQ67OVAAkppI9dMxc765.jpg

2.1.3 域名访问和IP访问有什么不同

虽然域名访问和IP+端口访问都属于浏览器的URL访问,但是也是有很不同的区别的,下面就来介绍下:

  • 域名访问容易记住,IP地址不好记
  • 域名访问更安全
  • 域名访问可以进行DNS负载均衡,而IP访问则很困难
  • 域名访问便于服务器IP的更换
  • ......

反正总结下就是,尽量使用域名作为URL咯~

2.2 客户端与服务端进行TCP三次握手连接

这个可能是TCP/IP网络协议簇中最重要的一个概念了,直接上图:

image.png

2.3 客户端发送HTTP请求

到了应用层的HTTP这里就是比较好理解的了,首先HTTP是默认使用的TCP80端口,因此HTTP的请求是一定基于TCP连接的,只不过HTTP的报文更加的复杂,占用的报文头更多,通过Whireshark抓取的报文如下:
image.png

在网上找一个更清楚一点的(来自:https://www.cnblogs.com/zzzwqh/p/12877863.html):

image.png

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

响应报文与请求报文类似,但是最独特的一点就是存在响应码,具体的就不多讲了,感兴趣的朋友请移步这篇文章

《一文带你搞懂HTTP和HTTPS》
image.png

2.5 浏览器解析渲染页面

这里就不用解释了吧,你目前看到的文章就是渲染的结果:satisfied:

2.6 连接结束

非长连接情况下会进行TCP四次挥手

image.png

3 总结下

以上就是从输入一个URL到页面展示的过程,其实本文的描述也只是基于操作系统层面以上的,什么意思呢?就是在第一步访问DNS的时候,在这之前可能会有一系列复杂的操作,比如网络的交换和路由转发等等,而基于HTTP以上的呢?又涉及到浏览器的页面解析,Javascript的解释编译等等,所以说技术的探索是无限的,加油~

相关文章
|
2月前
|
缓存 网络协议 JavaScript
浏览器输入 URL 后的那些事儿
本文介绍了浏览器输入URL后到页面展示的完整过程,涵盖DNS解析、TCP三次握手、HTTP请求与响应、以及浏览器渲染等关键步骤。首先,浏览器通过DNS解析将域名转换为IP地址;接着,通过TCP三次握手建立连接;随后发送HTTP请求获取网页内容;最后,浏览器解析HTML、CSS并构建渲染树,完成页面渲染。整个过程涉及网络协议和浏览器内部机制的协同工作。
82 13
|
3月前
|
缓存 网络协议 JavaScript
第八问:在浏览器中输入URL后发生了什么?
当在浏览器中输入URL并按下回车键时,会经历一系列复杂的过程:1. 用户输入URL;2. DNS解析域名;3. 建立TCP连接;4. 发送HTTP/HTTPS请求;5. 服务器处理请求;6. 浏览器渲染页面;7. 页面展示。每个步骤涉及不同的技术和协议,确保数据的准确传输和页面的正确显示。
76 0
|
4月前
|
缓存 网络协议 JavaScript
浏览器输入url之后最后网页渲染出来经过了什么
【10月更文挑战第31天】从浏览器输入 URL 到网页渲染出来是一个涉及多个环节和技术的复杂过程,每个环节都对最终的网页显示效果和用户体验有着重要的影响。
60 3
|
4月前
|
存储 缓存 网络协议
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密
|
4月前
|
域名解析 缓存 网络协议
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手
|
5月前
|
域名解析 缓存 网络协议
浏览器输入 URL 回车后会经历哪些步骤?
本文首发于微信公众号“前端徐徐”,详细解析了从在浏览器中输入URL到页面完全呈现的全过程,涵盖检查缓存、URL解析、DNS解析、TCP连接、HTTP请求、服务器响应、浏览器处理响应、页面解析与渲染、关闭TCP连接等关键步骤。通过这些步骤,帮助读者深入了解互联网的工作原理,提升网站性能和用户体验。
82 0
|
5月前
|
缓存 网络协议 前端开发
浏览器输入一个URL后,发生了什么?
浏览器输入一个URL后,发生了什么?
87 1
|
4月前
|
算法 开发者
Moment.js库是如何处理不同浏览器的时间戳格式差异的?
总的来说,Moment.js 通过一系列的技术手段和策略,有效地处理了不同浏览器的时间戳格式差异,为开发者提供了一个稳定、可靠且易于使用的时间处理工具。
150 57
|
4月前
|
JavaScript 前端开发 数据处理
模板字符串和普通字符串在浏览器和 Node.js 中的性能表现是否一致?
综上所述,模板字符串和普通字符串在浏览器和 Node.js 中的性能表现既有相似之处,也有不同之处。在实际应用中,需要根据具体的场景和性能需求来选择使用哪种字符串处理方式,以达到最佳的性能和开发效率。
130 63
|
4月前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
743 1

热门文章

最新文章