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

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

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

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

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

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