HTTP1.0、HTTP1.1 和 HTTP2.0 都是 HTTP 协议的不同版本,主要区别如下:
HTTP1.0:
- 不支持持久连接,每次请求都需要建立新的TCP连接。
- 不支持流水线,一次只能发送一个请求。必须等响应返回后才能发送下一个请求。
- 不支持分块传输编码,需要先确定内容长度再发送请求。
HTTP1.1:
- 支持持久连接和流水线,允许在一个TCP连接上发送多个请求和接收响应。
- 支持分块传输编码,可以先发送请求然后再确定内容长度。更适合动态内容传输。
- 增加了更多的头部字段,如Host头用于虚拟主机。
- 支持代理和缓存以改善性能。
HTTP2.0:
- 二进制形式,更紧凑有效的数据格式。
- 全双工,客户端和服务器可以同时发送多个消息。
- 头部压缩,避免重复的头部字段被多次发送。
- 服务器推送,允许服务器预推关联资源。
- 优先级与依赖,为更重要或更紧急的数据赋予更高的优先级。
代码示例:
python
# HTTP1.1 - 支持长连接
conn = http.client.HTTPConnection('www.example.com')
conn.request('GET', '/')
res = conn.getresponse()
print(res.status)
conn.request('GET', '/test')
res = conn.getresponse()
print(res.status)
# HTTP2 - 双向并发
conn = http.client.HTTPConnection('www.example.com', enable_http_1_1=False)
conn.request('GET', '/')
res = conn.getresponse()
print(res.status)
conn.request('GET', '/test')
res = conn.getresponse()
print(res.status)