关于http-2:HTTP20的二进制是什么
这篇纯正满足本人的好奇心 我如同是一个在海边游玩的孩子,不断为拾到比通常更润滑的石子或更漂亮的 贝壳而欢欣鼓舞,而展示在我背后的是齐全未探明的真谛之海。牛顿 写本文的时候,想起高中物理课本的一句话: 我如同是一个在海边游玩的孩子,不断为拾到比通常更润滑的石子或更漂亮的贝壳而欢欣鼓舞,而展示在我背后的是齐全未探明的真谛之海。那个时候不懂这句话,忙于刷分,现在纯正是为了本人的好奇心而探索一些问题,脑海中又开始复现这句话。本文的问题来自于后面的一篇文章:《HTTP学习笔记(三) HTTP/2》, 这篇文章里咱们提到了HTTP/2的几个特点: is binary, instead of textual二进制代替了文本is fully multiplexed, instead of ordered and blocking多路复用can therefore use one connection for parallelism并行申请uses header compression to reduce overhead压缩申请头,缩小耗费allows servers to “push” responses proactively into client caches容许服务器被动推送响应进入客户端的缓存中其实对于1我是不了解的,毕竟在计算机的世界都是“二进制”嘛,过后我的想法是难道是跟JDK解决String一样的操作,在JDK8之前,String自身是借助于char来存储的: public final class String implements java.io.Serializable, Comparable<String>, CharSequence { /** The value is used for character storage. */ private final char value[];}到了JDK 8之后, JDK借助byte来存储字符串: public final class String implements java.io.Serializable, Comparable<String>, CharSequence, Constable, ConstantDesc { @Stable private final byte[] value;} 毕竟一个char占两个字节, 一个byte只占一个字节,因为我之前用程序连贯过充电桩,接管充电桩的报文,给的报文都是byte类型的,byte更小,像String就带了一些额定的信息,所以我猜测,是这个意义上的二进制,然而这只是猜测,我想过用抓包工具去验证我的猜测,然而发现抓包工具我用的并部署,再加上HTTP/2.0都是加密报文,抓包挺麻烦的,我也想过看HTTP Client的源码,然而这两个奏效都太慢了,最近偶尔翻看MongDB的文档,翻到了这方面的阐明,这个问题就有了答案。其实HTTP也对下面的二进制进行了解释: ...