HTTP/2
HTTP/2는 HTTP 1.1 프로토콜의 진화로, 기본적으로 네트워크를
사용할 때 더 효율적이려고 합니다. 의미론은 동일하므로 이전
프로토콜과 호환되도록 설계되었습니다.
HTTP 1.1 제한 사항
HTTP 1.1은 연결당 하나의 요청만 처리하도록 제한되므로, 일반적으로
클라이언트는 서버에서 파일을 요청하기 위해 둘 이상의 연결을 사용합니다. 그러나
이는 문제를 야기합니다. 열린 TCP 연결이 너무 많으면 서버 리소스를
사용하기 위한 클라이언트 간 경쟁이 발생하고, 더 많은 클라이언트가 서버에
연결할수록 성능이 점점 더 낮아지기 때문입니다.
주요 기능
- HTTP/2는 바이너리 프로토콜입니다(HTTP 1.1은 텍스트 프로토콜임을
기억하십시오).
- HTTP/2는 TLS와 ALPN을 통해 작동합니다.
- 멀티플렉싱됩니다(단일 TCP 연결을 통해 둘 이상의
요청을 보낼 수 있음).
- 서버는 클라이언트에 응답을 푸시할 수 있습니다.
- Round Trip Times를 줄여 클라이언트가
더 빠르게 로드할 수 있습니다.
HTTP/2는 다른 개선 사항을 도입합니다. 자세한 내용: RFC7540.
HTTP/2는 ALPN 프로토콜을 요구하므로
우리의 사용자 지정 Indy 버전이 필요합니다.
구성 요소
- TsgcHTTP2Client: HTTP/2 프로토콜을 완전히 지원하는 클라이언트 구성 요소(sgcWebSockets 100% Pascal 코드, 외부 라이브러리 없음).
- TsgcWebSocketHTTPServer:
HTTP/2 프로토콜을 완전히 지원하는 서버 구성 요소(sgcWebSockets
100% Pascal 코드, 외부 라이브러리 없음). 기본적으로 HTTP/2는
비활성화되어 있으며, HTTPOptions 속성을 사용하여 활성화하고 Enable
= true로 설정할 수 있습니다.
- TsgcWebSocketServer_HTTPAPI: HTTP/2 프로토콜을 지원하는 서버 구성 요소(Microsoft 구현이며 Windows 2016+ 또는 Windows 10+가 필요함).
- DataSnap
Servers: datasnap 서버도 HTTP/2 프로토콜을 지원할 수 있습니다.
APIs