常见的开发协议
在软件开发中,协议(Protocol)是用于定义通信标准的规则集合。根据应用场景的不同,可以将常见协议分为以下几类:
1. 传输层和网络层协议(通信协议)
这些协议主要用于计算机网络中的数据传输,保证数据能够可靠地在不同设备之间传递。
TCP(Transmission Control Protocol,传输控制协议):面向连接的可靠传输协议,提供数据流控制和错误检测,常用于 HTTP、FTP 等应用。
TCP RFC 793UDP(User Datagram Protocol,用户数据报协议):无连接的传输协议,适用于对时延敏感但无需可靠传输的应用,如视频流、DNS 查询等。
UDP RFC 768IP(Internet Protocol,互联网协议):定义了计算机网络之间的寻址和路由规则,IPv4 和 IPv6 是常见版本。
IP RFC 791ICMP(Internet Control Message Protocol,互联网控制消息协议):用于网络设备发送错误报告和测试,如
ping
命令使用 ICMP 发送回显请求。
ICMP RFC 792HTTP(HyperText Transfer Protocol,超文本传输协议):基于 TCP,用于 Web 浏览器与服务器之间的数据传输。
HTTP RFC 7230HTTPS(HTTP Secure,安全超文本传输协议):在 HTTP 基础上加密(TLS/SSL)传输,保证数据安全性。
HTTPS RFC 2818WebSocket:基于 TCP 的全双工通信协议,适用于实时通信(如在线聊天、股票推送)。
WebSocket RFC 6455
2. 设备通信协议(物联网与工业通信)
这些协议用于 IoT 设备、嵌入式系统、传感器网络等设备间的通信。
MQTT(Message Queuing Telemetry Transport):轻量级、基于发布订阅的协议,适用于物联网(IoT)应用。
MQTT 3.1.1CoAP(Constrained Application Protocol):专为物联网设计的轻量级协议,类似 HTTP,但更适用于低功耗设备。
CoAP RFC 7252Modbus:用于工业自动化的串行通信协议,如 PLC(可编程逻辑控制器)和传感器通信。
Modbus 规范OPC UA(Open Platform Communications Unified Architecture):工业物联网(IIoT)中的常见标准协议。
OPC UA 规范ZigBee:低功耗无线通信协议,广泛用于智能家居设备。
ZigBee Alliance
3. 数据交换协议(消息传输与远程调用)
这些协议用于不同系统之间的数据传输和远程调用。
gRPC(Google Remote Procedure Call):基于 HTTP/2 和 Protobuf 的高效 RPC 框架,支持多语言。
gRPC 官方文档RESTful API(Representational State Transfer):基于 HTTP 的无状态 API 设计风格,常用于 Web 服务。
REST API 设计规范SOAP(Simple Object Access Protocol):基于 XML 的远程调用协议,常用于企业级 Web 服务。
SOAP 规范Thrift:Facebook 开发的跨语言 RPC 框架,支持高效的二进制数据传输。
Thrift 官方文档AMQP(Advanced Message Queuing Protocol):标准消息队列协议,RabbitMQ 采用 AMQP 进行消息通信。
AMQP 规范
4. 安全协议(数据加密与身份认证)
这些协议用于保证数据传输的安全性、完整性以及身份认证。
TLS(Transport Layer Security,传输层安全协议):用于加密 HTTP(HTTPS),保护数据传输安全。
TLS RFC 5246SSL(Secure Sockets Layer):TLS 的前身,现已逐步被 TLS 取代。
SSL 规范OAuth 2.0:授权协议,允许第三方应用访问用户数据(如 OAuth 登录 Facebook、Google)。
OAuth 2.0 规范JWT(JSON Web Token):用于身份验证的轻量级令牌,常用于前后端分离的应用。
JWT 规范Kerberos:一种基于票据的身份认证协议,适用于分布式系统。
Kerberos 规范SAML(Security Assertion Markup Language):基于 XML 的单点登录(SSO)协议,常用于企业级认证。
SAML 规范
5. 文件传输协议
这些协议用于跨设备传输文件或数据流。
FTP(File Transfer Protocol):标准文件传输协议,使用 TCP 进行文件传输。
FTP RFC 959SFTP(SSH File Transfer Protocol):基于 SSH 加密的 FTP 传输方式,安全性更高。
SFTP 规范TFTP(Trivial File Transfer Protocol):简化版 FTP,适用于网络设备固件升级等轻量级文件传输。
TFTP RFC 1350NFS(Network File System):网络文件系统协议,支持远程文件共享(Linux/Unix)。
NFS 规范SMB(Server Message Block):Windows 网络文件共享协议(如 Samba)。
SMB 规范
6. 数据库访问协议
这些协议用于数据库的远程访问和数据交互。
JDBC(Java Database Connectivity):Java 访问数据库的标准 API。
JDBC 官方文档ODBC(Open Database Connectivity):基于 SQL 的数据库访问标准,支持跨平台访问。
ODBC 官方文档MySQL 协议:MySQL 服务器与客户端之间的通信协议,支持 TCP 和 Unix Socket 连接。
MySQL 协议文档PostgreSQL 协议:PostgreSQL 数据库的原生通信协议。
PostgreSQL 协议文档Redis RESP(Redis Serialization Protocol):Redis 使用的请求/响应协议,基于 TCP。
Redis 协议文档
7. 邮件通信协议
这些协议用于电子邮件的发送、接收和管理。
SMTP(Simple Mail Transfer Protocol):邮件发送协议,SMTP 服务器用于发送邮件。
SMTP RFC 5321POP3(Post Office Protocol v3):邮件接收协议,邮件下载后存储在本地,不保留服务器副本。
POP3 RFC 1939IMAP(Internet Message Access Protocol):邮件接收协议,支持邮件在服务器端同步,适用于多设备访问。
IMAP RFC 3501
8. 分布式系统协议
这些协议用于保证分布式系统中的一致性、可靠性和数据同步。
Raft:一致性协议,用于分布式系统的 Leader 选举和日志复制。
Raft 论文Paxos:经典的一致性协议,应用于分布式数据库、Zookeeper 等。
Paxos 论文Gossip Protocol:用于分布式系统中节点信息传播,如 Cassandra、Consul 采用该协议。
Gossip Protocol 论文ZAB(Zookeeper Atomic Broadcast):Zookeeper 使用的一致性协议,保证数据一致性和主从切换。
ZAB 论文
9、总结及其对比
协议分类 | 示例协议 | 主要用途 |
---|---|---|
传输协议 | TCP、UDP、IP、ICMP | 计算机网络通信 |
设备通信协议 | MQTT、CoAP、Modbus、OPC UA、ZigBee | 物联网、工业自动化 |
数据交换协议 | gRPC、RESTful、SOAP、Thrift、AMQP | 系统间通信 |
安全协议 | TLS、SSL、OAuth2、JWT、Kerberos | 数据加密、认证 |
文件传输协议 | FTP、SFTP、NFS、SMB | 远程文件传输 |
数据库访问协议 | JDBC、ODBC、MySQL、Redis RESP | 数据库连接 |
邮件协议 | SMTP、POP3、IMAP | 邮件收发 |
分布式系统协议 | Raft、Paxos、ZAB、Gossip | 分布式一致性 |