WebSocket,Socket,WebService與HTTP之間的關係

一:WebSocket與HTTP的關係

相同點

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

不同點

  • 1. WebSocket是雙向通信協議,模擬Socket協議,可以雙向發送或接受信息。HTTP是單向的。
  • 2. WebSocket是需要握手進行建立連接的。
  • 3. HTTP的url使用"http//"或"https//"開頭;Websocket的url使用"ws//"開頭

聯繫

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

二:WebSocket與Socket的關係

  1. Socket其實並不是一個協議,而是爲了方便使用TCP或UDP而抽象出來的一層,是位於應用層和傳輸控制層之間的一組接口。
  2. 當兩臺主機通信時,必須通過Socket連接,Socket則利用TCP/IP協議建立TCP連接。TCP連接則更依靠於底層的IP協議,IP協議的連接則依賴於鏈路層等更低層次。socket是對TCP/IP協議的封裝,Socket本身並不是協議,而是一個調用接口(API),通過Socket,我們才能使用TCP/IP協議。
  3. HTTP和Socket什麼關係,WebSocket和Socket就是什麼關係。

區別

1.WebSocket:

  1.  WebSocket則是一個典型的應用層協議。
  2. websocket通訊的建立階段是依賴於http協議的。最初的握手階段是http協議,握手完成後就切換到websocket協議,並完全與http協議脫離了。
  3. 建立通訊時,也是由客戶端主動發起連接請求,服務端被動監聽。
  4. 通訊一旦建立連接後,通訊就是“全雙工”模式了。也就是說服務端和客戶端都能在任何時間自由得發送數據,非常適合服務端要主動推送實時數據的業務場景。
  5. 交互模式不再是“請求-應答”模式,完全由開發者自行設計通訊協議。
  6. 通信的數據是基於“幀(frame)”的,可以傳輸文本數據,也可以直接傳輸二進制數據,效率高。當然,開發者也就要考慮封包、拆包、編號等技術細節。

2.Socket:

  1.   Socket是傳輸控制層的一組接口
  2.   服務端監聽通訊,被動提供服務;客戶端主動向服務端發起連接請求,建立起通訊。
  3.   每一次交互都是:客戶端主動發起請求(request),服務端被動應答(response)。
  4.   服務端不能主動向客戶端推送數據。
  5.   通信的數據是基於文本格式的。二進制數據(比如圖片等)要利用base64等手段轉換爲文本後才能傳輸。

三:WebSocket、HTTP 與 TCP

從上面可以看出,HTTP、WebSocket 等應用層協議,都是基於 TCP 協議來傳輸數據的。我們可以把這些高級協議理解成對 TCP 的封裝。

TPC/IP協議是傳輸層協議,主要解決數據 如何在網絡中傳輸,而HTTP是應用層協議,主要解決如何包裝數據。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章