Skip to content

x500x/wknet

Repository files navigation

wknet

面向 Windows 内核驱动的纯内核态 HTTP/HTTPS/WebSocket 客户端库

License: MIT Platform: Windows WDK: 10+ C++17

English | 简体中文


定位

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: 提交单向同步。

许可

MIT

致谢

特别感谢sheep-programmer为这个库的发展做出的贡献

About

一个正在发展中的纯 windows 内核态的http/websocket客户端库

Resources

License

Stars

6 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages