TCP 연결을 유지하는 이유는 TCP 연결 과정에서 발생하는 오버헤드 데이터베이스 연결을 새로 생성하는 과정에서 발생하는 오버헤드를 줄이기 위함이다.

  1. 보안 암호화 핸드셰이크(SSL/TLS): 클라이언트와 서버가 안전하게 통신하기 위해 암호화 방식을 협상하고 공개키를 교환하는 과정. 이 과정은 여러 번의 데이터 패킷 교환(Round Trip)을 필요로 하므로, 특히 지리적으로 멀리 떨어진 데이터베이스에 연결할 때 상당한 지연 시간의 원인이 됨.
  2. 데이터베이스 프로토콜 핸드셰이크: 서버와 클라이언트 간 프로토콜 버전 협상. "저는 PostgreSQL 클라이언트 버전 X이고, 프로토콜 v3을 지원합니다." 와 같은 대화가 오가는 단계를 의미함.
  3. 인증 과정: 사용자 자격 증명 검증. 아이디와 비밀번호 같은 자격 증명을 서버로 보내고, 서버는 이를 내부 사용자 정보와 대조하여 인증을 수행함.
  4. 세션 초기화: 해당 연결에서 사용할 타임존(timezone), 문자 인코딩(client_encoding), 트랜잭션 격리 수준(transaction_isolation) 등 세션 파라미터 설정. 세션 컨텍스트(Session Context)를 설정함.

로컬 환경에서는 이 과정이 1-2ms 정도지만, 원격 서버의 경우 RTT가 50ms라면 전체 연결 과정에 100-300ms가 소요될 수 있다.


parse me : 언젠가 이 글에 쓰이면 좋을 것 같은 재료을 보관해 두는 영역입니다.

  1. None

from : 과거의 어떤 원자적 생각이 이 생각을 만들었는지 연결하고 설명합니다.

  1. [bc1.1. title: 서버와 클라이언트의 약속 HTTP는 지속되지 않고(Connectionless), 새로운 연결마다 모든 상태를 잃어버리기 때문에 스테이트리스(Stateless)시스템이다.](https://janghoo.notion.site/bc1-1-title-HTTP-85eb5906948648d787f33d4becce2e0f)
  2. a1.2.a9.1.1.7.2.1_1. title: TLS(SSL)은 OSI 기준 표현 계층(L6) 아래에서 발생할 수 있는 도청 및 변조를 모두 막는다.

supplementary : 어떤 새로운 생각이 이 문서에 작성된 생각을 뒷받침하는지 연결합니다.

  1. None

opposite : 어떤 새로운 생각이 이 문서에 작성된 생각과 대조되는지 연결합니다.

  1. None