HTTP/2 프로토콜
Delphi 및 C++Builder용 네이티브 HTTP/2 클라이언트 및 서버예요. 바이너리 프레이밍, 스트림 멀티플렉싱, HPACK 헤더 압축, ALPN 네고시에이션을 제공하며, IIS, Apache, Indy에 의존하지 않아요.
Delphi 및 C++Builder용 네이티브 HTTP/2 클라이언트 및 서버예요. 바이너리 프레이밍, 스트림 멀티플렉싱, HPACK 헤더 압축, ALPN 네고시에이션을 제공하며, IIS, Apache, Indy에 의존하지 않아요.
두 가지 프로덕션 준비가 완료된 컴포넌트가 전체 HTTP/2 (RFC 9113) 와이어 프로토콜을 구현해요. 클라이언트로 HTTP/2 API를 소비하고, 서버로 HTTP/2 API를 게시하세요 — 또는 동일한 애플리케이션 내에서 둘 다 사용할 수 있어요.
네이티브 HTTP/2 클라이언트 — 단일 TLS 연결을 통한 멀티플렉싱된 GET/POST/PUT/DELETE, HPACK 압축 헤더, ALPN h2 업그레이드 또는 prior-knowledge h2c, 서버 푸시 처리 및 Bearer / Basic / NTLM 인증을 제공해요.
네이티브 HTTP/2 서버 — 동일한 WebSocket HTTP 서버가 하나의 TLS 포트에서 HTTP/1.1, HTTP/2 (h2) 및 WebSocket을 모두 서비스해요. ALPN 네고시에이션, 스트림 멀티플렉싱, HPACK 응답 및 선택적인 RFC 8441 WebSocket-over-HTTP/2 부트스트랩을 제공해요.
클라이언트와 WebSocket HTTP 서버 양쪽에 통합된 일류 HTTP/2 프레이밍 구현이에요.
TsgcHTTP2ClientTsgcWebSocketHTTPServer
Windows, macOS, Linux, iOS, Android
클라이언트: Standard / Pro / Enterprise
서버: Pro / Enterprise
HTTP/1.1 대비 HTTP/2의 모든 장점을 별도의 웹 서버를 구동하지 않고 네이티브 Delphi/C++Builder 코드로 제공해요.
요청과 응답은 바이너리 프레임으로 분할되며, 결정론적 상태 머신에 의해 파싱돼요. 더 이상 텍스트 라인 파싱이나 HTTP/1.1의 모호성이 없어요.
수십 개의 진행 중 요청이 단일 TCP/TLS 연결을 공유해요 — HTTP 계층에서의 헤드-오브-라인 블로킹도, 요청마다 추가 소켓도 없어요.
내장 HPACK 인코더/디코더(RFC 7541)예요. 반복되는 쿠키, 인증 토큰, content-type 헤더는 첫 요청 이후 거의 0바이트만 소비해요.
TLS 핸드셰이크 중 피어가 h2와 http/1.1을 광고하고, 협상된 ALPN 값이 추가 왕복 없이 프로토콜을 선택해요.
신뢰할 수 있는 내부 링크와 서비스 메시 사이드카에서는 양쪽 모두 ALPN을 건너뛰고 HTTP2_PriorKnowledge를 통해 평문으로 HTTP/2를 시작할 수 있어요.
서버는 능동적으로 PUSH_PROMISE 응답을 전송할 수 있고, 클라이언트는 OnHTTP2StreamData를 통해 이를 노출하여 캐싱에 활용할 수 있어요. 참고: 공개 웹에서는 사용이 중단되었지만 내부적으로는 여전히 유용해요.
스트림별 우선순위와 종속성 힌트를 통해 중요한 응답(인증, 내비게이션, JSON-RPC 결과)이 동일 연결 위의 대용량 전송을 추월할 수 있어요.
스트림별 및 연결별 WINDOW_UPDATE 플로우 컨트롤은 큰 응답 하나가 작은 응답을 굶기는 것을 막아줘요 — SETTINGS 프레임을 통해 조정 가능해요.
Windows 커널 TLS(DLL 불필요)는 TLSOptions.IOHandler를 iohSChannel로, 전체 크로스 플랫폼 1.2/1.3 지원은 iohOpenSSL로 설정하세요.
HTTP/2의 멀티플렉싱과 HPACK 절감 효과가 즉시 효과를 발휘하는 즉시 사용 가능한 시나리오예요.
Apple의 APNs 프로바이더 API는 HTTP/2를 요구해요. TsgcHTTP2Client가 토큰 기반 인증으로 Apple Push 컴포넌트를 처음부터 끝까지 구동해요.
Google의 FCM HTTP v1 API는 HTTP/2 위에서 동작해요. 동일한 컴포넌트가 서비스 계정 JWT 발급으로 FCM을 구동해요.
대부분의 클라우드 API(Stripe, GitHub, Cloudflare, Google, Azure…)는 기본적으로 HTTP/2를 사용해요 — 멀티플렉싱 클라이언트는 병렬 호출의 지연 시간을 줄여줘요.
사이드카 메시 뒤의 내부 마이크로서비스는 HTTP/2 prior-knowledge(h2c)를 사용하여 수백 개의 RPC 스트림을 하나의 소켓으로 멀티플렉싱해요.
TsgcWebSocketHTTPServer는 단일 TLS 엔드포인트에서 HTTP/1.1, HTTP/2 및 WebSocket을 모두 서비스해요 — ALPN이 각 연결을 자동으로 라우팅해요.
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) 라이브러리의 모든 컴포넌트를 다루는 종합 매뉴얼이에요. | 열기 |