浅谈互联网主流通信协议
文章目录
- 前言
- 一.HTTP
- 1.1 HTTP1.0
- 1.1.1 基本特性
- 1.1.2 存在的问题
- 1.1.3 ~~适用场景~~
- 1.2 HTTP1.1
- 1.2.1 基本特性
- 1.2.2 遗留问题
- 1.3HTTP2.0
- 1.3.1 基本特性
- 1.3.2 遗留问题
- 1.4 HTTP3.0
- 1.4.1 基本特性
- 1.4.2 遗留问题
- 1.5 HTTP协议实践切换
- 二.websocket
- 2.1 websocket实践
- 三.SSE
- 四.MQTT
- 4.1 基本特性
- 4.2 存在问题
- 五.常用网络框架服务
- 5.1 dubbo
- 5.2 netty
- 5.2.1 基本特性
- 5.2.2 遗留问题
- 5.2.3 详细介绍和demo
- 六.其他
前言
也许此刻的坚持无人喝彩,满是汗水与疲惫,可最难的终究是坚持。“心之所向,素履以往。生如逆旅,一苇以航。” 我们只问自由、盛放、深情、初心与勇敢,无问西东。这个时代,并不缺少完美的人,而是缺从自己心底给出真心、正义、无畏和同情的人 。本文将对 HTTP 1.0、HTTP 1.1、HTTP 2.0、HTTP 3.0、WebSocket(WS)及 Server-Sent Events(SSE),MQTT等网络应用层协议展开全面深入的探讨,涵盖各协议的核心特性、发展演进、应用场景及相互之间的技术差异;同时,对 Netty、Dubbo 等网络协议框架进行简要概述,包括其功能架构、技术优势及其在网络通信领域的实践应用。
一.HTTP
特性 | HTTP/1.1 | HTTP/2 | HTTP/3 (QUIC) |
---|---|---|---|
连接协议 | TCP | TCP | UDP |
多路复用 | 多连接并发 | 单连接多路复用 | 单连接多路复用 |
队头阻塞 | 存在(连接级) | 存在(TCP层) | 无 |
头部压缩 | 无 | HPACK | 类似HPACK |
安全性 | 可选HTTPS | 强制HTTPS | 强制加密 |
1.1 HTTP1.0
1.1.1 基本特性
HTTP/1.0是无状态、无连接的应用层协议。
无状态:服务器不会在两次请求之间保存任何关于客户端的信息,每次请求都被视为独立的操作,这使得服务器处理请求时无需维护复杂的会话状态,降低了服务器的实现复杂度和资源消耗。但同时也带来了一些问题,例如用户登录后进行其他操作时,服务器无法直接识别用户身份,需要通过额外的机制如 Cookie、Session 来实现状态管理。
无连接:每一次 HTTP 请求与响应完成后,客户端与服务器之间的 TCP 连接就会被关闭。当下一次客户端发起新的请求时,需要重新建立 TCP 连接。这种机制虽然在一定程度上减轻了服务器的负担,但频繁的连接建立和关闭会产生较大的开销,尤其是在需要多次请求资源的场景下,如加载一个包含多个图片、脚本和样式表的网页,会导致加载速度变慢。
1.1.2 存在的问题
-
1.身份冗余开销,需要开发者额外实现身份信息维护。
-
2.无状态特性导致的分布式系统身份信息同步问题。
-
3.无连接模式导致连接性能开销,每次都需要重新建立三次握手。(当使用 HTTPS 时,每次连接还需额外进行 TLS 握手,且头部字段的冗余传输每个请求均需完整传输 HTTP 头部)
-
4.管道化支持缺陷:HTTP/1.0 的管道化(Pipeline)是可选特性,且要求服务器严格按请求顺序响应,一旦首个请求阻塞(如等待数据库查询),后续所有请求均被阻塞(队头阻塞,Head-of-Line Blocking)
-
5.并发连接限制:浏览器为每个域名最多开启 2-6 个 TCP 连接(不同浏览器实现不同),加载包含 50 个资源的网页时,需串行处理多批请求,导致加载时间比 HTTP/2.0 流水线机制延长 2-3(Chrome DevTools 性能分析数据)。
-
6.缺乏流量控制与优先级机制无法对请求进行优先级排序,导致关键资源(如 HTML 文档)与非关键资源(如广告图片)竞争带宽。
-
7.不支持二进制数据传输仅能通过 Base64 编码传输二进制数据(如图片、视频),数据体积大,需要客户端额外解码处理。
1.1.3 适用场景
更适用于一些对实时性、交互性要求不高,且请求数量较少的场景。
1.2 HTTP1.1
1.2.1 基本特性
面向对象,长连接。HTTP/1.1 通过长连接和缓存机制解决了 HTTP/1.0 的主要性能痛点,但其基于文本的协议格式、严格的顺序处理逻辑,导致队头阻塞和头部冗余问题成为进一步优化的瓶颈。这些遗留问题直接推动了 HTTP/2.0(二进制分帧、多路复用)和 HTTP/3.0(基于 UDP 的 QUIC 协议)的技术演进。在现代 Web 应用中,HTTP/1.1 仍广泛应用于对实时性要求不高的场景,但面对高并发、低延迟需求时,需依赖 CDN 缓存、域名分片等手段缓解性能问题。
改进:
-
1.持久连接,通过Connection: Keep-Alive头部默认启用长连接,允许多个请求响应复用同一 TCP 连接,避免重复三次握手和 TLS 握手开销。
-
2.增强的缓存机制:
①强缓存(200 from cache):通过Cache-Control: max-age=31536000指定资源缓存有效期,客户端直接使用本地缓存,无需发起请求。
②协商缓存(304 Not Modified):通过ETag(资源指纹)和Last-Modified校验资源是否更新,仅传输头部确认,减少 98% 以上重复数据传输。
-
- 虚拟主机头支持(Host Header):通过Host: example.com头部实现同一 IP 地址承载多个域名(如 Nginx 虚拟主机),解决 HTTP/1.0 只能绑定单域名的问题,推动云计算和共享服务器普及。
-
- 分块传输编码(Chunked Transfer Encoding):支持动态生成内容(如大文件断点续传、流式响应),通过Transfer-Encoding: chunked将数据分块传输,无需预先知晓内容长度。
1.2.2 遗留问题
-
1.队头阻塞(核心痛点)
问题本质:同一 TCP 连接中,前一个请求的网络延迟或处理阻塞会阻塞所有后续请求,例如等待数据库查询的请求会导致后续 10 个静态资源请求延迟增加 2-5 倍。(http1.1允许客户端在未收到前一个响应时,按 FIFO 顺序批量发送多个请求(如一次性发送 HTML、CSS、JS 请求),理论上可减少等待延迟。实际限制:服务器必须严格按请求顺序响应,首个请求阻塞会导致后续请求全部排队(队头阻塞);浏览器(如 Chrome、Firefox)默认禁用管道化,因实际场景中阻塞概率高(移动网络下阻塞率达 30%+),最终被 HTTP/2.0 的多路复用替代。)
-
2.头部冗余传输
-
3.二进制支持不足,仅支持文本格式协议,二进制数据(如图像、视频)需 Base64 编码传输。
1.3HTTP2.0
1.3.1 基本特性
改进:
-
1.多路复用(Multiplexing):通过单个 TCP 连接处理多个并行请求 / 响应,避免了 HTTP/1.1 中因浏览器限制并发连接数(如同一域名最多 6-8 个连接)导致的 “队头阻塞”(Head-of-Line Blocking)问题。原理是将每个请求 / 响应分割为独立的 “帧”(Frame),并通过统一的连接混合传输,客户端和服务器可按任意顺序处理帧,重组为完整的请求 / 响应。
-
2.头部压缩(HPACK算法):HTTP/1.1 的请求 / 响应头部包含大量重复字段(如User-Agent、Cookie),浪费带宽。使用 HPACK 算法压缩头部,通过静态字典(预定义常用字段)、动态字典(缓存已出现的字段)和哈夫曼编码减少传输数据量。
-
3.服务器推送(Server Push):服务器可主动向客户端推送尚未请求但预期需要的资源(如 HTML 引用的 CSS/JS 文件),无需客户端显式请求。
-
4.二进制分帧层(Binary Framing Layer):将
HTTP/1.1 的纯文本协议改为二进制格式
,定义多种帧类型(如数据帧、头部帧、重置帧等)。解析更高效、可靠,消除文本协议的歧义,为多路复用和优先级控制提供底层支持。 -
5.请求优先级(Request Prioritization):客户端可为每个请求设置优先级(如 “高优先级加载 CSS,低优先级加载图片”),服务器根据优先级分配资源(如先传输关键资源)。
-
6.流量控制(Flow Control):基于 TCP 流量控制,但更细粒度(可针对单个流),避免因某一流的数据过多影响其他流。防止发送方过度占用接收方资源(如内存、带宽),通过窗口机制限制单连接或单个流的数据传输量。
1.3.2 遗留问题
- 1.实现成本:相比 HTTP/1.1,HTTP/2 的二进制帧、多路复用等机制增加了服务器和客户端的开发与调试难度,需处理更复杂的状态管理(如帧排序、流控)。
- 2.调试工具不足:传统的 HTTP 抓包工具(如 Wireshark)需专门适配才能解析 HTTP/2 的二进制数据,排查问题更困难。
- 3.头部压缩的安全风险:BREACH 攻击:HPACK 算法依赖历史数据压缩,可能被攻击者利用侧信道攻击(Side-Channel Attack)推断加密的头部内容(如 Cookie),需配合Content-Encoding: gzip等防御措施。
- 4.服务器推送的滥用风险: 推送的通用性较差,实际应用场景受限。推送的资源若未被客户端使用,会浪费带宽;若版本更新不及时,可能导致缓存不一致问题。
-
- 队头阻塞的残留问题(TCP 层限制): 虽然 HTTP/2 的单个流不会阻塞其他流,但 TCP 层若出现数据包丢失,仍可能导致整个连接的性能下降(称为 “队头阻塞” 在传输层的残留)因为只有TCP拿到完整连续的数据时,内核才会将数据从缓冲区交给HTTP应用,而只要前一个字节没有收到,HTTP就无法从内核缓冲区中得到数据,直到其到达,所以在此过程仍然会导致队头阻塞。
1.4 HTTP3.0
1.4.1 基本特性
HTTP/3 是 HTTP 协议的最新版本,基于 QUIC(Quick UDP Internet Connections) 协议构建,旨在解决传统 TCP/IP 栈的局限性,提升网络传输效率。
改进:
- 1.基于 UDP 的传输层协议.传统 HTTP/1.x/2 依赖 TCP:TCP 是面向连接的协议,需三次握手建立连接,存在队头阻塞问题。HTTP/3 改用 UDP:UDP 是无连接协议,传输更快,但不可靠。QUIC 在 UDP 上实现可靠性,通过自定义机制(如拥塞控制、重传、流量控制)弥补 UDP 缺陷,同时保留低延迟优势。
- 2.快速连接建立(减少握手延迟):TCP + TLS 握手延迟至少需要3个RTT才能传输数据。
QUIC 的握手优化后,首次连接仅需 1-RTT(合并 TCP 和 TLS 握手),后续连接通过缓存密钥实现 0-RTT 恢复连接,秒级重建。 - 3.多路复用与无队头阻塞:每个数据流独立编号,单个流阻塞不影响其他流。基于 UDP 的数据包可乱序传输,QUIC 层负责重组,彻底解决队头阻塞。
-
- 更好的抗丢包与拥塞控制:在首个 UDP 包中携带协议版本,避免 TCP 握手时的版本不兼容问题。通过「连接 ID」绑定设备(而非 IP + 端口),支持网络切换(如 Wi-Fi 转移动网络)时无缝保持连接。改进的拥塞控制算法:如 CUBIC 和 BBR,减少延迟并提升吞吐量。
- 更好的抗丢包与拥塞控制:在首个 UDP 包中携带协议版本,避免 TCP 握手时的版本不兼容问题。通过「连接 ID」绑定设备(而非 IP + 端口),支持网络切换(如 Wi-Fi 转移动网络)时无缝保持连接。改进的拥塞控制算法:如 CUBIC 和 BBR,减少延迟并提升吞吐量。
-
- 头部压缩(QPACK):继承 HTTP/2 的 HPACK 头部压缩,并优化为 QPACK:压缩效率更高,减少传输数据量。客户端与服务器端独立维护字典,避免 HTTP/2 中因单个流阻塞导致的压缩字典同步问题。
1.4.2 遗留问题
- 1.防火墙与 NAT 兼容性问题。UDP 的不可见性:传统防火墙、路由器对 UDP 包的解析能力较弱,可能误判为异常流量或阻断。端口限制:QUIC 默认使用 443 端口(与 HTTPS 共用),但部分老旧网络设备仍严格限制 UDP 流量。
-
- QUIC 的自研成本:需在用户空间实现拥塞控制、加密等逻辑(TCP 由内核实现),对开发者要求更高。
-
- 0-RTT 数据可能在 TLS 握手完成前发送,存在重放攻击隐患(需结合 Token 机制缓解)。
4.成熟度与生态支持不足,HTTP/3(基于 QUIC 协议)目前主要应用在客户端和边缘服务器(如 Nginx),而通过 Nginx 代理服务器后通常会转换为常规协议(如 HTTP/2 或 HTTP/1.1)与应用服务器交互。HTTP/3 的核心优势(如 1-RTT 握手、多路复用)主要体现在客户端与边缘节点(如 CDN、反向代理)的通信中。例如,Nginx 作为边缘服务器可直接接收客户端的 QUIC 请求,并利用 UDP 特性提升弱网性能,边缘到应用服务器:应用服务器(如 Tomcat、Apache、Node.js)目前普遍不原生支持 HTTP/3。
- 0-RTT 数据可能在 TLS 握手完成前发送,存在重放攻击隐患(需结合 Token 机制缓解)。
1.5 HTTP协议实践切换
一般的高端协议使用在客户端到代理服务器。代理服务器到应用服务器一般为局域网连接,并使用原始http无感连接。
客户端侧:现代浏览器(Chrome、Firefox 等)默认支持 HTTP/2,无需额外配置。
代理服务器以nginx为例:
- 1.强制 HTTPS(自动重定向)
- 2.HTTP/2 与 HTTP/3 共存
- 3.严格的 TLS 安全配置
- 4.性能优化项(缓存、头部控制等)
假设配置文件路径
/etc/nginx/
├── nginx.conf
├── conf.d/
│ └── example.com.conf
└── ssl/├── example.com.crt├── example.com.key└── dhparam.pem
# 强制 HTTP 跳转到 HTTPS
server {listen 80;server_name example.com www.example.com;return 301 https://$host$request_uri;
}# 主 HTTPS 服务,支持 HTTP/2 和 HTTP/3
server {listen 443 ssl http2;listen 443 quic reuseport;server_name example.com www.example.com;# SSL 证书路径ssl_certificate /etc/nginx/ssl/example.com.crt;ssl_certificate_key /etc/nginx/ssl/example.com.key;# 推荐使用 dhparam 强化 DHEssl_dhparam /etc/nginx/ssl/dhparam.pem;# 支持协议,仅启用 TLSv1.3(HTTP/3) 和 TLSv1.2(兼容)ssl_protocols TLSv1.3 TLSv1.2;ssl_prefer_server_ciphers off;# 推荐加密套件ssl_ciphers 'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256';# 其他安全强化ssl_session_timeout 1d;ssl_session_cache shared:MozSSL:10m;ssl_session_tickets off;ssl_stapling on;ssl_stapling_verify on;# QUIC/HTTP3 必需ssl_early_data on;# QUIC-specific headersadd_header Alt-Svc 'h3=":443"'; # 告诉浏览器支持 HTTP/3add_header QUIC-Status $quic;# 安全头部add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;add_header X-Content-Type-Options nosniff;add_header X-Frame-Options DENY;add_header X-XSS-Protection "1; mode=block";# 应用代理配置location / {proxy_pass http://127.0.0.1:8080;proxy_http_version 1.1;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}
}
更多nginx配置demo
二.websocket
典型应用:聊天应用、实时监控、在线协作工具,推送通知等。
特性:
- 1.全双工。基于 TCP 长连接,建立连接后可双向实时传输数据,避免 HTTP 请求 - 响应的单向限制。
- 2.数据格式轻量化:数据以 帧(Frame) 为单位传输,头部最小仅 2 字节,远低于 HTTP 头部开销。支持二进制数据(如图像、视频),适合实时通信场景。
| 字段 | 位数 | 说明 |
| ------------------ | -------------- | -------------------------------------------------------- |
| FIN | 1 位 | 表示是否为消息最后一帧 |
| RSV1-3 | 3 位 | 保留位(通常为 0,某些扩展如压缩使用) |
| Opcode | 4 位 | 帧类型(如文本:0x1,二进制:0x2,关闭:0x8,ping:0x9) |
| Mask | 1 位 | 是否启用掩码(客户端 → 服务端必须为 1) |
| Payload Length | 7 位(或扩展) | 载荷长度(<126: 7位;126:后16位;127:后64位) |
| Masking Key | 32 位 | 掩码键,用于还原真实数据 |
| Payload Data | 可变 | 实际数据 |
存在的问题:
- 1.兼容性与防火墙问题:虽默认使用 80(ws)和 443(wss)端口,但老旧防火墙可能拦截非 HTTP/HTTPS 的 WebSocket 流量。
- 2.协议层功能缺失:WebSocket 仅提供基础通信通道,需开发者自行实现 消息队列、重试机制、权限控制 等功能。对比物联网协议(如 MQTT),缺乏企业级通信所需的高级特性。
2.1 websocket实践
SpringBoot整合Netty整合WebSocket-带参认证
vue3+ts+pinia整合websocket
本 Demo 旨在演示 WebSocket 协议的基础通信流程。考虑到初学者的学习门槛,代码已进行大幅简化,仅保留核心逻辑以规避复杂工程细节。实际生产环境中的 WebSocket 应用需在此基础上补充安全校验、心跳机制、协议解析优化等功能。
三.SSE
场景: 长文本/视音频直播流式输出,消息推送等.
特性:
- 1.单向实时通信模型,浏览器原生支持(通过EventSource API),无需额外依赖。客户端通过标准 HTTP 请求(text/event-stream MIME 类型)建立连接
- 2.自动重连机制:内置重连逻辑(默认 3 秒重试),通过Last-Event-ID实现断点续传,可通过retry字段自定义重连间隔(如retry: 5000)
- 3.消息格式标准化
不足:
1.不适合双向实时交互场景(如聊天、协作编辑)
2.基于HTTP 1.1长连接,每个连接占用一个服务器线程;百万级连接需大量服务器资源(C10K问题);相比WebSocket,资源利用率更低(无多路复用)
3.缺乏二进制数据支持,不适合实时音视频流等场景。
四.MQTT
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是基于 TCP/IP 的轻量级即时通信协议,专为低带宽、高延迟或不稳定网络环境设计,广泛应用于物联网(IoT)、移动应用和实时数据传输场景。类似于rabbitmq,rocketMQ但更简单轻量。其核心特性如下:
4.1 基本特性
- 1.轻量级设计:协议头仅 2 字节:最小化传输数据量,适合低功耗设备(如传感器、嵌入式设备)。简单的报文结构:仅定义 6 种消息类型(如 CONNECT、PUBLISH、SUBSCRIBE 等),降低解析复杂度。
- 2.发布 - 订阅(Publish-Subscribe)模式:消息通过主题(Topic)路由,无需点对点连接,支持多对多通信。主题采用 “/” 分隔的层级结构(如home/room1/temp),支持通配符匹配(+单层级、#多层级)。
- 3.可靠传输机制:QoS 0:至多一次交付(最快但不保证可靠);QoS 1:至少一次交付(通过 ACK 确认实现);QoS 2:恰好一次交付(保证消息不重复、不丢失,复杂度最高)。支持客户端断开后保留未处理消息,重连后继续传输。
- 4.低功耗与长连接优化:①心跳机制:检测网络连接状态,避免无效长连接占用资源。②遗言消息(Last Will and Testament, LWT):设备异常断开时自动发布指定消息,通知系统状态变更。
- 扩展性与跨平台支持
4.2 存在问题
-
- 缺乏内置安全机制: ①需依赖上层协议:本身不提供加密、认证等安全功能,需通过 SSL/TLS(MQTT over WebSocket 或 TCP)或额外插件实现数据加密和身份验证,增加开发复杂度。②权限控制粒度粗:主题级权限管理依赖 Broker 插件(如 Mosquitto 的 ACL 配置),难以实现细粒度用户权限控制。
- 2.实时性与有序性限制:①QoS 2 的性能开销:高可靠模式下需四次握手确认,延迟较高,不适合高频实时通信场景。②消息顺序保证有限:同一主题内消息按 QoS 等级保证顺序,但跨主题或多客户端场景下无法全局排序。
- 3.协议功能单一:①无请求 - 响应模式:仅支持单向发布 / 订阅,需通过额外逻辑(如回调主题)模拟请求 - 响应交互(如 RPC 调用)。②缺乏设备管理功能:无法直接实现设备注册、发现、固件升级等物联网设备管理需求,需上层应用层协议补充(如 CoAP 搭配 MQTT)。
- 4.网络依赖与扩展性瓶颈:①基于 TCP/IP:无法在无 IP 网络(如 NB-IoT、Zigbee)直接使用,需网关转换协议。②Broker 单点风险:中心化架构下,Broker 可能成为性能瓶颈或单点故障源,需复杂的集群和负载均衡方案。
五.常用网络框架服务
关于网络框架的官方维护文档已提供全面的技术细节与操作指南,此处不再重复阐述。以下将聚焦于网络框架的核心适用场景及关键能力特性,结合技术逻辑与应用实践展开说明:
5.1 dubbo
详情参考官方文档
Dubbo 是一款面向微服务的开发框架,致力于解决微服务实践中从服务定义、开发、通信到治理的全链路问题。为此,Dubbo 提供了包括 RPC 通信、与主流应用开发框架的适配、服务治理等在内的多项核心能力,并支持多种远程调用协议。
由于功能体系较为庞大,若本文未能涵盖所有内容,建议查阅官方文档以获取更为详尽的说明。
5.2 netty
Netty 是一个基于 Java 的高性能网络编程框架,广泛应用于 RPC、即时通信、在线游戏和各类中间件等场景。
尽管虚拟线程和协程等新型并发模型已逐步落地并投入使用,Netty 作为基于线程模型构建的网络框架,依然代表了网络编程领域中的经典设计,凭借其成熟性与稳定性,在众多应用中仍具有重要价值。
5.2.1 基本特性
其核心特性如下:
1.高性能与低延迟: ①I/O 模型优化:基于 NIO(非阻塞 I/O),支持单线程处理多连接,通过 Selector 实现多路复用 ②内存管理:提供池化内存(Pooled ByteBuf)和直接内存(Direct Buffer),减少内存分配 / 回收开销。③零拷贝技术:通过 CompositeByteBuf 等机制避免数据复制,提升传输效率。
2.事件驱动架构:①基于 ChannelPipeline 的责任链模式:将网络操作拆解为 Handler 链,支持动态添加 / 删除处理器,灵活性高。②事件分类清晰:分为连接、读写、异常等事件,用户可自定义 Handler 响应不同事件。
3. 协议支持与扩展性: ①内置协议栈:支持 HTTP/1.x、HTTP/2、WebSocket、gRPC 等主流协议,开箱即用。②自定义协议开发友好:通过编解码器(Codec)机制,可快速实现私有协议。
4. 可靠性与稳定性:①流量控制:支持自适应流量控制,避免网络拥塞和内存溢出。②优雅启停:支持平滑关闭 Channel 和 EventLoop,避免资源泄漏。
5. 社区活跃与生态丰富社区活跃与生态丰富:被 Netty、Dubbo、RocketMQ、gRPC 等知名框架 / 中间件作为底层通信组件。持续优化性能和修复漏洞,社区文档与教程资源丰富。
5.2.2 遗留问题
1.学习门槛较高:①异步编程模型陡峭:需理解 Future、Promise、EventLoop 等异步概念,对新手不友好。②调优复杂度高:内存管理、线程模型、参数配置(如线程数、缓冲区大小)需深入理解才能高效调优。
2.资源占用与性能瓶颈: ①内存占用较高:池化内存虽提升效率,但若使用不当可能导致内存泄漏或碎片问题。②多线程竞争:在多核场景下,EventLoopGroup 的线程负载均衡可能存在竞争,需合理配置线程数。
3.协议升级成本:①HTTP/2 等协议支持依赖版本:低版本 Netty 对新协议(如 HTTP/3)支持有限,需升级版本或自定义实现。②二进制协议兼容性:自定义编解码器需处理协议升级时的兼容性问题,维护成本较高。
4.对非 Java 生态的支持有限
5.2.3 详细介绍和demo
BIO/NIO/Netty网络通信编程
SpringBoot整合Netty整合WebSocket-带参认证
六.其他
本文仅对应用层常用的网络通信协议及框架展开论述。若存在问题还请斧正。若未涵盖你所想的,请留言。