포스트그레스메시지 기반을 사용합니다 프론트엔드와 백엔드 간의 통신을 위한 프로토콜입니다. 는 프로토콜이 이상으로 구현되었습니다.TCP/IP그리고 Unix 소켓에서도 마찬가지입니다.포스트그레스v6.3은 프로토콜에 버전 번호를 도입했습니다. 이 작업은 에서 수행되었습니다. 이전 버전의 연결을 계속 허용하는 방식입니다. 하지만 이 문서에서는 다음에서 사용하는 프로토콜을 다루지 않습니다. 이전 버전입니다.
이 문서는 구현된 프로토콜 버전 2.0에 대해 설명합니다. 에서포스트그레v6.4 이상.
이 프로토콜을 기반으로 구축된 더 높은 수준의 기능(예: 어떻게libpq특정 환경을 통과함 연결이 설정된 후의 변수)는 다룹니다. 다른 곳.
세 가지 주요 구성요소는 프런트엔드입니다(다음에서 실행됨). 클라이언트) 및 포스트마스터와 백엔드(서버에서 실행). 는 포스트마스터와 백엔드는 역할이 다르지만 구현 가능 동일한 실행 파일로.
프런트엔드는 포스트마스터에게 시작 패킷을 보냅니다. 이 사용자의 이름과 사용자가 원하는 데이터베이스가 포함되어 있습니다. 에 연결합니다. 그런 다음 포스트마스터는 이를 사용하고 다음의 정보를 사용합니다. 추가 인증이 무엇인지 결정하기 위한 pg_hba.conf(5) 파일 프런트엔드가 전송(있는 경우)하고 응답하는 데 필요한 정보 그에 따라 프론트엔드에.
그런 다음 프런트엔드는 필요한 인증 정보를 보냅니다. 포스트마스터가 이를 검증하면 프런트엔드에 응답합니다. 인증을 거쳐 백엔드에 대한 연결을 넘겨줍니다. 는 그런 다음 백엔드는 성공적인 시작을 나타내는 메시지를 보냅니다(정상 경우) 또는 실패(예: 잘못된 데이터베이스 이름).
후속 통신은 쿼리 및 결과 패킷이 교환됩니다. 프론트엔드와 백엔드 사이. 우체국장은 안받습니다 일반적인 쿼리/결과 통신의 추가 부분입니다. (단, 프론트엔드가 쿼리를 취소하려고 할 때 포스트마스터가 관련됩니다. 현재 백엔드에서 실행 중입니다. 그에 대한 자세한 내용은 아래에 나타납니다.)
프런트와이즈 토토가 연결을 끊으려고 할 때 적절한 메시지를 보냅니다. 패킷을 전송하고 응답을 기다리지 않고 연결을 닫습니다. 백와이즈 토토.
패킷은 데이터 스트림으로 전송됩니다. 첫 번째 바이트가 결정합니다. 패킷의 나머지 부분에서 예상되는 내용. 예외는 프런트엔드에서 포스트마스터로 전송되는 패킷으로, 패킷 길이는 패킷 자체입니다. 차이점은 다음과 같습니다. 역사적.