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

감바스님의 프로필 이미지
감바스

작성한 질문수

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

Persistence Connection과 Connection:close 헤더

작성

·

501

·

수정됨

1

안녕하세요 :)

강의 들으면서 RFC 7230 문서를 함께 읽어보던 중, Persistence Connection 연결이 종료되는 기준에 대해 궁금한 점이 생겼습니다.

Persistence Connection이 종료되는 기준이 궁금해져서 본 강의의 커뮤니티에 질문을 검색했을 때, [Persistence Connection 에는 약 60초의 타임아웃이 있다.](https://www.inflearn.com/questions/169548/persistence-connection-%EC%97%B0%EA%B2%B0-%EC%9C%A0%EC%A7%80%EC%99%80-%EC%A2%85%EB%A3%8C-%ED%8C%90%EB%8B%A8%EC%9D%98-%EC%A1%B0%EA%B1%B4)

라는 답변을 봤습니다.

그래서 "60초의 대기 시간 후에도 클라이언트에서 요청이 없으면 서버가 자동으로 연결을 종료하는구나!" 라고 이해했었는데요,

공식 문서의 Connection 부분에는 [Persistent Connection은 클라이언트, 혹은 서버에서 헤더에 Connection:close를 명시하면 종료된다.](https://datatracker.ietf.org/doc/html/rfc7230#section-6.3) 라는 말이 있더라구요.

그리고 Timeout 에 대해서는

The use of persistent connections places no requirements on the length (or existence) of this timeout for either the client or the server.

라는 말이 있는데, 저는 이 말을 "Persistent Connection은 timeout을 가지고 있지 않다." 라는 의미로 이해했습니다.

여기에서 생긴 제 궁금증은 다음과 같습니다.

  1. Persistent Connection은 "요청과 응답이 계속 오가는 상황에서는" Connection:close에 의해 종료되는 것이 맞을까요?

  2. 1번의 조건을 전제로 하고, connection이 장기간 idle 상태로 있는 경우에 connection을 낭비하지 않기 위해 timeout 후에 서버가 connection을 종료하는 것인가요, 아니면 계속해서 connection을 열어두는 것인가요?

 

강의 잘 듣고 있습니다. 감사합니다!

답변 1

1

안녕하세요, 감바스 님! 공식 서포터즈 codesweaver 입니다.

Timeout에 대한 해석의 문제네요.

'Persistence Connection' 을 사용할 때 Timeout의 여부 혹은 Timeout 시간은 필수는 아니다. 정도로 해석할 수 있습니다. Timeout 에 대한 항목은 서버 혹은 클라이언트가 알아서 처리하라는 것이며 스펙에서 강제로 규정하지는 않는 다는 의미입니다.

1 일반적으로 통신이 종료되면 Connection:close 신호를 보내 통신을 종료합니다. 그러나 꼭 close 신호를 보내지 않아도 되긴 합니다

2 Keep-alive 로 Persistence Connection을 사용한다 해도 일정기간이 지나면 timeout으로 처리 서버가 연결을 종료합니다.


감사합니다.

감바스님의 프로필 이미지
감바스

작성한 질문수

질문하기