HTTP/1.1
HTTP/1.0에서 발전한 것이 바로 HTTP/1.1이다. 매번 TCP 연결을 하는 것이 아니라 한 번 TCP 초기화를 한 이후에 keep-alive라는 옵션으로 여러 개의 파일을 송수신할 수 있게 바뀌었다. 한 번 3-way-handshake가 발생하면 그다음부터 발생하지 않는다.
1.1의 헤더에는 쿠키 등 많은 메타데이터가 들어있고 압축이 되지 않아 무겁다. 또한 직렬처리로 인해 순차적으로 데이터를 보낼 때, 한 번에 하나씩 보내므로 HOL Blocking이 발생한다. 네트워크에서 같은 큐에 있는 패킷이 지연되는 현상을 말한다.
HTTP/2
HTTP/2는 지연시간을 줄이고 응답시간을 더 빠르게 할 수 있다. 멀티플렉싱, 헤더 압축, 서버 푸기, 요청의 우선순위 처리를 지원한다.
멀티플렉싱
멀티플렉싱이란 여러 개의 스트림을 사용하여 송수신한다는 것이다. 이를 통해 요청간 순서를 기다릴 필요가 없어지게 되므로 빠른 전송이 가능하다.
헤더 압축
HTTP/1.1에서 헤더의 크기가 너무 컸다. 허프만 코딩 압축 알고리즘을 사용하여 HPACK 압축 형식을 갖는다.
서버 푸시
HTTP/1.1에서는 클라이언트가 서버에 요청을 해야 파일을 다운로드 받을 수 있었지만, HTTP/2는 클라이언트 요청 없이 서버가 바로 리소스를 푸시할 수 있다. html을 읽으면서 css,js 파일을 한번에 서버에서 푸시하여 클라이언트에 먼저 줄 수 있다.
항목 | HTTP/1.1 | HTTP/2 |
요청 처리 방식 | 직렬 처리 (한 번에 하나씩) | 병렬 처리 (한 연결로 여러 개 요청 처리) |
헤더 압축 | 없음 (매번 전체 헤더 전송) | 있음 (HPACK으로 헤더 압축) |
연결 방식 | 요청마다 개별 연결 또는 Keep-Alive 사용 | 하나의 TCP 연결에서 멀티플렉싱 |
성능 | 느림. 많은 요청 시 지연 | 빠름. 지연 시간 줄고 대역폭 절약 |
서버 푸시 | 지원 안 함 | 지원함 (서버가 미리 리소스를 보낼 수 있음) |
요청 우선순위 | 없음 | 있음 (클라이언트가 요청 우선순위 지정 가능) |
'Network' 카테고리의 다른 글
[Network] 공인(Public) IP vs 사설(Private) IP (2) | 2025.06.14 |
---|---|
[Network] ARP vs RARP (1) | 2025.06.13 |
[Network] TCP vs UDP 차이가 무엇일까? (1) | 2025.06.11 |