-
HTTP Keep-Alive란 무엇인가TECH 2023. 11. 13. 10:15
HTTP Keep-Alive란 무엇인가?
- AKA HTTP persistent connection
- 단일 TCP 커넥션을 여러 HTTP request/response에 열려있도록 유지하는 것
- 기본적으로 HTTP 커넥션은 각 요청이 끝날때마다 종료됨.
- 일반적인 헤더로, 커넥션의 타임아웃과 최대 요청을 설정하기 위해 사용됨
문법
Keep-Alive: parameters
- parameters
- 콤마로 구분된 파라미터 리스트, `=`로 구분된 식별자와 값으로 구성됨.
- timeout: 호스트가 연결을 종료하기 전 호스타가 idle connection을 얼마나 유지할 것인지 설정. 커넥션은 호스트로부터 아무런 데이터를 보내지도/받지도 않으면 idle하다. 호스트는 idle connection을 timeout 보다 길게 유지할 수 있지만, 최소 timeout에 지정한 시간 만큼은 유지해야 한다.
- max: 이 커넥션으로 보낼 수 있는 최대 요청의 수. 0이 아닌 경우 비파이프라인 연결에 대해서는 이 값은 무시된다. HTTP pipeline에서 파이프라이닝을 제한하기 위해 이 값을 사용할 수 있다.
Keep Alive 커넥션의 장점
TCP 연결을 성립하는데는 three way 핸드쉐이크 과정 - 클라이언트와 서버 간에 데이터를 전송하기 전 SYN과 ACK 패킷을 상호로 주고받는 과정이 필요하다. keep alive 헤더를 사용하는 것은 이 과정을 계속 해야 할 필요가 없음을 의미한다.
따라서
- 네트워크 자원 절약 - 클라이언트당 하나의 연결을 사용하는 것은 네트워크 자원에 부하를 덜 가하게 된다.
- 네트워크 혼잡 감소- 서버와 클라이언트 간의 TCP 연결 수를 줄이면 네트워크 혼잡이 감소할 수 있다.
- 지연감소- 3 way handshakes를 줄여 사이트의 응답속도가 높아질 수 있다. 특히 SSL/TLS의 경우 추가 왕복이 필요하여 연결을 암호화하고 확인하는데 더 많은 라운드 트립이 필요하여 이 효과가 두드러진다.
https://www.imperva.com/learn/performance/http-keep-alive/
What is HTTP Keep Alive | Benefits of Connection Keep Alive | Imperva
The HTTP keep alive header allows a single TCP connection to remain open for multiple responses. Learn how to use connection keep alive to reduce the time to serve files and requests.
www.imperva.com
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Keep-Alive
Keep-Alive - HTTP | MDN
The Keep-Alive general header allows the sender to hint about how the connection may be used to set a timeout and a maximum amount of requests.
developer.mozilla.org
'TECH' 카테고리의 다른 글
컨테이너 대 가상머신 (1) 2023.11.23 VM이란? (0) 2023.11.23 데이터 중심 애플리케이션 설계 - 관계형 데이터베이스와 문서 데이터베이스 (0) 2022.07.18 Circuit Breaker 패턴이란? (0) 2022.03.06