1. 程式人生 > >理解HTTP/2流量控制(一)

理解HTTP/2流量控制(一)

流量控制的定義是用來保護端點在資源約束條件下的操作。例如,一個代理需要在很多連線之間共享記憶體,也有可能有緩慢的上游連線和快速的下游連線。流量控制解決的情況是接收端在一個流上處理資料的同時同樣想繼續處理同個連線上的其他流。

排程過程中不需要這種能力時可以廣播一個最大值的流量控制視窗,增加接收新資料時的可用空間。傳送資料時總是受接收端廣播的流量控制視窗的管理(見[RFC1323])。

資源約束下(例如記憶體)的排程可以使用流量來限制一個對等端可以消耗的記憶體數量。需要注意的是如果在不知道頻寬延遲乘積的時候啟用流量控制可能導致無法最優的利用可用的網路資源(see RFC1323)。

即便是對當前的網路延遲乘積有充分的認識,流量控制的實現也可能很複雜。當使用流量控制時,接收端必須及時地從TCP接收緩衝區讀取資料。這樣做可能導致在一些例如WINDOW_UPDATE的關鍵幀在HTTP/2不可用時導致死鎖。但是流量控制可以保證約束資源能在不需要減少連線利用的情況下得到保護。