msquic 编译—Windows版本
微软近期开源了其内部QUIC协议代码库,采用C语言编写,编译完成可以获得一个库文件,方便使用者集成到自己的应用中。
QUIC协议于2012年被Google公司提出,目前IETF组织正对其进行标准化。关于QUIC协议的优点,网络上有大量的文章对其描述,这儿我们对其不再赘述。在chromium项目中已实现了QUIC协议,在业界一般称其为gQUIC,其与IETF组织正在标准化的QUIC协议稍有不同,为了方便区分,IETF组织正在标准化的QUIC协议称为iQUIC。iQUIC一直以来没有一个较为成熟的实现版本。 此次微软开源出的QUIC协议库,遵循了IETF标准,可以说是一个iQUIC协议库,其使QUIC协议作为一个通用协议,可以传输所有种类应用层数据。本文记录msquic(Windows版)的编译过程。
编译详细过程记录在"msquic/docs/BUILD.md"文档中。目前msquic官方支持的平台有Windows和Linux,其他平台在未来有可能支持(注意是有可能,在FAQ中官方是这么回答的)。此处,我们详细记录Windows10(其他版本的Windows未做测试)平台msquic编译过程。
编译前相关工具准备
- CMake:安装CMake(版本没有做具体要求,下载最新的),下载链https://cmake.org/download/
并将CMake可执行文件,加入环境变量。 - PowerShell (6 or greater) :安装PowerShell (版本:6及以上,作者安装的7),下载链接 https://github.com/PowerShell/PowerShell。PowerShell的版本需要符合要求,否则可能编译编译不过。
- Visual Studio 2019 or higher:安装Visual Studio 2019(社区版、专业版都可以)。Visual Studio 2019确定能够编译,Visual Studio的其他版本是否能编译,作者没有测试。
- 将Win10升级,支持schannel TLS1.3。
编译步骤
- 下载源码,可以通过git工具直接从github上下载源码。会依赖部分Google开源的代码,需要科学的网络环境,git命令如下。
git clone --recursive https://github.com/microsoft/msquic
- 打开PowerShell(必须以管理员身份运行),切换到源码根部录下,即msquic目录下。
- 安装依赖,执行以下命令。这儿需要从网络下载部分工具,可能需要科学的网络环境。
./scripts/prepare-machine.ps1-Configuration Dev
- 第二步执行完成后,继续执行以下编译命令,并耐心等待编译。build.ps1文件中包含很多的配置选项,此处采用默认编译选项。
./scripts/build.ps1
- 编译成功后,我们打开 msquic\msquic\bld\windows\x64_schannel (这是默认编译选型下的目录)目录下的 Visual Studio工程文件:msquic.sln 。可以看到msquic包含的所有项目。至此msquic编译完成。

测试用例运行
msquic提供了很多的测试用例,包括接口测试、协议测试等。我们只需要运行相关的测试脚本,便可进行自动化测试,来验证编译成果物是否正确。
在 msquic/TEST.md 文档中,记录了具体的步骤,我们在此处给出主要操作步骤。测试用例需要使用schannel TLS1.3的功能,需要进行注册。
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Server" /v Enabled /t REG_DWORD /d 1 /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Server" /v DisabledByDefault /t REG_DWORD /d 0 /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client" /v Enabled /t REG_DWORD /d 1 /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client" /v DisabledByDefault /t REG_DWORD /d 0 /f
接下来运行测试脚本:
./scripts/test.ps1
耐心等待,测出测试的时间较长。
后记
对于msquic协议怎么集成到应用中,还需要进一步学习。
本文详细介绍了在Windows 10上编译微软开源的QUIC协议库msquic的步骤,包括所需工具(CMake, PowerShell 6+, Visual Studio 2019)的准备,源码下载,依赖安装,编译过程,以及测试用例的运行,帮助开发者成功构建iQUIC协议库。"
109861145,8740462,DOM编程与AJAX实战,"['javascript', '前端开发', 'AJAX', 'XMLHttpRequest']
2051





