最近在作一個IM 的項目,最近對於這塊的理解比較模糊,這裏對他們的不一樣和相同作一個區分,可是因爲這個項目須要在IOS、Android和Web中多平臺,最後選擇了WebSocket;git
這裏有一張圖詳細介紹了 TCP/IP 協議族中的各個協議在 OSI模型 中的分佈,一圖勝千言(下圖來自 科來)github
WebSocket同HTTP同樣也是應用層的協議,可是它是一種雙向通訊協議,是創建在TCP之上的。設計模式
WebSocket在創建握手時,數據是經過HTTP傳輸的。可是創建以後,在真正傳輸時候是不須要HTTP協議的。瀏覽器
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
# Backget