프로토콜
HTTP1.1
- 텍스트 기반 프로토콜
- 사람이 읽을 수 있는 방식
HTTP2
- 이진 프로토콜(Binary Format)
- 데이터 전송이나 처리가 더 효율적.
요청 처리 방식
HTTP1.1
- 하나의 TCP 연결에서 순차적으로 처리 함.
- HOL Blocking 문제 발생
HTTP2
- 멀티플렉싱(Multiplexing)
- 단일 TCP 연결에서 여러 요청과 응답을 병렬로 처리.
- 우선 순위 설정 가능
- 각 스트림에 우선순위를 설정하여 중요한 데이터 먼저 전송 가능.
- 서버 푸쉬
- 서버가 클라이언트 요청 없이도 추가 데이터 푸시 가능.
- 예) 클라이언트가 HTML 을 요청하면 연관된 JS, CSS 파일을 푸시.
헤더 처리
HTTP1.1
- 요청마다 반복적으로 전체 헤더를 전송(불필요한 대역폭 사용)
HTTP2
- HPACK 헤더 압축으로 중복 제거 및 전송 크기 감소.
예시
HTTP1.1
- 클라이언트가 서버에 HTML 요청 → 응답 완료 후,
- CSS 요청 → 응답 완료 후,
- JS 요청 → 응답 완료.
- 요청을 순차적으로 처리하여 대기 시간 발생.
HTTP2
- 클라이언트가 HTML, CSS, JS 를 동시에 요청.
- 병렬로 처리 가능하여 빠르게 응답.
- 멀티플렉싱으로 병렬 처리, 대기 시간 감소.
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
'개발공부 개발새발 > etc' 카테고리의 다른 글
Kafka ) 변신의 카프카가 아니라 Apache Kafka 에 관하여 (0) | 2024.06.13 |
---|---|
SSE ) Server-Sent Message (0) | 2024.02.26 |
배웠던 것을 정리하는 그런 notion 을 작성했다면 믿으시겠습니까 ? (0) | 2023.07.17 |
클라우드 교육 정리와 후기! (0) | 2023.07.16 |
Mac M2 칩에서 오라클 실행 저장용 (0) | 2023.05.09 |