Глава 51. Протокол клиент/сервер#

Глава 51. Протокол клиент/сервер

Глава 51. Протокол клиент/сервер

Tantor BE использует протокол на основе сообщений для обмена данными между клиентами и серверами (frontends и backends). Протокол поддерживается через TCP/IP и также через Unix-доменные сокеты. Порт 5432 был зарегистрирован в IANA как обычный TCP-порт для серверов, поддерживающих этот протокол, но на практике можно использовать любой непривилегированный порт.

Этот документ описывает версию 3.0 протокола, реализованную в PostgreSQL 7.4 и более поздних версиях. Описания более ранних версий протокола см. в предыдущих выпусках документации PostgreSQL. Один сервер может поддерживать несколько версий протокола. Начальное сообщение запроса на запуск сообщает серверу, какую версию протокола клиент пытается использовать. Если основная версия, запрошенная клиентом, не поддерживается сервером, соединение будет отклонено (например, это произойдет, если клиент запросит версию протокола 4.0, которая на момент написания не существует). Если дополнительная версия, запрошенная клиентом, не поддерживается сервером (например, клиент запрашивает версию 3.1, а сервер поддерживает только 3.0), сервер может либо отклонить соединение, либо ответить сообщением NegotiateProtocolVersion, содержащим наивысшую дополнительную версию протокола, которую он поддерживает. Затем клиент может либо продолжить соединение, используя указанную версию протокола, либо прервать соединение.

Для эффективного обслуживания нескольких клиентов сервер запускает новый процесс "backend" для каждого клиента. В текущей реализации новый дочерний процесс создается немедленно после обнаружения входящего соединения. Однако это прозрачно для протокола. Для протокола термины "backend" и "server" взаимозаменяемы, а также "frontend" и "client".