计算机网络基础知识梳理(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 是"你不配"。

相关推荐
ZJH__GO13 小时前
网络编程v4pro--实现聊天室文件传输功能
java·服务器·网络·计算机网络
黄俊懿2 天前
【架构师从入门到进阶】第五章:DNS&CDN&网关优化思路——第三节:CDN扩展-多地址直连
网络·计算机网络·架构·系统架构·cdn·dns·架构设计
程序猿乐锅2 天前
【计算机网络 | 第五章】运输层
网络·计算机网络
程序猿乐锅2 天前
【计算机网络 | 第四章】网络层
网络·计算机网络·智能路由器
程序猿乐锅2 天前
【计算机网络 | 第六章】应用层
计算机网络
00后程序员张3 天前
抓包鹰 电脑本机网络连接表怎么看?哪些程序在联网 进程归属与可疑 IP 追溯
网络协议·计算机网络·网络安全·ios·adb·https·udp
我爱cope3 天前
【计算机网络 | 物理层3:数字编码与调制:比特如何变成可传输的信号?】
网络·学习·计算机网络
拾光Ծ3 天前
【Linux网络】深入理解网络层:从IP协议格式,子网划分到NAT与路由机制
linux·网络·网络协议·tcp/ip·计算机网络
2501_915918414 天前
iOS 怎么抓包?抓包鹰系统级 网卡 应用层三种方式对比,不越狱抓 iPhone 流量
网络协议·计算机网络·网络安全·ios·adb·https·udp