HTTPDNS 解析当客户端通常是浏览器输入 URL例如https://www.example.com时它首先需要解析出对应的 IP 地址。这个过程涉及 DNS域名系统浏览器会查询本地缓存、系统缓存或者向 DNS 服务器发送请求最终获取到www.example.com的 IP 地址如192.168.1.1。建立 TCP 连接通过三次握手与服务器建立 TCP 连接。客户端向服务器发送 HTTP 请求主要包括请求行Request LineGET /index.html HTTP/1.1请求头HeadersHost: www.example.comUser-Agent: Mozilla/5.0Accept: text/htmlConnection: keep-alive请求体Body仅在POST、PUT等请求方法时才有例如 JSON 数据、表单数据等。服务器解析请求检查 URL 路由、验证权限、查询数据库、处理业务逻辑、服务器生成 HTTP 响应。服务器返回 HTTP 响应主要包括状态行HTTP/1.1 200 OK响应头Content-Type: text/html; charsetUTF-8Content-Length: 1024Set-Cookie: sessionIdabc123; Path/响应体Body例如 HTML 页面内容、JSON 数据等。浏览器解析 渲染浏览器解析 HTML、CSS、JavaScript并开始渲染页面。如果遇到额外的资源如 CSS、JS、图片浏览器会再次发起 HTTP 请求获取这些资源。连接关闭HTTP/1.1 默认使用Keep-Alive可以复用 TCP 连接。如果Connection: close则服务器和客户端会进行四次挥手关闭 TCP 连接。用户交互 进一步请求用户可能会点击页面上的链接触发新的 HTTP 请求重复上述过程。HTTPSHTTPSHyperText Transfer Protocol Secure是在 HTTP 的基础上增加了SSL/TLS 加密以保证数据的安全性。相比 HTTPHTTPS 主要增加了SSL/TLS 握手过程。DNS 解析将域名解析为 IP 地址和 HTTP 一样。浏览器先查询本地 DNS 缓存若无结果向系统 DNS 服务器或公共 DNS如8.8.8.8发起查询DNS 服务器返回example.com - 192.168.1.1建立 TCP 连接通过三次握手建立 TCP 连接和 HTTP 相同。SSL/TLS 握手HTTPS 独有在 TCP 连接建立后客户端和服务器通过TLSTransport Layer Security/SSLSecure Sockets Layer进行安全通信客户端发送 ClientHello指定支持的 TLS 版本如 TLS 1.2 / TLS 1.3支持的加密算法Cipher Suites生成的随机数用于后续密钥计算服务器响应 ServerHello确定 TLS 版本选择加密算法生成随机数发送 SSL 证书包含服务器公钥客户端验证服务器证书检查证书是否可信是否由受信 CA 签发证书是否过期证书的域名是否匹配密钥交换客户端使用服务器公钥加密一个对称密钥用于数据加密服务器用自己的私钥解密获得对称密钥后续通信将使用这个对称密钥进行加密握手完成客户端和服务器发送Finished消息表示握手完成之后的 HTTP 请求/响应都通过 TLS 加密通道传输发送 HTTPS 请求请求格式与 HTTP 相同但数据已经加密GET /index.html HTTP/1.1Host: www.example.comUser-Agent: Mozilla/5.0Accept: text/htmlAuthorization: Bearer token服务器处理请求解密 HTTPS 请求解析 HTTP 请求处理业务逻辑如数据库查询、身份验证生成 HTTP 响应服务器返回 HTTPS 响应响应数据通过对称密钥加密后传输响应格式加密传输HTTP/1.1 200 OKContent-Type: text/htmlSet-Cookie: sessionIdabc123Body: html.../html浏览器解析 渲染浏览器解密 HTTPS 响应解析 HTML/CSS/JS发现额外资源如 CSS、JS、图片再次发起 HTTPS 请求重复上述流程连接关闭Keep-Alive 模式TCP 连接可以复用减少握手开销关闭连接若Connection: close则通过四次挥手关闭 TCP 连接。