인프런 커뮤니티 질문&답변

rlamw2000님의 프로필 이미지

작성한 질문수

모든 개발자를 위한 HTTP 웹 기본 지식

비 연결성(connectionless)

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

23.05.10 17:23 작성

·

563

0

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

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

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

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

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

답변 2

1

y2gcoder님의 프로필 이미지

2023. 05. 11. 09:43

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

질문에 대한 답변입니다:

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

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

 

감사합니다.

0

rlamw2000님의 프로필 이미지
rlamw2000
질문자

2023. 05. 11. 14:51

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

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

y2gcoder님의 프로필 이미지

2023. 05. 11. 16:38

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

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