【转载】在浏览器中输入网址到打开网页的过程

前言

本文以chrome为例,介绍了在浏览器中输入网址到打开网页的过程,记录流程,并没有深究太多

以chrome为例

一、域名解析:浏览器会将当前输入的URL发送至DNS服务器并获得域名对应的WEB服务器的ip地址,过程如下:

1、chrome搜索自身的DNS缓存(有没有以及有没有过期),查看chrome自身的缓存:chrome://net-internals/#dns
2、chrome浏览器没有找到自身缓存或者缓存已经失效,就会搜索操作系统自身的DNS缓存(有没有以及有没有过期)
3、操作系统自身的DNS缓存没有找到或者已经失效,chrome会读取本地的HOST文件
4、本地HOST文件的缓存没有找到或者已经失效,chrome会发起一个DNS的一个系统调用,即chrome以系统的名义向本地宽带运营商的 dns 服务器发起一个域名解析的请求,过程如下:
a、宽带运营商服务器查看本身缓存
b、运营商服务器代替浏览器发起一个迭代DNS解析的请求,运营商服务器把结果返回操作系统内核同时缓存起来
c、操作系统内核把结果返回浏览器
d、最终,浏览器拿到了网址对应的IP地址

二、浏览器获得域名对应的IP地址后,发起HTTP“三次握手”,建立TCP/IP连接
三、tcp/ip 连接建立起来后,浏览器就可以向服务器发送 HTTP 请求了,比如说使用 get 方式请求一个域名。
四、服务器收到这个请求后,根据路径参数,再经过后端的一些处理,把结果返回给浏览器,这样我们就得到了该域名对应的整个页面的代码或者其他的数据。
五、浏览器拿到代码后,经过解析、渲染等,我们就看到了这个页面。

值得注意的是:第五步中页面中的每一个 css 、js、图片等静态资源都需要一个 HTTP 请求。都需要上面的步骤。