我的爱情日记

1991年8月

我叫客户端 英文名字 client

我叫服务器 英文名字 server

这一年里,我们出生了。

是的,我们都是90后。

我爱她,可是她却远在天边。

为了能和她互诉衷肠,我同时发明了HTTP协议。

一门世界上只有我和她能懂的语言,一种世界上只有她和我能懂的浪漫。

虽然我只能给她发出操作,她也只能返回HTML文档,但是足够了。

当我发出GET /index.html的时候她会返回

<html>
<body>Hello World</body>
</html>

可能在她看来,我也是她全世界吧。

我知道我自己还不完美,所以我给自己命名0.9版本,我期待未来自己也能变得更好。

1996年5月

这是我第二篇日记。

原谅我很少写日记,毕竟正常人哪个写日记啊?

之前我只和她分享HTML,这已经远远不能满足我了,现在我想和她风险图片、视频以及二进制文件。

另外,我也想和她有更多的接触,就像恋人一样除了牵手还想要拥抱和接吻,我除了GET还想要PSTHEAD

再次,在我的强烈要求下,每次交流能不能给点提示,省得老是被吐槽不解风情。

所以,除了数据部分,每次通信加上了头信息,大家都有个心理准备这次要干嘛。

比如在请求数据头信息,Accpt: * /*会告诉她我能接受的数据类型,她若返回数据Content-Type:image/jpeg我就知道她要分享自己的美照了,Content-Type:video/mp4我就知道可以看到她美丽的视频了。

最后,唉,女孩子有时候真的是有点啰嗦,所以我又在HTTP协议里面又加了Content-Encoding,暗示一下她可以压缩数据。

比如我会用Accept-Encoding:gzip,defalte来告诉她我能接受的压缩类型,而Content-Encoding:gzip就是我告诉她的的实际压缩类型。

可以看出来现在HTTP协议复杂了很多,但是我想说这是我们两个的特殊密码,我愿意记录下来,成为一份美好的回忆。

另外一个尴尬的问题就是,她觉得我不太久,每个Tcp链接只能发送一个请求,发送数据就关闭,这让我很苦恼,所以这些浏览器在请求时,用了一个非常标准的Connection字段。

Cnnection:keep-alive

这样她就知道,我这次时间真的长了,不用再轻易断开链接了。

不过遗憾的是,这个并没有纳入标准。

不管咋样,我觉得HTTP这次改的也算像模像样了,所以就叫1.0吧。

有了这个里程碑,我和我的服务端之后交流就可以更加丰富多彩了。

毕竟异地恋,最重要的还是有效、丰富的沟通。

1997年1月

随着我们深入了解,我觉得我更爱她了,所以愿意做更多的事情。

作为男人最大的尊严,我首先把Connection:keep-alive纳入标准,即没有声明默认不关闭。

其次,我已经受不了了我一问她一答这种模式了,我想尽可能的一次把我更多的爱意发出去,所以我引入管道机制,允许我同时发出多个请求,当然她还是按照顺序,先后回应即可,最起码我已经做到位了。

我的付出也是又回报的,server也很体贴的给我传回来Content-Length字段,好让我方便知道她给了我多少数据。

但是有时候她要说的话太多了,我真的不想等待的太久她处理完才有回应,所以除了Content-Length字段,我同时在HTTP增加了Transfer-Encoding字段,就表明回应将由数量未定的数据块组成。

比如每个非空的数据块之前,会有一个16进制的数值,表示这个块的长度。

最后是一个大小为0的块,就表示本次回应的数据发送完了。下面是一个例子

HTTP/1.1 200 OK

Content-Type:text/plain

Transfer-Encoding:chunked

25
This is the data in the first chunk

1C
and this is the second one

3
con

8
sequence

0

这样,我就可以立马收到她的回复了,真好。

最后,除了了GET POST等操作,我还增加了了PUT PATCH各种姿势来和她沟通。

虽然优化了不少,但是作为男人要谦虚点,所以我要把版本是命名我为1.1.

好的,就到这里吧,为了她我会继续努力的。

2009年

听说google公开了SPDY协议,还是用来解决我的HTTP1.1效率不高的问题?我不太开心,我还是喜欢我的HTTP协议。

server还问我能不能也把<HTTP也优化优化,无语,我通过我的HTTP和她谈了18年的恋爱了。

这样吧,不想写了,爱咋地咋地。

2015年月

爱一个人,真的会让自己变得优秀。

为了能和她走的更近,我还是狠狠地把HTTP优化了一下。

虽然只是在SPDY的协议基础上,但是,这些都不重要!

####大概有以下主要几点:

  1. HTTP/1.1版本的头信息肯定是文本(ASCII编码),数据体可以是文本,也可以是二进制,文本解析肯定不如二进制,所以直接彻底点,都变成二进制。
    这样我们都可以快速理解对方的诉求。

    1. 之前说我可以同时发出多个请求,server按照顺序处理,但是我不想一个个接受她的回应,所以她也可以并发返回给我数据了。

    2. 恋爱越久,越怕对方说重复的话,所以排除了数据体,这次我把头信息也进行了压缩,一方面可以使用 gzip/ compress进行压缩,另外我和她同时维护一张头信息表里所有字段都会存入这个表,生成一个索引号,以后就不发送同样字段了,只会发送索引号,这样就可以提高速度了。

    3. 这个是最重要的,服务器可以主动向客户端发送资源,而不是我必须先发个请求,也就是当我走了九十九步,剩下的一步是她向我走来。

    4. 这次优化的太多了,我决定直接直接命名为HTTP/2.0,当然以后还是会有3.0,4.0。为了她,我愿意变的更加优秀。

结束语

从前的书信很慢,只够爱一个人。

如今HTTP可以让你的爱意毫秒级传达给对方,最后祝大家得之所爱,一生被爱。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值