c语言编程笔录

首页 >   > 笔记大全

笔记大全

总结从HTTP到HTTP3的发展简史

更新时间:2023-08-17

前言

HTTP(Hypertext Transfer Protocol)是用于Web上的数据传输的协议。它是在1990年代初由CERN的蒂姆·伯纳斯-李发明的。从最初的HTTP 0.9到最新的HTTP/3,HTTP协议经历了多次更新和改进,以适应互联网的快速发展和用户需求的变化。

HTTP/1.0

HTTP/1.0是最早的HTTP协议版本,它于1996年发布。它使用短连接,即每个请求都需要建立一个新的TCP连接。这种方式效率低下,特别是在处理大量请求时,每次建立连接都需要耗费时间和资源。此外,HTTP/1.0没有支持持久连接和请求管道化,每个请求都需要等待前一个请求的响应返回才能发起。

// 示例代码
GET /index.html HTTP/1.0
Host: www.example.com

上面是一个HTTP/1.0的示例请求,其中包含了请求行(GET /index.html HTTP/1.0)和请求头(Host: www.example.com)。请求行指定了请求的方法、URL和协议版本;请求头包含了额外的请求信息。

HTTP/1.1

HTTP/1.1于1999年发布,是HTTP协议的一个重要版本升级。它引入了持久连接和请求管道化,解决了HTTP/1.0存在的性能问题。持久连接允许多个请求和响应共用同一个TCP连接,减少了连接建立和关闭的次数。请求管道化允许客户端同时发送多个请求,无需等待每个请求的响应返回。

// 示例代码
GET /index.html HTTP/1.1
Host: www.example.com
Connection: keep-alive

GET /image.jpg HTTP/1.1
Host: www.example.com
Connection: keep-alive

上面是一个HTTP/1.1的示例请求,其中的Connection头部指定了使用持久连接。HTTP/1.1还引入了更多的请求头和响应头,提供了更多的功能和控制选项。

HTTP/2和HTTP/3

HTTP/2是在2015年发布的最新主流版本,它采用了二进制协议格式,优化了传输效率。HTTP/2引入了流(Stream)的概念,将一个TCP连接分为多个流,每个流可以独立进行请求和响应。这样可以充分利用并行传输和多路复用,提高了性能。

// 示例代码
GET /index.html HTTP/2
Host: www.example.com

HTTP/3是HTTP协议的下一代版本,目前还在标准化过程中。HTTP/3采用了QUIC(Quick UDP Internet Connections)作为底层传输协议,使用UDP替代了TCP,以解决TCP存在的延迟问题。QUIC使用了一些新的技术,如0-RTT连接建立和数据分片重传,提高了性能和可靠性。

总结起来,HTTP协议从最早的HTTP/1.0到当前的HTTP/3,不断演化和改进,以适应互联网的发展和用户需求。新的协议版本引入了更多的功能和性能优化,提高了网络传输效率和用户体验。