计算机网络基础知识梳理(2)

计算机网络基础知识梳理(2)

作者:没有四次元口袋的蓝胖

日期:2026-08-03

标签:Java, HTTP, HTTPS, 状态码, GET/POST, 计算机网络


HTTP 是 Java 面试的高频考点。核心掌握:HTTP 与 HTTPS 的区别、常见状态码、GET 与 POST 的差异。


一、HTTP 与 HTTPS 区别

1.1 对比表

维度 HTTP HTTPS
全称 HyperText Transfer Protocol HTTP Secure
端口 80 443
安全性 明文传输,不安全 SSL/TLS 加密,安全
证书 不需要 需要 CA 证书
性能 快(无加密开销) 稍慢(加解密开销)
SEO 不友好 友好(搜索引擎优先)

1.2 HTTPS 加密过程

HTTPS = HTTP + SSL/TLS,通过非对称加密 交换密钥,再用对称加密传输数据。

复制代码
1. 客户端发起 HTTPS 请求,发送支持的加密算法
2. 服务端返回数字证书(含公钥)
3. 客户端验证证书合法性(CA 签发、域名匹配、有效期)
4. 客户端生成随机密钥,用公钥加密后发送给服务端
5. 服务端用私钥解密,得到对称密钥
6. 双方用对称密钥加密通信

为什么混合加密?

  • 非对称加密安全但慢 → 用于交换密钥
  • 对称加密快但密钥分发不安全 → 用于实际通信

1.3 数字证书

作用:证明"这个公钥确实是服务端的"。

内容

  • 服务端公钥
  • 域名
  • 有效期
  • CA 签名

验证流程

复制代码
客户端收到证书
    ↓
用浏览器内置的 CA 公钥验证签名
    ↓
签名合法 → 证书可信
签名非法 → 证书不可信,拒绝连接

二、HTTP 状态码

2.1 状态码分类

类别 含义 常见状态码
1xx 信息性 100 Continue(继续请求)
2xx 成功 200 OK、201 Created、204 No Content
3xx 重定向 301 永久重定向、302 临时重定向、304 未修改
4xx 客户端错误 400 Bad Request、401 Unauthorized、403 Forbidden、404 Not Found
5xx 服务端错误 500 Internal Server Error、502 Bad Gateway、503 Service Unavailable

2.2 高频状态码详解

2xx 成功类
状态码 含义 场景
200 OK 请求成功,返回数据
201 Created 资源创建成功(POST/PUT)
204 No Content 请求成功但无返回内容
3xx 重定向类
状态码 含义 区别
301 Moved Permanently 永久重定向,搜索引擎会更新索引
302 Found 临时重定向,搜索引擎保留原 URL
304 Not Modified 资源未修改,使用缓存

面试区分:301 是永久的(资源已搬家),302 是临时的(资源暂时在这)。

4xx 客户端错误
状态码 含义 常见原因
400 Bad Request 请求参数错误、格式不对
401 Unauthorized 未登录或 Token 过期
403 Forbidden 已登录但无权限
404 Not Found 资源不存在
405 Method Not Allowed 请求方法不支持(如 POST 接口用 GET)

面试区分:401 是"你是谁"(未认证),403 是"你不配"(无权限)。

5xx 服务端错误
状态码 含义 常见原因
500 Internal Server Error 服务器内部异常(代码报错)
502 Bad Gateway 网关错误(如 Nginx 转发失败)
503 Service Unavailable 服务不可用(过载或维护)
504 Gateway Timeout 网关超时(上游服务响应慢)

三、GET 与 POST 区别

3.1 对比表

维度 GET POST
语义 获取资源 提交数据
参数位置 URL(?key=value) 请求体
参数长度 有限制(URL 长度限制,约 2KB) 无限制
安全性 较低(参数暴露在 URL) 相对较高
缓存 可被缓存 默认不缓存
幂等性 幂等(多次请求结果相同) 非幂等
浏览器回退 无害(重新获取) 可能重新提交
报文 只有一个 TCP 包 可能两个(先发 Header,再发 Body)

3.2 幂等性

幂等:多次执行同一操作,结果与执行一次相同。

方法 是否幂等 说明
GET 查询操作,多次查询结果不变
POST 提交操作,多次提交可能创建多个资源
PUT 更新操作,多次更新结果不变
DELETE 删除操作,删除已存在的资源结果不变

3.3 实际开发中的选择

GET 适用场景

  • 查询数据
  • 参数简单、无敏感信息
  • 希望结果可缓存、可收藏

POST 适用场景

  • 提交表单
  • 参数复杂或包含文件
  • 包含敏感信息(密码、身份证号)
  • 创建或修改资源

四、Cookie 与 Session

4.1 为什么需要它们?

HTTP 是无状态协议,服务器无法识别"你是你"。Cookie 和 Session 用于保持状态

存储位置:客户端(浏览器)

工作流程

复制代码
1. 服务端返回 Set-Cookie: userId=123
2. 浏览器保存 Cookie
3. 后续请求自动携带 Cookie: userId=123
4. 服务端根据 Cookie 识别用户

特点

  • 存储在客户端,不安全
  • 大小限制 4KB
  • 可设置过期时间

4.3 Session

存储位置:服务端

工作流程

复制代码
1. 用户登录,服务端创建 Session(sessionId)
2. 服务端返回 sessionId(通过 Cookie 或 URL)
3. 客户端后续请求携带 sessionId
4. 服务端根据 sessionId 查找 Session 数据

特点

  • 存储在服务端,安全
  • 无大小限制
  • 依赖 Cookie 或 URL 重写传递 sessionId
维度 Cookie Session
存储位置 客户端 服务端
安全性 较低 较高
大小限制 4KB 无限制
性能 不占用服务端资源 占用服务端内存
有效期 可设置过期时间 依赖 Cookie 或配置

面试回答模板:Cookie 存在客户端,不安全但节省服务端资源;Session 存在服务端,安全但占用内存。通常 Session 的 sessionId 通过 Cookie 传递给客户端。


五、HTTP/1.1 vs HTTP/2 vs HTTP/3

版本 特性
HTTP/1.0 每次请求都需要建立连接
HTTP/1.1 持久连接(Keep-Alive)、管道化、分块传输
HTTP/2 多路复用、头部压缩、服务器推送、二进制分帧
HTTP/3 基于 QUIC(UDP)、解决队头阻塞、更快的握手

5.1 HTTP/1.1 的问题

队头阻塞:同一连接上,前面的请求未响应,后面的请求必须等待。

复制代码
请求 1 ━━━━━━━━━━━━━━━━ 响应 1
请求 2 ━━━━━等待━━━━━━━ 响应 2  ← 被请求 1 阻塞
请求 3 ━━━━━━━━等待━━━━━ 响应 3

5.2 HTTP/2 的改进

多路复用:多个请求共享同一连接,互不阻塞。

复制代码
请求 1 ━━ 响应 1
请求 2 ━━━━ 响应 2  ← 并发传输
请求 3 ━━━━━ 响应 3

🗺️ 思维导图速览

复制代码
HTTP 核心知识
├── HTTP vs HTTPS
│   ├── 端口:80 vs 443
│   ├── 加密:明文 vs SSL/TLS
│   └── 证书:不需要 vs CA 证书
├── 状态码
│   ├── 2xx 成功(200、201、204)
│   ├── 3xx 重定向(301、302、304)
│   ├── 4xx 客户端错误(400、401、403、404)
│   └── 5xx 服务端错误(500、502、503)
├── GET vs POST
│   ├── 参数位置:URL vs 请求体
│   ├── 安全性:低 vs 高
│   ├── 幂等性:是 vs 否
│   └── 缓存:可缓存 vs 默认不缓存
├── Cookie vs Session
│   ├── 存储:客户端 vs 服务端
│   └── 安全性:低 vs 高
└── HTTP 版本
    ├── 1.1:持久连接、队头阻塞
    ├── 2:多路复用、头部压缩
    └── 3:基于 QUIC(UDP)

📝 写在最后

学习建议

  1. 状态码要分类记忆:2xx 成功、3xx 重定向、4xx 客户端、5xx 服务端,面试常问"401 和 403 的区别"
  2. GET vs POST 要对比记忆:参数位置、安全性、幂等性、缓存
  3. HTTPS 加密流程要理解:非对称加密交换密钥,对称加密传输数据
  4. Cookie vs Session 要知道优缺点:Cookie 不安全但省资源,Session 安全但占内存

面试回答模板

Q:HTTP 和 HTTPS 的区别?

HTTP 端口 80,明文传输,不安全;HTTPS 端口 443,通过 SSL/TLS 加密,安全。HTTPS 先用非对称加密交换密钥,再用对称加密传输数据,兼顾安全和性能。

Q:GET 和 POST 的区别?

GET 参数在 URL 中,长度受限,不安全但可缓存,幂等;POST 参数在请求体,长度无限制,相对安全,默认不缓存,非幂等。GET 用于查询,POST 用于提交。

Q:说说 HTTP 状态码?

状态码分五类:2xx 成功(200 OK、201 Created);3xx 重定向(301 永久、302 临时、304 未修改);4xx 客户端错误(400 参数错误、401 未认证、403 无权限、404 不存在);5xx 服务端错误(500 内部异常、502 网关错误、503 服务不可用)。401 是"你是谁",403 是"你不配"。

相关推荐
xieliyu.3 小时前
计算机网络‑IP 协议解析:核心特性总结
网络·笔记·网络协议·学习·tcp/ip·计算机网络
南宫萧幕4 小时前
计算机四级网络工程师:操作系统原理与计算机网络 · 综合知识点笔记
网络·笔记·计算机网络
Best-Wishes14 小时前
好靶场杯第一届-古法 流量包分析
计算机网络·web安全·安全威胁分析
黄俊懿21 小时前
【架构师从入门到进阶】第五章:DNS&CDN&网关优化思路——第十节:网关安全-单向加密
网络·数据库·计算机网络·安全·架构·系统架构·架构师
范什么特西1 天前
计算机网络
计算机网络
却道天凉_好个秋1 天前
计算机网络:DNS总结
网络·计算机网络·dns
Syc1102g1 天前
在 Linux CentOS 系统中设置静态 IP
linux·网络·计算机网络·个人开发
我爱cope2 天前
【计算机网络 | 网络层10:OSPF 与 BGP:自治系统内部和互联网之间如何路由?】
网络·学习·计算机网络·智能路由器
shiyi.十一3 天前
第8章:计算机网络中的安全 — 知识要点与架构
计算机网络·安全·架构
一条泥憨鱼3 天前
【从0开始学习计算机网络】| WebSocket-握手、全双工和心跳
websocket·计算机网络·网络安全·https·dns