键入网址,按回车,发生了什么

键入网址,按回车,发生了什么???

第一步:浏览器从地址栏的输入中获得服务器的 IP 地址和端口号

如果键入的是域名,首先要进行域名解析,把域名解析为服务器的IP地址。

解析的过程如下,在解析过程中会有多级缓存:
浏览器先看自己的缓存有没有--->如果没有,再检查操作系统的缓存--->如果还没有,本地的Host文件--->野生DNS服务器(包括本地 DNS)、根 DNS、顶级 DNS、权威 DNS

注意:
DNS解析有可能会给到的是CDN服务器的IP地址,然后CDN直接返回静态资源,而不必请求源站。

第二步:浏览器用TCP的三次握手与服务器建立连接
第三步:浏览器向服务器发送拼好的报文
第四步:服务器收到报文后处理请求,同样拼好报文再发给浏览器
第五步:浏览器解析报文,渲染输出页面
第六步:由于HTTP的长连接特性,默认不会立即关闭连接,所以暂时不会有四次挥手

此图来源于网络
键入网址,按回车,发生了什么

CDN缓存的是静态资源,对于动态的资源,只能从目标网站获取。

请求达到负载均衡服务器(比如Nginx),
负载均衡设备会先访问系统里的缓存服务器,
通常有 memory 级缓存 Redis 和 disk 级缓存 Varnish,
它们的作用与 CDN 类似,不过是工作在内部网络里,
把最频繁访问的数据缓存几秒钟或几分钟,减轻后端应用服务器的压力。

如果缓存服务器里也没有,那么负载均衡设备就要把请求转发给应用服务器了。
比如Java 的 Tomcat,Python 的 Django,然后会再访问后面的数据库服务,
再把执行的结果返回给负载均衡设备,同时也可能给缓存服务器里也放一份。

下图来源与网络

键入网址,按回车,发生了什么