Skip to content

第 55 章. 前端/后端协议

目录

55.1. 概述
55.1.1. 消息概述
55.1.2. 扩展查询概述
55.1.3. 格式和格式代码
55.2. 消息流
55.2.1. 启动
55.2.2. 简单查询
55.2.3. 扩展查询
55.2.4. 流水线
55.2.5. 函数调用
55.2.6. COPY 操作
55.2.7. 异步操作
55.2.8. 取消正在进行的请求
55.2.9. 终止
55.2.10. 会话加密
55.2.11. 会话加密
55.3. SASL 认证
55.3.1. SCRAM-SHA-256 认证
55.4. 流复制协议
55.5. 逻辑流复制协议
55.5.1. 逻辑流复制参数
55.5.2. 逻辑复制协议消息
55.5.3. 逻辑复制协议消息流
55.6. 消息数据类型
55.7. 消息格式
55.8. 错误和通知消息字段
55.9. 逻辑复制消息格式
55.10. 自协议 2.0 以来的变更摘要

PostgreSQL使用基于消息的协议在前端和后端(客户端和服务器)之间进行通信。该协议通过TCP/IP和 Unix 域套接字提供支持。端口号 5432 已在 IANA 中注册为支持此协议的服务器的惯用 TCP 端口号,但在实践中可以使用任何非特权端口号。

本文档描述了PostgreSQL7.4 及更高版本中实现的协议版本 3.0。有关早期协议版本的说明,请参阅PostgreSQL文档的先前版本。单个服务器可以支持多个协议版本。初始启动请求消息会告知服务器客户端尝试使用的协议版本。如果服务器不支持客户端请求的主版本,则连接将被拒绝(例如,如果客户端请求不存在的协议版本 4.0,则会出现这种情况)。如果服务器不支持客户端请求的次要版本(例如,客户端请求版本 3.1,但服务器仅支持 3.0),则服务器可能会拒绝连接,或者可能会使用包含其支持的最高次要协议版本来响应 NegotiateProtocolVersion 消息。然后,客户端可以选择使用指定的协议版本继续连接,或中止连接。

为了有效地为多个客户端提供服务,服务器会为每个客户端启动一个新的“后端”进程。在当前实现中,会在检测到传入连接后立即创建一个新的子进程。然而,这对于协议是透明的。就协议而言,术语“后端”和“服务器”是可以互换的;同样,“前端”和“客户端”也是可以互换的。