真正“搞”懂HTTP协议03之时间穿梭( 四 )


5、客户端Cookie想象一下为什么我们需要cookie呢?cookie的作用是什么?你还记得HTTP是无状态的了么?每次发送响应 , 然后就没有然后了 , 那当我们需要记录用户状态时怎么做呢?HTTP/1.1就引入了客户端Cookie机制 , 让客户端可以存储一段数据 , 传递给服务器 , 这样服务器就能从保存的数据中读取一定的信息 。来实现一定程度的状态保持和用户识别 。
当然 , 因为Cookie可以在客户端存储数据的特性 , 也在一定情况下当作缓存来使用 , 可以通过浏览器的API来获取Cookie , 但是其实这样做是不安全的 , 你也可以通过响应头来限制客户端访问Cookie 。
当然 , 还可以设置Cookie的过期时间 , 设置Cookie的作用域等等 。这个我们后面再具体说 。
6、安全机制HTTP/1.1相比于HTTP/1.0增加很多安全机制 , 这些安全机制都融合进了HTTP的字段使用中 , 比如SameSite、Referer、Origin , 比如Cookie的HttpOnly等等 。我们先知道这回事 。
HTTPS:给你的钱包上个锁HTTP/1.1已经新增了很多安全机制 , 那HTTP就真的安全了么?答案显然是否定的 , 因为HTTP本身的特性:明文传输 。所以HTTP自己根本无法解决传输数据的安全性问题 , 获取HTTP传输的数据非常容易 。
这就导致了你在网络上的任何访问都可能引起你实际的损失和个人信息的透明 。在一些购物、政府场景下 , 对于信息的安全要求更是极高 , 但是我也说了 , HTTP自身是解决不了的 。那咋整?
基于这样的前提 , HTTPS诞生了 , 但是实际上来说 , HTTPS就是HTTP , 只不过在HTTP的上一层不再是TCP了 , 而是SSL/TLS , 换句话说 , 就是在HTTP和TCP中间又加了一层:

真正“搞”懂HTTP协议03之时间穿梭

文章插图
所以你看 , 其实HTTPS就是HTTP , 它的一切都是HTTP赋予的 , 只不过 , HTTP的报文要经过SSL/TLS层的加工处理后才交给TCP 。SSL和TLS其实是一个东西 , 最开始的时候是SSL , 后来标准化了之后就叫做TLS了 。
HTTP/2:HTTP的极限现在绝大多数网站所使用的还是HTTP/1.1 , 这个毋庸置疑 。在现在的阶段 , HTTP/2在Top1000的网站上也得到了不错的应用 , 比如谷歌、苹果等等 。而在未来 , 可能会在真正实行的时候直接大力推广使用HTTP/3了 , 当然 , 真正的想在应用中广泛使用HTTP/3也不会那么快 。
那么我们来简单看下 , 相比于HTTP/1.1 , 它有哪些划时代的增强吧 。
HTTPS帮助我们解决了HTTP数据传输的安全性问题 , 并且标准已经十分成熟 。所以无论是2也好 , 还是3也罢 , 后续的努力 , 都是在为了性能所奋斗 。
一个核心优化就是二进制报文传输 , 虽然这样不利于阅读 , 但是在机器的理解和识别上却变得十分简单快速 。并且基于二进制又引入了流的概念 , 我们可以把整个HTTP报文分割成一个又一个小的包 , 然后每个包会赋予一个唯一的ID , 这些包按照次序组装起来就是HTTP的报文了 。这个东东有一个大名鼎鼎的称呼 , 叫做多路复用 。
除了多路复用 , HTTP/2还可以设置请求的优先级、压缩头字段、服务器推送等等 。
最后 , 我为什么会起这样一个标题呢?因为在使用TCP作为传输协议的基础上 , 想要再在应用层层面提升性能已经是无计可施了 , 因为TCP的一些自身特性 , 以及设备僵化等等原因 , 其实HTTP/2可以说是性能的极限了 。所以 , 基于这样的原因 , 才有了HTTP/3 。

经验总结扩展阅读