Hello,我是 Alex 007,一個熱愛計算機編程和硬件設計的小白,爲啥是007呢?因爲叫 Alex 的人太多了,再加上每天007的生活,Alex 007就誕生了。
一、HTTP
HTTP(Hyper Text Transfer Protocol)
,即超文本傳輸協議,是用於萬維網服務器與本地瀏覽器之間傳輸超文本的協議。
坦白的講,HTTP
協議就是服務器(Server
)和客戶端(Client
)之間進行數據交互的一種形式。
1.HTTP
工作原理
HTTP
協議工作與客戶端-服務端架構之上,瀏覽器作爲HTTP
客戶端通過URL
向HTTP
服務端發送所有請求,WEB
服務器根據接收到的請求後,向客戶端發送相應信息。
2.常見的請求頭信息
accept:瀏覽器通過這個頭告訴服務器,它所支持的數據類型。
Accept-Charset:瀏覽器通過這個頭告訴服務器,它支持哪種字符集
Accept-Encoding:瀏覽器通過這個頭告訴服務器,支持的壓縮格式
Accept-Language:瀏覽器通過這個頭告訴服務器,它的語言環境
Host:瀏覽器通過這個頭告訴服務器,想訪問哪臺主機
If-Modified-Since:瀏覽器通過這個頭告訴服務器,緩存數據的時間
Referer:瀏覽器通過這個頭告訴服務器,客戶機是哪個頁面來的(防盜鏈)
Connection:瀏覽器通過這個頭告訴服務器,請求完後是斷開鏈接還是何持鏈接
X-Requested-With:XMLHttpRequest
代表通過ajax方式進行訪問
User-Agent:請求載體的身份標識
3.常見的響應頭信息
Location:服務器通過這個頭,來告訴瀏覽器跳到哪裏
Server:服務器通過這個頭,告訴瀏覽器服務器的型號
Content-Encoding:服務器通過這個頭,告訴瀏覽器,數據的壓縮格式
Content-Length:服務器通過這個頭,告訴瀏覽器回送數據的長度
Content-Language:服務器通過這個頭,告訴瀏覽器語言環境
Content-Type:服務器通過這個頭,告訴瀏覽器回送數據的類型
Refresh:服務器通過這個頭,告訴瀏覽器定時刷新
Content-Disposition:服務器通過這個頭,告訴瀏覽器以下載方式打數據
Transfer-Encoding:服務器通過這個頭,告訴瀏覽器數據是以分塊方式回送的
Expires:-1 控制瀏覽器不要緩存
Cache-Control:no-cache
Pragma:no-cache
二、HTTPS
HTTPS (Secure Hypertext Transfer Protocol)
安全超文本傳輸協議,HTTPS
是在HTTP
上建立SSL
加密層,並對傳輸數據進行加密,是HTTP
協議的安全版。
1.HTTPS
加密算法
對稱祕鑰加密
客戶端採用已知的算法對要發送至服務器的信息加密,另外再單獨發送一次祕鑰,服務端對加密的信息採用接收的祕鑰進行解密。
雖然祕鑰在傳輸中間是被加密的,但仍有潛在的危險,一旦被竊聽或者信息被挾持,就有可能破解祕鑰並破解信息,因此“共享祕鑰加密”這種方式存在安全隱患。
非對稱祕鑰加密
在使用非對稱加密的時候有兩把鎖,一把是私有密鑰,一把是公有密鑰,使用非對稱加密時,客戶端按照服務器給定的公開密鑰進行加密處理,服務器接收到密文後再通過私有密鑰進行解密。
非對稱加密的好處就是解密的鑰匙根本不會進行傳輸,因此避免了被挾持的風險,就算公開密鑰被竊聽者拿到了也很難進行解密。
但是非對稱密鑰加密技術也存在缺點:
- 如何保證接收端向發送端發出公開密鑰的時候發送端確保收到的是預先要發送的而不是被挾持的,只要是發送密鑰就有被挾持的風險。
- 非對稱加密的方式效率比較低,處理起來很複雜,通信過程中使用就有一定的效率問題影響通信速度。
證書密鑰加密
數字證書認證機構是客戶端與服務器都可信賴的第三方機構。
- 服務器的開發者攜帶公開密鑰,向數字證書認證機構提出公開密鑰申請,數字證書認證機構在認清申請者的身份並審覈通過後,會對開發者申請的公開密鑰做數字簽名,然後分配這個已簽名的公開密鑰,並將密鑰放在證書裏面綁定。
- 服務器將這個數字證書發送個客戶端,客戶端通過數字證書中的數字簽名來驗證公鑰的真僞,確保服務器傳過來的公開密鑰是真實的,一般情況下證書的數字簽名是很難被僞造的,這取決於認證機構的公信力,一旦去人信息無誤後,客戶端就會通過公開密鑰對報文進行加密發送,服務器接收到以後用自己的私鑰進行解密。