首页 > 在Ubuntu 16.04.3 LTS上搭建QUIC交互demo

在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

更多相关:

  • 说明 proto-quic项目是民间从chromium中抽取出的QUIC实现相关的代码。采用这个项目的代码,比从chromium源码编译,要更快速和简单。因为毕竟GFW限制,不是所有的人都可以翻墙去下载近10G的chromium项目源码。 下面的实操过程完全遵照github上的该项目的提示进行 https://github.com/...