HTTP/1.1과 HTTP/2.0

김명수·2025년 9월 26일

매일메일

목록 보기
16/101
post-thumbnail

HTTP/1.1과 HTTP/2.0

●HTTP/1.1

  • HTTP는 웹상에서 클라이언트와 서버 간 통신을 위한 프로토콜
  • HTTP/1.0의 경우에는 한 개의 요청과 응답마다 TCP 커넥션을 생성하여 사용되었고, 이러한 방식은 매 요청마다 연결을 생성하는 오버헤드가 발생
  • HTTP/1.1은 이러한 문제를 지속 커넥션(Persistent Connection) 이라는 지정한 타임아웃만큼 커넥션을 종료하지 않는 방식으로 해결
  • 파이프라이닝(Pipelining) 을 지원하여 요청의 응답 지연을 감소하며, 파이프라이닝에서 HTTP 요청은 연속적이며, 순차적으로 전달
  • 기존에는 요청한 이후에 응답을 기다리고 그 다음 요청을 보내며, 파이프라이닝에서는 필요한 모든 자원에 대한 요청을 순차적으로 서버로 전송한 다음 모든 요청에 대한 응답을 한 번에 기다리게 됨
  • HTTP/1.1은 1.0 버전에 비해 상당히 개선됐지만 여전히 문제가 존재하며, 대표적으로 Head-of-Line Blocking(HOL Blocking) 문제가 있으며, 만약 3개의 요청을 파이프라인을 통해 전송을 한다고 했을 때, 서버는 모든 요청을 순서에 맞춰서 응답해야 함
  • 이때 첫 번째 요청이 오래 걸린다고 하면, 나머지 요청은 첫 번째 요청의 처리를 기다려야 하며, 1.1 버전은 매 요청마다 동일한 헤더를 반복하여 전송한다는 문제점도 존재

●HTTP/2.0

  • HTTT/1.1는 메시지를 일반 텍스트 형식으로 전송했으며, 2.0부터는 기존 HTTP 메시지를 프레임이라는 단위로 분할하고 이를 바이너리 형태로 만들어서 전송하며, 기존 1.1 버전에 비해 파싱 및 전송 속도가 향상
  • HTTP/2.0 부터는 멀티플렉싱(Multiplexing) 을 지원하며, 하나의 커넥션을 사용하여 요청과 응답을 병렬로 처리할 수 있는 방식
  • 클라이언트가 서버로 여러 요청을 동시에 보내도 각 요청이 독립적으로 처리되기 때문에 애플리케이션 레이어의 HOL Blocking 문제를 해결하며, HPACK 헤더 압축 방식을 사용해 반복되는 헤더를 효율적으로 관리하여 대역폭 사용이 최적화
profile
신입개발자

0개의 댓글