python websocket服务器https_Socket与WebSocket以及http与https重新总结
Socket與WebSocket以及http與https重新總結(jié)
一.Socket
網(wǎng)絡(luò)中的Socket是一個(gè)抽象的接口 ,而是為了方便使用TCP或UDP而抽象出來(lái)的一層 ,可以理解為網(wǎng)絡(luò)中連接的兩端。通常被叫做套接字接口.
二.WebSocket
WebSocket就是其中一種,是為了創(chuàng)建一種雙向通信(全雙工)的協(xié)議 ,來(lái)彌補(bǔ)HTTP協(xié)議在持久通信能力上的不足
WebSocket連接的過(guò)程是:
首先,客戶端發(fā)起http請(qǐng)求,經(jīng)過(guò)3次握手后,建立起TCP連接;http請(qǐng)求里存放WebSocket支持的版本號(hào)等信息,如:Upgrade、Connection、WebSocket-Version等;
然后,服務(wù)器收到客戶端的握手請(qǐng)求后,同樣采用HTTP協(xié)議回饋數(shù)據(jù);
最后,客戶端收到連接成功的消息后,開始借助于TCP傳輸信道進(jìn)行全雙工通信。
三.總結(jié)兩者關(guān)系
Socket是傳輸控制層接口,WebSocket是應(yīng)用層協(xié)議。
四.http與https
兩者的概念
http協(xié)議:是超文本傳輸協(xié)議,信息是明文傳輸。如果攻擊者截取了Web瀏覽器和網(wǎng)站服務(wù)器之間的傳輸報(bào)文,就可以直接讀懂其中的信息。
https協(xié)議:是具有安全性的ssl加密傳輸協(xié)議,為瀏覽器和服務(wù)器之間的通信加密,確保數(shù)據(jù)傳輸?shù)陌踩?/p>
連接方式不同
1、http協(xié)議:http的連接很簡(jiǎn)單,是無(wú)狀態(tài)的。
2、https協(xié)議:是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議。
端口不同
1、http協(xié)議:使用的端口是80。
2、https協(xié)議:使用的端口是443.
證書申請(qǐng)方式不同
1、http協(xié)議:免費(fèi)申請(qǐng)。
2、https協(xié)議:需要到ca申請(qǐng)證書,一般免費(fèi)證書很少,需要交費(fèi)。
五.ssl協(xié)議
參考https://www.cnblogs.com/jztan/p/8159086.html
先講兩個(gè)概念
對(duì)稱加密: 加密和解密的秘鑰使用的是同一個(gè).
非對(duì)稱加密: 與對(duì)稱加密算法不同,非對(duì)稱加密算法需要兩個(gè)密鑰:公開密鑰(publickey)和私有密鑰(privatekey)
ssl協(xié)議是非對(duì)稱加密
SSL協(xié)議的握手過(guò)程
先用語(yǔ)言來(lái)闡述下:
第一步:愛麗絲給出支持SSL協(xié)議版本號(hào),一個(gè)客戶端隨機(jī)數(shù)(Client random,請(qǐng)注意這是第一個(gè)隨機(jī)數(shù)),客戶端支持的加密方法等信息;
第二步:鮑勃收到信息后,確認(rèn)雙方使用的加密方法,并返回?cái)?shù)字證書,一個(gè)服務(wù)器生成的隨機(jī)數(shù)(Server random,注意這是第二個(gè)隨機(jī)數(shù))等信息;
第三步:愛麗絲確認(rèn)數(shù)字證書的有效性,然后生成一個(gè)新的隨機(jī)數(shù)(Premaster secret),然后使用數(shù)字證書中的公鑰,加密這個(gè)隨機(jī)數(shù),發(fā)給鮑勃。
第四步:鮑勃使用自己的私鑰,獲取愛麗絲發(fā)來(lái)的隨機(jī)數(shù)(即Premaster secret);(第三、四步就是非對(duì)稱加密的過(guò)程了)
第五步:愛麗絲和鮑勃通過(guò)約定的加密方法(通常是AES算法),使用前面三個(gè)隨機(jī)數(shù),生成對(duì)話密鑰,用來(lái)加密接下來(lái)的通信內(nèi)容;
總結(jié)
以上是生活随笔為你收集整理的python websocket服务器https_Socket与WebSocket以及http与https重新总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: JAVA随机生成文件名:当前年月日时分秒
- 下一篇: 如何判断输入的是字符还是数字_[Leet
