天天看點

Http,Socket,Websocket--差別

簡介

        本文介紹Http,Socket,Websocket的差別。

        Socket是抽象層,在應用層與運輸層中間。是以本文重點對比HTTP與Websocket。

Http,Socket,Websocket--差別

Http與Websocket的對比

相同點

Http Websocket
相同點
所在層面 應用層(調用Socket,基于TCP) 應用層(模拟Socket,基于TCP)

不同點

Http Websocket
連接配接類型 短連接配接(浏覽器控制,頁面無法控制)。

長連接配接。

連接配接時間可程式設計,可永久連接配接(除非斷網)。

通信方式 客服端發起請求,服務端才響應。服務端不能主動聯系用戶端,隻能由用戶端發起。(單向)

        隻需要完成一次握手,兩者之間就直接可以建立持久性的連接配接,并進行雙向資料傳輸。

        不用再次發起網絡請求,它允許服務端主動向用戶端推送資料。

端口 預設為8080 預設情況下,Websocket協定使用80端口;運作在TLS之上時,預設使用443端口。

聯系

WebSocket通過HTTP協定建立握手建立之後,使用TCP協定傳輸。

HTTP

短連接配接

在HTTP1.0中,用戶端發送請求,伺服器接收請求,雙方建立連接配接,伺服器響應資源,請求結束。

長連接配接

持久連接配接的特點是,隻要任意一端沒有明确提出斷開連接配接,則保持 TCP 連接配接狀态。

        HTTP1.1開始,預設采用持久連接配接,使用了一種叫做keepalive connections 的機制。在傳輸資料後仍然保持連接配接,當用戶端再次擷取資料時,直接使用剛剛空閑下來的連接配接,而無需再次握手,低線路負載,提高傳輸速度。

        Keep-Alive不會永久保持連接配接,它有一個保持時間,可以在不同的伺服器軟體(如Apache)中設定這個時間。實作長連接配接需要用戶端和服務端都支援長連接配接。

       長連接配接優勢:減少了連接配接請求,降低TCP阻塞,減少了延遲,實時性較好。

       長連接配接劣勢:可能會影響性能,因為它在檔案被請求之後還保持了不必要的連接配接很長時間。

Websocket

WebSocket連接配接的過程如下

  1. 首先,用戶端發起http請求,經過3次握手後,建立起TCP連接配接;http請求裡存放WebSocket支援的版本号等資訊,如:Upgrade、Connection、WebSocket-Version等;
  2. 然後,伺服器收到用戶端的握手請求後,同樣采用HTTP協定回饋資料;
  3. 最後,用戶端收到連接配接成功的消息後,開始借助于TCP傳輸信道進行全雙工通信。

其他網址​

​​WebSocket原理淺析與實作簡單聊天 - 個人文章 - SegmentFault 思否​​

繼續閱讀