Http1.0 이후 클라이언트와 서버 간 요청과 응답을 어떻게 하면 좀 더 빨리 할 수 있을지에 대한 연구가 이루어졌다. 기존에는 Http 요청때마다 TCP연결을 3-way handshake방식으로 맺어야 했다. 하지만 시대가 변함에 따라 클라이언트와 서버간 http요청의 수는 증가하여 handShaking의 오버헤드에 대한 고민이 있었고, 그에 따라 Persistent Connection이 등장하게 되었다.
Persistent Connection
Http에서 Persistent Connection이란 Http 어플리케이션이 TCP connection을 요청마다 close 하지 않고 유지하는 것을 Persistent Connection 이라 한다.
Persistent Connection이 필요한 이유
Persistent Connection을 사용하게 되면 TCP연결을 맺기 위해 SYN 과 ACK 를 주고받는 three-way-handshake를 매 요청마다 맺을 필요가 없어 지는 장점이 있다.
keep-alive
Persistent Connection 은 당연하게도 클라이언트와 서버 양측이 다 지원해야 한다. 클라이언트는 Persistent Connection 연결을 위해 다음과 같은 헤더를 포함하여 요청한다.
Connection: keep-alive
해당 요청을 받은 서버는 해당 TCP연결을 HTTP 응답 이후에도 끊지 않고 계속 사용하겠다는 약속으로 동일 헤더를 response에 담아 보낸다.
- Http 1.1부터는 디폴트로 keep alive가 적용되어 있다.
참고
https://etloveguitar.tistory.com/137
https://brunch.co.kr/@sangjinkang/4
https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Connection
'인프라' 카테고리의 다른 글
Http 클라이언트 설정 시 메모 (0) | 2024.04.02 |
---|---|
macos ventura 업데이트 후 ssh 오류 (0) | 2023.02.09 |
DB 트랜잭션 및 락 (0) | 2022.05.18 |
docker 기본 사용법 (0) | 2021.06.20 |
docker mysql 설치 (0) | 2021.06.20 |