learning center banner

HTTP/2는 무엇인가요?

HTTP/2가 해결하는 문제와 그 장점, HTTP/3와 HTTP/2의 비교

HTTP/2 (원래 HTTP 2.0이라고 불림)은 월드 와이드 웹을 위해 사용되는 하이퍼텍스트 전송 프로토콜의 두 번째 버전입니다. 주로 SPDY 프로토콜을 기반으로 하며, HTTP 헤더 필드의 데이터 압축, 데이터 전송의 멀티플렉싱, 서버 푸시와 같은 조치를 구현하여 네트워크 지연 시간을 줄이고 클라이언트 페이지 로드 속도를 향상시킵니다. HTTP/2는 여전히 HTTP 요청 메서드, 상태 코드 및 헤더 필드를 활용하며, HTTP의 응용 의미를 변경하지 않습니다. 주로 메시지 전송 형식을 수정하여 이진 프레이밍 도입을 통해 성능을 향상시킵니다.

HTTP/2는 어떤 문제를 해결합니까?

HTTP는 가장 널리 사용되는 인터넷 애플리케이션 프로토콜입니다. 초기 HTTP 프로토콜 버전은 단순했습니다: HTTP/0.9는 단 한 줄의 프로토콜로 월드 와이드 웹을 시작했으며; HTTP/1.0는 인기 있는 HTTP/0.9를 확장한 공식 사양이었습니다; HTTP/1.1이 IETF에 의해 최초의 공식 표준으로 발표되기까지는 시간이 걸렸습니다. 초기 단계에서의 단순함은 애플리케이션 성능의 대가를 치렀습니다: HTTP/1.1은 동시성을 달성하고 지연 시간을 줄이기 위해 클라이언트가 여러 연결을 사용해야 했고; HTTP/1.1은 요청 및 응답 헤더 필드를 압축하지 않아 불필요한 네트워크 트래픽을 초래했습니다; HTTP/1.1은 효과적인 리소스 우선 순위를 지원하지 않아 기본 TCP 연결의 활용도가 낮아졌습니다.

네트워크 애플리케이션이 사람들의 일상 생활에 통합됨에 따라 그 범위, 복잡성 및 중요성이 계속 확장되었습니다. HTTP 프로토콜의 문제를 해결하기 위해 HTTP/2가 도입되었습니다. HTTP/2는 HTTP의 요청 메서드, 상태 코드 및 헤더 필드를 계속 사용하며, 응용 의미를 변경하지 않았습니다. 주로 메시지 전송 형식을 수정하여 네트워크 지연 시간을 줄이고 클라이언트 페이지 로드 속도를 개선하는 데 기여합니다.

HTTP/2와 HTTP/1.1 비교

HTTP/2와 HTTP/1.1은 웹 페이지 및 기타 리소스를 네트워크를 통해 전송하는 데 사용되는 두 가지 다른 버전의 HTTP(하이퍼텍스트 전송 프로토콜)입니다. 두 가지 사이에는 몇 가지 주요 차이점이 있습니다:

  1. 이진 프로토콜: HTTP/2는 이진 프로토콜을 사용하는 반면, HTTP/1.1은 텍스트 기반 프로토콜을 사용합니다. 이진 프로토콜은 구문 분석이 더 쉽고, 효율적이며, 오류가 발생할 가능성이 적습니다.
  2. 멀티플렉싱: HTTP/2는 멀티플렉싱을 지원하여 하나의 TCP 연결을 통해 여러 요청 및 응답을 동시에 전송하고 수신할 수 있습니다. 이는 지연 시간을 줄이고 리소스 활용도를 개선합니다. 반면, HTTP/1.1은 비슷한 기능을 달성하기 위해 여러 TCP 연결을 사용하지만 효율성이 떨어집니다.
  3. 헤더 압축: HTTP/2는 HPACK 압축 알고리즘을 사용하여 HTTP 헤더 정보를 압축하여 전송되는 데이터의 크기를 줄입니다. 이는 특히 저대역폭 환경에서 성능 향상에 도움이 됩니다. HTTP/1.1은 헤더 압축을 지원하지 않습니다.
  4. 서버 푸시: HTTP/2는 서버 푸시를 지원하여 서버가 클라이언트가 요청하기 전에 리소스를 적극적으로 보낼 수 있게 합니다. 이는 왕복 시간을 줄이고 성능을 향상시키는 데 도움을 줍니다. HTTP/1.1은 이 기능을 지원하지 않습니다.
  5. 스트림 우선 순위 지정: HTTP/2는 서로 다른 요청의 우선 순위를 지정하여 더 중요한 리소스를 더 빨리 전송할 수 있도록 합니다. HTTP/1.1은 이러한 기능이 없습니다.

HTTP/2는 HTTP/1.1에 비해 성능, 효율성 및 기능에서 상당한 개선을 제공합니다. 따라서 현대 웹 애플리케이션에 더 나은 선택입니다. 그러나 일부 구형 클라이언트와 서버는 여전히 HTTP/1.1만 지원할 수 있습니다. 실제로는 서버가 두 프로토콜 모두를 지원하도록 하여 향후 호환성과 최대 성능 이점을 확보하는 것이 가장 좋습니다.

HTTP/2와 HTTP/3 비교

HTTP/3, 또한 QUIC(Quick UDP Internet Connections)라고도 불리는 것은 HTTP의 최신 버전으로, HTTP/2에 비해 많은 이점을 제공합니다:

  1. 지연 시간 감소: HTTP/3는 QUIC를 사용하여 UDP를 통해 운영되어 연결 설정 시간과 전체 지연 시간을 줄입니다.
  2. 개선된 혼잡 제어: QUIC에는 개선된 혼잡 제어 메커니즘이 포함되어 있어 패킷 손실이나 높은 지연 시간 상황에서 더 나은 성능을 발휘할 수 있습니다.
  3. 멀티플렉싱: HTTP/3는 보다 효율적인 멀티플렉싱을 허용하여 단일 연결을 통해 여러 스트림을 보낼 수 있으며, 헤드 오브 라인 차단 문제를 해결합니다.
  4. 보안: QUIC는 전송 계층에서 보안을 제공하는 내장 암호화를 포함하여 HTTP/2에서 TLS의 선택적 사용보다 개선되었습니다.
  5. 더 나은 오류 수정: QUIC은 패킷 손실 및 재전송의 영향을 완화하는 데 도움이 되는 개선된 오류 수정 메커니즘을 포함합니다.

이러한 이점들 덕분에 HTTP/3는 HTTP/2보다 웹 성능과 보안을 개선할 수 있는 매력적인 옵션입니다.

curl HTTP/2

curl 명령어를 사용하여 HTTP/2 요청을 할 수 있습니다. 이를 위해서는 curl의 버전이 HTTP/2를 지원해야 합니다. 다음을 실행하여 확인할 수 있습니다:

curl --version

그리고 기능 목록에서 HTTP2를 찾아야 합니다. 버전이 HTTP/2를 지원하는 경우, 다음과 같이 

-http2

 플래그를 사용하여 HTTP/2를 활성화할 수 있습니다:

curl -v --http2 https://example.com

결론

텐센트 클라우드의 EdgeOne 서비스는 HTTP/2, HTTP/3와 같은 현대 프로토콜을 광범위하게 지원합니다. 각 프로토콜의 지원 방법은 다음과 같습니다:

  1. EdgeOne은 HTTP/2 프로토콜을 지원하며, 이는 이전 HTTP/1.x 프로토콜에 비해 성능이 크게 향상됩니다. 앞서 언급한 바와 같이, 이는 이진 프레이밍, 멀티플렉싱, 서버 푸시, 헤더 압축 및 스트림 우선 순위 지정의 이점을 포함합니다. 결과적으로 복잡하고 리소스를 많이 요구하는 웹사이트의 사이트 속도와 신뢰성이 개선됩니다.
  2. EdgeOne은 HTTP/3 (QUIC) 요청을 지원하여 사이트 요청을 더욱 가속화하고 데이터 전송 효율성과 보안을 개선합니다. HTTP/3는 TCP 대신 QUIC를 전송 프로토콜로 사용하여 왕복 시간을 줄이고 웹 콘텐츠의 전달 속도를 높이는 데 도움을 줍니다.