协议:应用层开发都会涉及哪些协议 / 详细整理 / http、ws、https、wss

📊 表1:HTTP 协议演进核心对比(1.1 vs 2 vs 3)

特性 HTTP/1.1 (1997) HTTP/2 (2015) HTTP/3 (QUIC)
底层协议 TCP TCP UDP (QUIC)
连接复用 串行请求/响应 (Head-of-Line Blocking) 多路复用 (二进制分帧,解决HOLB) 多路复用 (无HOLB)
头部压缩 纯文本 (无压缩,冗余大) HPACK (霍夫曼编码+索引表) QPACK (优化版HPACK)
TLS握手 2-RTT (TLS 1.2) 2-RTT (TLS 1.2) / 1-RTT (TLS 1.3) 0-RTT / 1-RTT (缓存会话)
丢包影响 丢包阻塞整个连接 TCP层丢包阻塞所有流 仅阻塞丢失的流,其他流不受影响
服务器推送 ✅ (Server Push,已被部分浏览器废弃) ✅ (更灵活)
典型场景 传统Web、简单API 现代Web、资源加载 弱网环境、移动端、直播

📊 表2:HTTPS/TLS 握手与安全细节

阶段 步骤 关键概念/字段 实战注意点
1. Client Hello 客户端发起 TLS Version, Cipher Suites, Random, SNI SNI允许单IP多域名;需兼容旧客户端(如Android 7)
2. Server Hello 服务端响应 Chosen Cipher, Certificate, Public Key 证书需配置完整链 (Root -> Intermediate);推荐ECDSA证书(更小更快)
3. Key Exchange 密钥交换 ECDHE (临时密钥), Pre-Master Secret 务必开启前向保密(PFS),禁用RSA密钥交换和静态DH
4. Finished 验证加密 Change Cipher Spec, Encrypted Handshake TLS 1.3 废弃了RSA签名,仅保留ECDSA/EdDSA
攻击防护 防御手段 说明
SSL剥离 HSTS (Strict-Transport-Security) 强制浏览器跳转HTTPS,防止中间人降级攻击 max-age建议设为半年以上;需配合预加载列表
XSS/注入 CSP (Content-Security-Policy) 限制JS/CSS/图片来源 default-src 'self' 是最安全的起步配置
点击劫持 X-Frame-Options DENYSAMEORIGIN 防止页面被嵌入iframe

📊 表3:WebSocket 帧结构与心跳机制

字段 说明 实战意义
FIN 1位,表示是否是消息的最后一帧 用于大消息分片传输
Opcode 4位,操作码 0x1(文本), 0x2(二进制), 0x8(关闭), 0x9(Ping), 0xA(Pong)
Mask 1位,掩码标志 客户端发送必须为1 (掩码),服务端发送必须为0
Payload Len 7/7+16/7+64位 长度超过125/65535需用扩展位表示
Masking-Key 0-4字节掩码键 防止缓存污染攻击

心跳与重连策略表

机制 实现方式 推荐配置 备注
应用层心跳 Ping/Pong 帧 30秒发Ping,5秒内未收Pong则断连 必做!TCP Keepalive默认2小时,太慢
重连策略 指数退避 (Exponential Backoff) 第1次:1s, 2nd:2s, 3rd:4s... 上限30s 避免服务器雪崩
断线重连 onclose / onerror 触发 携带 Last-Event-ID 恢复会话 需后端配合记录消息偏移量

📊 表4:API 架构选型与对比(REST vs GraphQL vs gRPC)

维度 REST (HTTP/JSON) GraphQL gRPC (Protobuf)
数据获取 固定资源结构,易Over-fetching 按需查询,前端定义返回结构 严格类型,预编译
网络开销 JSON文本,较大 JSON文本,可压缩 Protobuf二进制,极小(省30-70%)
性能 中等 (HTTP/1.1) 中等 (HTTP/1.1或2) 极高 (HTTP/2 + 多路复用)
开发效率 简单,调试方便 (Postman) 需Schema定义,工具链成熟 需写.proto,生成代码,调试稍难
流式传输 难 (需长轮询/SSE) 支持 (Subscription) 原生支持双向流
适用场景 公开API、简单CRUD、Web/App通用 复杂前端、移动端弱网、多端数据差异大 微服务内网、高并发、多语言混合

📊 表5:安全认证协议深度解析

协议 核心流程 Token 格式/结构 优缺点 典型应用
JWT 客户端存Token -> 请求Header -> 服务端无状态验证 Header.Payload.Signature (Base64Url) ✅ 无状态、跨域好 ❌ 无法主动注销、Token易泄露 SPA、微服务Auth
OAuth 2.0 授权码/隐式/密码/客户端模式 -> 获取Access Token Bearer Token (不透明字符串) ✅ 授权与认证分离 ❌ 流程复杂,需HTTPS 第三方登录(微信/Google)
OIDC OAuth 2.0 + ID Token + UserInfo JWT格式的ID Token ✅ 提供用户身份信息(姓名/邮箱) ✅ 标准统一 企业级SSO
Session 服务端存Session -> Cookie存SessionID 内存/Redis/DB ✅ 安全(服务端控制)、易注销 ❌ 扩展性差(需共享Session) 传统MVC应用
SAML XML签名断言,重定向交互 XML格式 ✅ 企业级强安全 ❌ XML笨重、解析慢 跨国企业、银行SSO

JWT 最佳实践表

字段 建议值 原因
alg RS256 (非对称) 或 ES256 避免使用 HS256 (对称密钥泄露则全崩)
exp 短 (如 15分钟) 减少Token泄露后的风险窗口
iss 发行人域名 防止Token被用于其他服务
aud 接收方 防止Token被用于其他客户端
jti 唯一ID 用于黑名单/防重放攻击(需Redis支持)

📊 表6:消息队列与流媒体协议选型

1. 消息队列 (MQ)

协议 特点 适用场景 对比
MQTT 发布/订阅、轻量(2字节头)、QoS等级 IoT、移动端推送、弱网环境 比AMQP轻,不支持复杂路由
AMQP 可靠、复杂路由、事务、队列 金融系统、企业级异步解耦 功能最全,但重
Kafka 高吞吐、持久化、分区 大数据日志、事件溯源 吞吐量最高,延迟稍高(ms级)
Redis Pub/Sub 极快、内存级、无持久化 实时通知、缓存失效 易丢数据,不适合核心业务

2. 流媒体 (Live Streaming)

协议 延迟 兼容性 架构 场景
RTMP 低 (<1s) Flash/PC好,移动端需转码 TCP 推流 (主播->CDN)
HLS 高 (10s+) 所有设备(原生支持) HTTP + TS分片 点播/直播 (iPhone/Safari)
FLV 低 (<1s) Web/H5 (需JS解码) HTTP-FLV 国内直播平台常用
WebRTC 极低 (<500ms) 现代浏览器 P2P / SFU 连麦/视频会议
SRT 开源 UDP (抗丢包) 专业广电级传输

📊 表7:文件传输协议实战选型

场景 推荐协议 端口 安全建议 理由
公网文件上传 HTTPS (POST/PUT) 443 TLS 1.2+ 穿透防火墙最好,无需额外开端口
服务器间同步 SFTP (SSH) 22 SSH Key认证 加密传输,支持断点续传,比FTPS简单
匿名下载 FTP / HTTP 21/80 ❌ (公网不建议) 配合CDN加速效果最好
内网大文件 SMB (Windows) / NFS (Linux) 445/2049 内网隔离 局域网传输速度最快
自动化运维 SCP / Rsync over SSH 22 SSH Key 增量同步,节省带宽

💡 终极速查表:场景 -> 协议

业务场景 首选协议 备选/补充 关键注意点
网页/App API HTTPS (REST/GraphQL) gRPC-Web 关注Header大小、JSON体积
即时通讯(IM) WebSocket (WSS) MQTT (弱网) 心跳、重连、消息ID去重
微服务内网 gRPC Dubbo / Thrift Protobuf定义、负载均衡
文件/大附件 HTTPS (分片) SFTP 断点续传、MD5校验
实时音视频 WebRTC RTMP/SRT NAT穿透(STUN/TURN)、QoS
日志/监控上报 UDP (Syslog) TCP / Kafka 允许少量丢包,追求速度
设备固件升级 MQTT / CoAP HTTP (轮询) 包大小限制、版本校验
支付/银行 HTTPS + mTLS SOAP (旧系统) 双向认证、幂等性Key

这份表格化的整理涵盖了从底层握手上层架构的细节,希望能满足您"补充完善"的需求。如果需要针对某个表格展开具体的代码示例或配置片段,请随时指出!

相关推荐
椰猫子2 小时前
Javaweb(Http、Maven)
网络·网络协议·http
小心我捶你啊2 小时前
SOCKS5与HTTP代理的差异与应用场景抉择
网络·网络协议·http
z10_143 小时前
动态住宅 IP 能做什么?[动态住宅 IP流量包] 免费测试!
服务器·网络协议·tcp/ip
tang777894 小时前
小红书平台用什么代理IP?数据采集IP封禁解决方法
数据库·爬虫·python·网络协议·ip
以太浮标4 小时前
华为eNSP模拟器综合实验之- 华为USG6000V防火墙配置防御DoS攻击实战案例解析
运维·网络协议·网络安全·华为·信息与通信
努力打怪升级4 小时前
Apache HTTP Server 2.4 Windows 版完整配置与运维手册
运维·http·apache
西西弟4 小时前
网络通信基础之UDP基本通信
网络·网络协议·tcp/ip·udp
数据知道4 小时前
claw-code 源码分析:从 REPL 到服务端——CLI / HTTP(SSE) / LSP 多入口如何共享同一颗 runtime 心?
python·网络协议·http·ai·里氏替换原则·claude code
952364 小时前
网络原理 - HTTP / HTTPS
网络·http·https