571
社区成员
发帖
与我相关
我的任务
分享QUIC 是一种面向连接的协议,它在客户端和服务器之间创建有状态的交互。QUIC 集成了 TLS 握手,使用定制的帧来保护数据包。握手的结构允许尽快交换应用程序数据,这包括客户端立即发送数据的选项 (0-RTT),这需要某种形式的事先通信或配置才能启用。端点通过交换 QUIC 数据包在 QUIC 中进行通信。大多数数据包都包含帧,这些帧在端点之间携带控制信息和应用程序数据。QUIC 对每个数据包的整体进行身份验证,并尽可能多地加密每个数据包。QUIC 数据包在 UDP 数据报中携带,以更好地促进在现有系统和网络中的部署。
应用程序协议通过 QUIC 连接通过流交换信息,流是有序的字节序列。可以创建两种类型的流:双向流,允许两个端点发送数据;和单向流,允许单个端点发送数据。基于信用的方案用于限制流创建并限制可以发送的数据量。
一旦建立,就会为连接终止提供多个选项。应用程序可以管理正常关闭,端点可以协商超时期限,错误可以导致立即连接断开,并且无状态机制提供在一个端点丢失状态后终止连接。


git clone --recursive https://github.com/microsoft/msquic.git
# Download the Microsoft repository GPG keys
wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb
# Register the Microsoft repository GPG keys
sudo dpkg -i packages-microsoft-prod.deb
# Update the list of products
sudo apt-get update
# Enable the "universe" repositories
sudo add-apt-repository universe
# Install PowerShell
sudo apt-get install -y powershell
# Start PowerShell
pwsh
如果在安装PowerShell中出现如下错误:
powershell : Depends: libicu55 but it is not installable
你需要首先运行如下代码:
sudo apt-get remove libicu57
wget http://security.ubuntu.com/ubuntu/pool/main/i/icu/libicu55_55.1-7ubuntu0.5_amd64.deb
sudo dpkg -i libicu55_55.1-7ubuntu0.5_amd64.deb
wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.0.0_1.0.2g-1ubuntu4.18_amd64.deb
sudo dpkg -i libssl1.0.0_1.0.2g-1ubuntu4.18_amd64.deb
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
sudo apt-get update; \
sudo apt-get install -y apt-transport-https && \
sudo apt-get update && \
sudo apt-get install -y dotnet-sdk-6.0
安装CMake>3.16,Ubuntu参考链接https://apt.kitware.com/
重启终端,然后安装对应依赖
./scripts/prepare-machine.ps1 -Configuration Dev
pwsh命令进入PowerShell,在scripts文件夹下运行build.ps1开始构建./scripts/build.ps1
./scripts/test.ps1
运行结果如下:

openssl req -nodes -new -x509 -keyout server.key -out server.cert
\msquic/artifacts/bin/linux/x64_Debug_openssl目录运行服务器端./quicsample -server -cert_file:path/server.cert -key_file path/server.key
其中path需要根据自己电脑的情况进行修改
服务器等待客户连接请求:

./quicsample -client -target:127.0.0.1 4567 -unsecure
此时服务器端运行如下:

客户端运行如下:
