云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

服务器_战网cdn_高性价比

小七 141 0

用于调试、测试和使用HTTP/2的工具

随着CloudFlare为所有客户发布HTTP/2,web突然有了大量HTTP/2连接。为了充分利用HTTP/2,您需要使用最新的web浏览器(所有主流浏览器都支持HTTP/2)。但是在使用HTTP/2时,有些非浏览器工具非常有用。这篇博客文章从一个有用的浏览器插件开始,然后深入研究HTTP/2的命令行工具、负载测试、一致性验证、开发库和包解码。如果你知道我遗漏了什么,请写一条评论。浏览器指示器对于googlechrome,有一个方便的HTTP/2和SPDY指示符扩展,它在浏览器栏上添加了一个彩色的闪电,显示了在浏览网页时使用的协议。此处显示的蓝色闪电表示CloudFlare主页是使用HTTP/2提供服务的:一个绿色的闪电指示该站点使用了SPDY并给出了SPDY版本号。在这种情况下,SPDY/3.1:一个灰色的闪电表明没有使用HTTP/2no-SPDY。这里的web页面是使用HTTP/1.1提供的。Firefox也有类似的扩展。在线测试还有一个方便的在线工具来检查任何一个单独的网站。克莱尔CloudFlare还有一个名为Claire的googlechrome扩展,它提供关于如何加载web页面的信息。例如,以下是Claire为使用CloudFlare的站点显示的信息,该站点使用IPv6、Railgun和HTTP/2。命令行工具有一个方便的命令行工具is http,它是使用npm安装的,如下所示:npm安装-g is-http2-cli安装后,您可以在命令行上检查web的HTTP/2状态:$is-http2网站✓HTTP/2支持网站支持的协议:h2 spdy/3.1 http/1.1$is-http2×HTTP/2不受支持支持的协议:http/1.1ishttp工具也很有用,因为它提供了服务器公布的协议列表。如你所见网站支持HTTP/2、HTTP/1.1和SPDY/3.1。卷曲在7.43.0版本中,当与nghttp库链接时,古老的curl工具获得了HTTP/2支持。要从源代码构建curl,需要OpenSSL、zlib、nghttp2和libev。我使用了以下命令序列。$curl-洛$tar zvxf libev-4.20美元。焦油gz美元libev-4.20$/配置$制造$sudo make安装$curl-洛https://www.openssl.org/source/openssl-1.0.2d.tar.gzOpenX0.1美元。焦油gz$cd openssl-1.0.2d$./config共享zlib dynamic$生成和生成测试$sudo make安装$curl-洛$tar zxvf zlib-1.2.8。焦油gz$cd zlib-1.2.8美元$/配置$生成和生成测试$sudo make安装$curl-洛https://github.com/tatsuhiro-t/nghttp2/releases/download/v1.5.0/nghttp2-1.5.0.tar.gz$tar zxvf nghttp2-1.5.0。焦油gz$cd nghttp2-1.5.0$OPENSSL_CFLAGS="-I/usr/local/ssl/include"OPENSSL_LIBS="-L/usr/local/ssl/lib-lssl-lcrypto-ldl"。/configure$制造$sudo make安装$curl-洛$tar zxvf curl-7.46.0。焦油gz$cd卷曲-7.46.0$/配置$生成和生成测试$sudo make安装$sudo ldconfig一旦安装了curl,curl就有了一个新的--http2选项,它可以使用HTTP/2(如果可以的话)。-v verbose选项将显示有关使用HTTP/2的信息:$curl-vso/dev/null--http2https://www.cloudflare.com/[...]*使用HTTP2,服务器支持多用途*连接状态已更改(HTTP/2已确认)*TCP\U节点延迟集*升级后将流缓冲区中的HTTP/2数据复制到连接缓冲区:len=0*使用流ID:1(简单句柄0xc3dba0)[...]nghttp2型如果您使用我上面的说明构建curl,那么您已经构建并安装了nghttp2库附带的一些工具。其中之一是名为nghttp的命令行客户端。它可以像curl一样使用HTTP/2从web下载,但它也有一个方便的verbose选项,显示实际HTTP/2帧的发送和接收。通过使用-nv运行它,您将获得HTTP/2并丢弃实际下载的页面。这是下载时的输出网站使用HTTP/2。在支持颜色的终端上,它使用颜色来突出显示日志的不同部分。氢气另一个类似curl的HTTP/2命令行工具是h2c,它还支持HTTP/2帧的转储,它有一个很好的特性,它在后台运行,可以保持与服务器的连接,还有一个有用的"wiretap"功能,可以拦截HTTP/2进行调试。如果安装了1.5.1版,则可以按如下方式下载:$export GO15VENDOREXPERIMENT=1$去拿github.com/fstab/h2c您可以通过执行h2cstart来启动h2c运行,这将设置它在后台运行。然后,您可以像这样与web服务器通信:$h2c连接网站$h2c获得/$h2c断开它将执行HTTP请求。要查看HTTP/2的详细输出,请使用--dump参数启动h2c:$h2c启动--转储然后,您将获得该进程转储的详细输出,颜色为正在使用的HTTP/2帧。窃听功能的细节在[本博客文章]().openssl s_客户端如果你只是想知道一个网站支持什么协议,OpenSSL的客户端可以使用。如果指定一个空的-nextprotoneg选项,OpenSSL将发送一个空的TLS选项,请求协商下一个协议,服务器将用它支持的协议的完整列表进行响应。$openssl s_客户端-连接网站:443-下一个协议""已连接(00000003)服务器公布的协议:h2、spdy/3.1、http/1.1你可以看到网站支持HTTP/2(h2)、SPDY/3.1和HTTP/1.1。h2i如果你想做低层次的HTTP/2调试,有一个交互式客户端叫h2i,它再次要求你已经安装。为了得到它,快跑$去拿github.com/golang/net/http2/h2i然后,可以使用h2i连接到使用HTTP/2的站点并向其发送单独的HTTP/2帧。例如,以下是会话连接到网站以及使用headers命令请求主页,该命令允许您输入标准的HTTP/1.1请求。h2i美元网站正在连接到网站:443。。。接198.41.214.163:443谈判协议"h2"[帧头设置长度=18][最大并发流=128][初始窗口大小=2147483647][最大框架尺寸=16777215]更新窗口页眉[4帧长度]窗口增量=2147418112h2i>标题(作为HTTP/1.1)>GET/HTTP/1.1(作为HTTP/1.1)>主机:网站(作为HTTP/1.1)>打开流ID 1::权限=www.cloudflare.com网站:方法=获取:路径=/:scheme=https[FrameHeader HEADERS flags=END_HEADERS stream=1 len=819]:status="200"server="cloudflare nginx"date="2015年12月4日星期五10:36:15 GMT"content type="text/html"last modified="2015年12月3日星期四22:27:41 G MT"strict transport security="最长年龄=31536000"x-content-type-options="nosniff"x-frame-options="SAMEORIGIN"cf cache status="命中"expires="2015年12月4日星期五14:36:15 GMT"cache control="公共,最大年龄=14400"[帧头数据流=1 len=7261]"\n\n\n