23.05.10 17:23 작성
·
563
답변 2
1
안녕하세요, rlamw2000 님. 공식 서포터즈 y2gcoder 입니다.
질문에 대한 답변입니다:
A, B, C 클라이언트가 있을 경우, 각 클라이언트는 서버와 개별적인 연결을 유지하게 됩니다. 서버는 여러 클라이언트와 동시에 연결을 유지하고 처리할 수 있습니다. Persistent Connections를 사용하면 각 클라이언트와 서버 간의 연결을 유지하면서 여러 요청을 처리할 수 있으므로, 일부 성능 개선을 얻을 수 있습니다. 하지만 많은 클라이언트와 동시에 연결을 유지할 경우 서버의 자원이 소모되는 것은 맞습니다.
naver.com에 요청을 보낼 때, 웹 브라우저와 웹 서버는 기본적으로 Persistent Connections를 사용합니다. 이 말은 여러 요청-응답을 위해 동일한 TCP 연결을 재사용한다는 의미입니다. 그러나 영속적인 연결이 계속 유지되는 것은 아닙니다. 일정 시간 동안 통신이 없으면 연결은 자동으로 끊어집니다. 이 시간은 웹 서버 설정에 따라 다릅니다. 따라서 naver.com에 요청을 보내고 브라우저를 종료하지 않아도 일정 시간이 지나면 영속적인 연결은 끊어질 것입니다.
감사합니다.
0
2023. 05. 11. 14:51
답변 감사합니다. 추가로 좀 더 질문드리겠습니다!!
클라이언트와 서버간의 연결을 계속 유지하면 서버자원이 소모되기 때문에 비연결성을 사용하나 매 요청마다 handshake를 수행하기엔 또 서버자원이 소모되니 Persistent Connection을 사용하여 일시적으로 연결을 유지하고 일정 시간 통신이 없으면 연결을 끊어 비연결성을 지킨다라고 이해하면 될까요?
2023. 05. 11. 16:38
저도 그렇게 생각합니다.
TCP와 같은 연결 지향성 프로토콜은 데이터의 순서와 누락을 보장하지만, 각 요청마다 연결을 수립하고 해제하는 과정(즉, handshake)이 필요하므로 서버 자원이 추가로 필요합니다.
Persistent Connection은 여러 요청에 대해 한 번의 연결을 재사용함으로써, 각 요청마다 연결을 수립하고 해제하는 오버헤드를 줄이면서도 TCP의 장점을 활용할 수 있습니다. 그러나 이 경우에도, 계속된 연결이 서버의 자원을 소모하므로 일정 시간 동안 통신이 없을 경우 연결을 자동으로 끊어, 비연결성의 이점을 일부 활용합니다.