quic协议实践
QUIC实践
环境Ubuntu14.x86_64 gcc4.8 python2.7
编译QUIC服务器和客户端
下载
git clone https://github.com/google/proto-quic.git
修改hosts
因为要从google官网下载一些包,需要通过修改hosts来翻墙
将下面网站中的内容添加到本地hosts文件中(/etc/hosts)
https://github.com/racaljk/hosts/blob/master/hosts
依赖安装
argparse安装(未安装的话)
apt-get install python-argparse
安装binutils
cd proto-quic
export PROTO_QUIC_ROOT=`pwd`/src
export PATH=$PATH:`pwd`/depot_tools
./proto_quic_tools/sync.sh
安装其它依赖库
./src/build/install-build-deps.sh --no-syms --no-arm --no-chromeos-fonts
编译生成服务器和客户端程序
cd src
gn gen out/Default && ninja -C out/Default quic_client quic_server net_unittests
编译完成后输出的文件在proto-quic/src/out/Default下
运行服务器
准备测试数据
cd /tmp
wget -p --save-headers https://www.example.org
下载完测试数据后记得修改index.html文件中的内容,这块可以参考本文最后的第一个连接
生成证书
cd proto-quic/src/net/tools/quic/certs/
./generate-certs.sh
运行服务器
在src目录下执行下面的命令,如果服务器无法启动,尝试用root用户启动,或者加入sudo命令来启动
./out/Default/quic_server \
--quic_response_cache_dir=/tmp/www.example.org \
--certificate_file=net/tools/quic/certs/out/leaf_cert.pem \
--key_file=net/tools/quic/certs/out/leaf_cert.pkcs8 \
--v=1
服务器启动的成功后会查看6121端口
运行客户端
使用chromium导入CA证书,具体操作详见参考连接1。这里需要注意,Ubuntu只允许普通用户登陆,所以chromium导入证书时是以普通用户导入的。在运行客户端时也需要以普通用户来运行,否则会报证书无效的错误
sudo ./out/Default/quic_client --host=127.0.0.1 --port=6121 https://www.example.org/
客户端运行成功后将会看到前面准备的数据内容
编译时遇到的问题
问题1
/usr/bin/ld.gold: warning: ignoring --threads: /usr/bin/ld was compiled without thread support
/usr/bin/ld.gold: warning: ignoring --thread-count: /usr/bin/ld was compiled without thread support
出现上面的警告时说明不支持多线程,但是编译器会将warning直接视为error从而终止编译
修改 src/build/config/compiler/BUILD.gn,将fatal_linker_warnings的值修改为false
fatal_linker_warnings = false
参考
http://www.jianshu.com/p/f17b4a015e27
https://www.chromium.org/quic/playing-with-quic
quic协议实践的更多相关文章
- 一泡尿的时间,快速读懂QUIC协议
1.TCP协议到底怎么了? 现时的互联网应用中,Web平台(准确地说是基于HTTP及其延伸协议的客户端/服务器应用)的数据传输都基于 TCP 协议. 但TCP 协议在创建连接之前需要进行三次握手(如下 ...
- 网络编程懒人入门(十):一泡尿的时间,快速读懂QUIC协议
1.TCP协议到底怎么了? 现时的互联网应用中,Web平台(准确地说是基于HTTP及其延伸协议的客户端/服务器应用)的数据传输都基于 TCP 协议. 但TCP 协议在创建连接之前需要进行三次握手(如下 ...
- 让互联网更快:新一代QUIC协议在腾讯的技术实践分享
本文来自腾讯资深研发工程师罗成在InfoQ的技术分享. 1.前言 如果:你的 App,在不需要任何修改的情况下就能提升 15% 以上的访问速度,特别是弱网络的时候能够提升 20% 以上的访问速度. 如 ...
- QUIC协议的分析,性能测试以及在QQ会员实践
WeTest 导读 你听过HTTPS.HTTP2.0.SPDY,但是这些应用层协议都是基于可靠的传输层协议TCP来实现的.那么,基于高效的UDP协议有没有一种相对可靠的应用层协议呢? Why QUIC ...
- QUIC协议详解之Initial包的处理
从服务器发起请求开始追踪,细说数据包在 QUIC 协议中经历的每一步.大量实例代码展示,简明易懂了解 QUIC. 前言 本文介绍了在 QUIC 服务器在收到 QUIC 客户端发起的第一个 UDP 请求 ...
- Google将向IETF标准提交QUIC协议提案
Google近期宣布,他们将向IETF提交实验性传输层网络协议QUIC的提案.此外,Google已经给出了QUIC协议优化页面加载时间的第一手数据. 自从2013年引入QUIC以来,Google一直在 ...
- QUIC协议原理分析(转)
之前深入了解了一下HTTP1.1.2.0.SPDY等协议,发现HTTP层怎么优化,始终要面对TCP本身的问题.于是了解到了QUIC,这里分享一篇之前找到的有意义的文章. 原创地址:https://mp ...
- Google Quic协议
0x01 Quic QUIC协议于2012年实现,2015年提交RFC草案,它是Goolge为了解决当今WEB应用常见的传输层和应用层问题而提出的,从分层结构上可以看做是TCP+TLS+HTTP2的集 ...
- QUIC协议
QUIC协议 QUIC协议参考网址 https://www.chromium.org/quic 既生瑜,何生亮? QUIC的特性 提供可靠传输 减少连接建立的时间 改善拥塞控制 多路复用 转发错误连接 ...
随机推荐
- 剑指 offer set 14 打印 1 到 N 中 1 的个数
总结 1. 假设 n == 2212, 算法分为两个步骤. 第一步, 将这个 2212 个数分为 1~ 212, 213 ~ 2212 2. 第一部分实际上是将 n 的规模缩小到 212. 假如知道如 ...
- Maven新建一个Spring MVC项目
新建一个Maven项目,选择archetypes为maven-archetype-webapp,相关的名称按个人习惯取,我这里取Group Id:moonlit-groupArtifact Id:mo ...
- 重写equals()方法也要重写hashcode()方法
如果我们对equals方法进行了重写,建议一定要对hashCode方法重写,以保证相同的对象返回相同的hash值,不同的对象返回不同的hash值.
- 过滤一个Collection最好的方法
private static List<Integer> filter(List<Integer> list){ Iterator<Integer> it = li ...
- D3D中的渲染状态简介
1). 设置着色模式: SetRenderState(D3DRS_SHADEMODE, D3DSHADE_FLAT) //设置平面着色模式 SetRenderState(D3DRS_SHADEMODE ...
- 在Mac osx使用ADT Bundle踩过的坑
前言 本篇博客整理一下笔者在Mac下使用ADT Bundle踩过的坑,Google现在也不支持Eclipse了,开发者也到了抛弃Eclipse的时候,但考虑到大部分Java的开发者还是比较习惯与Ecl ...
- angular2+ 中封装调用递归tree
子组件 given-person.html <!--权限设置-选择员工--> <li [class.noborder]="!dir.shierarchy" *n ...
- lsof,fuser,xargs,print0,cut,paste,cat,tac,rev,exec,{},双引号,单引号,‘(字符串中执行命令)
cut用来从文本文件或标准输出中抽取数据列或者域,然后再用paste可以将这些数据粘贴起来形成相关文件. 粘贴两个不同来源的数据时,首先需将其分类,并确保两个文件行数相同.paste将按行将不同文件行 ...
- jquery.easing的使用
下载地址:http://www.jb51.net/jiaoben/32922.html 基本语法:easing:格式为json,{duration:持续时间,easing:过渡效果,complete: ...
- Systemd mysql,nginx,php启动配置文件
systemctl的配置文件目录一般在 /usr/lib/systemd/system/ 或者/etc/systemd/system/ 需要注意的是,nginx与php运行用户必须是root,所以不需 ...