【探索java之路】简单聊聊网络通讯核心协议

【探索Java之路】简单聊聊网络通讯核心协议

在Java后端开发中,几乎所有涉及“网络”的功能(RPC、HTTP接口、消息队列、缓存、分布式协调、微服务调用、WebSocket、文件上传下载等)最终都会落到下面这几层协议上。

我们用最简洁的方式,从上到下把最核心的几层协议过一遍(2025-2026年视角):

层级(OSI模型近似)协议家族典型代表协议Java中最常见的场景传输层用什么?是否面向连接是否可靠头部开销典型端口
应用层HTTP/HTTPSHTTP/1.1、HTTP/2、HTTP/3REST API、Spring Boot Web、浏览器前后端交互TCP中~大80/443
应用层WebSocketRFC 6455 + 子协议实时聊天、推送、在线协作、股票行情TCP小~中任意
应用层gRPCHTTP/2 + Protobuf高性能内部服务调用、微服务间通信TCP很小任意
应用层DubboDubbo协议 / Triple(HTTP/2)传统Dubbo RPC、部分云原生场景TCP任意
应用层MQTTMQTT 3.1.1 / 5.0IoT、设备上报、弱网环境推送TCP / WebSocket可配置极小1883/8883
应用层Redis协议(RESP)RESP2 / RESP3Redis客户端通信TCP6379
应用层Kafka协议Kafka Wire Protocol生产者/消费者与Broker通信TCP9092
传输层TCP几乎所有需要可靠传输的场景
传输层UDPDNS、QUIC底层、部分游戏、音视频、实时监控很小
传输层(新兴)QUIC(基于UDP)HTTP/3、部分自定义协议低延迟网页、移动端API、游戏、视频会议UDP小~中443常见
网络层IPIPv4 / IPv6所有网络通信的基础

最常出现在Java面试/日常开发中的几条协议对比(一句话总结)

协议一句话本质Java主流框架/库2025-2026主流使用场景排名延迟敏感度吞吐量潜力移动端友好度
HTTP/1.1最熟悉的文本协议,请求-响应模式Spring MVC / WebFlux★★★★★
HTTP/2二进制、多路复用、头部压缩Spring Boot 2.0+、Netty★★★★☆中低
HTTP/3QUIC + HTTP语义,连接迁移、0-RTT少数前沿项目、Cloudflare、部分CDN★★☆☆☆很高很高
WebSocket全双工、持久连接、轻量帧Spring WebSocket / Netty★★★★☆中高
gRPC高性能RPC,Protobuf + HTTP/2grpc-java、Spring Boot gRPC starter★★★★☆很低很高中高
TCP长连接最原始可靠流式传输Netty、Mina、自定义协议★★★☆☆
MQTT极轻量级发布订阅,适合弱网Eclipse Paho、EMQ X Java Client★★★☆☆(IoT)很高
QUICUDP上做可靠传输 + 加密 + 多路复用quiche-java、cloudflare quicly绑定★★☆☆☆(快速增长中)极低极高极高

快速记忆口诀(面试/架构图时常用)

  • 可靠 + 顺序 → TCP(HTTP/1、HTTP/2、WebSocket、gRPC、Dubbo、Redis、Kafka……)
  • 极低延迟 + 移动弱网友好 → QUIC(HTTP/3)或自定义UDP协议
  • 极致轻量 + 海量长连接 → MQTT(IoT、IM信令)
  • 最高性能内部调用 → gRPC(Protobuf + HTTP/2)或自定义二进制协议(Netty)
  • 还在用明文HTTP/1.1 → 基本是历史包袱或对调试友好

2025-2026年最值得关注的趋势(Java视角)

  1. HTTP/3 + QUIC 正在快速渗透(尤其移动端、边缘计算、游戏、视频)
  2. gRPC 仍然是内部高性能通信首选,但 gRPC over HTTP/3(Triple + QUIC)已经在部分公司落地
  3. WebTransport(基于QUIC的双向流)正在成为WebSocket的潜在继任者
  4. 二进制协议(Protobuf、FlatBuffers、Avro)比JSON越来越普遍
  5. Netty 仍然是Java生态里自定义协议、代理、网关、高性能网络IO的绝对王者

一句话总结:

“Java程序员写业务代码时主要跟HTTP打交道,写中间件/网关/实时系统时主要跟TCP/WebSocket/gRPC打交道,想极致性能或移动端体验时开始关注QUIC/HTTP/3。”

你目前更关心哪一块?

  • HTTP/2 vs HTTP/3 到底差在哪?
  • gRPC 在Spring Boot项目里怎么优雅集成?
  • Netty 写自定义TCP协议入门?
  • WebSocket 断线重连 + 心跳最佳实践?
  • MQTT 在Java里怎么用得舒服?

告诉我你的方向,我可以继续往下展开~

文章已创建 5225

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部