<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 |