在使用 httperf 的时候, 看到了 HTTP 1.0 / 1.1 的概念, 之前没有相关知识, 查询了一下:
1. 持久连接:
HTTP 1.0 时代:
Browser Client 与 Web Server 建立一个 TCP connection, 就只能发送一个 request。换句话说, 每发送一个 request 就需要建立一个 TCP connection.
于是, 当一个页面中包含大量图片链接时, 每下载一个图片就需要建立一个 TCP connection. 可以想象, 每次建立 一个 TCP connecton 必然非常耗时。就好像数据库连接池就是为了减少每次都建立 connection 的时间一样。
HTTP 1.1 时代:
在每个 TCP connection 上, Browser Client 可以发送多个 request, 返回顺序会依据发送的顺序。
在每个 request 的 HTTP 头信息里, 会制定是否 keep alive 当前的 TCP connnection. 如果是 close, 将关闭 connection.
2. 指定 host :
HTTP 1.0 时代:
默认认为一个 IP 只能对应一个 HOST, 实际上一个 IP 能对应多个 HOST, 在不同的端口上。
HTTP 1.1 时代:
可以在 HTTP 头里指定 HOST.
例如:
GET /home.html HTTP/1.1
HOST: example1.org
other:
python2.6 urllib2.urlopen 默认使用HTTP1.1
参考: