wknet 在内核里发起出站 HTTP(S) 与 WebSocket。传输主路径是 WSK,密码学主路径是内核态 CNG/BCrypt;不依赖 WinHTTP、WinINet 或 SChannel。
公共 API 仅四个命名空间:wknet::http · wknet::websocket · wknet::crypto · wknet::codec。
- 纯内核态客户端协议栈:HTTP/1.1 · HTTP/2 · HTTP/3(QUIC v1)· WebSocket · TLS 1.2/1.3
- 单一产品 API;Session 统一编排连接池、重定向、代理、异步与协议选择
- 默认安全:证书校验、主机名不回退 CN、HTTPS→HTTP redirect 默认拒绝、Trace 默认 Off
- 信任锚 / CA 包 / pin / 撤销证据由调用方提供;库不内置系统 CA
- 堆句柄与 Workspace;同步路径要求
PASSIVE_LEVEL
完整四类账本见文档站 能力边界(已实现 / 默认关 / 安全拒绝 / 非目标)。
| 类别 | 摘要 |
|---|---|
| 已实现 | HTTP/1.1–3、WebSocket、TLS 1.2/1.3、证书校验与 pin、连接池、异步、多种 Content-Encoding |
| 默认关 | pipeline、h2c、H2 PING 保活、0-RTT、permessage-deflate、TLS 兼容套件、强撤销等 |
| 安全拒绝 | 手写请求 TE、H2 server push、未协商 WS 扩展、HTTPS→HTTP 降级等 |
| 非目标 | HTTP 服务端、在线 OCSP 抓取、QUIC v2 / 迁移 / WebTransport / WS over H3 等 |
HTTP/3 默认 Auto:首次 HTTPS 走 TCP,从已认证响应学习精确 h3 Alt-Svc,后续优先 H3。
#include <wknet/Wknet.h>
NTSTATUS SimpleGet()
{
wknet::http::Session* session = nullptr;
wknet::http::Response* response = nullptr;
NTSTATUS status = wknet::http::SessionCreate(&session);
if (!NT_SUCCESS(status)) {
return status;
}
status = wknet::http::Get(session, "https://example.com/", &response);
if (NT_SUCCESS(status) && response != nullptr) {
ULONG code = wknet::http::ResponseStatusCode(response);
const UCHAR* body = wknet::http::ResponseBody(response);
SIZE_T len = wknet::http::ResponseBodyLength(response);
UNREFERENCED_PARAMETER(code);
UNREFERENCED_PARAMETER(body);
UNREFERENCED_PARAMETER(len);
wknet::http::ResponseRelease(response);
}
wknet::http::SessionClose(session);
return status;
}pwsh -NoLogo -NoProfile -File .\tools\build-lib.ps1 -Configuration Release -Platform x64产物:src/wknetlib/<Platform>/<Configuration>/wknetlib.lib。环境与集成步骤见 构建。
| 入口 | 链接 |
|---|---|
| 文档站(中文) | https://x500x.github.io/wknet/ |
| 文档站(English) | https://x500x.github.io/wknet/en/ |
| 第一个请求 | https://x500x.github.io/wknet/first-request/ |
| 能力边界 | https://x500x.github.io/wknet/capability-matrix/ |
| API 总览 | https://x500x.github.io/wknet/api/overview/ |
| GitHub Wiki | https://github.com/x500x/wknet/wiki |
完整文档以 docsite 为唯一源;Wiki 由 docsite: 提交单向同步。
特别感谢sheep-programmer为这个库的发展做出的贡献