首页 > 在Ubuntu 16.04.3 LTS上玩转quic-go项目

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

说明

quic-go是使用Go来重写chromium中的QUIC协议,将来计划过渡到IETF版本的QUIC协议。

目前该协议还处于不断更新和活跃之中,目前IETF版本的QUIC协议草案版本号已经到draft 9

下面是我对REAME的实操记录,以作备忘。



项目主页

https://github.com/lucas-clemente/quic-go



特别要求

必须能流畅翻墙去下载go相关源码包



GO环境搭建

目前Ubuntu 16.04.3 LTS使用官方源安装的版本是1.6.2, 并不符合quic-go项目的版本1.9+的要求。

为此,需要从源码安装Go 1.10,参见本博文章

http://blog.csdn.net/tao_627/article/details/79375950



设置GOPATH

这非常关键,目前我的设置如下:

vim ~/.bashrc

export GOPATH=/home/taoyx/program_develop/go_demo

source ~/.bashrc



下载并安装项目

在/home/taoyx/program_develop/go_demo目录的src下面,下载,编译和安装quic-go项目代码

go get -v -t -u github.com/lucas-clemente/quic-go



进入项目所在目录

cd github.com/lucas-clemente/quic-go

执行下面的命令测试

go test ./...

测试发现进行GQUIC测试时,有很多fail,原因待查





测试example目录下面的server

go run example/main.go -www /var/www/



同时采用从chromium或proto-quic编译出的quic-client作为客户端配对测试

cd ~/program_develop/quic_dev/chromium/src

./out/Default/quic_client --host=127.0.0.1 --port=6121 --v=1 https://quic.clemente.io





测试example目录下面的client

我悲催的发现,测试网站的QUIC版本与当前client的版本不匹配,测试无法进行

go run example/client/main.go https://clemente.io

后来我在网上找到一个可以提供QUIC服务的网站,使用上面的client去请求,可以成功获取响应

go run example/client/main.go 'https://liudanking.com'



下面是在Chrome浏览器(版本号64)中开启QUIC之后,请求上面的同一个地址,获取的QUIC交互截图





TODO:

更进一步的研究待续......

更多相关:

  • Intellij IDEA解析jacoco结果文件的方法JaCoCo经常用来分析代码覆盖率,最方便的当然是在Jenkins中集成,能很定时分析代码覆盖率并查看变化情况。如果需要单独查看某一模块中的覆盖率,则可以借助IntelliJ IDEA。一、设置修改用Idea打开对应的项目代码,右上角编辑设置。将代码覆盖的runner修改为jac...

  • 前两天写了一篇关于《阿里Java开发手册中的 1 个bug》的文章,评论区有点炸锅了,基本分为两派,支持老王的和质疑老王的。首先来说,无论是那一方,我都真诚的感谢你们。特别是「二师兄」,本来是打算周五晚上好好休息一下的(周五晚上发布的文章),结果因为和我讨论这个问题,一直搞到晚上 12 点左右,可以看出,他对技术的那份痴迷。这一点我们...

  • 现在的以太网测试仪多数应用于以太网专线及NGN网络,多业务城域网络等各种测试环境。以太网测试仪表提供了强大的分析、统计和处理功能、支持符合IEE802.3标准的10/100/1000Mbps RJ45电口和波长可选的1000Mbps等等,可以用于线缆测试、以太网误码(一、二、三层 )测试、环回时延测试、RFC2544性能测试,支持以监...

  • 在2008年刚刚进入这个行业时,我对于要学什么东西,是迷茫的。记得我在08年的时候,入职的公司给我们这批新人做了培训。培训中介绍了很多概念,告诉我们质量很重要,软件测试前景很好,还教了我们很多软件测试理论知识,在最后还给我们介绍了所谓高大上的自动化测试和性能测试。然而,在之后的三年里,这些当时培训时给我灌输的错误知识,不断地给我职业生...

  • 问题出现的场景: 有个go写的项目,原来是用go vendor来管理依赖包的,现在改为是用go module方式了,转换之后,编译成功,发现了上面的错误。很显然连接kafka集群报错了。 问题的原因: 网上搜了下,很多说是防火墙啥的问题,其实不是。本质原因是,我项目使用的如下kafka客户端库 github.com/Shopi...

  • 详见本博博文 http://blog.csdn.net/tao_627/article/details/79375950 这里只是简单记录一下实操步骤,假定用户为root: wget https://dl.google.com/go/go1.10.linux-amd64.tar.gz tar zxvf go1.10.linux-a...

  • 升级Go新版本的原因 目前Ubuntu 16.04.3上最新的二进制Go版本是1.6.2,运行github上的一个大的go项目,发现context包在go版本1.6以上和以下的import方式有差异 在go1.7及以上版本context包被正式列入官方库中,所以我们只需要import "context"就可以了,而在go1.6及以下版...

  • 1.安装 sudo apt-get install golang-go 目前go的最新版本是1.9.2,但是在Ubuntu 16.04上采用预编译好的包安装的话,只能是go 1.6.x版本。 安装完成之后,查看go的版本号 2.配置环境变量 假定我的go脚本存放在~/program_develop/go_...

  • 1.我在.go文件的当前目录下面运行go install出现下面的错误: go install hello.go go install: no install location for .go files listed on command line (GOBIN not set) 此时设置了GOPATH宏,但是没有GOB...

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

  • 目的 本文依据参考文献中的资料,来利用chromium源码编译出quic_server和quic_client, 并依靠它们来发送QUIC协议请求,了解QUIC交互的细节。 前提 必须能够流畅地翻墙下载chromium等项目代码 下面是实操记录 项目目录存放在 cd ~/program_develop/quic_dev 最后的...