HTTP 버전별 비교 - (1) HTTP/1.1

succeeding·2022년 5월 26일
0

HTTP 버전별 비교

목록 보기
2/4

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방식에 비해 성능 개선
      • TCP handshake 비용을 절감
  • 단점
    • 유휴 상태일때도 서버 리소스를 소비
    • 과부하 상태에서 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으로 대체 되었습니다.

1개의 댓글

comment-user-thumbnail
2022년 6월 9일

참고문헌은 시리즈 첫번째 글에 있습니다.

답글 달기