HTTP協議,HTTPS協議,Websocket協議


HTTP協議,HTTPS協議,Websocket協議

  • HTTP協議
"""
http協議
- 四大特性
	1、基於請求響應一次請求對應一次響應
	2、基於tcp/ip作用於應用層之上的協議
	3、無狀態(不保留客戶端的狀態)
	4、無連接
- 數據格式
	以請求格式為例
	1、請求首行(請求的方式,協議的版本)
	2、請求頭(一堆kv鍵值對)
	3、
	4、請求體(攜帶的數據)
- 響應狀態碼
	1xx:服務端已經成功接收客戶端的數據正在處理
	2xx:200表示請求成功,201創建成功
	3xx:重定向 301永久重定向,302暫時重定向
	4xx:403權限不足,404請求資源不存在
	5xx:服務器異常

"""
  • HTTPS協議
"""
   http協議傳輸的數據是未加密的,也就是明文的,因此使用HTTP協議傳輸的一些隱私的數據信息是不安全的,為了保證這些隱私的數據能加密傳輸,於是網景公司設計了ssl協議用來對數據進行加密,從此就誕生了HTTPS。簡單來說HTTPS就是由ssl+http協議構建的可對數據進行加密的一種傳輸協議。

區別:
1、HTTPS協議是需要ca申請證書,需要數據費用
2、HTTP協議是明文,不安全的,HTTPS協議是加密的,安全性高
3、HTTP使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443
4、HTTP的連接很簡單,是無狀態的,HTTPS協議是加密連接的
"""
  • websocket協議
"""
HTTP  不加密傳輸
HTTPS 加密傳輸
	上面兩個都是短連接/無連接

websocket 加密傳輸
	瀏覽器和服務端 創建連接之后默認不斷開,它的誕生能夠真正的實現服務端給客戶端推送消息
"""
  • 內部原理
"""
websocket實現原理可以分為兩部分
	1、握手環節
	2、收發數據環節
	
1.握手環節
	瀏覽器訪問服務端之后瀏覽器會立刻生成一個隨機字符串
	瀏覽器會將生成好的隨機字符串發送給服務端(基於HTTP協議 放在請求頭中),並且自己也保留一份
	
	服務端和客戶端都會對該隨機字符串做以下處理
	1.1 先拿隨機字符串跟magic string(固定的字符串)做字符串的拼接
	1.2 將拼接之后的結果做加密處理(sha1+base64)
	
	服務端將生成好的處理結果發送給瀏覽器(基於HTTP協議 放在響應頭中)
	瀏覽器接受服務端發送過來的隨機字符串跟本地處理好的隨機字符串做比對,如果一致說明服務端支持websocket,如果不一致說明不支持

2.收發數據環節
	前提知識點:
		1.基於網絡傳輸數據都是二進制格式 在python中可以用bytes類型對應
		2.進制換算
	
	先讀取第二個字節的后七位數據(payload) 根據payload做不同的處理
	=127:繼續往后讀取8個字節數據(數據報10個字節)
	=126:繼續往后讀取2個字節數據(數據報4個字節)
	<=125:不再往后讀取(數據2個字節)
	
	上述操作完成后,會繼續往后讀取固定長度4個字節的數據(masking-key)
	依據masking-key解析出真實數據
	
"""


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM