Table des matières
PostgreSQL utilise un protocole de messages pour la communication entre le frontend et le backend (clients et serveurs). Le protocole est supporté sur TCP/IP et aussi sur les sockets de domaine Unix. Le nombre de port 5432 a été enregistré avec l'IANA comme numéro de port TCP attribué pour les serveurs utilisant ce protocole, mais, en pratique, tout numéro de port non privilégié peut être utilisé.
Ce document décrit la version 3.0 de ce protocole, implémenté dans
PostgreSQL 7.4 et ses versions ultérieures. Pour la
description des versions précédentes du protocole, voir les versions
précédentes de la documentation PostgreSQL. Un
serveur peut accepter plusieurs versions du protocole. Le message
startup-request initial indique au serveur la
version du protocole que le client essaie d'utiliser. Si la version majeure
demandée par le client n'est pas comprise par le serveur, la connexion sera
rejetée (par exemple, cela surviendrait si le client demandait la version 4.0
du protocole, qui n'existe pas au moment de l'écriture de ce chapitre). Si la
version mineure demandée par le client n'est pas acceptée par le serveur (par
exemple si le client réclame la version 3.1 mais que le serveur n'accepte que
la version 3.0), le serveur peut soit rejeter la connexion soit répondre avec
un message NegotiateProtocolVersion
contenant la version
mineure la plus haute qu'il accepte pour ce protocole. Le client peut ensuite
choisir soit de tenter une nouvelle connexion avec la version indiquée du
protocole soit annuler la connexion.
Pour servir plusieurs clients avec efficacité, le serveur lance un nouveau processus « backend » pour chaque backend. Dans l'implémentation actuelle, un nouveau processus fils est créé immédiatement après la détection d'une connexion entrante. Cependant, ceci est transparent pour le protocole. Pour le protocole, les termes « backend » et « server » sont interchangeables ; de la même façon, les termes « frontend » et « client » sont interchangeables.