admin管理员组

文章数量:1606853

用户输入网址(URL):

用户在浏览器地址栏中输入网址,例如:https://www.example。

dns解析

计算机尝试解析一个域名时,首先会检查本地 hosts 文件,看是否存在相应的映射。如果存在映射,计算机将直接使用 hosts 文件中的 IP 地址,而不进行 DNS 查询。如果本地host没有对应的域名解析就会进行dns解析:
1. 计算机向本地 DNS 缓存查询是否有域名的映射记录。
2. 如果本地缓存中没有,计算机将向本地网络中配置的 DNS 服务器发送查询请求。
3. 如果本地 DNS 服务器也没有相应的记录,它将递归地向根域名服务器、顶级域名服务器、权威域名服务器等发起查询,直到找到域名对应的 IP 地址。
4. DNS 服务器将获取到的 IP 地址返回给计算机,并将结果缓存,以便将来的查询。

建立TCP连接:

三次握手(建立连接):
  • 客户端发送请求 (SYN):

    客户端发送一个 TCP 报文,设置 SYN(同步)标志位,表示请求建立连接。同时,客户端选择一个初始序列号(ISN)。

  • 服务器响应请求 (SYN + ACK):

    服务器收到客户端的 SYN 请求后,会回复一个带有 SYN 和 ACK(确认)标志位的 TCP 报文。服务器也选择一个初始序列号。

  • 客户端确认响应 (ACK):

    客户端收到服务器的 SYN + ACK 后,发送一个带有 ACK 标志位的报文,表示对服务器的响应已经收到。至此,连接建立。

SSL/TLS握手

1.下发数字证书并进行签名验证

在握手的初始阶段,服务器会提供一个数字证书,数字证书是由受信任的证书颁发机构(CA)签发的。数字签名是通过 CA 对数字证书进行签名的过程,用于确保证书的真实性和完整性。客户端在握手过程中验证服务器提供的数字证书的签名,以确保证书是由受信任的 CA 签发的。数字签名是一种使用 CA 的私钥签署数据的非对称加密过程。

2.使用非对称加密交换密钥

数字证书包含了服务器的公钥。客户端使用服务器的公钥来加密一个称为"Pre-Master Secret"的随机值,并将其发送给服务器。服务器收到加密的"Pre-Master Secret"后,使用自己的私钥进行解密。这个步骤使用了非对称加密,其中公钥用于加密,私钥用于解密。

3.生成会话密钥:

通过协商生成的"Pre-Master Secret"是安全地通过非对称加密传递的。然后,客户端和服务器使用"Pre-Master Secret"生成"Master Secret",再从"Master Secret"派生出用于对称加密的会话密钥。

4.使用对称加密进行实际请求:

双方使用协商好的加密算法和生成的会话密钥来加密通信。从此时开始,客户端和服务器之间的数据传输都是加密的。

发起HTTP/HTPPS请求:

浏览器向服务器发起一个 HTTP/HTPPS 请求。这个请求包含了用户请求的资源、请求头(例如浏览器的信息、所需的资源类型等)等信息。

服务器处理请求:

服务器收到浏览器的请求后,根据请求的内容和服务器上的配置,分发到相关的服务(Web Server -> Web Application)。
例如:
Apache/Nginx + FastCGI + PHP-FPM(+PHP-CGI)
Nginx + Go
Tomcat+Java

后端处理:

在服务器端,可能会涉及到多个服务,例如应用服务器、数据库服务器、缓存服务器等。这些服务协同工作,生成或获取需要的数据。

HTTP响应:

服务器将处理结果封装成 HTTP 响应,包括状态码、响应头和响应体。响应体中可能包含 HTML、CSS、JavaScript 等文件,或者其他数据格式,如 JSON。

浏览器接收响应:

浏览器接收到服务器的 HTTP 响应后,根据响应头中的信息处理数据。如果响应体包含了 HTML,浏览器开始解析和渲染页面。

四次挥手
  • 客户端发送终止请求 (FIN):

    客户端想要关闭连接时,发送一个带有 FIN(结束)标志位的报文,表示不再发送数据。

  • 服务器确认关闭 (ACK):

    服务器收到客户端的 FIN 后,发送一个带有 ACK 标志位的报文,表示收到了关闭请求。

  • 服务器发送终止请求 (FIN):

    服务器关闭自己的发送通道,并发送一个带有 FIN 标志位的报文给客户端,表示服务器不再发送数据。

  • 客户端确认关闭 (ACK):

    客户端收到服务器的 FIN 后,发送一个带有 ACK 标志位的报文,表示收到了服务器的关闭请求。此时,客户端和服务器之间的连接彻底关闭。

解析HTML和构建DOM树:

浏览器解析 HTML,并构建 Document Object Model(DOM)树,表示页面的结构。

加载CSS和JavaScript:

浏览器开始加载页面中引用的 CSS 和 JavaScript 文件,并执行相应的脚本。这些文件可能会修改 DOM 树、向服务器发起额外的请求等。

渲染页面:

浏览器根据 DOM 树和 CSS 样式信息,开始渲染页面。这包括计算元素的大小和位置、绘制页面的各个部分等。

页面展示:

最终,渲染后的页面在用户的浏览器中显示出来,用户可以与页面进行交互。

本文标签: 随笔浏览器过程网页