1. 程式人生 > >http和WebSocket

http和WebSocket

自己的 ket http協議 心得 spa family col 區別 quest

有關http和WebSocket 的區別網上有很多的質料。

個人在此僅僅是記錄以下自己的學習心得,自己的理解。

1. http協議是用在應用層的協議,他是基於tcp協議的,http協議建立鏈接也必須要有三次握手才能發送信息。

  http鏈接分為短鏈接,長鏈接,短鏈接是每次請求都要三次握手才能發送自己的信息。即每一個request對應一個response。長鏈接是在一定的期限內保持鏈接。保持TCP連接不斷開。客戶端與服務器通信,必須要有客戶端發起然後服務器返回結果。客戶端是主動的,服務器是被動的。

2. WebSocket

  WebSocket他是為了解決客戶端發起多個http請求到服務器資源瀏覽器必須要經過長時間的輪訓問題而生的,他實現了多路復用,他是全雙工通信。在webSocket協議下客服端和瀏覽器可以同時發送信息。

建立了WenSocket之後服務器不必在瀏覽器發送request請求之後才能發送信息到瀏覽器。這時的服務器已有主動權想什麽時候發就可以發送信息到服務器。而且信息當中不必在帶有head的部分信息了與http的長鏈接通信來說,這種方式,不僅能降低服務器的壓力。而且信息當中也減少了部分多余的信息。

技術分享圖片

相同點

1. 都是一樣基於TCP的,都是可靠性傳輸協議。
2. 都是應用層協議。

不同點

 1. WebSocket是雙向通信協議,模擬Socket協議,可以雙向發送或接受信息。HTTP是單向的。
 2. WebSocket是需要瀏覽器和服務器握手進行建立連接的。而http是瀏覽器發起向服務器的連接,服務器預先並不知道這個連接。

聯系

WebSocket在建立握手時,數據是通過HTTP傳輸的。但是建立之後,在真正傳輸時候是不需要HTTP協議的。


在WebSocket中,只需要服務器和瀏覽器通過HTTP協議進行一個握手的動作,然後單獨建立一條TCP的通信通道進行數據的傳送。
WebSocket連接的過程是:
首先,客戶端發起http請求,經過3次握手後,建立起TCP連接;http請求裏存放WebSocket支持的版本號等信息,如:Upgrade、Connection、WebSocket-Version等;
然後,服務器收到客戶端的握手請求後,同樣采用HTTP協議回饋數據;
最後,客戶端收到連接成功的消息後,開始借助於TCP傳輸信道進行全雙工通信。

http和WebSocket