浏览器输入谷歌地址, 请描述整个访问过程发生了哪些步骤?

每天进步一点点!

1. DNS解析:

  1. 浏览器首先会检查本地DNS缓存以获取域名(如www.google.com)的IP地址。如果缓存中没有找到对应的IP地址,浏览器将向本地DNS服务器发送解析请求。
  2. 如果本地DNS服务器也没有缓存相关信息,它将向根域名服务器发出请求,逐级查询直到找到域名对应的IP地址。

2. 建立TCP连接:

一旦浏览器获得目标服务器的IP地址,它将通过操作系统的网络功能开始与服务器之间的TCP连接。这包括三次握手过程:

  1. 客户端(浏览器)向服务器发送一个同步(SYN)数据包,表示客户端准备好建立连接。
  2. 服务器收到同步数据包后,会回复一个同时发送和确认(SYN-ACK)数据包,表示服务器也准备好建立连接。
  3. 最后,客户端再发送一个确认(ACK)数据包,表示连接已成功建立。

3. 发起HTTPS请求:

  1. 一旦TCP连接建立,浏览器会发起一个HTTPS请求给服务器。在这个过程中,还要进行TLS握手(TLS(Transport Layer Security)是SSL(Secure Sockets Layer)的继任者,用于加密通信内容)来确保通信内容的加密和安全性:
  2. TLS握手
  1. 客户端向服务器发送支持的加密算法列表和随机数。
  2. 服务器从客户端提供的加密算法列表中选择一种加密套件,并返回给客户端自己的证书(证书中包含公钥)、支持的加密算法、随机数以及用于生成会话密钥的临时公钥。
  3. 客户端验证证书的合法性,然后生成一个随机值,使用服务器的公钥对该随机值进行加密,并发送给服务器作为"预主密钥"。
  4. 服务器使用自己的私钥解密客户端发来的"预主密钥",然后双方基于客户端和服务器的随机数以及"预主密钥"生成会话密钥。
  5. 后续的通信将使用这个会话密钥进行加密解密。
  6. 一旦TLS握手成功,浏览器使用会话密钥对HTTP请求中的内容进行加密,包括要访问的资源路径、HTTP请求头信息等。这些信息被加密后发送给服务器。

4. 服务器处理请求:

一旦服务器接收到浏览器的HTTPS请求,服务器开始处理请求,例如响应网页请求、数据库查询等操作。

5. 浏览器渲染页面:

服务器返回HTML、CSS、JavaScript等资源给浏览器,浏览器解析和渲染这些资源,最终显示页面给用户。

6. 加载其他资源:

页面渲染完成后,浏览器可能需要加载其他资源,如图片、视频、字体等,这些资源可能需要额外的HTTP请求。

7. 显示页面:

最终,浏览器将所有内容组合在一起,显示完整的谷歌页面给用户。用户可以进行搜索、点击链接等操作。

8. 保持连接:

在页面加载完成后,TCP连接可能会被保持一段时间以便后续请求复用,以提高网页加载速度。

总的来说,从用户在浏览器输入谷歌地址到最终显示页面给用户,涉及了DNS解析、TCP连接建立、HTTPS加密通信、服务器响应、页面渲染等多个详细步骤。这些步骤共同构成了用户访问谷歌的完整过程。

相关推荐
勇哥java实战分享3 小时前
第一次用 Ollama 跑视觉模型:Qwen2.5-VL 7B 给了我一个意外惊喜
后端
码事漫谈5 小时前
从后端开发者到Agent工程师:一份系统性的学习指南
后端
码事漫谈5 小时前
后端开发如何将创新转化为专利?案例、流程与实操指南
后端
wohuidaquan5 小时前
AI为何跳过你?GEO中的E-E-A-T权重
go
小坏讲微服务6 小时前
SpringCloud零基础学全栈,实战企业级项目完整使用
后端·spring·spring cloud
humors2216 小时前
服务端开发案例(不定期更新)
java·数据库·后端·mysql·mybatis·excel
Easonmax8 小时前
用 Rust 打造可复现的 ASCII 艺术渲染器:从像素到字符的完整工程实践
开发语言·后端·rust
百锦再8 小时前
选择Rust的理由:从内存管理到抛弃抽象
android·java·开发语言·后端·python·rust·go
小羊失眠啦.9 小时前
深入解析Rust的所有权系统:告别空指针和数据竞争
开发语言·后端·rust
q***71859 小时前
Spring Boot 集成 MyBatis 全面讲解
spring boot·后端·mybatis