当前位置: 首页 > article >正文

协议的种类

什么是协议

协议是计算机通信中双方遵循的规则和约定,定义了数据格式、传输方式、错误处理等关键细节

协议的划分

按网络分层模型划分

物理层协议
功能:定义物理介质(如电缆、光纤)上的信号传输方式。
例子:RS-232(串口通信)、以太网的物理层标准(如1000BASE-T)。

数据链路层协议
功能:管理直接相连设备间的数据传输(帧同步、错误检测)。
例子:以太网(MAC层)、Wi-Fi(IEEE 802.11)、PPP(拨号协议)。

网络层协议
功能:实现跨网络的寻址和路由选择。
例子:IP(IPv4/IPv6)、ICMP(Ping)、BGP(路由协议)。

传输层协议
功能:端到端通信,保证数据可靠/不可靠传输。
例子:TCP(可靠传输)、UDP(低延迟传输)。

应用层协议
功能:面向具体业务场景的通信规则。
例子:HTTP、FTP、SMTP、DNS。

按应用场景划分

下面举几个例子

消息传递协议

用途:分布式系统中消息队列或中间件的通信。
特点:支持发布/订阅、持久化、事务等特性。

例子

Kafka协议:基于TCP的二进制协议,优化高吞吐、分区和消费者组管理。

RocketMQ协议:阿里自研,支持事务消息、顺序消息,基于长连接。

AMQP:标准化协议(如RabbitMQ),支持消息确认、路由规则(Exchange/Queue)。

MQTT:轻量级,适用于物联网(低带宽、不稳定网络)。

远程调用协议(RPC)

用途:跨进程或跨机器的方法调用。

特点:需定义接口、参数序列化、传输机制。

例子
Dubbo协议:阿里开源,默认基于Netty的二进制协议,支持负载均衡、服务治理。

gRPC:基于HTTP/2和Protobuf,支持多语言、流式通信。

Thrift:Facebook开源,跨语言RPC框架,含二进制序列化协议。

Web服务协议

用途:基于Web的客户端-服务端交互。

例子

HTTP/HTTPS:无状态请求-响应模型,RESTful API的基础。

WebSocket:全双工通信,适用于实时应用(如聊天、游戏)。

SOAP:基于XML的协议,支持复杂事务和安全扩展。

数据库访问协议

用途:客户端与数据库服务器的交互。

例子

MySQL协议:基于TCP的二进制协议,支持查询、事务、预处理语句。

PostgreSQL协议:支持扩展数据类型和流式结果集。

文件传输协议

用途:文件上传、下载或同步。

例子

FTP/SFTP:传统文件传输,支持目录操作。

BitTorrent:P2P协议,分块下载和多源加速。

物联网协议

用途:低功耗设备通信。

例子:

CoAP:基于UDP的轻量协议,适用于传感器网络。

LoRaWAN:长距离低功耗广域网协议。

安全协议

用途:加密通信或身份认证。

例子:

TLS/SSL:加密HTTP(HTTPS)、邮件等。

OAuth2:授权协议,用于第三方应用访问用户资源。

JAVA项目中使用到的协议

下面以springboot web项目举例

应用层协议

HTTP/HTTPS

用途:Web 应用的核心协议,用于浏览器/客户端与服务器之间的通信。

Spring Boot 中的使用

通过 @RestController 和 @RequestMapping 注解定义 HTTP 接口。

支持 GET/POST/PUT/DELETE 等 HTTP 方法。

HTTPS 通过配置 SSL 证书(server.ssl.*)启用加密通信。

server:
  port: 8080
  ssl:
    key-store: classpath:keystore.jks
    key-store-password: secret

WebSocket

用途:实现全双工实时通信(如聊天室、实时通知)。

Spring Boot 中的使用

使用 @EnableWebSocketWebSocketHandler 实现 WebSocket 服务端。

通过 STOMP(Simple Text Oriented Messaging Protocol)子协议增强消息路由能力。

传输层协议

TCP

用途:提供可靠的、面向连接的字节流传输。

Spring Boot 中的使用

数据库连接(如 MySQL JDBC 驱动默认使用 TCP 协议)。

Redis、RabbitMQ 等中间件通过 TCP 与 Spring Boot 通信。

UDP

用途:无连接、低延迟但不可靠的传输(如日志收集、实时监控)。

Spring Boot 中的使用

通过 java.net.DatagramSocket 实现 UDP 客户端/服务端。

集成第三方库(如 Netty)处理 UDP 请求。

安全协议

OAuth2.0

用途:授权框架,用于第三方应用访问用户资源。

Spring Boot 中的使用

使用 spring-security-oauth2 或 spring-security 5.x+ 实现 OAuth2 服务。

支持授权码模式、密码模式等。

JWT(JSON Web Token)

用途:无状态的身份验证令牌,通过 HTTP Header 传输。

Spring Boot 中的使用

使用 jjwt 库生成和解析 JWT。

通过 Spring Security 过滤器验证 JWT。

消息协议

AMQP(Advanced Message Queuing Protocol)

用途:消息队列通信(如 RabbitMQ)。

Spring Boot 中的使用

通过 spring-boot-starter-amqp 集成 RabbitMQ。

使用 @RabbitListener 注解消费消息。

KAFKA协议

ROCKETMQ协议

服务发现与配置协议

Eureka(基于 HTTP)

用途:服务注册与发现(Spring Cloud Netflix)。

数据库协议

JDBC

用途:Java 数据库连接标准,底层依赖数据库厂商协议(如 MySQL 的 mysql-connector-java)。

Spring Boot 中的使用

配置 DataSource 并集成 ORM 框架(如 JPA、MyBatis)。

其他协议

SMTP/POP3/IMAP
用途:邮件发送与接收。

Spring Boot 中的使用

通过 spring-boot-starter-mail 集成 JavaMail。

总结

外部通信:HTTP/HTTPS、WebSocket、gRPC。

内部通信:TCP(数据库、中间件)、AMQP/MQTT(消息队列)。

安全:OAuth2.0、JWT、SSL/TLS。

服务治理:Eureka(HTTP)、Spring Cloud Config(HTTP)。

开发者需要根据性能需求(如 gRPC 的高效性)、安全性(HTTPS/JWT)和业务场景(如实时通信选择 WebSocket)灵活选择协议。


http://www.kler.cn/a/533483.html

相关文章:

  • 除了网页,还有哪些方式可以访问deepseek r1
  • pytorch使用SVM实现文本分类
  • Kafka SSL(TLS)安全协议
  • 保姆级教程Docker部署Zookeeper官方镜像
  • java求职学习day27
  • 86.(2)攻防世界 WEB PHP2
  • RNN/LSTM/GRU 学习笔记
  • java进阶知识点
  • 软件测试丨PyTorch 图像目标检测
  • CSS的媒体查询语法
  • Zabbix7.0安装(Ubuntu24.04+LNMP)
  • ES面试题
  • 【学Rust写CAD】4 相对坐标系详解与实现要素概览
  • YOLOv11-ultralytics-8.3.67部分代码阅读笔记-autobackend.py
  • WebSocket协议里客户端发送给服务器的数据会用4字节的掩码循环异或的分析
  • UE5 创建自定义工具上下文的方法
  • H3CIE-RS+面试——OSPF(倒计时第40天)
  • 寒假2.4:序列化漏洞
  • AWS 成本和使用情况报告:全面管理云支出和优化资源
  • 大语言模型轻量化:知识蒸馏的范式迁移与工程实践
  • React组件开发技巧:如何优雅地传递Props?
  • 【免费】2007-2019年各省科技支出占一般公共预算支出的比重数据
  • 顺丰数据分析(数据挖掘)面试题及参考答案
  • 21.2.2 保存
  • BUU19 [BJDCTF2020]Easy MD51
  • 企业四要素如何用PHP进行调用