본문 바로가기
개발공부 개발새발/Network

HTTP 1.1 과 HTTP 2 의 차이 !?

by 휴일이 2025. 1. 12.

피곤해..

프로토콜

HTTP1.1

  • 텍스트 기반 프로토콜
  • 사람이 읽을 수 있는 방식

HTTP2

  • 이진 프로토콜(Binary Format)
  • 데이터 전송이나 처리가 더 효율적.

요청 처리 방식

HTTP1.1

  • 하나의 TCP 연결에서 순차적으로 처리 함.
    • HOL Blocking 문제 발생

HTTP2

  • 멀티플렉싱
    • 단일 TCP 연결에서 여러 요청과 응답을 병렬로 처리.
  • 우선 순위 설정 가능
    • 각 스트림에 우선순위를 설정하여 중요한 데이터 먼저 전송 가능.
  • 서버 푸쉬
    • 서버가 클라이언트 요청 없이도 추가 데이터 푸시 가능.
    • 예) 클라이언트가 HTML 을 요청하면 연관된 JS, CSS 파일을 푸시.

헤더 처리

HTTP1.1

  • 요청마다 반복적으로 전체 헤더를 전송(불필요한 대역폭 사용)

HTTP2

  • HPACK 헤더 압축으로 중복 제거 및 전송 크기 감소.

예시

HTTP1.1

  1. 클라이언트가 서버에 HTML 요청 → 응답 완료 후,
  2. CSS 요청 → 응답 완료 후,
  3. JS 요청 → 응답 완료.
  • 요청을 순차적으로 처리하여 대기 시간 발생.

HTTP2

  1. 클라이언트가 HTML, CSS, JS 를 동시에 요청.
  2. 병렬로 처리 가능하여 빠르게 응답.
  • 멀티플렉싱으로 병렬 처리, 대기 시간 감소.

HOL 블로킹 문제란?

네트워크 통신, 데이터 처리에서 → 앞선 요청이나 작업이 완료되지 않아 뒤따르는 요청이 지연되는 현상.

  • 주로 단일 TCP 연결에서 발생.

예시

예를 들어, HTTP1.1 에서는 HTML 을 요청하여 응답이 올 동안 CSS, JS 요청은 대기 상태.

→ 만약 HTML 요청이 지연되면 뒤따르는 CSS, JS 요청도 함께 지연 됨.

멀티 플렉싱 (Multiplexing)

  • 단일 TCP 연결에서 여러 요청을 병렬로 처리.
  • 요청과 응답이 stream 단위로 관리되어 서로 독립적임.

→ HTTP2 에서는 HTML 요청이 지연되더라도 JS, CSS 요청-응답은 지연되지 않음.

HPACK 알고리즘

HTTP2 에서 HTTP 헤더를 압축하기 위해 사용하는 알고리즘.

  • HTTP1.1 : 요청마다 헤더를 반복적으로 전송
    • 헤더 크기가 커질수록 대역폭 낭비.
  • HTTP2 : 중복 헤더는 제거, 데이터를 압축.

예시

HTTP1.1

  • Host, User-Agent 같은 헤더는 동일하더라도 계속 반복적으로 전송해야만 함.
  • 쿠키 같은 정보가 많아지면 헤더 크기가 커지고 네트워크 대역폭 낭비.

HTTP2

  • 헤더 필드를 압축하여 전송 크기가 줄어듬
    • Huffman Encoding 을 사용해 데이터 크기 최소화.
  • 요청/응답에 사용된 헤더를 테이블에 저장하여 이후 요청에서 재사용.
    • 동일 헤더를 다시 전송하지 않고 테이블에서 참조.
  • 인덱스 기반 참조
    • 새 요청이 동일한 헤더를 사용한다면 해당 헤더의 “인덱스 번호”만 전송.

작동 방식 예시

첫 번째 요청

GET /index.html
Host: www.example.com
User-Agent: Mozilla/5.0
  • HPACK 은 Host, User-Agent 를 테이블에 저장.

두 번째 요청

GET /about.html
  • 테이블에서 Host, User-Agent 를 참조하므로 추가 전송 불필요.

압축 전송

  • GET /abount.html, [1], [2] (테이블 인덱스 참조)

요약

특징 HTTP1.1 HTTP2
프로토콜 형식 텍스트 기반 이진(Binary) 기반
요청 처리 방식 순차 처리 (HOL Bocking 문제) 멀티 플렉싱 (동시 요청-응답 처리)
헤더 처리 중복 전송 (압축 없음) HPACK 압축으로 중복 제거
서버 푸시 지원하지 않음 클라이언트 요청 없이 리소스 푸시 가능
속도 및 효율성 느림 빠르고 효율적
우선순위 지원하지 않음 요청 우선순위 설정 가능
728x90

'개발공부 개발새발 > Network' 카테고리의 다른 글

Network ) CIDR  (0) 2024.09.20
통신을 도와주는 네트워크 주요 기술 (NAT, PAT, DNS, GSLB, DHCP)  (3) 2024.08.28
Network ) 로드밸런서  (0) 2024.07.26
Network ) 라우터  (0) 2024.07.19
Network ) 스위치  (0) 2024.06.14