章 51. 前端/后端协议

目录
51.1. 概述
51.1.1. 消息概貌
51.1.2. 扩展查询概述
51.1.3. 格式和格式代码
51.2. 消息流
51.2.1. 启动
51.2.2. 简单查询
51.2.3. 扩展查询
51.2.4. 函数调用
51.2.5. COPY操作
51.2.6. 异步操作
51.2.7. 取消正在处理的请求
51.2.8. 终止
51.2.9. SSL会话加密
51.3. 流复制协议
51.4. 消息数据类型
51.5. 消息格式
51.6. 错误和通知消息域
51.7. 自协议2.0以来的变化总结

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

这份文档描述了版本3.0的协议,它在PostgreSQL版本 7.4 和以后的版本中实现。对于以前版本协议的描述,请参考以前版本的PostgreSQL文档。 一个服务器可以支持多种协议版本。最开始的启动请求信息会告诉服务器客户端尝试使用的协议版本,然后服务器则遵循该版本的协议——如果它能做到的话。

为了可以有效地为多个客户端提供服务,服务器为每个客户端派生一个新的"后端"进程。 在目前的实现里,在检测到新来的连接请求后,马上创建一个新的子进程。 不过,这些是对协议透明的。对于协议而言,术语"后端""服务器"是可以互换的; 类似的还有"前端""客户端"也是可以互换的。