聊聊http发展史

💡 原文中文,约5900字,阅读约需14分钟。
📝

内容提要

HTTP的开展历程:HTTP/0.9只能传输文本,HTTP/1.0支持多种文件类型传输,引入请求头和响应头;HTTP/1.1引入持久连接和管线化,解决队头堵塞问题;HTTP/2.0引入多路复用,提高带宽利用率;HTTP/3.0采用QUIC协议,解决TCP的问题。GET和POST的区别:GET用于无副作用幂等场景,POST用于有副作用非幂等场景。HTTP状态码和HTTPS的介绍。

🔎

延伸解读

HTTP版本演进的核心矛盾

从HTTP/0.9到3.0,每次升级都在解决前一代的瓶颈。0.9只能传文本,1.0引入头部支持多类型但每次请求新建连接,1.1用持久连接减少开销却带来队头堵塞,2.0用多路复用提升带宽利用率但受限于TCP,3.0转向QUIC以规避TCP缺陷。理解这条主线,就能看清协议设计中的权衡。

队头堵塞:从HTTP到TCP的难题

队头堵塞是HTTP性能优化的核心障碍。HTTP/1.1的持久连接下,前一个请求慢会阻塞后续请求;HTTP/2.0通过二进制分帧层实现多路复用,解决了HTTP层面的队头堵塞,但TCP层仍因丢包重传导致阻塞。HTTP/3.0改用QUIC(基于UDP)才真正规避了TCP的队头堵塞和慢启动问题。

GET与POST:幂等性和副作用是关键

文章指出GET和POST的本质区别在于幂等性和副作用。GET用于无副作用、幂等的场景(如搜索),POST用于有副作用、非幂等的场景(如注册)。此外,GET参数在URL中可被缓存,POST在请求体中相对安全;URL长度有限制,POST无此约束且支持更多编码类型。

HTTPS与HTTP/3.0的现状

HTTPS是HTTP加上TLS加密,TLS结合非对称加密(交换密钥)和对称加密(传输数据)保障安全。HTTP/3.0基于QUIC协议,在UDP上实现了可靠传输、多路复用和集成TLS,但需要浏览器、服务器和操作系统支持,目前尚未普及。

❓

Q&A

HTTP的不同版本有哪些主要特点?

HTTP的主要版本包括HTTP/0.9、HTTP/1.0、HTTP/1.1、HTTP/2.0和HTTP/3.0。每个版本在文件传输、连接管理和性能优化上都有不同的改进。

HTTP/1.1是如何解决队头堵塞问题的?

HTTP/1.1引入了持久连接和管线化,但队头堵塞问题仍然存在,后续的HTTP/2.0通过多路复用来进一步解决此问题。

GET和POST请求有什么区别?

GET请求用于无副作用的幂等场景,数据通过URL传递,支持缓存;POST请求用于有副作用的非幂等场景,数据在请求体中传递,不支持缓存。

HTTP/2.0是如何提高带宽利用率的?

HTTP/2.0通过多路复用技术,将多个请求通过一个TCP连接发送,减少了连接数量,提高了带宽利用率。

HTTPS与HTTP的主要区别是什么?

HTTPS是加密后的HTTP,使用TLS协议进行数据传输的安全性保障,确保数据在传输过程中的安全性。

HTTP/3.0采用了什么协议来解决TCP的问题?

HTTP/3.0采用了QUIC协议,该协议基于UDP,旨在解决TCP的慢启动和队头堵塞问题。

🏷️

标签

➡️

继续阅读