1. 程式人生 > >WebSocket 和socket、HTTP的區別和聯絡

WebSocket 和socket、HTTP的區別和聯絡

一、WebSocket 是什麼?
WebSocket是HTML5規範提出的一種協議;目前除了完犢子的IE瀏覽器,其他瀏覽器都基本支援。他是一種協議,萬變不離其宗,也是基於TCP協議的;和HTTP協議是並存的兩種協議。
WebSocket是HTML5中的協議。HTML5 Web Sockets規範定義了Web Sockets API,支援頁面使用Web Socket協議與遠端主機進行全雙工的通訊。它引入了WebSocket介面並且定義了一個全雙工的通訊通道,通過一個單一的套接字在Web上進行操作。HTML5 Web Sockets以最小的開銷高效地提供了Web連線。相較於經常需要使用推送實時資料到客戶端甚至通過維護兩個HTTP連線來模擬全雙工連線的舊的輪詢或長輪詢(Comet)來說,這就極大的減少了不必要的網路流量與延遲。
要使用HTML5 Web Sockets從一個Web客戶端連線到一個遠端端點,你要建立一個新的WebSocket例項併為之提供一個URL來表示你想要連線到的遠端端點。該規範定義了ws://以及wss://模式來分別表示WebSocket和安全WebSocket連線,這就跟http:// 以及https:// 的區別是差不多的。一個WebSocket連線是在客戶端與伺服器之間HTTP協議的初始握手階段將其升級到Web Socket協議來建立的,其底層仍是TCP/IP連線。

二、WebSocket與Socket的關係

Socket其實並不是一個協議,而是為了方便使用TCP或UDP而抽象出來的一層,是位於應用層和傳輸控制層之間的一組介面。

“Socket是應用層與TCP/IP協議族通訊的中間軟體抽象層,它是一組介面,提供一套呼叫TCP/IP協議的API。在設計模式中,Socket其實就是一個門面模式,它把複雜的TCP/IP協議族隱藏在Socket介面後面,對使用者來說,一組簡單的介面就是全部,讓Socket去組織資料,以符合指定的協議。”

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

WebSocket就像HTTP一樣,則是一個典型的應用層協議。
這裡寫圖片描述

總結:

Socket是傳輸控制層介面,WebSocket是應用層協議。
  • 1

三、WebSocket與HTTP的關係
關係圖:
這裡寫圖片描述

相同點

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

不同點

 1. WebSocket是雙向通訊協議,模擬Socket協議,可以雙向傳送或接受資訊。HTTP是單向的。
 2. WebSocket是需要瀏覽器和伺服器握手進行建立連線的。而http是瀏覽器發起向伺服器的連線,伺服器預先並不知道這個連線。
  • 1
  • 2

聯絡

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

總結:

在WebSocket中,只需要伺服器和瀏覽器通過HTTP協議進行一個握手的動作,然後單獨建立一條TCP的通訊通道進行資料的傳送。
WebSocket連線的過程是:

首先,客戶端發起http請求,經過3次握手後,建立起TCP連線;http請求裡存放WebSocket支援的版本號等資訊,如:Upgrade、Connection、WebSocket-Version等;
然後,伺服器收到客戶端的握手請求後,同樣採用HTTP協議回饋資料;
最後,客戶端收到連線成功的訊息後,開始藉助於TCP傳輸通道進行全雙工通訊。

相關推薦

WebSocket socketHTTP區別聯絡

一、WebSocket 是什麼? WebSocket是HTML5規範提出的一種協議;目前除了完犢子的IE瀏覽器,其他瀏覽器都基本支援。他是一種協議,萬變不離其宗,也是基於TCP協議的;和HTTP協議是並存的兩種協議。 WebSocket是HTML5中的協議。HTML5 Web

網路程式設計(十)——WebSocket socketHTTP區別聯絡

一、WebSocket 是什麼? WebSocket是HTML5規範提出的一種協議;目前除了完犢子的IE瀏覽器,其他瀏覽器都基本支援。他是一種協議,萬變不離其宗,也是基於TCP協議的;和HTTP協議是並存的兩種協議。 WebSocket是HTML5中的協議。HTML5 Web

TCP/IPsocketHttp之間的聯絡區別

參考轉載:http://xinzhi.wenda.so.com/a/1510590824200942 網路是資訊傳輸、接收、共享的虛擬平臺,它用物理鏈路將各個孤立的工作站或主機相連在一起,組成資料鏈路,從而達到資源共享和通訊的目的。網路會藉助文字閱讀、圖片檢視、影音播放、下載傳輸、遊戲聊天等軟體

TCP,UDPsocketHttp之間的聯絡區別

因為最近做一個智慧家居專案,首先要通訊用socket,為了及時先用UDP判斷是內網外網建立連結,再用TCP實時通訊。 首先了解定義 TCP的優點: 可靠,穩定 TCP的可靠體現在TCP在傳遞資料之前,會有三次握手來建立連線,而且在資料傳遞時,

詳解 HTTPSTLSSSLHTTP區別關係

一、什麼是HTTPS、TLS、SSL HTTPS,也稱作HTTP over TLS。TLS的前身是SSL,TLS 1.0通常被標示為SSL 3.1,TLS 1.1為SSL 3.2,TLS 1.2為SSL 3.3。下圖描述了在TCP/IP協議棧中TLS(各子協議)和HTT

WebSocketSocketTCPHTTP的關係異同點

今天來講一下與其他協議的區別和相同點,讓各位同學能夠更加深入的去了解和運用各種協議。 1 什麼是WebSocket?   WebSocket從滿足基於Web的日益增長的實時通訊需求應運而生,解決了客戶端發起多個Http請求到伺服器資源瀏覽器必須要在經過長時間的輪詢問題,實

106.網路分層模型及SOCKET/TCP/UDP/HTTP區別聯絡

簡介 本文主要描述了網路分層模型, 分為TCP/IP四層網路模型與OSI七層網路模型說明。還有TCP/IP, SOCKET, HTTP, TCP, UDP之間的聯絡和區別。 網路模型 TCP/IP四層網路模型 TCP/IP分層模型(TCP/IP

Statement PreparedStatement CallableStatement 區別聯絡

1. Statement、PreparedStatement和CallableStatement都是介面(interface)。  2. Statement繼承自Wrapper、PreparedStatement繼承自Statement、CallableStatement繼

減治分治變治的區別聯絡

減治: 利用了一個問題給定例項的解和同樣問題較小例項的解之間的某種關係,常用的有n和n-1的關係,有了這種關係我們可以自頂向下地遞迴求解,也可以自底向上地迭代實現,從較小例項開始求解這一角度來看減治也叫增量法。 減治法的三種方式: 1***.減常量*** 每次迭

編碼方式ASCIIUnicodeUTF-8的區別聯絡

最早的計算機在設計時採用8個位元(bit)作為一個位元組(byte),所以,一個位元組能表示的最大的整數就是255(二進位制11111111=十進位制255),如果要表示更大的整數,就必須用更多的位元組。比如兩個位元組可以表示的最大整數是65535,4個位元組可以表示的最大整

WebSocketSocketTCPHTTP區別

現在想起來,當時對 WebSocket 是很感興趣的,但由於服務端的限制,最終依然選擇了 LuaSocket。我後來對 LuaSocket 進行了封裝,使其更好用。 現在,面對一個全新的專案,我自然而然地選擇了 WebSocket。 因此,我需要了解下面這些問題:

webServicewebSocketsockethttp之間的區別

HTTP HTTP 是基於請求響應式的,即通訊只能由客戶端發起,服務端做出響應,無狀態,無連線。 無狀態:每次連線只處理一個請求,請求結束後斷開連線。 無連線:對於事務處理沒有記憶能力,伺服器不知道客戶端是什麼狀態。 以往實現即時通訊的手段: 輪詢:客戶端定時向伺服器

一篇文章講清楚人工智慧機器學習深度學習的區別聯絡

人工智慧的浪潮正在席捲全球,諸多詞彙時刻縈繞在我們耳邊:人工智慧(Artificial Intelligence)、機器學習(Machine Learning)、深度學習(Deep Learning)。不少人對這些高頻詞彙的含義及其背後的關係總是似懂非懂、一知半解。 為了幫助大家更好地理解人工智慧,這篇

LRSVM線性迴歸的聯絡區別

LR和SVM的聯絡:都是監督的分類演算法都是線性分類方法 (不考慮核函式時)都是判別模型 判別模型和生成模型是兩個相對應的模型。 判別模型是直接生成一個表示P(Y|X)P(Y|X)或者Y=f(X)Y=f(X)的判別函式(或預測模型) 生成模型是先計算聯合概率分佈P(Y,X)P

人工智慧機器學習深度學習的區別聯絡

(轉自 深藍學院 大資料探勘DT資料分析) 人工智慧的浪潮正在席捲全球,諸多詞彙時刻縈繞在我們耳邊:人工智慧(Artificial Intelligence)、機器學習(Machine Learning)、深度學習(Deep Learning)。不少人對這些高

Linux環境變數使用者變數shell變數的區別聯絡

1.shell簡介 shell是指為使用者提供操作介面的軟體,不同作業系統有著不同的shell,同一個作業系統也有著不同的shell。shell分為兩大類:圖形介面shell和命令列式shell。 圖形介面shell:windows作業系統下常用的windows Expl

Spark RDDDataFrameDataSet區別聯絡

左側的RDD[Person]雖然以Person為型別引數,但Spark框架本身不瞭解Person類的內部結構。而右側的DataFrame卻提供了詳細的結構資訊,使得Spark SQL可以清楚地知道該資料集中包含哪些列,每列的名稱和型別各是什麼。DataFrame多了資料的結構資訊,即schema。RDD是分散

一文告訴你AdamAdamWAmsgrad區別聯絡,助你實現Super-convergence的終極目標

   序言:Adam自2014年出現之後,一直是受人追捧的引數訓練神器,但最近越來越多的文章指出:Adam存在很多問題,效果甚至沒有簡單的SGD + Momentum好。因此,出現了很多改進的版本,比如AdamW,以及最近的ICLR-2018年最佳論文提出的Adam改進版Am

GUIDUUIDCLSIDIID 區別聯絡

CLSID CLSID_Excel = {0x00024500,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}}; struct __declspec(uuid("00024500-0000-0000-C000-000000000046"))

當NotificationWebsocket遇到httpshttp

@[toc](前言) 本次遇到的坑是在一個需求中的坑。 先講一下問題背景吧: 首先本專案的一個請求是屬於http,且部署是直接部署到公司內網中的專案(所以用ip+埠訪問)。 本專案的需求坑為:使用websocket與後臺建立長連結,定時接收後臺訊息,並使用Notification訊息提示。 **Notif