2011-06-02 22 views
4

我正在觀看關於Html 5 WebSockets的許多演示,其中服務器可以初始化與客戶端的連接,並在沒有來自客戶端的請求的情況下推送數據。爲什麼HTTP被設計成拉協議?

我們不需要輪詢等

而且,我很好奇,爲什麼的Http被設計成一個「拉」,並在第一時間沒有全雙工協議?這種決定背後的原因是什麼?

+1

那時候這似乎是一個好主意:)。考慮到那時的「互聯網」是完全不同的。 HTTP現在只是我們留下的一段歷史。這是一件兒童外套,當你成熟時並不舒服。 – kapa 2011-06-02 07:41:42

+0

現在我們使用HTTP來傳輸將使用其他協議傳輸數據的數據。 – Kyle 2011-06-02 07:46:05

+0

HTTP設計於1990年。 – Gumbo 2011-06-02 07:46:14

回答

9

因爲http最初設計時是用來從服務器檢索文檔的。最簡單的方法是當客戶端向服務器請求文檔並將其作爲響應發送(或者在不存在的情況下發生錯誤)。當你使用push協議時,這意味着服務器需要長時間保持客戶端連接,造成更多的資源管理問題 - 請記住,我們在這裏討論的是20世紀90年代初期。

+2

+1。它旨在瀏覽文檔,而不是創建基於事件的應用程序。請求/響應機制的簡單性是它今天仍然使用的原因,也是[許多](http://en.wikipedia.org/wiki/SOAP)[other](http:// en。 wikipedia.org/wiki/WebDAV)[protocols](http://en.wikipedia.org/wiki/Session_Initiation_Protocol)。 – alexrs 2011-06-02 08:19:37

2

Http旨在從服務器簡單地檢索超文本文檔。當頁面只是純粹的,沒有腳本功能的靜態HTML時,沒有任何理由推送任何東西給客戶端。

由於當時沒有必要將事情推回客戶端,因此協議保持簡單。

0

HTTP主要是一種拉協議 - 某人在Web服務器上加載信息,並且用戶使用HTTP在他們方便的時候從服務器獲取信息。特別是, TCP連接由想要接收文件的機器啓動。