2012-11-05 48 views
3

HTTP協議是無狀態的,但我發現這對黑瀨羅斯書:爲什麼HTTP協議可以處理持久連接而無狀態?

The default HTTP method is with persistent connections and pipeling. 

這意味着它可以處理多個請求,所以它一直開了一個客戶端的想要問的多個請求插座。真的嗎?如果是,爲什麼HTTP協議被認爲是無狀態的?

+2

’:// EN。 wikipedia.org/wiki/Stateless_protocol))管道和持久連接如何改變這一點? – raina77ow

+0

因爲如果被請求多個資源,TCP連接保持打開狀態,所以這樣的狀態被保存在插座仍處於server.And「活着」。 –

+2

HTTP狀態?不是。它是較低級協議的狀態。而HTTP服務器本身不應該關心如何發送兩個HTTP請求。 – raina77ow

回答

2

HTTP persistent connections涉及到被拋在TCP連接的開放。 HTTP在TCP之上運行 - 因此TCP可以連接和/或有狀態,而HTTP不會。 TCP只是HTTP的傳輸。

如果看看OSI model,你可以看到,TCP是在層4(傳輸),而HTTP是在層7(應用程序)。 HTTP並不依賴於TCP,也可以使用其他傳輸方式 - 作爲一種協議,它不是「繼承」來自TCP的功能。 (請注意,持久連接在很長一段時間內並不真正持續,對於Apache 2,它僅在默認情況下打開5秒,並且「根據RFC 2616(第46頁),單用戶客戶端不應該維持與任何服務器或代理多於2個連接無狀態協議是這樣的,將每個請求作爲一個獨立的事務處理,無關之前的請求‘([維基](HTTP」)

+0

所以HTTP是無狀態的,因爲在應用層中沒有保存的狀態,在此,傳輸層(TCP層)的狀態是saved.Is這種說法是真的嗎? –

+0

使用HTTP預設連接,是的,這是真的。一般來說,TCP並不總是保存狀態,HTTP有涉及狀態的「黑客攻擊」,但這並不是問題的關鍵。 – eis

相關問題