본문 바로가기

네트워크

[네트워크] HTTP의 버전별 특징

HTTP는 1989년에 Tim Berners-Lee 선생님을 필두로 한 CERN 기관의 연구자들이 개발했다고 한다. 그리고 기술 면접을 준비하는 필자와 같은 개발자 지망생들이 알아둬야할것은 이처럼 나름의 긴 역사를 가진 HTTP가 어떻게 업데이트되왔고, 버전마다 어떤 특징을 가지고 있는지라고 생각한다. 이 글에서는 HTTP 1.0이전의 버전에 관해서는 다루지 않겠다 

HTTP 1.0

1. 단일 연결 (Single Connection) 

단일 연결이라 함은 요청을 보내고, 이 요청을 처리하고, 그게 끝이라는 것이다. 이를 클라이언트-서버 모델의 관점에서 보면 말 그대로 클라이언트는 요청을 서버로 보내고 서버는 요청에 대한 응답을 제공한다는 의미이다. 

 

2. 평문 통신 (Plain Text Communication)

이는 HTTP 1.0, 1.1, 2.0, 3.0 모두 HTTP는 기본적으로 평문 통신을 지원한다. 이는 데이터를 전송할때 이를 암호화하지 않는 다는 의미이다. 

 

3. Connection 헤더 사용

클라이언트가 서버와의 연결을 지속할지 끊을지를 결정한다는 의미이다. 

 

HTTP 1.0의 단점

이처럼 HTTP 1.0은 간결하고, 깔끔해보일 수 있지만, 단일 연결을 제공하기에 여러 개의 리소스를 처리하기에는 비효율적이다. 예를 들어, 만약 HTTP 1.0에서 발전을 멈추었다면 우리가 현재 일상적으로 쓰고 있는 넷플릭스, 네이버 스포츠 같은 실시간 스트리밍 기능 또한 사용하지 못했을 것이다. 또한 평문 통신의 특성으로 인해 나중에 더 자세하기 밝힐 보안상의 취약점이 존재한다. 

 

HTTP 1.1

이렇듯 HTTP는 깔끔하지만 단점이 명확했고, 조금 더 지속적인 연결성을 가지고, 한번에 복수의 요청을 처리하기 위해 HTTP 1.1이 등장한다.

HTTP 1.1의 특징은 다음과 같다.

 

1. 지속적 연결 (Persistent Connection)

여러 개의 요청과 응답을 하나의 연결에서 처리할 수 있다.

 

2. 파이프라이닝 (Pipelining)

여러 요청을 한 번에 보내고, 순서대로 응답을 받을 수 있다. 

  • 장점:
    • 여러 리소스를 처리하기에 효율적으로 개선되었다
    • 가상 호스팅을 지원하여 여러 도메인을 하나의 IP 주소로 호스팅 가능 하다
  • 단점:
    • 하나의 커넥션에 여러개의 요청이 들어 있을 뿐, 동시에 여러개의 요청을 처리해 응답으로 보내주는 것은 아니다 (multiplexing 되지는 않는다)
      • 앞 요청의 응답이 너무 오래걸리면 뒤 요청은 Blocking 된다 (Head-of-Line(HOL))

HTTP 2.0

이전 버전인 HTTP 1.1은 1.0에 비해 여러개의 요청을 처리할 수는 있었지만 이 작업이 병렬적으로 이루어지는 것은 아니며, 당시 네트워크 환경에 따라 지연이 발생했을 경우, 이후의 요청은 Blocking 될 수 있다는 단점이 있다. 이런 단점을 보완하고자 나온 것인 HTTP 2.0이다. 

HTTP 2.0의 특징은 다음과 같다 

 

1. 이진 프레임 (Binary Frames)

웹과 서버 간에 데이터를 주고받을 때, 이전에는 텍스트를 주고 받았다면, HTTP 2.0부터는 이진 코드를 사용해서 정보를 더 빠르게 주고받게 되었다. 이로 인해 파싱 속도가 개선됨으로서 웹 페이지의 로딩이 더욱 빨라졌다.

 

2. 다중화 (Multiplexed Streams)

하나의 연결에서 여러 개의 요청과 응답을 병렬로 처리할 수 있다. 

웹 페이지를 로딩할 때 필요한 모든 자료(이미지, 텍스트 등)를 한 번에 요청하고 받을 수 있게 해줘서, 페이지가 더 빠르게 열리게 되었다.

 

3. 서버 푸시 (Server Push)

서버가 클라이언트에게 요청하지 않은 리소스를 미리 전송할 수 있다. 

예를 들어, HTTP 2.0부터는 우리가 웹 페이지를 열 때, 서버가 사용자가 필요로 할 것 같은 추가 자료들(예: 스타일시트, 스크립트 파일 등)을 미리 사용자에게 보내준다. 사용자는 그 자료를 따로 요청하지 않아도 되기 때문에, 웹 페이지가 전체적으로 더 빠르게 로딩됩니다.

  • 장점:
    • 다중화와 헤더 압축으로 인한 효율적인 통신이 가능 하다

 

HTTP 3.0

HTTP 3.0의 특징은 다음과 같다. 

 

QUIC 프로토콜 기반

HTTP 3.0의 가장 큰 특징은 TCP 대신 UDP 기반의 QUIC 프로토콜을 사용한다는 것이다. UDP가 무엇인지에 대해서는 나중에 자세하게 다뤄보겠다. 일단은 이로 인해 연결 설정 시간을 줄이고, 패킷 손실 발생 시의 성능 저하 문제를 개선했다고 이해하면 좋을 것 같다. 

  • 장점:
    • 연결 설정 및 초기화 속도를 개선하여 성능이 향상되었다