已结束支持的版本: 6.3
历史版本。 PostgreSQL 6.3 已结束支持。 请参阅 当前版本手册.
第 51 章 前端/后端协议
注意
Postgres 使用基于消息的协议在前端和后端之间通信。该协议在 TCP/IP 上实现,也在 Unix 套接字上实现。Postgres v6.3 在协议中引入了版本号。这样做仍然允许来自早期版本前端的连接,但本文档不涵盖那些早期版本所使用的协议。
本文档描述最初的带版本号的协议,即 v1.0。建立在该协议之上的更高层特性(例如 libpq 在连接建立之后如何传递某些环境变量)在别处介绍。
51.1. 概述
三个主要组件是前端(运行在客户端上)以及 postmaster 和后端(运行在服务器上)。postmaster 和后端角色不同,但可以由同一个可执行程序实现。
前端向 postmaster 发送一个启动包。其中包括用户想要连接的用户名和数据库名。postmaster 然后使用它以及 pg_hba.conf(5) 文件中的信息,确定它要求前端进一步发送哪些认证信息(如果有的话),并相应地响应前端。
前端然后发送所需的任何认证信息。一旦 postmaster 验证通过,它就响应前端已通过认证,并移交给一个后端。
随后的通信是在前端和后端之间交换的查询和结果包。postmaster 不再参与通信。
当前端希望断开连接时,它发送一个适当的包并关闭连接,而不等待后端的响应。
包以数据流的形式发送。第一个字节决定包的其余部分应有什么内容。例外的是从前端发送到 postmaster 的包,它们由一个包长度和包本身组成。这一差异是历史原因造成的。