A connection operates at the transport layer, distinct from a database session. Establishing a connection consumes OS file descriptors and TCP socket buffers (tcp_rmem, tcp_wmem) or local Unix IPC buffers.
In process-per-connection architectures like PostgreSQL, each client connection incurs a Postmaster fork() call to spawn a dedicated worker process. Connection poolers keep physical sockets warm to eliminate repeated handshake and process allocation overhead across application requests.
TIP
Architectural Deep Dive: For an end-to-end analysis of the connection lifecycle, transport handshakes, and capacity ceilings, see: PostgreSQL Connection Management: Lifecycle, Capacity, and Pooling.