写点什么

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

作者:Barry Yan
  • 2022 年 10 月 07 日
    北京
  • 本文字数:1360 字

    阅读完需:约 4 分钟

一文搞懂从浏览器输入一个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 类型解析过程


(图片来源: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 网络协议簇中最重要的一个概念了,直接上图:


2.3 客户端发送 HTTP 请求

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



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


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

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


《一文带你搞懂HTTP和HTTPS》


2.5 浏览器解析渲染页面

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

2.6 连接结束

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


3 总结下

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

发布于: 刚刚阅读数: 5
用户头像

Barry Yan

关注

做兴趣使然的Hero 2021.01.14 加入

Just do it.

评论

发布
暂无评论
一文搞懂从浏览器输入一个URL到页面出现都经历了哪些过程_10月月更_Barry Yan_InfoQ写作社区