受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发版本: devel

Chapter 53. 前端/后端协议

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

本文描述协议 3.0 版本,自 PostgreSQL 7.4 起实现。对早期协议版本的说明可参见之前发布的 PostgreSQL 文档。一台服务器可以支持多个协议版本。初始的启动请求消息会告知服务器客户端正在尝试使用哪个协议版本。如果客户端请求的主版本号不被服务器支持,连接将被拒绝(例如,如果客户端请求协议版本 4.0,在撰写本文时该版本尚不存在,就会发生这种情况)。如果客户端请求的次版本号不被服务器支持(如客户端请求 3.1 但服务器仅支持 3.0),服务器可能会拒绝连接,也可能会用一个 NegotiateProtocolVersion 消息进行响应,其中包含它所支持的最高次协议版本号。客户端可以选择使用指定的协议版本继续连接,也可以中止连接。

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

提交更正

如果您发现文档中有不正确的内容、与您使用特定功能的经验不符或需要进一步说明,请使用此表单来报告文档问题。