http 0.9:过时。
http 1.0:非持续链接。存在的问题,
对于同一个tcp连接,所有的http1.0请求放入队列中,只有前一个请求的响应收到了,然后才能发送下一个请求。
可见,http1.0的队首组塞发生在客户端。
http 1.1:默认使用持续连接,不必为每一个web对象建立一个新的连接,一个连接可以传送多个对象。允许一次发送多个http请求,也就是说,不必等前一个响应收到,就可以发送下一个请求,这样就解决了http1.0的客户端的队首阻塞。但是http1.1规定,服务器端的响应的发送要根据请求被接收的顺序排队,也就是说,先接受到的请求的响应也要先发送。这样造成的问题是,如果最先收到的请求的处理时间长的话,响应生成也慢,就会阻塞已经生成了的响应的发送。也会造成队首阻塞。可见,http1.1的队首阻塞发生在服务器端。
http 2.0:
http2无论在客户端还是在服务器端都不需要排队,在同一个tcp连接上,有多个stream,由各个stream发送和接收http请求,各个steam相互独立,互不阻塞。
只要tcp没有人在用那么就可以发送已经生成的requst或者reponse的数据,在两端都不用等,从而彻底解决了http协议层面的队首阻塞问题。