關于websocket和socket

1、Socket是對TCP/IP協(xié)議的封裝,Socket本身并不是協(xié)議,而是一個調(diào)用接口(API),通過Socket,我們才能使用TCP/IP協(xié)議。

2、WebSocket 是 HTML5 一種新的協(xié)議,主要為了解決?HTTP 協(xié)議無法解決長鏈接的所打的一個大補丁。

Http連接:http連接就是所謂的短連接,及客戶端向服務器發(fā)送一次請求,服務器端相應后連接即會斷掉。

socket連接:socket連接就是我們所謂的長連接,理論上客戶端和服務端一旦建立連接,則不會主動斷掉。

HTTP協(xié)議是非持久化的,單向的網(wǎng)絡協(xié)議,在建立連接后只允許瀏覽器向服務器發(fā)出請求后,服務器才能返回相應的數(shù)據(jù)。WebSocket 通過第一個 HTTP request 建立了 TCP 連接(三次握手)之后,之后的交換數(shù)據(jù)都不需要再發(fā) HTTP request了。


WebSocket與HTTP的關系

相同點

1. 都是一樣基于TCP的,都是可靠性傳輸協(xié)議。

2. 都是應用層協(xié)議。

不同點

1. WebSocket是雙向通信協(xié)議,模擬Socket協(xié)議,可以雙向發(fā)送或接受信息。HTTP是單向的。

2. WebSocket是需要3次握手進行建立連接的。

聯(lián)系

WebSocket在建立握手時,數(shù)據(jù)是通過HTTP傳輸?shù)?。但是建立之后,在真正傳輸時候是不需要HTTP協(xié)議的。



WebSocket與Socket的關系

Socket是TCP/IP/UDP抽象出來的API接口,WebSocket是應用層協(xié)議。


HTML5與WebSocket的關系

WebSocket API 是 HTML5 標準的一部分, 但這并不代表 WebSocket 一定要用在 HTML 中,或者只能在基于瀏覽器的應用程序中使用。

實際上,許多語言、框架和服務器都提供了 WebSocket 支持,例如:

* 基于 C 的 libwebsocket.org

* 基于 Node.js 的 Socket.io

* 基于 Python 的 ws4py

* 基于 C++ 的 WebSocket++

* Apache 對 WebSocket 的支持: Apache Module mod_proxy_wstunnel

* Nginx 對 WebSockets 的支持: NGINX as a WebSockets Proxy 、 NGINX Announces Support for WebSocket Protocol 、WebSocket proxying

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • TCP/IP協(xié)議棧主要分為四層:應用層、傳輸層、網(wǎng)絡層、數(shù)據(jù)鏈路層,每層都有相應的協(xié)議,如下圖 IP: 網(wǎng)絡層協(xié)議...
    chdliangwei閱讀 1,405評論 0 0
  • Android與服務器的通信方式主要有兩種,一是Http通信,一是Socket通信。兩者的最大差異在于,http連...
    侯廣麗閱讀 4,486評論 0 1
  • HTML5 WebSocket 作為新一代的web標準,HTML5為我們提供了很多有用的東西,比如canvas,本...
    Srtian閱讀 7,604評論 0 9
  • WebSocket介紹與原理: WebSocket protocol 是HTML5一種新的協(xié)議。它實現(xiàn)了瀏覽器與服...
    流光汐舞閱讀 558評論 0 0
  • 表情是什么,我認為表情就是表現(xiàn)出來的情緒。表情可以傳達很多信息。高興了當然就笑了,難過就哭了。兩者是相互影響密不可...
    Persistenc_6aea閱讀 129,427評論 2 7

友情鏈接更多精彩內(nèi)容