1.什么是web socket?
WebSocket是基于TCP協(xié)議實現(xiàn)的HTML5中的協(xié)議,支持頁面使用Web Socket協(xié)議與遠程主機進行全雙工的通信,和HTTP協(xié)議是并存的兩種協(xié)議。
在WebSocket中,只需要服務(wù)器和瀏覽器通過HTTP協(xié)議進行一個握手的動作,然后單獨建立一條TCP的通信通道進行數(shù)據(jù)的傳送。?
WebSocket連接的過程是:
首先,客戶端發(fā)起http請求,經(jīng)過3次握手后,建立起TCP連接;http請求里存放WebSocket支持的版本號等信息,如:Upgrade、Connection、WebSocket-Version等;
然后,服務(wù)器收到客戶端的握手請求后,同樣采用HTTP協(xié)議回饋數(shù)據(jù);
最后,客戶端收到連接成功的消息后,開始借助于TCP傳輸信道進行全雙工通信。
2.WebSocket與Socket的關(guān)系
當(dāng)兩臺主機通信時,必須通過Socket連接,Socket則利用TCP/IP協(xié)議建立TCP連接。TCP連接則更依靠于底層的IP協(xié)議,IP協(xié)議的連接則依賴于鏈路層等更低層次。
WebSocket就像HTTP一樣,則是一個典型的應(yīng)用層協(xié)議。?
Socket是傳輸控制層接口,WebSocket是應(yīng)用層協(xié)議。
3.WebSocket與HTTP的關(guān)系?
(1)相同點:
1. 都是一樣基于TCP的,都是可靠性傳輸協(xié)議。
2. 都是應(yīng)用層協(xié)議。
(2)不同點:
1. WebSocket是雙向通信協(xié)議,模擬Socket協(xié)議,可以雙向發(fā)送或接受信息。HTTP是單向的。
2. WebSocket是需要瀏覽器和服務(wù)器握手進行建立連接的。而http是瀏覽器發(fā)起向服務(wù)器的連接,服務(wù)器預(yù)先并不知道這個連接。
(3)聯(lián)系
WebSocket在建立握手時,數(shù)據(jù)是通過HTTP傳輸?shù)摹5墙⒅?,在真正傳輸時候是不需要HTTP協(xié)議的。
參考鏈接:https://blog.csdn.net/SL_ideas/article/details/73648378