在Ubuntu 16.04.3 LTS上搭建QUIC交互demo

2024-03-18 15:08

本文主要是介绍在Ubuntu 16.04.3 LTS上搭建QUIC交互demo,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目的
本文依据参考文献中的资料,来利用chromium源码编译出quic_server和quic_client, 并依靠它们来发送QUIC协议请求,了解QUIC交互的细节。

前提
必须能够流畅地翻墙下载chromium等项目代码

下面是实操记录

项目目录存放在
cd ~/program_develop/quic_dev
最后的目录结构在这里提前说明一下


下载chromium项目源码
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

在~/.bashrc中添加
export PATH="$PATH:这里为depot_tools的路径" 
更新配置
source ~/.bashrc

mkdir chromium && cd chromium 
fetch --nohooks chromium
chromium项目源码大约9.91G,这一步根据网速快慢可能需要花费较长时间,我这里大约40分钟左右吧



编译出quic_server和quic_client

cd src
sudo build/install-build-deps.sh
或者
sudo build/install-build-deps.sh --no-chromeos-fonts 

这两个命令都下载失败,但是都没有啥影响


gclient runhooks  

gn gen out/Default 
ninja -C out/Default quic_server quic_client 

此时我们已经得到quic_server和quic_client


准备测试网页及证书

mkdir -p ~/program_develop/quic_dev/quic-data

cd ~/program_develop/quic_dev/quic-data
wget -p --save-headers https://www.example.org
cd www.example.org
vim index.html

在header里加上X-Original-Url: https://www.example.org/
行末的^M使用Ctrl+V,Ctrl+M实现

cd ~/program_develop/quic_dev/chromium/src
cd net/tools/quic/certs  
./generate-certs.sh  
cd - 

生成的证书在下面的目录


在浏览器中添加证书

然后打开chrome浏览器(我在Ubuntu 16.04上安装的版本是63),在地址栏里输入chrome://settings/search#ssl 然后选择 授权中心,点击导入 ,将net/tools/quic/certs/out/2048-sha256-root.pem导入 ,最后勾选第一项,确定即可







开启QUIC的server和client,请求准备好的网址

下一步就是跑server,开启指定端口监听

./out/Default/quic_server \
--quic_response_cache_dir=/home/taoyx/program_develop/quic_dev/quic-data/www.example.org \
--certificate_file=net/tools/quic/certs/out/leaf_cert.pem \
--key_file=net/tools/quic/certs/out/leaf_cert.pkcs8 \
--port=6121 \
--v=1  
这里明确指定端口号6121,使用--v=1开启更多的调试信息

然后是启动Client,采用QUIC协议来发送请求和接收响应
./out/Default/quic_client --host=127.0.0.1 --port=6121 https://www.example.org/  


然后,根据交互细节来了解QUIC协议,并阅读QUIC实现的相关代码。


参考文献

[1].http://blog.csdn.net/Claranc/article/details/79062260
[2].http://blog.csdn.net/dxpqxb/article/details/76819992

这篇关于在Ubuntu 16.04.3 LTS上搭建QUIC交互demo的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/822740

相关文章

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

Springboot处理跨域的实现方式(附Demo)

《Springboot处理跨域的实现方式(附Demo)》:本文主要介绍Springboot处理跨域的实现方式(附Demo),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录Springboot处理跨域的方式1. 基本知识2. @CrossOrigin3. 全局跨域设置4.

新特性抢先看! Ubuntu 25.04 Beta 发布:Linux 6.14 内核

《新特性抢先看!Ubuntu25.04Beta发布:Linux6.14内核》Canonical公司近日发布了Ubuntu25.04Beta版,这一版本被赋予了一个活泼的代号——“Plu... Canonical 昨日(3 月 27 日)放出了 Beta 版 Ubuntu 25.04 系统镜像,代号“Pluc

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Ubuntu中Nginx虚拟主机设置的项目实践

《Ubuntu中Nginx虚拟主机设置的项目实践》通过配置虚拟主机,可以在同一台服务器上运行多个独立的网站,本文主要介绍了Ubuntu中Nginx虚拟主机设置的项目实践,具有一定的参考价值,感兴趣的可... 目录简介安装 Nginx创建虚拟主机1. 创建网站目录2. 创建默认索引文件3. 配置 Nginx4

使用DeepSeek搭建个人知识库(在笔记本电脑上)

《使用DeepSeek搭建个人知识库(在笔记本电脑上)》本文介绍了如何在笔记本电脑上使用DeepSeek和开源工具搭建个人知识库,通过安装DeepSeek和RAGFlow,并使用CherryStudi... 目录部署环境软件清单安装DeepSeek安装Cherry Studio安装RAGFlow设置知识库总

Linux搭建Mysql主从同步的教程

《Linux搭建Mysql主从同步的教程》:本文主要介绍Linux搭建Mysql主从同步的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux搭建mysql主从同步1.启动mysql服务2.修改Mysql主库配置文件/etc/my.cnf3.重启主库my