B/S架构中的数据交互过程开始于用户在浏览器中输入URL并按下Enter键,由此触发了一系列复杂的步骤。
(1)浏览器缓存检查。浏览器会检查它的缓存中是否有请求的URL的资源(包括页面、图片等)。如果存在匹配项且未过期,则浏览器可以直接从缓存中加载资源,而无须通过网络请求。
(2)DNS查询。如果资源不在缓存中,则浏览器会进行DNS查询,将可读的域名(如www.example.com)解析为一个IP地址。这通常涉及查询本地的DNS缓存、操作系统的DNS缓存、路由器的DNS缓存,或者可能是一个远程的DNS服务器。
(3)建立TCP连接。获取IP地址后,浏览器与目标服务器将建立一个TCP连接,以进行后续的通信。这个过程包括一个称为三次握手的过程。
(4)发送HTTP请求。TCP连接建立后,浏览器会通过这个连接发送一个HTTP请求到服务器。这个请求包括了请求的资源、方法(如GET或POST)和一些其他的头部信息。
(5)服务器处理。服务器收到HTTP请求后,通常会通过Web服务器软件(如Apache、Nginx或IIS)进行处理。对于动态内容,如PHP、Python或Node.js脚本,服务器可能会交给相应的处理器进行处理。
(6)服务器响应。服务器处理完成后,会发送一个HTTP响应回到浏览器。这个响应包括一个状态码(如200 OK、404 Not Found等)、响应头部信息,以及请求的实际数据或内容。
(7)HTTPS/TLS握手。如果URL的前缀是HTTPS,那么在TCP连接之后和发送HTTP请求之前,浏览器和服务器之间会进行TLS握手,以安全地加密和解密传输的数据。
(8)渲染页面。浏览器开始解析返回的HTML、CSS和JavaScript。它会构建DOM(文档对象模型)和CSSOM(CSS对象模型),并执行JavaScript,最后呈现页面给用户。
(9)加载其他资源。HTML页面可能还包含其他资源的引用,如图片、视频、CSS文件、JavaScript文件等。浏览器会继续为这些资源发起额外的HTTP请求,并在收到响应数据后进行处理或渲染。
(10)关闭TCP连接。数据传输完成后,浏览器和服务器会关闭TCP连接。但如果使用了HTTP/2协议,则连接可能会保持开放,用于后续的请求。