http
是單向的,客戶端傳送請求,伺服器傳送響應。舉例來說,當客戶端向伺服器傳送請求時,該請求以http
或https
的形式傳送,在接收到請求後,伺服器會將響應傳送給客戶端。每個請求都與乙個對應的響應相關聯,在傳送響應後客戶端與伺服器的連線會被關閉。每個http
或https
請求每次都會新建與伺服器的連線,並且在獲得響應後,連線將自行終止。http
是在tcp
之上執行的無狀態協議,tcp
是一種面向連線的協議,它使用三向握手方法保證資料報傳輸的傳遞並重新傳輸丟失的資料報。
http
可以執行在任何可靠的面向連線的協議(例如tcp
,sctp
)的上層。當客戶端將http
請求傳送到伺服器時,客戶端和伺服器之間將開啟tcp
連線,並且在收到響應後,tcp
連線將終止,每個http
請求都會建立單獨的tcp
連線到伺服器,例如如果客戶端向伺服器傳送10個請求,則將開啟10個單獨的http
連線。並在獲得響應後關閉。
http訊息資訊是用ascii
編碼的,每個http
請求訊息均包含http
協議版本(http/1.1
,http/2
),http
方法(get
/post
等),http
標頭(content-type
,content-length
),主機資訊等。以及包含要傳輸到伺服器的實際訊息的正文(請求主體)。http
標頭的大小從200位元組到2kb
不等,http
標頭的常見大小是700-800位元組。當web
應用程式在客戶端使用更多cookie
和其他工具擴充套件**的儲存功能時,它將減少http
標頭的荷載。
websocket
是雙向的,在客戶端-伺服器通訊的場景中使用的全雙工協議,與http
不同,它是乙個有狀態協議,這意味著客戶端和伺服器之間的連線將保持活動狀態,直到被任何一方(客戶端或伺服器)終止。在通過客戶端和伺服器中的任何一方關閉連線之後,連線將從兩端終止。
讓我們以客戶端-伺服器通訊為例,每當我們啟動客戶端和伺服器之間的連線時,客戶端-伺服器進行握手隨後建立乙個新的連線,該連線將保持活動狀態,直到被他們中的任何一方終止。建立連線並保持活動狀態後,客戶端和伺服器將使用相同的連線通道進行通訊,直到連線終止。
新建的連線被稱為websocket
。一旦通訊鏈結建立和連線開啟後,訊息交換將以雙向模式進行,客戶端-伺服器之間的連線會持續存在。如果其中任何一方(客戶端伺服器)宕掉或主動關閉連線,則雙方均將關閉連線。套接字的工作方式與http
的工作方式略有不同,狀態**101
表示websocket
中的交換協議。
如果我們需要通過網路傳輸的任何實時更新或連續資料流,則可以使用websocket
。如果我們要 獲取舊資料,或者只想獲取一次資料**用程式使用,則應該使用http
協議,不需要很頻繁或 僅獲取一次的資料可以通過簡單的http
請求查詢,因此在這種情況下最好不要websocket
。
注:如果僅載入一次資料,則restful web
服務足夠從伺服器獲取資料
Websocket和http的區別
websocket websocket協議解決了伺服器與客戶端全雙工通訊的問題。注 什麼是單工 半雙工 全工通訊?資訊只能單向傳送為單工 資訊能雙向傳送但不能同時雙向傳送稱為半雙工 資訊能夠同時雙向傳送則稱為全雙工。websocket協議解析 wensocket協議包含兩部分 一部分是 握手 一部分...
理清 WebSocket 和 HTTP 的關係
基本上但凡提到websocket和http的關係都會有以下兩條 websocket和http都是基於tcp協議的兩個不同的協議 websocket依賴於http連線 websocket依賴於http連線,那麼它如何從連線的http協議轉化為websocket協議?websocket為什麼要依賴於ht...
WebSocket 和HTTP的區別及原理
有時候還會有老鐵在考慮在什麼樣的環境下使用websocket,什麼樣的環境下使用http,今天我們來說下websocket和http。websocket和http的區別 協議是用在應用層的協議,他是基於 tcp協議的,協議建立鏈結也必須要有三次握手才能傳送資訊。鏈結分為短鏈結,長鏈結,短鏈結是每次請...