이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 53 장. 프론트 엔드/백엔드 배트맨 토토버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

4 장. 프론트 엔드/백엔드 규약

참고 :Phil Thompson ( 작성). Tom Lane의 프로토콜 2.0 업데이트 ().

Postgres메시지 기반을 사용합니다 프론트 엔드와 백엔드 간의 커뮤니케이션 프로토콜. 그만큼 프로토콜이 구현 됨TCP/IP그리고 유닉스 소켓에도Postgres6.3 도입 버전 번호 프로토콜. 이것은 여전히 ​​허용하는 방식으로 이루어졌습니다. 이전 버전의 Frontends에서 연결되었지만이 문서 이전 버전에서 사용하는 프로토콜을 다루지 않습니다.

이 문서는 프로토콜의 버전 2.0을 설명합니다. 구현Postgres6.4 및 나중에.

이 프로토콜을 기반으로 구축 된 더 높은 레벨 기능 (예 : 어떻게libpq특정 환경을 통과합니다 연결이 설정된 후 변수)가 포함됩니다 다른 곳.

4.1. 개요

세 가지 주요 구성 요소는 프론트 엔드입니다 ( 클라이언트) 및 우체국 장 및 백엔드 (서버에서 실행). 우체국 장과 백엔드는 다른 역할을하지만 동일한 실행 파일에 의해 구현되었습니다.

프론트 엔드는 스타트 업 패킷을 우체국 장에게 보냅니다. 이것 사용자의 이름과 사용자가 원하는 데이터베이스를 포함합니다. 연결합니다. 그런 다음 우체국 장은 이것을 사용합니다 의 정보PG_HBA.conf파일 추가 인증 정보를 결정합니다 프론트 엔드가 (있는 경우) 보내야하고 그에 따라 프론트 엔드.

프론트 엔드는 필요한 인증을 보냅니다 정보. 우체국 장이이를 확인하면 응답합니다 그것이 인증 된 프론트 엔드 백엔드 연결. 그런 다음 백엔드는 메시지를 보냅니다 성공적인 시작 (정상적인 경우) 또는 실패 (for 예를 들어, 유효하지 않은 데이터베이스 이름).

후속 통신은 쿼리 및 결과 패킷입니다 프론트 엔드와 백엔드 사이에서 교환되었습니다. 우체국 장 일반 쿼리/결과 통신에서 더 이상 참여하지 않습니다. (그러나 프론트 엔드가 원할 때 우체국 장은 관여합니다 현재 백엔드로 실행중인 쿼리를 취소합니다. 그것에 대한 자세한 내용은 아래에 나와 있습니다.)

프론트 엔드가 연결을 끊기를 원할 때 an을 보냅니다 적절한 패킷과 대기하지 않고 연결을 닫습니다 백엔드에 대한 응답.

패킷은 데이터 스트림으로 전송됩니다. 첫 번째 바이트가 결정됩니다 나머지 패킷에서 예상되는 것. 그만큼 예외는 프론트 엔드에서 우체국 장으로 전송 된 패킷입니다. 패킷 길이와 패킷 자체를 포함합니다. 그만큼 차이는 역사적입니다.