HTTP2와 HTTP3
HTTP/2
HTTP/2 개요
-
HTTP/2는 HTTP/1.1의 단점을 보완하고 새로운 기능을 추가하여 웹 성능을 향상 시키기 위해 개발된 프로토콜이다. 이는 구글의 SPDY 프로토콜을 기반으로 표준화되었다.
-
HTTP/2는 TCP 프로토콜 위에서 동작하며, 여러 개의 데이터 요청을 하나의 TCP 연결을 통해 병렬로 전송할 수 있는 멀티플렉싱을 지원한다.
HTTP/2 장점
-
멀티플렉싱: 여러 개의 요청과 응답을 하나의 TCP 연결에서 동시에 전송할 수 있어, Head-of-Line Blocking(HOLB) 문제를 부분적으로 해결한다. 이는 여러 스트림을 통해 데이터를 전송할 수 있게 해준다.
-
헤더 압축: HTTP 메시지의 헤더를 압축하여 전송하는 HPACK 알고리즘을 사용한다. 이는 중복되는 헤더 값을 테이블에 저장하고 참고하는 방식으로, 헤더의 크기를 줄여준다.
-
바이너리 프로토콜: 텍스트 프로토콜에서 바이너리 프로토콜로 전환되어, 명령어를 더 단순하게 구현할 수 있다.
-
서버 푸시: 서버는 요청되지 않았지만 향후 요청에서 예상되는 추가 정보를 클라이언트에 전송할 수 있다.
HTTP/2 단점
-
TCP의 한계: TCP 프로토콜을 사용하기 떄문에, TCP의 핸드셰이크 과정과 패킷 손실에 따른 재전송 지연 등이 여전히 존재한다. 이는 HOLB 문제를 완전히 해결하지 못 한다.
-
패킷 손실: 하나의 TCP 연결에서 여러 개의 스트림이 동작하기 때문에, 패킷 손실이 발생하면 전체 연결이 영향을 받을 수 있다.
HTTP/3
HTTP/3 개요
-
HTTP/3은 HTTP/2의 장점들을 유지하면서 TCP가 가지는 원초적인 단점을 보완하기 위해 개발된 프로토콜이다. HTTP/3은 QUIC(Quick UDP Internet Connections)프로토콜을 기반으로 한다.
-
QUIC는 UDP를 사용하여 통신하며, 이는 TCP의 핸드셰이크 과정과 패킷 손실에 따른 재전송 지연을 줄이는 데 중점을 두었다.
HTTP/3 장점
-
QUIC 기반: UDP를 사용하여 통신하기 때문에, TCP의 핸드셰이크 과정과 HOLB 문제를 완전히 해결할 수 있다. 이는 연결 설정에 필요한 정보와 데이터를 첫 전째 핸드셰이크 때 함께 보내서 RTT(Round Trip Time)를 줄인다.
-
빠른 패킷 손실 감지: QUIC는 패킷 손실을 빠르게 감지하고 재전송할 수 있어, 전반적인 통신 속도를 향상시킨다.
-
연결 유지: 사용자 IP가 변경되더라도 연결을 유지할 수 있다.
-
보안 강화: QUIC 내에 TLS가 기본적으로 포함되어 있어, 헤더 영역도 암호화 된다.
HTTP/3 단점
-
도입 초기 단계: 현재 HTTP/3은 아직 도입 초기 단계에 있으며, 더 많은 수정과 발전이 필요하다.
-
인프라 의존성: 통신 인프라가 빈약한 지역에서는 큰 차이를 느낄 수 있지만, 잘 발달된 통신 인프라를 가진 지역에서는 체감할 수 있는 차이가 적을 수 있다.
주요 차이점
전송 프로토콜
-
HTTP/2: TCP를 사용한다.
-
HTTP/3: UDP를 기반으로 하는 QUIC 프로토콜을 사용한다.
HOLB 문제
-
HTTP/2: HOLB 문제를 부분적으로 해결하지만, TCP의 한계로 인해 완전히 해결하지 못 한다.
-
HTTP/3: QUIC을 통해 HOLB 문제를 완전히 해결한다.
핸드셰이크 과정:
-
HTTP/2: TCP와 TLS의 핸드셰이크 과정으로 인해 3RTT가 필요하다.
-
HTTP/3: 첫 번째 핸드셰이크 때 연결 설정에 필요한 정보와 데이터를 함께 보내서 1RTT로 줄인다.
패킷 손실 대응:
-
HTTP/2: TCP의 재전송 메커니즘으로 인해 패킷 손실이 발생하면 전체 연결이 영향 받을 수 있다.
-
HTTP/3: QUIC를 통해 빠르게 패킷 손실을 감지하고 재전송할 수 있다.
추가로 알면 좋은 것들
멀티플레싱과 스트림:
- HTTP/2와 HTTP/3 모두 멀티플렉싱을 지원하여 여러 개의 요청과 응답을 하나의 연결에서 동시에 전송할 수 있다.
그러나 HTTP/3은 독립 스트림 방식으로 더 강화된 멀티플렉싱을 제공한다.
보안:
- HTTP/3은 QUIC 내에 TLS가 기본적으로 포함되어 있어, 보안을 더욱 강화한다.
HTTPS:
- HTTP/2와 HTTP/3 모두 HTTPS를 필수로 사용한다. 따라서 보안 인증서 관리가 중요하다.
블로그 내 관련 문서
참고 자료
출처 :