Chapter 53.前端/后端协议

目录

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

本文档介绍了该协议的 3.0 版,该版本在 PostgreSQL 7.4 及更高版本中实现。有关早期协议版本的说明,请参见 PostgreSQL 文档的早期版本。一台服务器可以支持多个协议版本。初始启动请求消息告诉服务器 Client 端正在尝试使用哪个协议版本。如果服务器不支持 Client 端请求的主版本,则连接将被拒绝(例如,如果 Client 端请求的协议版本为 4.0,在撰写本文时尚不存在)。如果服务器不支持 Client 端请求的次要版本(例如,Client 端请求版本 3.1,但服务器仅支持 3.0),则服务器可以拒绝连接,也可以使用包含最高次要协议版本的 NegotiateProtocolVersion 消息进行响应它支持。然后,Client 端可以选择使用指定的协议版本 continue 连接,也可以中止连接。

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