解說http,https,websocket三者協(xié)議以及關(guān)系

[重要通告]如您遇疑難雜癥,本站支持知識(shí)付費(fèi)業(yè)務(wù),掃右邊二維碼加博主微信,可節(jié)省您寶貴時(shí)間哦!

最近一直在折騰websocket,折騰來折騰去各種的問題,現(xiàn)在記錄一下,以備自己以后的之需,

http

什么是http
??Hyper Text Transfer Protocol?超文本傳輸協(xié)議
??建立在TCP上無狀態(tài)的連接
??客戶端發(fā)送一個(gè)HTTP請(qǐng)求到服務(wù)器,服務(wù)器接收后開始處理請(qǐng)求并根據(jù)
??請(qǐng)求訪問服務(wù)器資源,最后通過HTTP響應(yīng)把結(jié)果返回給客戶端

http請(qǐng)求
??狀態(tài)行??請(qǐng)求方式Method(get/post/put/delete)、資源路徑URL、
???????協(xié)議版本Version
??請(qǐng)求頭??訪問的域名、用戶代理、Cookie等信息
??請(qǐng)求正文?HTTP請(qǐng)求的數(shù)據(jù)

http響應(yīng)
??狀態(tài)行??協(xié)議版本Version、狀態(tài)碼Status Code、回應(yīng)短語
??響應(yīng)頭??搭建服務(wù)器的軟件,發(fā)送響應(yīng)的時(shí)間,回應(yīng)數(shù)據(jù)的格式等信息
??響應(yīng)正文?響應(yīng)的具體數(shù)據(jù)
???????狀態(tài)碼
????????1xx 請(qǐng)求已接收繼續(xù)處理請(qǐng)求
????????2xx 請(qǐng)求已經(jīng)處理完成(200--請(qǐng)求正常處理完成)
????????3xx 請(qǐng)求訪問的URL重定向到其他目錄
??????????301--請(qǐng)求永久重定向;
??????????302--請(qǐng)求臨時(shí)重定向;
??????????304--請(qǐng)求被重定向到客戶端本地緩存
????????4xx 客戶端出現(xiàn)錯(cuò)誤
??????????400--客戶端請(qǐng)求存在語法錯(cuò)誤;
??????????401--請(qǐng)求沒經(jīng)過授權(quán);
??????????403--請(qǐng)求被服務(wù)器端拒絕,客戶端無訪問權(quán)限;
??????????404--URL在服務(wù)端不存在
????????5xx 服務(wù)端出現(xiàn)錯(cuò)誤
??????????500--服務(wù)端永久錯(cuò)誤;503--服務(wù)端發(fā)生臨時(shí)錯(cuò)誤
??響應(yīng)模式
????單進(jìn)程I/O模型???一進(jìn)程僅處理一個(gè)請(qǐng)求,對(duì)請(qǐng)求順序處理
????多進(jìn)程I/O模型???多進(jìn)程,同事處理多個(gè)請(qǐng)求
????復(fù)用I/O模型????一個(gè)進(jìn)程多個(gè)線程,一個(gè)線程響應(yīng)一個(gè)請(qǐng)求,
?????????????可以達(dá)到同時(shí)處理多個(gè)請(qǐng)求,線程并發(fā)執(zhí)行
????復(fù)用多線程I/O模型?多個(gè)進(jìn)程多個(gè)線程

https

什么是https
http的安全版,http下加入SSL層,https安全基礎(chǔ)是SSL,加密的詳細(xì)內(nèi)容需要SSL

主要作用
1.建立一個(gè)信息安全通道,保證數(shù)據(jù)傳輸?shù)陌踩?br /> 2.確認(rèn)網(wǎng)站的真實(shí)性

原理、步驟
客戶端使用https的url訪問web服務(wù)器,要求與服務(wù)器建立SSL連接
服務(wù)器收到客戶端請(qǐng)求后,會(huì)將網(wǎng)站的證書信息(證書包含公鑰)傳送一份給客戶端
客戶端的瀏覽器和服務(wù)器開始協(xié)商SSL連接的安全等級(jí),即信息加密等級(jí)
客戶端的里瀏覽器根據(jù)雙方同意的安全等級(jí)建立會(huì)話秘鑰,利用網(wǎng)站公鑰將會(huì)話秘鑰加密并傳送給網(wǎng)站
web服務(wù)器利用自己的私鑰解密出會(huì)話的秘鑰
服務(wù)器利用會(huì)話秘鑰加密與客戶端之間的通信

優(yōu)點(diǎn)
可認(rèn)證用戶和服務(wù)器,確保數(shù)據(jù)?發(fā)送到正確?的客戶機(jī)和服務(wù)器
防止數(shù)據(jù)在傳輸過程中不被竊取改變?保證數(shù)據(jù)的完整性
雖不是絕對(duì)安全的,但大幅度?增加了中間人的成本
比起同等http網(wǎng)站,采用https加密的網(wǎng)站在?搜索?結(jié)果中?排名會(huì)更高

缺點(diǎn)
握手階段較?費(fèi)時(shí),使頁面加載時(shí)間延長(zhǎng)50%,增加10%到20%的耗電
https連接緩存??如http?高效,增加數(shù)據(jù)開銷和功耗,已有的安全措施也會(huì)因此受到影響
SSL證書?需要錢,功能越強(qiáng)證書費(fèi)用越高,個(gè)人網(wǎng)站小網(wǎng)站沒必要一般不會(huì)用
SSL證書?需要綁定IP,不能在同一IP上綁定多個(gè)域名,IPv4資源不可能支撐這個(gè)消耗
加密范圍有限,在黑客攻擊、拒絕服務(wù)攻擊、服務(wù)器劫持等方面幾乎起不到什么作用

websocket

什么是websocket
是一種網(wǎng)絡(luò)通信協(xié)議,與http沒有關(guān)系,是http的一種補(bǔ)充
HTML5開始提供的一種在單個(gè)TCP連接上進(jìn)行全雙工通訊的協(xié)議

為什么用Websocket
http協(xié)議是一種無狀態(tài)、無連接、單向的應(yīng)用層協(xié)議
請(qǐng)求/響應(yīng)模型。只能由客戶端發(fā)起請(qǐng)求,服務(wù)端對(duì)請(qǐng)求做出應(yīng)答處理
HTTP協(xié)議無法實(shí)現(xiàn)服務(wù)器主動(dòng)向客戶端發(fā)起信息
websocket允許客戶端和服務(wù)器之間進(jìn)行全雙工通信,任何一方都可以通過建立的連接將數(shù)據(jù)推送到另一端。
只需要建立一次連接就可以一直保持連接狀態(tài),比輪詢方式效率高

客戶端使用
var Socket = new WebSocket(url,[protocol]);

屬性
Socket.readyState
連接狀態(tài)
0:尚未建立;
1:建立,可以進(jìn)行通信;
2:連接正在關(guān)閉;
3:連接已經(jīng)關(guān)閉或者連接不能打開
Socket.bufferedAmount
已被send()放入正在隊(duì)列中等待傳輸,但是還沒有發(fā)出的UTF-8文本字節(jié)數(shù)

事件
Socket.onopen??連接建立時(shí)觸發(fā)
Socket.onmessage 客戶端接收服務(wù)端數(shù)據(jù)時(shí)觸發(fā)
Socket.onerror??通信發(fā)生錯(cuò)誤時(shí)觸發(fā)
Socket.onclose??連接關(guān)閉時(shí)觸發(fā)

方法
Socket.send()??使用連接發(fā)送數(shù)據(jù)
Socket.close()??關(guān)閉連接

var ws = new WebSocket("ws://localhost:9998/echo");
ws.onopen = function () {                            // 使用 send() 方法發(fā)送數(shù)據(jù)  
  ws.send("發(fā)送數(shù)據(jù)");
  alert("數(shù)據(jù)發(fā)送中...");
};
ws.onmessage = function (evt) {                     // 接收服務(wù)端數(shù)據(jù)時(shí)觸發(fā)事件
  var received_msg = evt.data;
  alert("數(shù)據(jù)已接收...");
};
ws.onclose = function () {                            // 斷開 web socket 連接成功觸發(fā)事件
  alert("連接已關(guān)閉...");
};

問題未解決?付費(fèi)解決問題加Q或微信 2589053300 (即Q號(hào)又微信號(hào))右上方掃一掃可加博主微信

所寫所說,是心之所感,思之所悟,行之所得;文當(dāng)無敷衍,落筆求簡(jiǎn)潔。 以所舍,求所獲;有所依,方所成!

支付寶贊助
微信贊助

免責(zé)聲明,若由于商用引起版權(quán)糾紛,一切責(zé)任均由使用者承擔(dān)。

您必須遵守我們的協(xié)議,如您下載該資源,行為將被視為對(duì)《免責(zé)聲明》全部?jī)?nèi)容的認(rèn)可->聯(lián)系老梁投訴資源
LaoLiang.Net部分資源來自互聯(lián)網(wǎng)收集,僅供用于學(xué)習(xí)和交流,請(qǐng)勿用于商業(yè)用途。如有侵權(quán)、不妥之處,請(qǐng)聯(lián)系站長(zhǎng)并出示版權(quán)證明以便刪除。 敬請(qǐng)諒解! 侵權(quán)刪帖/違法舉報(bào)/投稿等事物聯(lián)系郵箱:service@laoliang.net
意在交流學(xué)習(xí),歡迎贊賞評(píng)論,如有謬誤,請(qǐng)聯(lián)系指正;轉(zhuǎn)載請(qǐng)注明出處: » 解說http,https,websocket三者協(xié)議以及關(guān)系

發(fā)表回復(fù)

本站承接,網(wǎng)站推廣(SEM,SEO);軟件安裝與調(diào)試;服務(wù)器或網(wǎng)絡(luò)推薦及配置;APP開發(fā)與維護(hù);網(wǎng)站開發(fā)修改及維護(hù); 各財(cái)務(wù)軟件安裝調(diào)試及注冊(cè)服務(wù)(金蝶,用友,管家婆,速達(dá),星宇等);同時(shí)也有客戶管理系統(tǒng),人力資源,超市POS,醫(yī)藥管理等;

立即查看 了解詳情