Socket與WebSocket以及http與https重新總結
一.Socket
網絡中的Socket是一個抽象的接口
,而是為了方便使用TCP
或UDP
而抽象出來的一層 ,可以理解為網絡中連接的兩端。通常被叫做套接字接口.
二.WebSocket
WebSocket就是其中一種,是為了創建一種雙向通信(全雙工)的協議 ,來彌補HTTP協議在持久通信能力
上的不足
WebSocket連接的過程是:
首先,客戶端發起http請求,經過3次握手后,建立起TCP連接;http請求里存放WebSocket支持的版本號等信息,如:Upgrade、Connection、WebSocket-Version等;
然后,服務器收到客戶端的握手請求后,同樣采用HTTP協議回饋數據;
最后,客戶端收到連接成功的消息后,開始借助於TCP傳輸信道進行全雙工通信。
三.總結兩者關系
Socket是傳輸控制層接口,WebSocket是應用層協議。
四.http與https
兩者的概念
-
http協議:是超文本傳輸協議,信息是明文傳輸。如果攻擊者截取了Web瀏覽器和網站服務器之間的傳輸報文,就可以直接讀懂其中的信息。
-
https協議:是具有安全性的
ssl加密傳輸協議
,為瀏覽器和服務器之間的通信加密,確保數據傳輸的安全。
連接方式不同
1、http協議:http的連接很簡單,是無狀態的。
2、https協議:是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議。
端口不同
1、http協議:使用的端口是80。
2、https協議:使用的端口是443.
證書申請方式不同
1、http協議:免費申請。
2、https協議:需要到ca申請證書,一般免費證書很少,需要交費。
五.ssl協議
參考https://www.cnblogs.com/jztan/p/8159086.html
先講兩個概念
- 對稱加密: 加密和解密的秘鑰使用的是同一個.
- 非對稱加密: 與對稱加密算法不同,非對稱加密算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey)
ssl協議是非對稱加密
SSL協議的握手過程
先用語言來闡述下:
第一步:愛麗絲給出支持SSL協議版本號,一個客戶端隨機數(Client random,請注意這是第一個隨機數),客戶端支持的加密方法等信息;
第二步:鮑勃收到信息后,確認雙方使用的加密方法,並返回數字證書,一個服務器生成的隨機數(Server random,注意這是第二個隨機數)等信息;
第三步:愛麗絲確認數字證書的有效性,然后生成一個新的隨機數(Premaster secret),然后使用數字證書中的公鑰,加密這個隨機數,發給鮑勃。
第四步:鮑勃使用自己的私鑰,獲取愛麗絲發來的隨機數(即Premaster secret);(第三、四步就是非對稱加密的過程了)
第五步:愛麗絲和鮑勃通過約定的加密方法(通常是AES算法),使用前面三個隨機數,生成對話密鑰,用來加密接下來的通信內容;