websocket和http的區別:1、WebSocket是雙向通訊協議,模擬Socket協議,可以雙向發送或接受訊息,而HTTP是單向的;2、WebSocket是需要瀏覽器和伺服器握手進行建立連接的,而http是瀏覽器發起向伺服器的連線。
本文操作環境:Windows7系統,Dell G3電腦。
推薦:《程式設計影片》
一、WebSocket 是什麼?
WebSocket是HTML5規範提出的一種協定;目前除了完犢子的IE瀏覽器,其他瀏覽器都基本上支援。他是一種協議,萬變不離其宗,也是基於TCP協議的;和HTTP協議是並存的兩種協議。
WebSocket是HTML5中的協定。 HTML5 Web Sockets規格定義了Web Sockets API,支援頁面使用Web Socket協定與遠端主機進行全雙工的通訊。它引入了WebSocket介面並且定義了一個全雙工的通訊通道,透過一個單一的套接字在Web上進行操作。
HTML5 Web Sockets以最小的開銷有效率地提供了Web連線。相較於經常需要使用推送即時資料到客戶端甚至透過維護兩個HTTP連線來模擬全雙工連線的舊的輪詢或長輪詢(Comet)來說,這就極大的減少了不必要的網路流量與延遲。
要使用HTML5 Web Sockets從一個Web客戶端連接到一個遠端端點,你要建立一個新的WebSocket實例並為之提供一個URL來表示你想要連接到的遠端端點。
該規範定義了ws://以及wss://模式來分別表示WebSocket和安全WebSocket連接,這就跟http:// 以及https:// 的區別是差不多的。
一個WebSocket連線是在客戶端與伺服器之間HTTP協定的初始握手階段將其升級到Web Socket協定來建立的,其底層仍是TCP/IP連線。
二、WebSocket與Socket的關係
Socket其實不是一個協議,而是為了方便使用TCP或UDP而抽像出來的一層,是位於應用層和傳輸控制層之間的一組介面。
「Socket是應用層與TCP/IP協定族通訊的中間軟體抽象層,它是一組接口,提供一套呼叫TCP/IP協定的API。
在設計模式中,Socket其實就是一個門面模式,它把複雜的TCP/IP協議族隱藏在Socket接口後面,對用戶來說,一組簡單的接口就是全部,讓Socket去組織數據,以符合指定的協議。”
當兩台主機通訊時,必須透過Socket連接,Socket則利用TCP/IP協定建立TCP連線。 TCP連線則更依賴底層的IP協定,IP協定的連線則依賴連結層等較低層次。
WebSocket就像HTTP一樣,則是典型的應用層協定。
總結:
Socket是傳輸控制層接口,WebSocket是應用層協定。
三、WebSocket與HTTP的關係
關係圖:
#相同點
#都是一樣基於TCP的,都是可靠性傳輸協定。
都是應用層協定。
區別
WebSocket是雙向通訊協議,模擬Socket協議,可以雙向發送或接受訊息。 HTTP是單向的。
WebSocket是需要瀏覽器和伺服器握手進行建立連線的。而http是瀏覽器發起到伺服器的連接,伺服器預先並不知道這個連接。
聯繫
WebSocket在建立握手時,資料是透過HTTP傳輸的。但是建立之後,真正傳輸時候是不需要HTTP協定的。
總結:
在WebSocket中,只需要伺服器和瀏覽器透過HTTP協定進行一個握手的動作,然後單獨建立一條TCP的通訊通道進行資料的傳送。
WebSocket連線的過程是:
首先,客戶端發起http請求,經過3次握手後,建立起TCP連線;http請求裡存放WebSocket支援的版本號等信息,如:Upgrade、Connection、WebSocket-Version等;
然後,伺服器收到客戶端的握手請求後,同樣採用HTTP協定回饋資料;
最後,客戶端收到連線成功的訊息後,開始借助於TCP傳輸通道進行全雙工通訊。
以上是websocket和http的差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!