Клиент-серверный протокол

Для взаимодействия между внешним и внутренним интерфейсом (клиентами и серверами) в QHB используется протокол, основанный на сообщениях. Этот протокол поддерживается через TCP/IP, а также через сокеты домена Unix. В качестве стандартного номера TCP-порта для серверов, поддерживающих этот протокол, в IANA был зарегистрирован номер 5432, но на практике можно использовать любой порт, не требующий специальных прав.

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

Чтобы эффективно обслуживать несколько клиентов, сервер запускает для каждого из них новый «внутренний» процесс. В текущей реализации новый дочерний процесс запускается сразу после обнаружения входящего подключения. Однако это происходит прозрачно для протокола. Применительно к протоколу термины «внутренняя/серверная часть», «обслуживающий процесс» и «сервер» взаимозаменяемы, равно как и «внешняя/ клиентская часть», «пользовательский интерфейс» и «клиент».

Содержание