HTTP
定義:就是計算機通過網絡進行通信的規則,是一個基于請求與響應,無狀 態的,應用層的協議,?;赥CP/IP協議傳輸數據
四個基于:1.請求與響應:客戶端請求、服務端響應
2.無狀態的,即服務端響應完畢后,兩者斷開連接,不保存連接狀態,(可通過Cookie和Keep Alive來實現長連接)
3.應用層:HTTP是應用層的協議,配合TCP/IP使用
請求報文
1.請求行:有請求方法(get、post、其他的)、請求地址(<協議>://<主機>:<端口>/<路徑>,例(http://localhost/index.html ? key = value))、協議版本
2.請求頭
3.請求數據
(可選,get就沒有請求數據)
響應報文
HTTPS
定義:HTTPS其實是有兩部分組成:HTTP + SSL / TLS,也就是在HTTP上又加了一層處 理加密信息的模塊。服務端和客戶端的信息傳輸都會通過TLS進行加密,所以傳輸 的數據都是加密后的數據
- 客戶端發起HTTPS請求 :這個沒什么好說的,就是用戶在瀏覽器里輸入一個https網址,然后連接到server的
443端口。
2.服務端配置:采用HTTPS協議的服務器必須要有一套數字證書,可以自己制作,也可以向組織申 請。區別就是自己頒發的證書需要客戶端驗證通過,才可以繼續訪問,而使用受信 任的公司申請的證書則不會彈出提示頁面(startssl就是個不錯的選擇,有1年的免費 服務)。這套證書其實就是一對公鑰和私鑰。如果對公鑰和私鑰不太理解,可以想象 成一把鑰匙和一個鎖頭,只是全世界只有你一個人有這把鑰匙,你可以把鎖頭給別 人,別人可以用這個鎖把重要的東西鎖起來,然后發給你,因為只有你一個人有這 把鑰匙,所以只有你才能看到被這把鎖鎖起來的東西。
傳送證書 這個證書其實就是公鑰,只是包含了很多信息,如證書的頒發機構,過期時間等
等。客戶端解析證書
這部分工作是有客戶端的TLS來完成的,首先會驗證公鑰是否有效,比如頒發機 構,過期時間等等,如果發現異常,則會彈出一個警告框,提示證書存在問題。如 果證書沒有問題,那么就生成一個隨即值。然后用證書對該隨機值進行加密。就好 像上面說的,把隨機值用鎖頭鎖起來,這樣除非有鑰匙,不然看不到被鎖住的內 容。傳送加密信息 這部分傳送的是用證書加密后的隨機值,目的就是讓服務端得到這個隨機值,以后
客戶端和服務端的通信就可以通過這個隨機值來進行加密解密了服務段加密信息
服務端用私鑰解密后,得到了客戶端傳過來的隨機值(私鑰),然后把內容通過該值 進行對稱加密。所謂對稱加密就是,將信息和私鑰通過某種算法混合在一起,這樣 除非知道私鑰,不然無法獲取內容,而正好客戶端和服務端都知道這個私鑰,所以 只要加密算法夠彪悍,私鑰夠復雜,數據就夠安全。傳輸加密后的信息 這部分信息是服務段用私鑰加密后的信息,可以在客戶端被還原
客戶端解密信息 客戶端用之前生成的私鑰解密服務段傳過來的信息,于是獲取了解密后的內容。整
個過程第三方即使監聽到了數據,也束手無策。