PostgreSQLはフロントエンドとバックエンド(クライアントとサーバ)の通信にメッセージベースのプロトコルを使用します。 このプロトコルはTCP/IPやUnixソケットをサポートします。 ポート番号5432は、このプロトコルをサポートするサーバ用のTCPポートとしてIANAで登録されました。 しかし、実際には任意の非特権ポート番号を使用することができます。
この文書はPostgreSQL 7.4以降に実装されたプロトコル3.0バージョンについて記載します。 以前のプロトコルバージョンについての説明は、PostgreSQLの以前のリリースの文書を参照してください。 初めの開始要求メッセージは、サーバに対し、クライアントが使用する予定のプロトコルバージョンを通知します。 その後、サーバは可能であればそのプロトコルに従います。
本プロトコル上に構築されたより高度な機能(例えば、接続確立時にどのようにlibpqがある特定の環境変数を渡すか)については、別途説明します。
効率的に複数のクライアントにサービスを提供するために、サーバは各クライアント用に新規に"バックエンド"プロセスを起動します。 現在の実装では、サーバに接続が届いたことを検知すると即座に新しい子プロセスが生成されます。 しかし、これはプロトコルに対して透過です。 プロトコルという意味では、"バックエンド"と"サーバ"という用語は相互交換可能です。同様に"フロントエンド"と"クライアント"も相互交換可能です。