目录
PostgreSQL 使用基于消息的协议在前端和后端(客户端和服务器)之间进行通信。该协议通过以下方式获得支持:TCP/IP并且还通过 Unix 域套接字。将端口号 5432 向 IANA 注册为支持此协议的服务器的常用 TCP 端口号,但实际上可以使用任何非特权端口号。
本文档描述了协议版本 3.0,该版本在 PostgreSQL 7.4 及更高版本中已实现。有关较早协议版本的说明,请参阅 PostgreSQL 文档的先前版本。单个服务器可以支持多个协议版本。初始启动请求消息告诉服务器客户端尝试使用的协议版本。如果服务器不支持客户端请求的主版本,则连接将遭到拒绝(例如,如果客户端请求协议版本 4.0,则会出现这种情况,而此时并不存在该版本)。如果服务器不支持客户端请求的次要版本(例如,客户端请求版本 3.1,但服务器只支持版本 3.0),则服务器可能会拒绝连接,或者可能会以包含支持的最高次要协议版本为内容的 NegotiateProtocolVersion 消息进行响应。然后,客户端可以选择继续使用指定的协议版本执行连接,或中止连接。
为了有效地为多个客户端提供服务,服务器为每个客户端启动一个新的“后端”进程。在当前的实现中,在检测到传入连接后会立即创建一个新的子进程。然而,这对协议是透明的。出于协议的目的,术语“后端”和“服务器”可互换;同样“前端”和“客户端”可互换。