websocket和http的區別


 

websocket和http的區別:

1、WebSocket是雙向通信協議,模擬Socket協議,可以雙向發送或接受信息,而HTTP是單向的;

2、WebSocket是需要瀏覽器和服務器握手進行建立連接的,而http是瀏覽器發起向服務器的連接。

 

一、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中文網其它相關文章!

 

原文:https://www.php.cn/faq/465597.html

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM