HTTP/1.1
- 탄생년도: 1997
- spec: RFC7230~7235
HTTP/1.x의 커넥션 관리
이전의 방식의 결함을 개선하며 발전해 가는 양상
Short-lived connections(HTTP/1.0)
커넥션 하나 당 한 쌍의 요청, 응답만 처리 가능한 방식
- 단점
- 매 요청마다 handshake을 동반한 새로운 연결이 이루어져야 해서 성능 저하
- 서버 부하 비용 증가
- 사용법
- HTTP/1.0: 디폴트
- HTTP/1.1:
Connection
헤더 값을 close
로 설정
Persistent connections(HTTP/1.1)
여러 요청에 대해 커넥션을 재사용하도록 일정시간 유지시키는 방식
keep-alive 커넥션라고도 부름
- 장점
- short-lived connections방식에 비해 성능 개선
- 단점
- 유휴 상태일때도 서버 리소스를 소비
- 과부하 상태에서 DoS attacks 위험 존재
- DoS(Denial of Service) attacks란?
시스템을 악의적으로 공격해 해당 시스템의 리소스를 부족하게 하여 원래 의도된 용도로 사용하지 못하게 하는 공격입니다. 대량의 데이터 패킷을 통신망으로 보내고 특정 서버에 수많은 접속 시도를 하는 등 다른 이용자가 정상적으로 서비스 이용을 하지 못하게 하거나, 서버의 TCP 연결을 바닥내는 등의 공격이 이 범위에 포함됩니다.
- 사용법
- HTTP/1.0:
Connection: retry-after
or Connection: Keep-Alive
- HTTP/1.1: 디폴트
Pipelining(HTTP/1.1)
Persistent connection에서 응답을 기다리지 않고 요청을 연속적으로 보내는 기능
- 장점
- 기존의 Persistent connection 방식보다 지연시간 감소
- 단점
- HTTP레벨의 HOLB(Head Of Line Blocking)
앞선 요청의 처리되지 않으면 연쇄적으로 요청 처리가 지연되는 문제
- 헤더의 중복
순차적인 요청에 중복되는 헤더가 있어도 모두 전송되어 불필요하게 많은 데이터 전송
Pipelining의 단점으로 많은 최신 브라우저가 이 기능을 기본적으로 사용하지 않습니다. 이 기술은 HTTP/2의 multiplexing으로 대체 되었습니다.
참고문헌은 시리즈 첫번째 글에 있습니다.