网络通讯核心|HTTP/HTTPS 协议详解,从基础到安全

15 阅读13分钟

网络通讯基础|HTTP与HTTPS协议详解,一文搞懂浏览器与服务器的通信逻辑

上一篇我们搞懂了域名、DNS、URL 的核心逻辑,解决了 “如何找到服务器上的具体资源” 的问题。但找到资源后,浏览器和服务器之间如何传递数据?比如搜索关键词后,服务器如何将结果返回至浏览器?这就需要依靠 TCP/IP 模型应用层的核心通信协议 ——HTTP 和 HTTPS。今天就用最通俗的语言,全面拆解这两个协议,搞懂它们的工作原理、核心特点、区别及安全逻辑,不管是面试复习、日常排障还是网安入门,都能直接用。

一、HTTP:浏览器与服务器的 “基础通信语言”

HTTP 全称超文本传输协议,是基于 TCP/IP 模型应用层的无状态协议,也是浏览器与 web 服务器之间最基础的“沟通规则”。其核心作用很简单:浏览器向服务器发送资源请求,服务器将 HTML、图片、视频等超文本资源传输至浏览器,最终实现网页内容的展示——就像两个人面对面聊天,用统一的语言交流,才能听懂彼此的需求。

HTTP 的四大核心特点

  • 无状态:服务器就像“健忘症患者”,不会记录客户端的历史访问状态,每一次请求都是完全独立的。比如第一次访问某网站和第二次访问,服务器不会记住你的任何操作(比如浏览过的页面、登录状态),需通过Cookie、Session 补充状态管理,相当于给服务器“记笔记”,让它能“记住用户”,实现登录状态保持、购物车同步等功能。
  • 基于 TCP 连接:HTTP 本身不负责数据的可靠传输,而是“依赖”TCP 的可靠特性——通信前必须通过 TCP 三次握手建立连接(相当于“喂,你在吗?”“我在,你说”“好,开始聊”),数据传输完成后,通过四次挥手释放连接,确保数据无丢失、按序传输,避免出现“发了一半没收到”的情况。
  • 明文传输:这是 HTTP 最大的“致命缺点”——请求和响应的所有数据都是“明文”形式,没有任何加密处理,就像寄信不封口,内容能被轻易看到。在公共 WiFi、局域网等环境中,数据极易被窃取、篡改(比如篡改网页内容、窃取账号密码),存在严重的安全风险。
  • 简单高效:HTTP 协议的头部格式简洁,请求/响应的流程简单,易于实现和解析,不用多余的“繁琐流程”,能快速完成资源传输,适合普通的网页浏览、资源获取场景(比如看新闻、逛静态网站)。

HTTP 的报文结构:请求与响应的 “数据载体”

HTTP 通信的核心是请求 - 响应模式,所有数据都以“报文”的形式传输——相当于“聊天记录”,分为请求报文(客户端→服务器,即浏览器发请求)和响应报文(服务器→客户端,即服务器回消息),两者结构相似,均由「起始行 + 头部 + 空行 + 实体主体」四部分组成,其中空行是分隔头部和实体主体的固定格式,缺一不可。

1. HTTP 请求报文:客户端的 “指令单”

请求报文是浏览器向服务器发送的“资源请求指令”,包含客户端的请求信息、浏览器信息等,重点注意:GET 请求无实体主体,POST 请求的实体主体存放表单、JSON 等数据。以下是简化示例,一看就懂:

GET /s?wd=网络知识 HTTP/1.1  # 起始行:我要做什么(请求方法)、找什么(路径)、用什么规则(HTTP版本)
Host: www.baidu.com            # 头部字段:目标服务器域名(我要找百度)
User-Agent: Chrome/114.0.0.0   # 头部字段:客户端浏览器信息(我是Chrome浏览器)
Accept: text/html              # 头部字段:可接收的资源格式(我要网页内容)
# 空行(固定格式,分隔头部和主体)
# 实体主体(GET请求无,POST请求存放提交的数据,比如登录密码)

各部分说明

  • 起始行:核心部分,包含「请求方法 + 请求路径 + HTTP 版本」,明确告诉服务器“我要做什么”;
  • 头部字段:键值对形式,相当于“附加说明”,传递客户端信息、请求条件(如 Host 指定服务器、User-Agent 说明浏览器、Cookie 携带登录信息);
  • 实体主体:可选,仅 POST 请求使用,用于存放提交的数据(如登录时的账号密码、表单内容)。

两大核心请求方法(日常必记)

  • GET:用于获取资源(如浏览网页、搜索内容),参数直接拼在 URL 后(比如 www.baidu.com/s?wd=网络知识),…
  • POST:用于提交资源(如登录、注册、提交表单),参数存放在实体主体中,长度无限制,相对安全(但仍为明文,敏感数据仍有风险)。
2. HTTP 响应报文:服务器的 “回复单”

响应报文是服务器对客户端请求的“回复”,包含请求处理结果、服务器信息、返回的资源数据等,实体主体是服务器返回的具体资源(如 HTML 内容、图片二进制数据)。简化示例如下:

HTTP/1.1 200 OK        # 起始行:通信规则(HTTP版本)、处理结果(状态码)、结果描述
Content-Type: text/html# 头部字段:响应数据格式为HTML(我给你的是网页)
Content-Length: 1024   # 头部字段:响应数据的字节长度(数据有多大)
Server: Apache         # 头部字段:服务器的类型(我是Apache服务器)
# 空行(固定格式)
<!DOCTYPE html><html><body>网页内容</body></html>  # 实体主体:网页HTML内容(你要的东西)

各部分说明

  • 起始行:包含「HTTP 版本 + 状态码 + 状态描述」,状态码是核心,用于表示请求的处理结果,一看就知道请求成功还是失败;
  • 头部字段:键值对形式,传递服务器信息、响应数据属性(如 Content-Type 说明返回数据格式、Server 说明服务器类型);
  • 实体主体:服务器返回的具体资源,是浏览器最终展示的内容(比如网页、图片)。
必记的 HTTP 状态码(日常上网高频)

状态码由 3 位数字组成,代表请求的不同处理结果,不用记太多,记住这 4 个最常用的即可,排查网页无法打开问题时能直接用:

  • 200 OK:请求成功,服务器正常返回资源(网页能正常打开,最常见);
  • 403 Forbidden:请求被拒绝,客户端无访问该资源的权限(比如访问需要登录的后台,未登录就会提示);
  • 404 Not Found:请求的资源不存在(如 URL 输错、网页被删除,最常见的报错);
  • 500 Internal Server Error:服务器内部故障,与客户端无关(比如服务器崩溃,刷新也没用,只能等服务器修复)。

二、HTTPS:HTTP 的 “安全升级版”

由于 HTTP 明文传输的致命缺陷,在涉及账号、密码、支付等敏感信息传输时,数据极易被窃取和篡改(比如在公共 WiFi 上登录网银,密码可能被截获)。为了解决这一问题,HTTPS 协议应运而生——它不是全新的协议,相当于给 HTTP 加了一层“安全防护衣”,是目前互联网中主流的安全通信协议。

HTTPS 全称超文本安全协议,核心逻辑很简单:在 HTTP 和 TCP 之间添加了一层 TLS 加密层(早期为 SSL,现在已被 TLS 替代),通过加密实现请求/响应数据的安全传输,让“明文”变成“密文”,即使被截取,也无法破解。

HTTPS 的加密核心:对称加密 + 非对称加密结合

HTTPS 的加密并非单一方式,而是结合了对称加密非对称加密的优点,兼顾加密效率传输安全性——就像“双重防护”,两者各司其职,缺一不可。我们用通俗的语言,分别拆解两种加密方式:

1. 对称加密:高效的 “数据传输密码”

核心特点:加密和解密使用同一把密钥,通信双方共享这把密钥——相当于两个人约定好一个“暗号”,发送方用暗号加密数据,接收方用同一个暗号解密数据。

  • 优点:加密、解密速度快,效率高,适合大量数据的传输(比如传输视频、图片);
  • 缺点:密钥需要在网络中传输给对方,极易被窃取,一旦密钥泄露,数据会被直接破解(相当于暗号被别人听到,后续聊天内容都能被听懂)。
2. 非对称加密:安全的 “密钥传递密码”

核心特点:有两把配对的密钥,分别是公钥私钥——公钥可全网公开(相当于“公开的锁”),私钥由服务器独自保存,绝不泄露(相当于“只有自己有的钥匙”)。

  • 加密规则:公钥加密的数据,只有对应的私钥能解密;私钥加密的数据,只有对应的公钥能解密;
  • 应用逻辑:服务器生成公钥和私钥,将公钥发送给客户端;客户端用公钥加密数据后发送给服务器,服务器用私钥解密——即使公钥被窃取,没有私钥也无法破解数据(相当于别人拿到了公开的锁,没有钥匙也打不开);
  • 缺点:加密、解密速度慢,效率低,不适合大量数据的传输(比如传输一个视频,用非对称加密会非常慢)。
3. HTTPS 的加密组合逻辑(通俗理解)

HTTPS 结合两种加密方式的核心逻辑,就是“扬长避短”:用非对称加密传递对称加密的密钥,用对称加密传输实际的业务数据,既安全又高效,具体流程如下:

  1. 浏览器与服务器建立连接后,通过非对称加密完成“对称加密密钥”的安全传递(相当于用“公开的锁”把“暗号”锁起来,只有服务器有“钥匙”能打开);
  2. 密钥传递完成后,双方使用对称加密进行后续的所有数据传输(相当于拿到“暗号”后,用暗号快速聊天);
  3. 最终实现:既保证了密钥的传输安全(不会被窃取),又保证了数据的传输效率(不会太慢)。

HTTPS 的身份认证核心:CA(证书颁发机构)

光有加密还不够——如何确认“通信的对方是真正的目标服务器”,而非伪装的钓鱼网站?比如你想访问淘宝,却被引导到一个和淘宝长得一模一样的钓鱼网站,即使数据加密,也会泄露敏感信息。这就需要CA(数字证书颁发机构) 来实现身份认证,CA 相当于公认的、权威的“网络身份证颁发机构”,确保你通信的对象是“正版”服务器。

CA 的核心作用
  • 验证服务器的真实身份(比如确认域名归属、企业信息,确保是淘宝官方服务器,而非钓鱼网站);
  • 为合法服务器颁发数字证书(包含服务器公钥、身份信息、数字签名,相当于服务器的“网络身份证”);
  • 自身拥有根证书(浏览器、电脑自带,相当于“身份证防伪标识”),用于验证下级证书的合法性。
CA 的认证与验签过程(简化版,易懂不复杂)
步骤 1:服务器申请数字证书
  1. 服务器向 CA 提交自身的身份信息(域名、企业资质,比如淘宝提交自己的域名和企业证明)和公钥;
  2. CA 审核通过后,将这些信息整理成信息文件(相当于“身份申请表”);
  3. CA 对信息文件进行哈希运算(不可逆,生成唯一的固定字符串,相当于“身份验证码”);
  4. CA 用自己的私钥对该字符串加密,生成数字签名(相当于“防伪印章”);
  5. CA 将「信息文件 + 哈希字符串 + 数字签名」打包,生成数字证书,发送给服务器(相当于给服务器颁发“网络身份证”)。
步骤 2:客户端验证服务器身份
  1. 浏览器访问服务器时,服务器将数字证书发送给浏览器(相当于服务器出示“身份证”);
  2. 浏览器用预装的CA 公钥解密数字签名,得到原始的哈希字符串(相当于用“防伪工具”验证印章,得到“身份验证码”);
  3. 浏览器对证书中的信息文件进行一次哈希运算,得到新的哈希字符串(相当于重新计算“身份验证码”);
  4. 对比两个哈希字符串:一致则服务器身份合法,可安全通信;不一致则为钓鱼网站,浏览器会提示“访问不安全”(比如 Chrome 浏览器提示“您的连接不是私密连接”)。

三、HTTP 与 HTTPS 核心区别总结(表格清晰对比,好记好用)

对比维度HTTPHTTPS
安全性明文传输,无加密,安全风险高(易被窃取、篡改)基于 TLS 加密,数据密文传输,安全性高
加密层无额外加密层,直接基于 TCP 传输HTTP 与 TCP 之间添加 TLS 加密层
端口号默认 80 端口(之前讲解端口时重点提及)默认 443 端口(HTTPS 专属默认端口)
证书无需证书,随便就能搭建 HTTP 服务器必须向 CA 申请数字证书,否则浏览器提示不安全
速度无加密/解密开销,速度更快有加密/解密、证书验证开销,速度略慢于 HTTP
适用场景普通网页浏览、非敏感资源获取(如新闻、静态博客)登录、支付、金融、电商等敏感信息传输(如网银、淘宝)

四、总结:HTTP/HTTPS 核心知识点快速记忆(一句话吃透)

  • HTTP 是基础通信协议,无状态、明文传输、基于 TCP,是浏览器与服务器的“基础聊天语言”,适合非敏感场景;
  • HTTP 报文分为请求和响应,均由「起始行 + 头部 + 空行 + 实体主体」组成,状态码是判断请求成败的核心;
  • HTTPS 是 HTTP 的安全升级版,核心是添加 TLS 加密层,结合对称/非对称加密实现安全传输,解决明文泄露问题;
  • CA 是 HTTPS 的“身份认证官”,通过数字证书验证服务器身份,防止钓鱼网站,是 HTTPS 安全的核心保障;
  • 日常开发和使用中,涉及敏感信息的场景必须用 HTTPS,普通场景可使用 HTTP,结合端口(80/443)能快速判断协议类型。

至此,网络通讯的核心基础知识点(模型/协议→寻址→通信)已全部拆解完毕——从数据的分层传输(OSI/TCP/IP 模型),到域名的解析寻址(域名/DNS/URL),再到浏览器与服务器的加密通信(HTTP/HTTPS),一套完整的上网底层逻辑已清晰呈现。搞懂这些,不管是日常排网、面试复习,还是入门网络安全、运维开发,都能打下扎实的基础。

最后还是那句,如果有遗漏与错误的地方,欢迎大家指出,有疑问和不懂的也可以留言讨论,谢谢!!!