Documentation PostgreSQL 17.10 » Internes » Protocole Frontend/Backend

Précédent Niveau supérieur Suivant
52.36. pg_wait_events Sommaire 53.1. Aperçu

Chapitre 53. Protocole Frontend/Backend

Table des matières

53.1. Aperçu
53.1.1. Aperçu des messages
53.1.2. Aperçu des requêtes étendues
53.1.3. Formats et codes de format
53.2. Flot de messages
53.2.1. Démarrage (Start-up)
53.2.2. Requête simple
53.2.3. Requête étendue
53.2.4. Pipelines
53.2.5. Appel de fonction (Function Call)
53.2.6. Opérations COPY
53.2.7. Opérations asynchrones
53.2.8. Annuler des requêtes en cours
53.2.9. Arrêt
53.2.10. Chiffrement SSL de la session
53.2.11. Chiffrement GSSAPI des sessions
53.3. Authentification SASL
53.3.1. Authentification SCRAM-SHA-256
53.4. Protocole de réplication en flux
53.5. Protocole de réplication logique en flux
53.5.1. Paramètres de la réplication logique en flux
53.5.2. Messages du protocole de réplication logique
53.5.3. Flot des messages du protocole de réplication logique
53.6. Types de données des messages
53.7. Formats de message
53.8. Champs des messages d'erreur et de notification
53.9. Formats des messages de la réplication logique
53.10. Résumé des changements depuis le protocole 2.0

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 numéro de port 5432 a été enregistré auprès de 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.

AltStyle によって変換されたページ (->オリジナル) /