每天进步一点点!
1. DNS解析:
- 浏览器首先会检查本地DNS缓存以获取域名(如www.google.com)的IP地址。如果缓存中没有找到对应的IP地址,浏览器将向本地DNS服务器发送解析请求。
- 如果本地DNS服务器也没有缓存相关信息,它将向根域名服务器发出请求,逐级查询直到找到域名对应的IP地址。
2. 建立TCP连接:
一旦浏览器获得目标服务器的IP地址,它将通过操作系统的网络功能开始与服务器之间的TCP连接。这包括三次握手过程:
- 客户端(浏览器)向服务器发送一个同步(SYN)数据包,表示客户端准备好建立连接。
- 服务器收到同步数据包后,会回复一个同时发送和确认(SYN-ACK)数据包,表示服务器也准备好建立连接。
- 最后,客户端再发送一个确认(ACK)数据包,表示连接已成功建立。
3. 发起HTTPS请求:
- 一旦TCP连接建立,浏览器会发起一个HTTPS请求给服务器。在这个过程中,还要进行TLS握手(TLS(Transport Layer Security)是SSL(Secure Sockets Layer)的继任者,用于加密通信内容)来确保通信内容的加密和安全性:
- TLS握手
- 客户端向服务器发送支持的加密算法列表和随机数。
- 服务器从客户端提供的加密算法列表中选择一种加密套件,并返回给客户端自己的证书(证书中包含公钥)、支持的加密算法、随机数以及用于生成会话密钥的临时公钥。
- 客户端验证证书的合法性,然后生成一个随机值,使用服务器的公钥对该随机值进行加密,并发送给服务器作为"预主密钥"。
- 服务器使用自己的私钥解密客户端发来的"预主密钥",然后双方基于客户端和服务器的随机数以及"预主密钥"生成会话密钥。
- 后续的通信将使用这个会话密钥进行加密解密。
- 一旦TLS握手成功,浏览器使用会话密钥对HTTP请求中的内容进行加密,包括要访问的资源路径、HTTP请求头信息等。这些信息被加密后发送给服务器。
4. 服务器处理请求:
一旦服务器接收到浏览器的HTTPS请求,服务器开始处理请求,例如响应网页请求、数据库查询等操作。
5. 浏览器渲染页面:
服务器返回HTML、CSS、JavaScript等资源给浏览器,浏览器解析和渲染这些资源,最终显示页面给用户。
6. 加载其他资源:
页面渲染完成后,浏览器可能需要加载其他资源,如图片、视频、字体等,这些资源可能需要额外的HTTP请求。
7. 显示页面:
最终,浏览器将所有内容组合在一起,显示完整的谷歌页面给用户。用户可以进行搜索、点击链接等操作。
8. 保持连接:
在页面加载完成后,TCP连接可能会被保持一段时间以便后续请求复用,以提高网页加载速度。
总的来说,从用户在浏览器输入谷歌地址到最终显示页面给用户,涉及了DNS解析、TCP连接建立、HTTPS加密通信、服务器响应、页面渲染等多个详细步骤。这些步骤共同构成了用户访问谷歌的完整过程。