개발 지식

Keep Alive란?

devsim 2022. 12. 25. 18:14

Keep Alive?

-HTTP Request Header의 Connection 키에 대한 값입니다.

-client와 Server의 TCP연결을 유지 시켜줍니다.

 

Header?

우리는 보통 서버와 통신을 할 때에 header에 여러 정보를 실어서 보내게 됩니다.

Accept / Content Length / Host / Connection 등 header의 내용에는 여러가지가 있지만 오늘은 Connection에 대해서 알아보려고 합니다. 

왜냐면 Connection 헤더에 Keep Alive 값이 들어가기 때문입니다.

 

Connection?

          HTTP/1.0 버전 까지는 HTTP 프로토콜의 특징인 비 연결성으로 인해                    

Client가 Server로 HTTP Request를 하고 응답을 받으면 연결을 바로 종료했습니다.

비 연결성이란 해당 요청에 대한 응답을 받으면 연결이 끊기는 것을 말합니다.

그래서 클라이언트가 HTTP요청으로 이미지를 요청하거나 HTML을 요청을 하게 되면 항상 TCP 3HAND-SHAKE를 해주어야 했습니다. 

HTTP프로토콜은 TCP기반이기 때문에 3HAND-SHACK 연결이 수립된 후에 그 위에서 통신을 진행합니다.

그렇게 되면 요청 마다 연결을 만들게 되고 Latency / 네트워크 트래픽이 증가하게 됩니다. 

한 마디로 비효율적 통신을 하게 됩니다.

그래서 HTTP/1.1 버전에서는 Keep-alive옵션을 지원하여 하나의 TCP연결에 여러 개의 HTTP통신을 지원하는 기능을 추가하게 되었습니다.

해당 옵션을 사용하면 위의 문제점을 해결할 수 있습니다.

 

HTTP Request Header 구조 참고