1 隊首阻塞
就是需要排隊,隊首的事情沒有處理完的時候,后面的人都要等着。
2 http1.0的隊首阻塞
對於同一個tcp連接,所有的http1.0請求放入隊列中,只有前一個請求的響應收到了,然后才能發送下一個請求。
可見,http1.0的隊首組塞發生在客戶端。
3 http1.1的隊首阻塞
對於同一個tcp連接,http1.1允許一次發送多個http1.1請求,也就是說,不必等前一個響應收到,就可以發送下一個請求,這樣就解決了http1.0的客戶端的隊首阻塞。但是,http1.1規定,服務器端的響應的發送要根據請求被接收的順序排隊,也就是說,先接收到的請求的響應也要先發送。這樣造成的問題是,如果最先收到的請求的處理時間長的話,響應生成也慢,就會阻塞已經生成了的響應的發送。也會造成隊首阻塞。
可見,http1.1的隊首阻塞發生在服務器端。
4 http2是怎樣解決隊首阻塞的
http2無論在客戶端還是在服務器端都不需要排隊,在同一個tcp連接上,有多個stream,由各個stream發送和接收http請求,各個steam相互獨立,互不阻塞。
只要tcp沒有人在用那么就可以發送已經生成的requst或者reponse的數據,在兩端都不用等,從而徹底解決了http協議層面的隊首阻塞問題。
