HTTP与HTTPS协议详解:从基础到加密原理

张开发
2026/4/21 3:00:40 15 分钟阅读

分享文章

HTTP与HTTPS协议详解:从基础到加密原理
目录HTTP协议HTTP协议格式HTTP的方法HTTP的状态码HTTP常见Header长连接和短连接CookieHTTPS协议对称加密和非对称加密概念HTTPS对称加密非对称加密证书认证HTTP协议HTTP协议格式HTTP的方法HTTP的方法最主要的就是GET 和 POST。GET用于请求数据从服务器获取资源如网页、图片、API数据。POST用于提交数据向服务器发送数据以创建或修改资源如表单提交、文件上传。GET数据通过URL参数传递附加在URL后形如 ?key1value1key2value2。数据可见暴露在地址栏、浏览器历史、服务器日志中。有长度限制受浏览器和服务器限制通常不超过2048字符。POST数据通过请求体Request Body传递。数据不可见不显示在URL中适合敏感信息。无严格长度限制可传输大量数据如文件上传HTTP的状态码最常见的状态码, 比如 200(OK), 404(Not Found), 403(Forbidden), 302(Redirect, 重定向), 504(Bad Gateway)HTTP常见Header请求头Request Headers客户端发送给服务器的头信息用于告知服务器客户端的请求信息Host告诉服务器请求的资源所在的主机和端口主机和端口是服务端的如 Host: www.example.com:443。User-Agent声明客户端的操作系统、浏览器版本等信息如 User-Agent: Mozilla/5.0 (Windows NT 10.0)。Referer表示当前请求是从哪个页面跳转过来的如 Referer: https://www.google.com。Cookie客户端携带的Cookie数据用于会话管理如 Cookie: session_idabc123。响应头Response Headers服务器返回给客户端的头信息用于控制客户端行为或补充响应内容Content-Type告知客户端返回数据的类型如 Content-Type: text/html; charsetutf-8。Content-Length表示响应体的长度字节数如 Content-Length: 1024。Location搭配 3xx重定向状态码告诉客户端下一步跳转的URL如 Location: /new-page。特殊情况说明Cookie 虽然是客户端发送的但服务器也可以通过 Set-Cookie响应头让客户端存储Cookie。Content-Type 和 Content-Length 在极少数情况下也可能出现在请求头中如POST请求提交数据时。长连接和短连接短连接特点1.每次请求-响应后关闭 TCP 连接。2. 下次请求需重新建立连接三次握手。3. HTTP/1.0 默认行为除非显式设置 Connection: keep-alive。工作流程1.客户端发起请求 → TCP 三次握手建立连接。2. 服务器返回响应。3. 服务器主动关闭 TCP 连接四次挥手。4. 后续请求重复步骤 1~3。缺点1.高延迟每次请求需重新握手增加 RTTRound-Trip Time时间。2.资源浪费频繁创建/销毁连接消耗 CPU 和内存。3.性能瓶颈不适合高频请求场景如网页加载多个资源。适用场景1.低频请求如传统静态网页。2.无需保持状态的简单交互。长连接特点1.复用 TCP 连接处理多个请求-响应。2.默认在 HTTP/1.1 中启用无需显式设置。3.通过 Connection: keep-alive 头部协商HTTP/1.0 需手动开启。工作流程1.客户端发起首次请求 → TCP 三次握手建立连接。2.服务器返回响应保持连接不关闭。3.客户端复用同一 TCP 连接发送后续请求。4.空闲一段时间后超时时间由服务器设定连接自动关闭。优点1.降低延迟避免重复握手尤其 HTTPS 的 TLS 握手更耗时。2.减少资源消耗复用连接减少 CPU/内存开销。3.提升吞吐量适合高频请求如现代网页加载 JS/CSS/图片。适用场景1.高频请求如 API 调用、动态网页。2.需要低延迟的交互如 WebSocket 前置握手。Connection 请求头和响应头Connection 是一个 HTTP 请求头Request Header和响应头Response Header用于控制当前 TCP 连接的行为尤其是决定是否保持长连接Keep-Alive。客户端请求头客户端通过 Connection 头告知服务器是否希望保持长连接。GET/example HTTP/1.1Host:api.example.com Connection:keep-alive # 表示客户端希望保持连接服务器响应头服务器通过 Connection 头确认是否支持长连接。HTTP/1.1200OK Connection:keep-alive # 服务器同意保持连接 Keep-Alive:timeout60,max1000Connection 可以取值 keep-alive 和 close keep-alive客户端或服务器希望保持连接HTTP/1.1 默认启用无需显式设置。close明确要求当前请求完成后关闭连接使用短连接。CookieCookie 是 HTTP 协议中用于 在客户端浏览器存储小型数据 的机制主要用于会话管理如用户登录状态、个性化设置如语言偏好和用户行为跟踪如广告定向。以下是全面解析Cookie 的工作原理基本流程:服务器设置 Cookie通过 HTTP 响应头的 Set-Cookie 字段向浏览器发送 CookieHTTP/1.1200OK Set-Cookie:session_idabc123;Path/;Secure;HttpOnly浏览器存储 Cookie浏览器将 Cookie 存储在本地内存或硬盘后续请求自动附加到请求头的 Cookie 字段GET/profile HTTP/1.1Cookie:session_idabc123服务器读取 Cookie服务器解析请求头的 Cookie 字段识别用户身份或状态。Cookie 的分类会话 CookieSession Cookie不设置 Expires 或 Max-Age浏览器关闭后自动删除。持久 CookiePersistent Cookie设置过期时间长期存储在硬盘中。Cookie 的应用场景1会话管理用户登录后服务器下发 Session IDSession ID是根据用户名和密码生成的在整个服务器中的唯一的ID确保每个用户都不一样Set-Cookie:session_idxyz789;Path/;HttpOnly;Secure;SameSiteLax后续请求自动携带该 Cookie服务器验证 Session ID 维持登录状态。2个性化设置存储用户语言、主题偏好HTTPS协议HTTPS HTTP TLS/SSL 加密TLS/SSL在应用层对称加密和非对称加密概念对称加密定义对称加密是指加密和解密使用相同密钥的加密方式。特点加解密速度快适合大数据量加密密钥管理困难需要安全地共享密钥算法相对简单工作流程通信双方协商一个共享密钥发送方用该密钥加密数据接收方用相同密钥解密数据典型应用场景大量数据的加密如文件加密、数据库加密SSL/TLS协议中的数据加密部分磁盘加密非对称加密定义非对称加密使用一对密钥公钥和私钥公钥用于加密私钥用于解密。特点加解密速度慢不适合大数据量加密解决了密钥分发问题可实现数字签名功能算法复杂度高工作流程接收方生成密钥对公钥和私钥接收方将公钥发送给发送方发送方用公钥加密数据接收方用私钥解密数据典型应用场景安全密钥交换如SSL/TLS握手数字签名身份验证小数据量加密HTTPS对称加密非对称加密证书认证HTTPS使用对称加密非对称加密证书认证的方式来加密如果只使用对称加密非对称加密来加密关键问题就是服务端发来的公钥被调包了即客户端没法判断公钥是否是合法的。我们可以用证书认证来证明公钥的合法性。证书使用了数字签名签名形成的过程也被叫做对数据进行数字签名。数字签名是基于非对称加密算法。如何使用对称加密非对称加密证书认证来数据传输客户端浏览器都内置了CA机构的公钥步骤1验证证书的真假客户端用CA公钥对发来的证书的签名进行解密解密后的结果和INFO进行对比相等这个证书就是CA机构验证过的证书不相等就是假证书查看INFO中的域名是否和服务端一样一样就是服务端的证书防止中间人在CA机构申请了证书来窃听消息。域名具有唯一性步骤2提取证书中的公钥a客户端用公钥a来加密密钥b传输给服务端步骤3双方用密钥b来传输消息。提示CA机构的公钥用于解密私钥用于加密这是一个特例。如果中间人修改了证书的INFO那么客户端用公钥解密后签名和INFO不匹配如果中间人修改了证书的签名他没有私钥加密那么最后客户端用公钥解密后签名和INFO还不匹配。只有真正的CA机构的证书才会签名和INFO匹配。即使中间人使用了真正的CA证书客户端查看证书INFO域名也会知道这不是客户端域名总结HTTPS ⼯作过程中涉及到的密钥有三组第⼀组(⾮对称加密): ⽤于校验证书是否被篡改。第⼆组(⾮对称加密): ⽤于传递对称加密的密钥.第三组(对称加密): 客⼾端和服务器后续传输的数据都通过这个对称密钥加密解密.

更多文章