2015-11-01 40 views
1

當連接開始時,圖像以下情形:兩個端點的HTTP/2共享設置?

客戶發送前言和服務器發送設置幀。它集11638431000(這些數字有沒有什麼特別的意思,只是爲了舉例說明),然後客戶端發送它的設置框與設置1 = 81922 = 1

現在,有兩個單獨的映射設置?那麼本地和遠程?

喜歡本地= [1 = 163843 = 1000]和遠程= [1 = 81922 = 1] 還是他們共享一個地圖爲設置?

像設置= [1 = 81922 = 13 = 1000]

回答

1

RFC 7540, section 6.5指出:

設置參數不協商;它們描述了接收端使用的發送端的特徵。每個對等體可以通告相同參數的不同值。

你的特定示例中提到的設置鍵1,其對應於SETTINGS_HEADER_TABLE_SIZE,其具有也被指定在RFC 7541特定處理。

一般而言,本地和遠程對等設備爲設置維護單獨映射,其中一些只對一個對等設備有意義(或略有不同)。

例如,一臺服務器可以通知客戶端,它不會接受超過1024個併發流(鍵3,SETTINGS_MAX_CONCURRENT_STREAMS),但它是不可能的,客戶端會通知該值的服務器在典型部署

+0

好的,謝謝,現在基於你的回答,我的第二個問題是:當客戶端發送一個SETTINGS幀並且已經有數據流打開時,所有**活動流的窗口大小是否被更新,或者只有那些是客戶端 - 或服務器啓動? – Ercksen

+1

假設SETTINGS幀包含一個SETTINGS_INITIAL_WINDOW_SIZE,那麼所有**活動流將被更新,並且所有將來的流都將被更新。在典型的部署中,沒有服務器啓動的流;推送流就像一個「合成」客戶端啓動的流。參考資料是[本節](https://tools.ietf.org/html/rfc7540#section-6.9.2)。 – sbordet