Documentation PostgreSQL 14.23 » Internes » Protocole client/serveur
Précédent Niveau supérieur Suivant
52.97. pg_views Sommaire 53.1. Aperçu

Chapitre 53. Protocole client/serveur

Table des matières

53.1. Aperçu
53.1.1. Aperçu des messages
53.1.2. Aperçu du protocole Extended Query
53.1.3. Formats et codes de format
53.2. Flux de messages
53.2.1. Lancement
53.2.2. Protocole Simple Query
53.2.3. Protocole Extended Query
53.2.4. Pipelines
53.2.5. Appel de fonction
53.2.6. Opérations copy
53.2.7. Opérations asynchrones
53.2.8. Annulation de requêtes en cours
53.2.9. Fin
53.2.10. Chiffrement SSL de session
53.2.11. Chiffrement GSSAPI de la session
53.3. Authentification SASL
53.3.1. Authentification SCRAM-SHA-256
53.4. Protocole de réplication en continu
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 d'avertissement
53.9. Formats des messages de la réplication logique
53.10. Résumé des modifications depuis le protocole 2.0

PostgreSQL utilise un protocole de messages pour la communication entre les clients et les serveurs (« frontend » et « backend »). Le protocole est supporté par TCP/IP et par 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 personnalisé pour les serveurs supportant 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, telle qu'implantée dans PostgreSQL depuis la version 7.4. Pour obtenir la description des versions précédentes du protocole, il faudra se reporter aux versions antérieures de la documentation de PostgreSQL. Un même serveur peut prendre en charge plusieurs versions du protocole. Lors de l'établissement de la communication, le client indique au serveur la version du protocole qu'il souhaite utiliser. Si la version majeure demandée par le client n'est pas supportée par le serveur, la connexion sera rejetée (par exemple, ceci arriverait si le client réclamait la version de protocole 4.0, qui n'existe pas au moment où ceci est écrit). Si la version mineure demandée par le client n'est pas supportée par le serveur (par exemple si le client réclame la version 3.1 mais que le serveur ne supporte que la version 3.0), le serveur peut soit rejeter la connexion soit répondre avec un message NegotiateProtocolVersion contenant le numéro de version mineur le plus haut qu'il supporte pour cette version du protocole. Le client peut ensuite choisir soit de continuer avec la connexion en utilisant la version spécifiée par le serveur soit d'annuler la connexion.

Pour répondre efficacement à de multiples clients, le serveur lance un nouveau serveur (« backend ») pour chaque client. Dans l'implémentation actuelle, un nouveau processus fils est créé immédiatement après la détection d'une connexion entrante. Et cela de façon transparente pour le protocole. Pour le protocole, les termes « backend » et « serveur » sont interchangeables ; comme « frontend », « interface » et « client ».

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