说明
proto-quic项目是民间从chromium中抽取出的QUIC实现相关的代码。采用这个项目的代码,比从chromium源码编译,要更快速和简单。因为毕竟GFW限制,不是所有的人都可以翻墙去下载近10G的chromium项目源码。

下面的实操过程完全遵照github上的该项目的提示进行
https://github.com/google/proto-quic

另外参照chromium项目的官网页面

下载源码库
git clone https://github.com/google/proto-quic.git
cd proto-quic
export PROTO_QUIC_ROOT=`pwd`/src
export PATH=$PATH:`pwd`/depot_tools
./proto_quic_tools/sync.sh

sudo ./src/build/install-build-deps.sh
执行错误,但是似乎对结果运行没有影响。

编译生成QUIC的client,server和tests
cd src
gn gen out/Default
ninja -C out/Default quic_client quic_server net_unittests

测试中遇到如下问题:

解决方法:
vim proto-quic/src/out/Default/build.ninja
修改
ninja_required_version = 1.7.2 
将1.7.2修改为1.6.0,然后重新执行,大约编译完成需要半小时以上
ninja -C out/Default quic_client quic_server net_unittests

准备测试数据
以www.example.org为例,重用上一次的测试数据,参见
http://blog.csdn.net/tao_627/article/details/79422273
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 net/tools/quic/certs
./generate-certs.sh
cd -
将证书添加到浏览器中,在地址栏中输入
chrome://settings/search#ssl

选择,高级(打开折叠)=>管理中心=>授权中心,点击导入,将~/program_develop/proto-quic/src/net/tools/quic/certs/out/2048-sha256-root.pem导入,最后勾选第一项,确定即可

下面开始测试
开启QUIC 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  

然后是QUIC Client
./out/Default/quic_client --host=127.0.0.1 --port=6121 https://www.example.org/ 

参考文献
[1].https://github.com/google/proto-quic
[2].https://www.chromium.org/quic/playing-with-quic

在Ubuntu 16.04.3 LTS上玩转QUIC开源项目proto-quic相关推荐

  1. 在Ubuntu 16.04.3 LTS上玩转quic-go项目

    说明 quic-go是使用Go来重写chromium中的QUIC协议,将来计划过渡到IETF版本的QUIC协议. 目前该协议还处于不断更新和活跃之中,目前IETF版本的QUIC协议草案版本号已经到dr ...

  2. 在Ubuntu 16.04.6 LTS上升级python 3.5到3.7.3实录

    缘由 我想安装一个python模块you-get,发现只能使用pip3安装,但是我发现我的Ubuntu 16.04.6 LTS上有python3.5,但是没有pip3,也无法成功安装,真是要了我的老命 ...

  3. 在Ubuntu 16.04.6 LTS上安装python3.7和pip3后出现Command '('lsb_release', '-a')' 出错问题的解决方法

    在Ubuntu 16.04.6 LTS上安装python3.7和pip3后出现Command '('lsb_release', '-a')' returned non-zero exit status ...

  4. 在Ubuntu 16.04.6 LTS上升级Go到最新版1.12.5实录

    上一次我在Ubuntu 16.04.3 LTS上从源码安装了Go,当时最新的版本是1.10,参见我之前的博文 https://blog.csdn.net/tao_627/article/details ...

  5. 在Ubuntu 16.04.5 LTS上利用python中的PIL模块压缩一百多兆的单张图片实操

    在前面的博文中,我将300多张电影海报拼接为了一张103MB的巨幅图片,我想拿它做电脑桌面(1080P),但是这么多的图片,存储和加载是个麻烦事儿,需要将它压缩到几MB大小. 在Ubuntu 16.0 ...

  6. 在Ubuntu 16.04.5 LTS上升级python的pip版本实录

    在ubuntu 16.04.5 LTS上使用Python安装模块时,比较顺手的方法是使用pip命令.这次,我在安装一个模块时,老是提示下面的问题,比较不爽.所以,我就照着提示做了一遍,记录下来,以作备 ...

  7. 在Ubuntu 16.04.3 LTS上运行go+https+json示例

    下面是我依据网上资料的实操过程,记录以作备忘.该示例给出了https通信并处理json文件的例子. 平台:Ubuntu 16.04.3 LTS go版本:1.10 1.生成自签名的服务器端的私钥KEY ...

  8. 在Ubuntu 16.04.4 LTS上调研开源QUIC项目ngtcp2

    最近在研究QUIC协议,尝试了一些QUIC相关的开源项目,主要是c,c++,go等语言编写的.这里记录下我折腾ngtcp2的过程. 基本思路就是参照github上该项目的README来进行就可以了.由 ...

  9. 在Ubuntu 16.04.3 LTS上搭建QUIC交互demo

    目的 本文依据参考文献中的资料,来利用chromium源码编译出quic_server和quic_client, 并依靠它们来发送QUIC协议请求,了解QUIC交互的细节. 前提 必须能够流畅地翻墙下 ...

最新文章

  1. 送书!送书!送书!阿广包邮送15本技术书籍!
  2. 点击文字弹出一个DIV层窗口代码
  3. 20175310 《Java程序设计》第11周学习总结
  4. PCA(主成分分析)降维的概念、作用及算法实现
  5. java properties 属性,java 读取 properties 属性资料
  6. php并发访问mysql_php并发对MYSQL造成压力的解决方法_PHP
  7. Spring : ConfigurableBeanFactory 配置能力
  8. 双机热备_涨知识 | 双机热备与备份一体机的联系及区别
  9. 建立可视化决策平台,“数据化”首当其冲!
  10. erlang 动态编译和加载遇到的问题。
  11. SQL Server T—SQL 基本编程
  12. 【实验室乱记】从 0 开始的 STM32L0 的 Gps WiFi 蓝牙模块物联网开发
  13. 硕思闪客精灵v2021如何用Flash制作动画短片流程分享
  14. 360n6pro刷鸿蒙系统,360手机N6Pro有没事用win10刷机成功的交流一下心得
  15. 查看服务器支持的内存条,PowerEdge 服务器支持的内存配置指南
  16. 电脑公司GHOST WIN7 装机旗舰版 2013 09
  17. SAP 凭证跳号分析
  18. ObjectARX编程(六) ------块和属性
  19. dhtml_DHTML乌托邦:使用JavaScript和DOM的现代Web设计
  20. android 如何启动浏览器

热门文章

  1. 20162303 2016-2017-2 《程序设计与数据结构》第六周学习总结
  2. UnixLinux大学教程 读书笔记【1-3章】
  3. html表单的创建和css的构成
  4. Servlet开发入门
  5. AlexNet中的局部响应归一化(LRN)
  6. 网页如何与mysql服务器建立连接不上,html与mysql建立连接数据库
  7. jqgrid如何渲染表格数据_jqgrid,jquery_jqGrid pivot 增加分项小计,jqgrid,jquery,jquery插件,javascript,表格 - phpStudy...
  8. oss生成唯一文件名_根据结构化自然语言规范自动生成精确预言
  9. php找不到phpmyadmin,nginx下找不到phpmyadmin文件
  10. 字符串数组(就自己做个笔记)