HTTP/2 프로토콜

Delphi 및 C++Builder용 네이티브 HTTP/2 클라이언트 및 서버예요. 바이너리 프레이밍, 스트림 멀티플렉싱, HPACK 헤더 압축, ALPN 네고시에이션을 제공하며, IIS, Apache, Indy에 의존하지 않아요.

필요한 쪽을 선택하세요

두 가지 프로덕션 준비가 완료된 컴포넌트가 전체 HTTP/2 (RFC 9113) 와이어 프로토콜을 구현해요. 클라이언트로 HTTP/2 API를 소비하고, 서버로 HTTP/2 API를 게시하세요 — 또는 동일한 애플리케이션 내에서 둘 다 사용할 수 있어요.

TsgcHTTP2Client

네이티브 HTTP/2 클라이언트 — 단일 TLS 연결을 통한 멀티플렉싱된 GET/POST/PUT/DELETE, HPACK 압축 헤더, ALPN h2 업그레이드 또는 prior-knowledge h2c, 서버 푸시 처리 및 Bearer / Basic / NTLM 인증을 제공해요.

HTTP/2 클라이언트 열기 →

TsgcWebSocketHTTPServer

네이티브 HTTP/2 서버 — 동일한 WebSocket HTTP 서버가 하나의 TLS 포트에서 HTTP/1.1, HTTP/2 (h2) 및 WebSocket을 모두 서비스해요. ALPN 네고시에이션, 스트림 멀티플렉싱, HPACK 응답 및 선택적인 RFC 8441 WebSocket-over-HTTP/2 부트스트랩을 제공해요.

HTTP/2 서버 열기 →

sgcWebSockets의 HTTP/2

클라이언트와 WebSocket HTTP 서버 양쪽에 통합된 일류 HTTP/2 프레이밍 구현이에요.

컴포넌트

TsgcHTTP2Client
TsgcWebSocketHTTPServer

플랫폼

Windows, macOS, Linux, iOS, Android

에디션

클라이언트: Standard / Pro / Enterprise
서버: Pro / Enterprise

HTTP/2가 가져다주는 것

HTTP/1.1 대비 HTTP/2의 모든 장점을 별도의 웹 서버를 구동하지 않고 네이티브 Delphi/C++Builder 코드로 제공해요.

바이너리 프레이밍

요청과 응답은 바이너리 프레임으로 분할되며, 결정론적 상태 머신에 의해 파싱돼요. 더 이상 텍스트 라인 파싱이나 HTTP/1.1의 모호성이 없어요.

스트림 멀티플렉싱

수십 개의 진행 중 요청이 단일 TCP/TLS 연결을 공유해요 — HTTP 계층에서의 헤드-오브-라인 블로킹도, 요청마다 추가 소켓도 없어요.

HPACK 헤더 압축

내장 HPACK 인코더/디코더(RFC 7541)예요. 반복되는 쿠키, 인증 토큰, content-type 헤더는 첫 요청 이후 거의 0바이트만 소비해요.

ALPN 네고시에이션

TLS 핸드셰이크 중 피어가 h2http/1.1을 광고하고, 협상된 ALPN 값이 추가 왕복 없이 프로토콜을 선택해요.

Prior-knowledge h2c

신뢰할 수 있는 내부 링크와 서비스 메시 사이드카에서는 양쪽 모두 ALPN을 건너뛰고 HTTP2_PriorKnowledge를 통해 평문으로 HTTP/2를 시작할 수 있어요.

서버 푸시

서버는 능동적으로 PUSH_PROMISE 응답을 전송할 수 있고, 클라이언트는 OnHTTP2StreamData를 통해 이를 노출하여 캐싱에 활용할 수 있어요. 참고: 공개 웹에서는 사용이 중단되었지만 내부적으로는 여전히 유용해요.

스트림 우선순위

스트림별 우선순위와 종속성 힌트를 통해 중요한 응답(인증, 내비게이션, JSON-RPC 결과)이 동일 연결 위의 대용량 전송을 추월할 수 있어요.

플로우 컨트롤

스트림별 및 연결별 WINDOW_UPDATE 플로우 컨트롤은 큰 응답 하나가 작은 응답을 굶기는 것을 막아줘요 — SETTINGS 프레임을 통해 조정 가능해요.

OpenSSL 또는 SChannel을 통한 TLS

Windows 커널 TLS(DLL 불필요)는 TLSOptions.IOHandleriohSChannel로, 전체 크로스 플랫폼 1.2/1.3 지원은 iohOpenSSL로 설정하세요.

HTTP/2가 빛나는 곳

HTTP/2의 멀티플렉싱과 HPACK 절감 효과가 즉시 효과를 발휘하는 즉시 사용 가능한 시나리오예요.

Apple Push Notifications

Apple의 APNs 프로바이더 API는 HTTP/2를 요구해요. TsgcHTTP2Client가 토큰 기반 인증으로 Apple Push 컴포넌트를 처음부터 끝까지 구동해요.

Firebase Cloud Messaging

Google의 FCM HTTP v1 API는 HTTP/2 위에서 동작해요. 동일한 컴포넌트가 서비스 계정 JWT 발급으로 FCM을 구동해요.

최신 REST & JSON API

대부분의 클라우드 API(Stripe, GitHub, Cloudflare, Google, Azure…)는 기본적으로 HTTP/2를 사용해요 — 멀티플렉싱 클라이언트는 병렬 호출의 지연 시간을 줄여줘요.

서비스 간 트래픽

사이드카 메시 뒤의 내부 마이크로서비스는 HTTP/2 prior-knowledge(h2c)를 사용하여 수백 개의 RPC 스트림을 하나의 소켓으로 멀티플렉싱해요.

하나의 포트에서 WebSocket + HTTP/2

TsgcWebSocketHTTPServer는 단일 TLS 엔드포인트에서 HTTP/1.1, HTTP/2 및 WebSocket을 모두 서비스해요 — ALPN이 각 연결을 자동으로 라우팅해요.

RFC 8441 WebSocket over HTTP/2

HTTP/2 스트림 내에서 WebSocket 프레임을 터널링하길 선호하는 클라이언트를 위해, 서버에서 Specifications.RFC8441을 활성화하세요.

몇 줄로 구현하는 클라이언트 & 서버

컴포넌트를 놓고, TLS를 설정하면 끝이에요. ALPN이 핸드셰이크 중에 h2를 협상해줘요.

uses
  sgcHTTP, sgcHTTP2;

var
  HTTP2: TsgcHTTP2Client;
begin
  HTTP2 := TsgcHTTP2Client.Create(nil);
  HTTP2.TLSOptions.IOHandler := iohSChannel; // 또는 iohOpenSSL
  HTTP2.TLSOptions.Version   := tls1_2;

  // 커스텀 헤더 추가 (HPACK으로 압축됨)
  HTTP2.Request.CustomHeaders.Add('authorization: Bearer eyJ...');

  // HTTP/2를 통한 GET (ALPN이 h2를 협상)
  Memo1.Text := HTTP2.Get('https://api.example.com/v1/items');
  ShowMessage(IntToStr(HTTP2.Response.Status));
end;
uses
  sgcWebSocket;

var
  Server: TsgcWebSocketHTTPServer;
begin
  Server := TsgcWebSocketHTTPServer.Create(nil);
  Server.Port := 443;
  Server.SSL  := True;
  Server.SSLOptions.CertFile := 'cert.pem';
  Server.SSLOptions.KeyFile  := 'key.pem';

  // 동일한 TLS 포트에서 HTTP/1.1, HTTP/2 및 WebSocket
  Server.Specifications.HTTP    := True;
  Server.Specifications.HTTP2   := True;
  Server.Specifications.RFC6455 := True;

  Server.Active := True;
end;
// uses: sgcHTTP, sgcHTTP2
TsgcHTTP2Client *HTTP2 = new TsgcHTTP2Client(this);
HTTP2->TLSOptions->IOHandler = iohSChannel;
HTTP2->Request->CustomHeaders->Add("authorization: Bearer eyJ...");
Memo1->Text = HTTP2->Get("https://api.example.com/v1/items");

사양 & 참고 자료

이 컴포넌트들이 구현하는 프로토콜의 공식 출처예요.

문서 & 데모

컴포넌트 페이지, 온라인 도움말, 그리고 트라이얼에 포함된 즉시 실행 가능한 데모 프로젝트로 연결되는 딥링크예요.

HTTP/2 클라이언트 — TsgcHTTP2Client 컴포넌트 페이지: 클라이언트의 기능, 코드 샘플 및 TLS 옵션이에요.
HTTP/2 서버 — TsgcWebSocketHTTPServer 컴포넌트 페이지: 하나의 TLS 포트에서 HTTP/1.1 및 WebSocket과 함께 HTTP/2를 활성화하는 방법이에요.
온라인 도움말 — HTTP/2 HTTP/2 컴포넌트의 모든 속성, 메서드 및 이벤트 레퍼런스예요.
데모 프로젝트 — Demos\20.HTTP_Protocol\01.HTTP2_Server_And_Client 즉시 실행 가능한 예제 프로젝트예요. sgcWebSockets 패키지 내부에 포함되어 있으니 아래에서 트라이얼을 다운로드하세요.
사용자 매뉴얼 (PDF) 라이브러리의 모든 컴포넌트를 다루는 종합 매뉴얼이에요.

HTTP/2를 사용할 준비가 되셨나요?

무료 트라이얼을 다운로드하고 멀티플렉싱된 HTTP/2 클라이언트 및 서버 트래픽을 Delphi 애플리케이션에 추가하세요.