登录
第 55 章. 前端/后端协议
目录
- 55.1. 概述
- 55.2. 消息流
- 55.3. SASL 认证
- 55.4. 流复制协议
- 55.5. 逻辑流复制协议
- 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 消息。然后,客户端可以选择使用指定的协议版本继续连接,或中止连接。
为了有效地为多个客户端提供服务,服务器会为每个客户端启动一个新的“后端”进程。在当前实现中,会在检测到传入连接后立即创建一个新的子进程。然而,这对于协议是透明的。就协议而言,术语“后端”和“服务器”是可以互换的;同样,“前端”和“客户端”也是可以互换的。