HTTP 버전별 설명
HTTP 버전별 설명
HTTP(Hypertext Transfer Protocol)는 인터넷에서 데이터를 주고받는 프로토콜입니다. 이전 버전에서는 주로 텍스트 데이터를 주고받았지만, 최근 버전에서는 이미지, 비디오 등 다양한 형식의 데이터를 주고받을 수 있게 되었습니다. 여러 버전의 HTTP가 있지만 가장 많이 사용되는 것은 HTTP/1.1, HTTP/2, HTTP/3입니다.
HTTP 1.0
- HTTP/1.0 : 1996년에 처음 등장한 HTTP 버전으로, 요청(Request)과 응답(Response) 모델을 사용하여 텍스트 데이터를 주고받습니다. HTTP/0.9보다 발전한 버전으로, 요청 헤더에 버전 정보를 포함하지 않습니다.
- 1996년에 발표된 첫 번째 버전입니다.
- 클라이언트와 서버 사이의 연결을 매번 새로 생성하고, 응답이 도착할 때까지 다른 작업을 할 수 없는 단점이 있습니다.
- 이러한 문제를 해결하기 위해 Keep-Alive 기능을 도입하였습니다.
HTTP 1.1
- HTTP/1.1 : 1999년에 출시된 HTTP 버전으로, 요청과 응답의 모델은 HTTP/1.0과 동일하지만 다수의 개선 사항이 추가되었습니다. Connection 헤더와 Keep-Alive 연결 지원, Chunked Transfer Encoding, 다중 도메인 지원 등이 추가되었습니다. 이전 버전과는 다르게 클라이언트와 서버 간의 연결이 유지되면서 여러 요청을 동시에 처리할 수 있게 되어 성능 향상을 이룰 수 있게 되었습니다.
- 1999년에 발표된 두 번째 버전입니다.
- Keep-Alive 기능이 기본으로 포함되어 있어, 한 번 연결하면 여러 개의 요청과 응답을 주고받을 수 있습니다.
- 하지만 여전히 여러 개의 요청을 보낼 때 순차적으로 처리해야 하는 문제가 있어, 성능 이슈가 발생할 수 있습니다.
HTTP 2
- HTTP/2 : 2015년에 등장한 HTTP 버전으로, 요청과 응답을 프레임으로 나누어 전송합니다. 이전 버전과는 달리 텍스트 데이터뿐 아니라 이미지, 비디오 등 다양한 형식의 데이터를 빠르게 전송할 수 있습니다. Server Push, Header Compression, Stream Prioritization 등의 기능을 추가하여 전송 속도를 높였습니다.
- 2015년에 발표된 세 번째 버전입니다.
- 여러 개의 요청과 응답을 동시에 처리할 수 있어 성능이 대폭 개선되었습니다.
- 하나의 연결로 여러 개의 요청과 응답을 처리할 수 있습니다. 이를 위해 이진 프로토콜을 사용하고, 헤더 압축 기능을 도입하였습니다.
HTTP 3
- HTTP/3 : 2020년에 출시된 HTTP 버전으로, UDP 프로토콜을 사용하여 데이터를 전송합니다. QUIC(Quick UDP Internet Connections) 프로토콜을 기반으로 만들어졌으며, 기존 버전과는 달리 연결 설정이 하나의 요청에서 이루어지므로 성능이 향상되었습니다. 또한, TCP의 혼잡 제어 문제를 개선하여 더욱 빠른 속도를 보장합니다.
- 2020년에 발표된 네 번째 버전입니다.
- TCP 대신에 QUIC 프로토콜을 사용합니다. QUIC는 UDP 기반으로 동작하며, 기존 TCP의 성능 이슈를 개선합니다.
- 서버와 클라이언트 간의 암호화를 강화하였습니다.
- HTTP/2와 마찬가지로 이진 프로토콜과 헤더 압축 기능을 사용합니다.
따라서, HTTP/2와 HTTP/3는 HTTP/1.x보다 더 빠른 성능을 제공하며, 보안과 암호화 측면에서 강화되었습니다.
HTTP 프로토콜 스택 전환 및 비교
HTTP 버전에 따른 통신 방법의 차이점
HTTP 버전 | 통신 방법 |
HTTP/1.0 | 클라이언트의 요청에 대해 서버는 응답을 보낸 후에 연결을 끊습니다. |
HTTP/1.1 | Keep-Alive라는 기능이 추가되어 연결을 유지한 채로 여러 요청과 응답을 처리할 수 있게 되었습니다. |
HTTP/2 | 이전 HTTP 버전들과는 다르게 하나의 TCP 연결로 여러 개의 요청과 응답을 처리할 수 있게 되었습니다. |
HTTP/3 | TCP 대신에 QUIC 프로토콜을 사용하며, 이전 HTTP 버전들과 마찬가지로 하나의 연결에서 여러 개의 요청과 응답을 처리합니다. |
QUIC 프로토콜란
QUIC(Quick UDP Internet Connection)은 구글에서 개발한 네트워크 프로토콜로, TCP와 UDP의 기능을 결합한 것으로, 안정적인 연결과 빠른 데이터 전송을 제공합니다.
QUIC은 UDP 프로토콜을 기반으로 하며, 데이터를 패킷 단위로 분할하여 전송하며, 패킷의 손상 여부를 확인하고 재전송하는 기능 등을 포함하고 있습니다. 또한, HTTP/2의 멀티플렉싱 기능을 포함하고 있어, 여러 개의 요청과 응답을 동시에 처리할 수 있습니다.
QUIC은 TLS(Transport Layer Security) 암호화를 기본으로 제공하므로, 보안성이 높은 통신이 가능합니다. 또한, NAT(Network Address Translation) 환경에서도 안정적인 연결이 가능하여, 이동 중인 모바일 기기 등에서도 빠른 속도로 데이터를 전송할 수 있습니다.
QUIC은 현재 Google Chrome, Mozilla Firefox, Microsoft Edge 등에서 지원하고 있으며, HTTP/3 프로토콜의 기반 기술로 사용되고 있습니다.
Stream-Multiplexing
참고URL
- https://peering.google.com/#/learn-more/quic