44

APP使用HTTP2协议的一点小收获

 3 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzAwOTU4NzM5Ng%3D%3D&%3Bmid=2455771711&%3Bidx=1&%3Bsn=47655e7667f81e1206ff23d61e626d93
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

前几天提到网络连接和ssl握手延迟,想到SLB已经配置支持HTTP/2了,就想确认下:

  • curl —http2  -I https://api.test.com

  • 启用了阿里云的日志服务-SLB,protorl参数返回了HTTP/2

阿里云 日志服务 也是一个好东西,有点类似于ELK,本来高峰期间发现峰值流量比较大,原来有个接口size比较大,直接占了30%的流量,优化后一下清净了。

对于优化来说,应该挑大头来解决,同时也要关注细节。

HTTP/2好处:

  • 多路复用,真正的并行请求

  • 支持服务器端push

  • 更小的header头,减少网络延迟

想证实客户端调用接口有没有走HTTP/2多路复用,由于服务器在SLB后面,走的是80端口,从服务器上抓包是看不出来了。

从前台选择使用wireshark抓取app HTTPS流量,遇到一个问题。

让同事在电脑装了个andriod模拟器(夜神多开器),可惜还是不能破解HTTPS流量,顺带温习了相关知识。

如果是RSA密钥交换,及时配置了私钥文件也不能解密;如果是DH密钥交换,模拟器不像浏览器支持SSLKEYLOGFILE变量,所以没法支持pre-master secret key解密方式。

总之目前没法看到具体的HTTP/2流量,具体参考https://www.comparitech.com/net-admin/decrypt-ssl-with-wireshark/。

不管是IOS还是Andriod都有网络框架,比如 okhttp ,原来那么强大:

  • HTTP/2 support allows all requests to the same host to share a socket.

  • Connection pooling reduces request latency (if HTTP/2 isn’t available).

  • Transparent GZIP shrinks download sizes.

  • Response caching avoids the network completely for repeat requests.

也就是说至少会维护 连接池 功能,这样对服务器的压力就减少了很多,网络层的消耗就可以忽略不计了,用户体验也提高了不少,如果能用到多路复用,那就更棒了。

关于重复请求的cache功能感觉也很有意思,后续可以研究研究。

和后端开发相比,APP开发模式是完全不一样的。

以前也写过一篇 Fiddler解密HTTPS流量的文章 ,后面尝试看看,个人觉得能破解,但不能使用HTTP/2包,会降级为HTTP/1.1。

虽然不会开发APP,但还是希望有一种方式能够看到网络层的调用。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK