끄적끄적

[네트워크] keep-alive에 대해서 알아보자 본문

Computer Science/Network

[네트워크] keep-alive에 대해서 알아보자

mashko 2020. 6. 14. 19:48
반응형
HTTP 지속적 연결 상태, HTTP 영구 접속 또는 HTTP 킵얼라이브, HTTP 연결 재사용은 하나의 TCP 연결을 사용하여 복수의 HTTP 요청/응답을 주고받는다는 개념으로, 매 요청/응답 쌍마다 새로운 요청을 여는 것과는 반대되는 개념이다.
-위키백과-

http keep-alive 웹개발을 하다보면 기본적으로 알고 지나가야할 이론입니다.
서버간 통신을 주고 받으며 통신을 위한 커넥션 즉 서버간 연결과정이 나옵니다.
일전에 포스팅한 3way handshake & 4way handshake가 그 연결과정에 대한 내용이죠.
keep-alive는 반복적이고 빈번한 통신에 대해 데이터를 주고 받을때마다 connection을 연결하는 과정을 하다보면 그 만큼의 퍼포먼스에 대한 저하를 줄여보고자 나온 방안인데 http1.1이전에 버전에서는 수동적으로 keep-alive를 명시해서 사용했지만,
http1.1부터는 기본적으로 keep-alive 설정이 되어있고, 기본적으로 5초간 커넥션을 유지시켜줍니다.
그래서 커넥션을 유지 시켜주는게 왜 좋은건데?하면 커넥션이 유지되어 있으니 그 다음 통신시 이 부분에 대한 커넥션을 맺기위한 과정이 생략이 되면서 더 빠르게 필요한 데이터 교환이 이뤄지게 되겠죠?

MDN 출처

HTTP 커넥션 파이프라이닝에 대한 그림입니다.
보시면 HTTP 파이프라이닝은 한 단계 더 나아가, 응답조차도 기다리지 않고 연속적인 요청을 보내서 네트워크 지연을 더욱 줄입니다.

HTTP/1.1 200 OK
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
Date: Thu, 11 Aug 2016 15:23:13 GMT
Keep-Alive: timeout=5, max=1000
Last-Modified: Mon, 25 Jul 2020 04:32:39 GMT
Server: Apache

http 1.1버전에 connection 타입이 keep-alive로 잡혀있는 예시 헤더값입니다.
keep-alive 설정에 대한 정보는 아래와 같습니다.

timeout: 유휴 연결이 계속 열려 있어야 하는 최소한의 시간(초 단위)을 가르킵니다. keep-alive TCP 메시지가 전송 계층에 설정되지 않는다면 TCP 타임아웃 이상의 타임아웃은 무시된다는 것을 알아두시기 바랍니다.
max: 연결이 닫히기 이전에 전송될 수 있는 최대 요청 수를 가리킵니다. 만약 0이 아니라면, 해당 값은 다음 응답 내에서 다른  요청이 전송될 것이므로 비-파이프라인 연결의 경우 무시됩니다. HTTP 파이프라인은 파이프라이닝을 제한하는 용도로 해당 값을 사용할 수 있습니다.

한번 쯤은 직접 keep-alive의 설정정보를 바꿔서 통신을 직접해보면 이해를 하는데에 도움이 될듯합니다.

반응형
Comments