• 카테고리

    질문 & 답변
  • 세부 분야

    웹 개발

  • 해결 여부

    미해결

비연결성 및 영속성 연결 관련 질문입니다.

23.05.10 17:23 작성 조회수 460

0

안녕하세요 강의 잘 보고 있습니다.

여러 클라이언트가 하나의 서버에 연결을 유지한다면 자원이 소모되어 비연결성을 사용해 하나의 클라이언트의 요청/응답 이후 연결을 끊는다고 학습하였는데

영속적 연결을 사용하면 연결을 끊지 않고 요청한다고 하는데
만약 A, B, C 세 클라이언트가 있다고 가정하면

각 클라이언트 끼리 모두 연결이 되어 비연결성의 이점을 얻지 못하는거 아닌가요?

또한 만약 제가 naver.com에 요청을 보내면 naver를 끄기 전까지 영속성 연결이 유지된다는 말이 될까요?

답변 2

·

답변을 작성해보세요.

1

y2gcoder님의 프로필

y2gcoder

2023.05.11

안녕하세요, rlamw2000 님. 공식 서포터즈 y2gcoder 입니다.

질문에 대한 답변입니다:

  1. A, B, C 클라이언트가 있을 경우, 각 클라이언트는 서버와 개별적인 연결을 유지하게 됩니다. 서버는 여러 클라이언트와 동시에 연결을 유지하고 처리할 수 있습니다. Persistent Connections를 사용하면 각 클라이언트와 서버 간의 연결을 유지하면서 여러 요청을 처리할 수 있으므로, 일부 성능 개선을 얻을 수 있습니다. 하지만 많은 클라이언트와 동시에 연결을 유지할 경우 서버의 자원이 소모되는 것은 맞습니다.

  2. naver.com에 요청을 보낼 때, 웹 브라우저와 웹 서버는 기본적으로 Persistent Connections를 사용합니다. 이 말은 여러 요청-응답을 위해 동일한 TCP 연결을 재사용한다는 의미입니다. 그러나 영속적인 연결이 계속 유지되는 것은 아닙니다. 일정 시간 동안 통신이 없으면 연결은 자동으로 끊어집니다. 이 시간은 웹 서버 설정에 따라 다릅니다. 따라서 naver.com에 요청을 보내고 브라우저를 종료하지 않아도 일정 시간이 지나면 영속적인 연결은 끊어질 것입니다.

 

감사합니다.

0

rlamw2000님의 프로필

rlamw2000

질문자

2023.05.11

답변 감사합니다. 추가로 좀 더 질문드리겠습니다!!

클라이언트와 서버간의 연결을 계속 유지하면 서버자원이 소모되기 때문에 비연결성을 사용하나 매 요청마다 handshake를 수행하기엔 또 서버자원이 소모되니 Persistent Connection을 사용하여 일시적으로 연결을 유지하고 일정 시간 통신이 없으면 연결을 끊어 비연결성을 지킨다라고 이해하면 될까요?

y2gcoder님의 프로필

y2gcoder

2023.05.11

저도 그렇게 생각합니다.
TCP와 같은 연결 지향성 프로토콜은 데이터의 순서와 누락을 보장하지만, 각 요청마다 연결을 수립하고 해제하는 과정(즉, handshake)이 필요하므로 서버 자원이 추가로 필요합니다.

Persistent Connection은 여러 요청에 대해 한 번의 연결을 재사용함으로써, 각 요청마다 연결을 수립하고 해제하는 오버헤드를 줄이면서도 TCP의 장점을 활용할 수 있습니다. 그러나 이 경우에도, 계속된 연결이 서버의 자원을 소모하므로 일정 시간 동안 통신이 없을 경우 연결을 자동으로 끊어, 비연결성의 이점을 일부 활용합니다.