WebSocket於HTTP 、WebSocket與Socket的區別

WebSocket於HTTP 、WebSocket與Socket的區別

最近在作一個IM 的項目,最近對於這塊的理解比較模糊,這裏對他們的不一樣和相同作一個區分,可是因爲這個項目須要在IOS、Android和Web中多平臺,最後選擇了WebSocket;git

這裏有一張圖詳細介紹了 TCP/IP 協議族中的各個協議在 OSI模型 中的分佈,一圖勝千言(下圖來自 科來)github

1. WebSocket介紹

原理

WebSocket同HTTP同樣也是應用層的協議,可是它是一種雙向通訊協議,是創建在TCP之上的。設計模式

鏈接過程 —— 握手過程

    1. 瀏覽器、服務器創建TCP鏈接,三次握手。這是通訊的基礎,傳輸控制層,若失敗後續都不執行。
    1. TCP鏈接成功後,瀏覽器經過HTTP協議向服務器傳送WebSocket支持的版本號等信息。(開始前的HTTP握手)
    1. 服務器收到客戶端的握手請求後,一樣採用HTTP協議回饋數據。
    1. 當收到了鏈接成功的消息後,經過TCP通道進行傳輸通訊

2. WebSocket於HTTP

相同點

    1. 都是應用層協議基於TCP協議來傳輸數據的,都是可靠性傳輸協議。
    1. 都是應用層協議。

不一樣點

    1. WebSocket是雙向通訊協議,模擬Socket協議,能夠雙向發送或接受信息。HTTP是單向的。
    1. WebSocket是須要握手進行創建鏈接的。

聯繫

WebSocket在創建握手時,數據是經過HTTP傳輸的。可是創建以後,在真正傳輸時候是不須要HTTP協議的。瀏覽器

3.WebSocket與Socket的關係

Socket其實並非一個協議,而是爲了方便使用TCP或UDP而抽象出來的一層,是位於應用層和傳輸控制層之間的一組接口,它工做在 OSI 模型會話層(第5層),是爲了方便你們直接使用更底層協議(通常是 TCP 或 UDP )而存在的一個抽象層。服務器

Socket是應用層與TCP/IP協議族通訊的中間軟件抽象層,它是一組接口。在設計模式中,Socket其實就是一個門面模式,它把複雜的TCP/IP協議族隱藏在Socket接口後面,對用戶來講,一組簡單的接口就是所有,讓Socket去組織數據,以符合指定的協議。設計

當兩臺主機通訊時,必須經過Socket鏈接,Socket則利用TCP/IP協議創建TCP鏈接。TCP鏈接則更依靠於底層的IP協議,IP協議的鏈接則依賴於鏈路層等更低層次。cdn

區別

Socket是傳輸控制層協議,WebSocket是應用層協議。blog

Star 個人GitHub接口

# Backget

相關文章
相關標籤/搜索