天天都用浏览器的你知道输入网址后发生了什么吗?

本文最后更新于:January 31, 2022 am

前言

浏览器是如今必不可少的工具之一,每天都有无数人通过浏览器获取自己需要的信息。那么当你在浏览器中键入一行网址后究竟发生了什么?我们下面一起捋一捋。

图解

输入url到加载页面

具体分析

DNS解析

所谓解析就是把方便人类记忆的域名翻译成计算机的ip地址。比如输入的url是www.baidu.com,首先在本地域名服务器中寻找ip地址,如果没找到,本地域名服务器会请求根域名服务器寻找,如果还是没找到,本地域名服务器会请求com顶级域名服务器,如果还找不到,那么本地域名服务器继续请求baidu.com域服务器

在linux命令行中输入dig baidu.com +trace可以详细看到dns解析过程。

1、查询了根域名服务器 ,返回了13个根域名服务器的主机名。(目前全球一共13个根域名服务器)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-9.P2.el7 <<>> baidu.com +trace
;; global options: +cmd
. 5 IN NS g.root-servers.net.
. 5 IN NS a.root-servers.net.
. 5 IN NS h.root-servers.net.
. 5 IN NS f.root-servers.net.
. 5 IN NS k.root-servers.net.
. 5 IN NS j.root-servers.net.
. 5 IN NS e.root-servers.net.
. 5 IN NS i.root-servers.net.
. 5 IN NS d.root-servers.net.
. 5 IN NS m.root-servers.net.
. 5 IN NS c.root-servers.net.
. 5 IN NS b.root-servers.net.
. 5 IN NS l.root-servers.net.
;; Received 239 bytes from 192.168.142.2#53(192.168.142.2) in 4047 ms

2、返回com.顶级域名服务器信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
com.			172800	IN	NS	e.gtld-servers.net.
com. 172800 IN NS c.gtld-servers.net.
com. 172800 IN NS i.gtld-servers.net.
com. 172800 IN NS f.gtld-servers.net.
com. 172800 IN NS k.gtld-servers.net.
com. 172800 IN NS j.gtld-servers.net.
com. 172800 IN NS m.gtld-servers.net.
com. 172800 IN NS l.gtld-servers.net.
com. 172800 IN NS g.gtld-servers.net.
com. 172800 IN NS b.gtld-servers.net.
com. 172800 IN NS d.gtld-servers.net.
com. 172800 IN NS h.gtld-servers.net.
com. 172800 IN NS a.gtld-servers.net.
com. 86400 IN DS 30909 8 2 E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CF C41A5766
com. 86400 IN RRSIG DS 8 1 86400 20210226050000 20210213040000 42351 . sKLysaJvml4IZAj8fgWq+Kx5mNwc/K7vEzqlyRqT1xqQqMLajvy4N+cB 4yEK4P7tRZmus5iJ2n1F8ejG90NonpdxrZMZM5XoiqktGHSUt4cA+9bh 5Howi3VOBE94BEyuPOC7S0PZIO41J8kCASOlQRKwn/JgDJ3fxwM3JJU7 hn8OmZ4cQwI8GuBNf2rrdzr7JaywDTAHGPleTR+aHpxbKN/pIQwQqQN4 cv8OaDY1wxonAuDaFrAUKW4Gl3ekNmFKvmo5a2jybDF+wu14NwRX57Ho hAefWTraAeqQLdm1JJ5IM0B+wokDqpOyZG/9hCBPklqhWL8USLeWr//c uUzkig==
;; Received 1169 bytes from 202.12.27.33#53(m.root-servers.net) in 133 ms

3、返回baidu.com.域服务器信息

1
2
3
4
5
6
7
8
9
10
baidu.com.		172800	IN	NS	ns2.baidu.com.
baidu.com. 172800 IN NS ns3.baidu.com.
baidu.com. 172800 IN NS ns4.baidu.com.
baidu.com. 172800 IN NS ns1.baidu.com.
baidu.com. 172800 IN NS ns7.baidu.com.
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN NSEC3 1 1 0 - CK0Q1GIN43N1ARRC9OSM6QPQR81H5M9A NS SOA RRSIG DNSKEY NSEC3PARAM
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN RRSIG NSEC3 8 2 86400 20210217054119 20210210043119 58540 com. FD+n+fO9jI2LoVi9ULqvx6lIp8ZP5yC/0HzfnJqiqgTTubTJiVzoVT29 xai2LSeepPqzS/+sehbGHpqOgj21uJoOLePqmaVx/f73ZGcP6Ud2tlkQ QIE++OwDlcQK6P/BM96xdHmGEnG/RaMrFiHV919Xog+sFZddMpjVTtYR q9nST68IU2gLDcNTFeeM7P3CaUdaSRl3LIRz8iuWMrYNSg==
HPVUSBDNI26UDNIV6R0SV14GC3KGR4JP.com. 86400 IN NSEC3 1 1 0 - HPVVN3Q5E5GOQP2QFE2LEM4SVB9C0SJ6 NS DS RRSIG
HPVUSBDNI26UDNIV6R0SV14GC3KGR4JP.com. 86400 IN RRSIG NSEC3 8 2 86400 20210217071943 20210210060943 58540 com. N5kC7xBpBiXE1kFHNz0QrRWRsebQhrT+zL+oO8yaR0tRQfIhHR1QMNCl Nf6jGiV+W518OfSN16Ypw54wiKf5esFFNChS0LKgp522CUzp8mYYiI5D c8elJwUrD1mYqzLXTjTQF8v2IK3bi/NwWzCasM3K5YEnP2ihO9aLRATU 3l7MdCQC9kajJ8CzkLtA+JsnK0jTP3YsrClYZmS5jKmz4Q==
;; Received 757 bytes from 192.43.172.30#53(i.gtld-servers.net) in 276 ms

4、最终查到了ip地址

1
2
3
4
5
6
7
8
baidu.com.		600	IN	A	39.156.69.79
baidu.com. 600 IN A 220.181.38.148
baidu.com. 86400 IN NS ns3.baidu.com.
baidu.com. 86400 IN NS ns7.baidu.com.
baidu.com. 86400 IN NS dns.baidu.com.
baidu.com. 86400 IN NS ns4.baidu.com.
baidu.com. 86400 IN NS ns2.baidu.com.
;; Received 240 bytes from 180.76.76.92#53(ns7.baidu.com) in 22 ms

找到ip地址后会将其存入DNS缓存方便下次查询。

DNS负载均衡

如果一个网站用户很多,那么一台机器显然无法满足大量的请求。DNS负载均衡可以在DNS服务器中为一个域名配备多个ip地址,从而引导用户访问到不同的机器。CDN就是负载均衡技术的体现,它把和用户最近的服务器ip返回给用户。

浏览器进行http请求 服务器返回响应

http是使用tcp作为传输协议的,关于tcp协议可以参考我的另一篇文章。这一段传输过程可以参考《图解HTTP》中的下图。

image-20210213165353534

浏览器渲染页面

浏览器首先解析HTML构建DOM树,然后解析CSS构建CSS规则树,将DOM树和规则树合成渲染树。之后遍历渲染树开始布局,计算每个节点的位置大小信息,将渲染树每个节点绘制到屏幕。具体过程可以参考这篇文章

image-20210213193103625

参考文章

https://segmentfault.com/a/1190000006879700

https://zhuanlan.zhihu.com/p/133906695

https://juejin.cn/post/6844903565610188807