본문 바로가기
웹 개발 (Frontend Developer)/네트워크

HTTP 버전별 차이점

by Jackykim 2024. 9. 26.

<HTTP /0.9>

최초 버전으로 GET 메서드만 지원하며 헤더 정보가 없었고, HTML 문서를 전송하는 용도로 사용됐습니다.

 

<HTTP/1.0>

0.9 버전 비해 POST, HEAD 메서드가 추가되었고, 헤더 정보를 전송할 수 있습니다. 상태 코드 라인도 응답의 시작 부분에 추가되어 브라우저 요청의 성공과 실패를 파악할 수 있습니다.

- 한계는 하나의 연결당 하나의 요청과 응답만 처리할 수 있었습니다.

 

<HTTP/1.1>

다수의 메서드와 헤더 필드를 추가하였으며 Persistent Connection 기능이 추가되면서 연결이 끊기지 않고 응답 속도가 단축되었습니다. Chunked Transfer encoding, Keep alive 등 기술들이 도입됐고, 여러 요청을 순차적으로 처리하는 기존 방식에서 벗어나, 동시에 여러 요청을 처리할 수 있도록 개선했습니다.

- 한계는 Head of Line blocking (응답이 너무 오래 걸리면 뒤 요청은 Blocking 되는 사태)와 Header 구조의 중복 문제가 있습니다.

 

<HTTP/2>

바이너리 프로토콜을 도입하여 헤더 압축 및 다중화(Multiplexing)를 지원합니다. Multiplexed Streams는 Stream으로 요청 / 응답이 교환되어 동시에 여러 요청을 처리하는 것입니다. 또한 Stream prioritization 통해 리소스 간 우선순위를 설정할 수 있게 됐습니다.

요청 및 응답을 동시에 처리할 수 있으며, 서버 푸시(Server Push)를 지원하여 웹 페이지 로딩 속도를 개선합니다. Header compression은 요청과 응답의 헤더 메타데이터를 압축해서 오버헤드를 감소하는 것입니다.
HTTP/1.x에서는 동시에 하나의 요청만 처리할 수 있었지만, HTTP/2에서는 다수의 요청을 병렬 처리할 수 있어 성능을 크게 향상했습니다. 

**서버 푸시(Server Push)는 클라이언트가 요청하지 않은 리소스도 미리 전송해 웹 페이지 로딩 속도를 향상시키는 기술입니다**

- 한계는 TCP 고유의 HOL blocking이 존재 합니다.(하나 문제가 생기면 처리할 때까지 지연)

 

<HTTP/3>

- 기존의 TCP 프로토콜 대신 QUIC 프로토콜을 사용합니다. (TCP에서 사용하는 3단계 연결 과정(3-way handshake)을 최적화하여 더 빠른 연결을 제공합니다)
- 지연 시간을 줄이고 대역폭 효율성을 높여 성능을 개선합니다. (HOL blocking 해결)
- HTTP/2에서 도입된 기술을 보완하고, 보안성과 신뢰성을 높입니다.

'웹 개발 (Frontend Developer) > 네트워크' 카테고리의 다른 글

URL & URI & URN  (1) 2024.09.29
REST API  (5) 2024.09.27
HTTPS는?  (3) 2024.09.26
기본 HTTP에 대해 알아보기  (2) 2024.09.26
TCP & UDP  (0) 2024.09.25