计算机网络基础:从HTTP到HTTPS,一篇搞懂核心概念


一、网络分层模型:先搞懂“应用层”的位置

在计算机网络中,最经典的是OSI七层模型TCP/IP四层模型。OSI七层从下到上分别是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。而实际工程中更常用的是TCP/IP四层模型:网络接口层、网络层(IP)、传输层(TCP/UDP)、应用层(HTTP、FTP、DNS等)。

今天要讲的HTTP协议就位于应用层,它直接面向用户,负责浏览器和服务器之间的数据传输。简单理解,应用层就是“外卖APP”,用户通过它下单;而传输层(TCP)就像“快递公司”,负责把数据可靠地送到目的地。


二、HTTP协议基础:请求与响应

1. 什么是HTTP?

HTTP全称超文本传输协议(HyperText Transfer Protocol),是基于TCP的应用层协议,属于无状态、无连接的请求-响应式协议,主要用于浏览器和服务器之间传输超文本资源(HTML、CSS、JS、图片等)。

2. HTTP请求的完整流程

当你在浏览器输入网址并回车时,背后发生了这些事:

  1. DNS解析:将域名(如www.example.com)解析为IP地址
  2. 建立TCP连接:通过三次握手建立可靠连接
  3. 发送HTTP请求:浏览器构造请求报文发送给服务器
  4. 服务器处理请求:解析请求,处理业务逻辑
  5. 服务器返回响应:构造响应报文返回给客户端
  6. 关闭TCP连接(或保持长连接)
  7. 浏览器解析响应:解析HTML、CSS、JS等资源
  8. 页面渲染:生成DOM树、CSSOM树,完成布局和绘制

3. HTTP请求报文结构

一个HTTP请求由三部分组成:

① 请求行:包含请求方法、请求URL、HTTP协议版本

GET /index.html HTTP/1.1

② 请求头:键值对格式,传递附加信息
常见请求头包括:

  • Host:服务器主机名
  • User-Agent:客户端信息(浏览器类型、版本等)
  • Accept:客户端能接收的MIME类型
  • Cookie:存储的用户状态信息
  • Authorization:身份认证信息(如Token)
  • Content-Type:请求体类型(如application/json
  • Referer:请求来源页面地址
  • Content-Length:请求体长度

③ 空行 + 请求体:GET请求无请求体,POST等方法的请求体存放表单数据、JSON等

4. HTTP响应报文结构

响应也包含三部分:

① 状态行:协议版本 + 状态码 + 状态描述

HTTP/1.1 200 OK

② 响应头:常见的有Content-TypeContent-LengthCache-ControlSet-CookieServer

③ 空行 + 响应体:返回的数据,如HTML、JSON、图片等


三、GET vs POST:核心区别

GET和POST是HTTP最常用的两种方法,它们的本质区别如下:

对比项GETPOST
参数位置URL之后,以?分割,参数间用&连接请求体body中
安全性参数可见,不安全(如密码会显示在URL中)相对安全,数据在请求体中
数据大小较小,受浏览器URL长度限制较大,理论上无限制
缓存性可被浏览器缓存默认不缓存
幂等性幂等(多次执行结果相同)非幂等
用途获取/读取资源提交/创建数据

四、常见HTTP状态码

状态码用来告诉客户端请求的处理结果,分为5大类:

2xx 成功类

  • 200 OK:请求成功,正常返回数据
  • 201 Created:资源创建成功(POST/PUT)
  • 204 No Content:请求成功,但无响应体返回

3xx 重定向类

  • 301 Moved Permanently:永久重定向(域名更换)
  • 302 Found:临时重定向
  • 304 Not Modified:资源未修改,使用缓存(协商缓存核心状态码)

4xx 客户端错误类

  • 400 Bad Request:请求参数或格式错误
  • 401 Unauthorized:未授权,需登录或验证Token
  • 403 Forbidden:禁止访问,权限不足
  • 404 Not Found:请求资源不存在
  • 405 Method Not Allowed:请求方法不支持
  • 418 I’m a Teapot:这是一个有趣的“彩蛋”状态码,来自IETF的愚人节玩笑(超文本咖啡壶控制协议),表示“我是一个茶壶”,不能煮咖啡

5xx 服务器错误类

  • 500 Internal Server Error:服务器内部错误
  • 502 Bad Gateway:网关错误(上游服务异常)
  • 503 Service Unavailable:服务器过载或维护中
  • 504 Gateway Timeout:上游服务超时

五、请求组成详解

1. 请求头关键字段

  • User-Agent(UA):标识客户端信息,如浏览器类型、版本、操作系统等。爬虫常通过修改UA来模拟真实浏览器访问
  • Cookie:浏览器存储的小数据,每次请求自动携带,用于维持用户状态
  • Referer:标识请求来源页面,常用于防盗链、统计来源
  • Authorization:携带身份认证信息,如Bearer Token

2. 请求参数与请求体

  • params(查询参数):GET请求的参数,放在URL的?后面,如?page=1&size=10
  • data(表单数据):POST请求中,表单提交的数据格式为key1=value1&key2=value2
  • json(JSON数据):POST请求中,以application/json格式提交的数据,如{"name":"John","age":30}

六、Cookie、Session、Token、JWT的区别

这是面试中的高频考点,我们来逐一理清:

Cookie

  • 存储位置:浏览器端
  • 作用:浏览器保存的小数据,每次请求自动发送给服务器
  • 典型用途:保存session_id、登录状态、业务信息
  • 注意:Cookie只是传输载体,本身不是身份验证机制

Session

  • 存储位置:服务器端
  • 原理:数据存在服务器,浏览器只保存一个session_id(通常存在Cookie中),服务器根据session_id查找用户数据
  • 典型流程:用户登录 → 服务器创建Session并返回session_id → 浏览器存到Cookie → 后续请求携带Cookie → 服务器验证session_id

Token

  • 存储位置:客户端(浏览器、APP等)
  • 原理:服务器生成一个令牌,客户端保存并在每次请求时通过Authorization头携带
  • 优点:无状态,服务器不需要存储会话信息,适合分布式系统

JWT(JSON Web Token)

  • 本质:一种特殊的Token格式,包含三部分:Header(头部)、Payload(载荷)、Signature(签名)
  • 特点:自包含(用户信息编码在Token中)、可验证(通过签名防篡改)、无状态
  • 典型流程:用户登录 → 服务器生成JWT返回 → 客户端保存 → 后续请求携带 → 服务器验证签名

总结对比

机制存储位置状态适用场景
Cookie浏览器有状态传统Web应用
Session服务器有状态需要服务端存储用户数据
Token客户端无状态分布式系统、移动端
JWT客户端无状态自包含用户信息,适合API认证

七、HTTP的无状态原理

HTTP协议是无状态的,这意味着协议本身不保存客户端和服务器之间的通信状态,每次请求都是独立的,服务器无法识别连续请求是否来自同一客户端。

为什么设计成无状态? 因为这样简化了服务器设计,每个请求都可以独立处理,不需要维护复杂的会话信息。

如何解决无状态问题? 通过Cookie + Session或Token机制来“模拟”状态。比如用户登录后,服务器创建一个Session,将session_id通过Cookie返回给浏览器,后续请求携带这个Cookie,服务器就能识别用户身份。


八、HTTPS:安全的HTTP

1. HTTP vs HTTPS

对比项HTTPHTTPS
安全性明文传输,易被窃听、篡改加密传输,数据安全
默认端口80443
连接流程简单多了SSL/TLS握手
资源消耗需要加密解密,消耗更多资源
证书不需要需要CA机构颁发的SSL证书

2. HTTPS加密原理(简单了解)

HTTPS采用对称加密 + 非对称加密结合的混合加密方式:

  1. 非对称加密:服务器有公钥和私钥,公钥加密只能私钥解密,用于安全传输对称密钥
  2. 对称加密:双方用同一把密钥加密解密数据,效率高,用于实际数据传输
  3. 数字证书:由CA机构颁发,包含服务器公钥和数字签名,用于验证服务器身份,防止中间人攻击

SSL/TLS握手简化流程

  1. 客户端发起请求,携带支持的TLS版本和加密套件
  2. 服务器返回SSL证书(含公钥)
  3. 客户端验证证书合法性
  4. 客户端生成对称密钥,用服务器公钥加密后发送
  5. 服务器用私钥解密,获得对称密钥
  6. 后续所有数据用对称密钥加密传输

3. 其他相关概念

  • 端口:HTTP默认80,HTTPS默认443
  • DNS:域名系统,将域名解析为IP地址,查询顺序为:浏览器缓存 → 系统缓存 → 路由器缓存 → DNS服务器
  • 代理IP:通过代理服务器转发请求,可以隐藏真实IP、突破访问限制
  • SSL证书:由CA机构颁发,用于验证网站身份和加密通信,有免费(如Let’s Encrypt)和付费两种

九、总结

今天我们系统学习了计算机网络的基础知识,重点包括:

  1. 网络分层:HTTP位于应用层,基于TCP传输
  2. HTTP请求/响应:请求行、请求头、请求体;状态行、响应头、响应体
  3. GET vs POST:参数位置、安全性、大小、缓存、幂等性
  4. 状态码:200成功、301/302重定向、403禁止、404未找到、500服务器错误、418茶壶彩蛋
  5. 请求组成:UA、Cookie、Referer、Token等请求头;params、data、json等参数
  6. 状态管理:Cookie(浏览器存储)、Session(服务器存储)、Token/JWT(无状态认证)
  7. HTTP无状态:每次请求独立,通过Cookie/Session维持状态
  8. HTTPS:加密传输,混合加密(非对称+对称),需要SSL证书

希望这篇博客能帮你建立起对HTTP/HTTPS协议的系统认知。如果你有任何疑问,欢迎在评论区留言讨论

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐